Giter Site home page Giter Site logo

pennmush / pennmush Goto Github PK

View Code? Open in Web Editor NEW
117.0 117.0 50.0 29.09 MB

PennMUSH is a C-based MUD-like server, first released in 1992 and still actively maintained.

Home Page: http://www.pennmush.org/

C 97.36% Shell 0.20% Makefile 0.55% Perl 0.61% Python 0.04% Scheme 0.01% C++ 0.75% HTML 0.18% CSS 0.01% Lua 0.03% CMake 0.03% Raku 0.01% SourcePawn 0.02% Terra 0.20%

pennmush's Introduction

% User's Guide to PennMUSH 1.8.x

PennMUSH is a server used to create text-based multiplayer games.

Installation information can be found in the files INSTALL.md or UPGRADING.md, depending on whether it's a new install or an upgrade. The file I18N discusses internationalization.

You may also want to take a look at Javelin's Guide for PennMUSH Gods, at https://download.pennmush.org/Guide/

Introduction and history

PennMUSH uses a version-numbering system that includes version numbers (like 1.7.2) and patchlevels (like p32), usually written together (1.7.2p32).

PennMUSH is a TinyMUD derivative, and one of the branches along the MUSH line. "Vanilla" TinyMUSH, which added the "v" registers and functions to the basic TinyMUD building commands, was written by Larry Foard. The code was later expanded by Jin, of MicroMUSH. In January of 1991, MicroMUSH changed its name to MicroMUSE, and the code there continued to develop under the MUSE name. At that same point in time, Moonchilde took the last public release of that code and began a series of improvements and extensions.

That code was released as PernMUSH, named for the MUSH that Moonchilde was running. The last released version of that code was version 1.15, at the end of November 1991. PernMUSH itself had switched over to TinyMUSH 2.0, which Moonchilde had co-written with Glenn Crocker (Wizard of TinyCWRU); there was no longer a reason for Moonchilde to maintain this code.

In January of 1992, Amberyl began working on the PernMUSH 1.15 code release, for TinyKrynn. She took over the code, which no one was supporting, and worked on extending this code, as well as improving its compatibility with TinyMUSH 2.0. She changed the name to PennMUSH (named for her school, the University of Pennsylvania), to avoid the confusion that resulted from PernMUSH actually running TinyMUSH 2.0.

In January of 1995, Amberyl passed on her mantle to Javelin (aka Paul@Dune, Alan Schwartz), who continuted as the maintainer of the primary public distribution in development. He released two patchlevels numbered "dune-1" and "dune-2" before releasing PennMUSH 1.50 pl11 and later distributions. The numbering scheme changed again with PennMUSH 1.6.0 (see CHANGES.OLD).

Gradually during the early part of 1995, Alan formed the PennMUSH development team with T. Alexander Popiel (Talek) and Ralph Melton. The development process became more formalized, with official patches, a dedicated bug reporting email address, and better tracking of outstanding issues and history.

In August of 1997, Ralph Melton left the PennMUSH development team, and Thorvald Natvig joined as a new member. Many thanks go to Ralph who contributed much time, code, and good cheer to PennMUSH. Since that time, the development team has gained and lost members. The current membership is usually listed at the top of the latest CHANGES. file.

In November 2002, with the release of PennMUSH 1.7.6, PennMUSH began using the Artistic License (see the COPYRITE file), an open source/free software license. This license was simultaneously adopted by TinyMUSH (2.2.5, 3.x) and TinyMUX to facilitate code sharing and widen use.

In July 2006, Javelin retired from the role of Maintainer, passing the mantle of lead developer to Raevnos. Many thanks go to Javelin whose contributions and guidance of PennMUSH have shaped it into the codebase that it is today.

If you are planning on modifying the source code to PennMUSH, you'll probably want Javelin's Guide for PennMUSH Gods, which should be available where you got this code, or, in hypertext, as https://download.pennmush.org/Guide/guide-single.html. More recent versions may be available at http://community.pennmush.org.

Enjoy!

Getting Help, Reporting Bugs

Here are some guidelines about where and how to report bugs or problems or generally look for help.

There are three places one could get help with a problem:

  • The PennMUSH bug-tracking site is https://github.com/pennmush/pennmush/issues To file a new report, click on the 'New issue' link. If you want to get emails about updates to the bug report, put your email address in the appropriate field. For 'type', please select the most appropriate category: Bug, suggested feature, documentation issue, build/compilation problems, etc. Be sure to include what version of PennMUSH you found the problem on.

    If the problem resulted in a crash and a core dump, a stack trace of the core dump should also be included.

    If we need additional stuff (like a log of the configure or make), we'll ask for it, but if you know that it's relevant, you can send it along, too.

    You can also search to see if anyone else has already reported the issue, see what issues have been fixed for upcoming releases, and much more at the site.

  • The PennMUSH community portal is at http://community.pennmush.org

    There is documentation there about many aspects of working with mushes, and after you create an account, you can make blog posts asking for help.

  • M*U*S*H, at mush.pennmush.org 4201 is where the devs and many other talented folk hang out.

Miscellaneous

Announcing when a mush is down

If your mush is no longer running on a given port or server and you want to and are able to leave a program running listening on that port, you can tell people about a new location or other news.

Run:

% make portmsg

Then start the port announcer with:

% ./src/portmsg message.txt port#

Any connections to the given port will see the contents of the message file and then be disconnected after a few seconds.

Running under gdb

If you start the game through gdb (As opposed to attaching to a running process) pass the --no-session argument to netmush/netmud to avoid detaching from the controlling terminal (Done via fork() and setsid() as part of the normal mush startup). If you don't know what gdb is, don't worry about this.

pennmush's People

Contributors

buslov avatar captdeaf avatar cldawes avatar diagonalfish avatar grapenut avatar harrycordewener avatar julesletters avatar mdziczkowski avatar mike347 avatar nbaum avatar ray73864 avatar shawnw avatar sketch avatar talvo avatar tkrajcar avatar unixorn avatar zetafunction avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pennmush's Issues

align()

reported by adkins

Align is reported to be stripping out all %b on the first line of my code. 
This is not so much a bug... as an odd behavior from what I am being told.

Example:

Think align(10,ansi(C,repeat(%b,10))%R[ansi(C,repeat(%b,10))])



Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:21

help and() ambuigity

reported by Ender

As reported by Trinsec via M*U*S*H:

help and() help text states that "Takes boolean values, and returns 1 if 
all of them are equivalent to true(1)." "true(1)" is not a valid PennMUSH 
softcode function, and may be confused with the man page true in Linux. On 
its face, its equivalent to a retired function t(), or its referencing a 
Linux concept some won't understand.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:23

1.8.3p7 issues on cygwin

reported by talvo (8 months ago)


Hey,

Just compiled p7 on cygwin. When running the 'make', I got the error:

funmath.c:1111 error: parse error before '/' token

I added #define HAVE_LOG2 and it then compiled fine.

When doing the ./restart though, I got an error several times:

fcntl: Invalid argument

and netmush.log also contains many, many instances of

setitimer:Invalid argument

though the game seems to be running fine.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:33

Repeating symbols in attribute branch names

reported by cooee (6 months ago)

Attributes may be incorrectly wiped / not wiped if repeating symbols appear 
in the branch name.

The problem below somehow manifested itself such that I had leaves from two 
trees and no branches. It was impossible to delete the leaves even if 
specifically addressed. Mercutio on M*U*S*H managed to figure out a way of 
deleting the leaves by re-creating the branches, wiping the leaves, and 
only THEN wiping the branches. This was the only way to delete the leaves, 
anything else would wipe the branches but not the leaves.

Use the following example to reproduce the problem. I am unable to fully 
reproduce as described above, but I believe I have found the root cause.

Produced in PennMUSH version 1.8.3 patchlevel 7 [10/01/2008]. Running on 
Debian - built from source with no mods.

@create Test Object

&TEST`ATTRIBUTE---NAME-1`TEST <Test Object>=Testing
&TEST`ATTRIBUTE-NAME-1`TEST <Test Object>=Testing

You now have 2 branches under Test, ATTRIBUTE---NAME-1 and ATTRIBUTE-NAME-
1. Each branch has a leaf.

Run:

@wipe <Test Object>/TEST`ATTRIBUTE---NAME-1
ex <Test Object>/**

The branch will be wiped from the tree, but the leaf will remain. The leaf 
should have been deleted.

Output as follows:

TEST [#3`]: 
TEST`ATTRIBUTE-NAME-1 [#3`]: 
TEST`ATTRIBUTE---NAME-1`TEST [#3]: Testing
TEST`ATTRIBUTE-NAME-1`TEST [#3]: Testing

Alternatively, set the object back up so that both branches and leaves 
exist (as initially described above).

Run:

@wipe <Test Object>/TEST`ATTRIBUTE-NAME-1
ex <Test Object>/**

In this case, one branch and two leaves will be removed. The removal of one 
of these leaves is in error, as it was attached to a separate branch and 
should have been left alone. The only thing that remains is the other 
branch.

Output as follows:

TEST [#3`]: 
TEST`ATTRIBUTE---NAME-1 [#3`]:


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:32

modified cwho() to specify online, offline, or all members.

Old trac patch posted by an unknown member (Simply forgot to get that part,
my bad):

'I request a rewrite of cwho(), changing:
cwho(<channel>)
to: cwho(<channel>,<online/offline/all>)
So that offline users, or 'all' users on a channel can be displayed.
Because at the moment, cwho() only shows online users (Along with
permissions on DARK etc of course).
The way I stated the function to be rewritten should retain backwards
compatibility.


A very quick hack with this one, disclaimer: I'm not a C++ developer, I was
just bored.
I haven't added manual pages or anything for it, so, and the error message
is less than
helpful.
cwho(<channel>) behaves the same as cwho(<channel>,online) options are
online, offline
and all, as suggested.
Apply patch from main directory, patch -p0 < cwhopatch.txt (No, I didn't put
instructions on the patch file because I'm not that good at patchfiles).


Updated version, cleaner, case insensitive and uses safe_str rather than
notify if
incorrect option given.'

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:24

Attachments:

The Dark Flag

Reported by Mercutio

As of 1.8.3p7 (and possibly earlier) apparently one can not set a Player 
Object as 'DARK' unless they are also set Wizard. This can't be done as a 
wizard, nor even as #1.

The only way to set a non-wiz player Dark, is to set them Wiz, set them 
Dark, then Un Wiz them.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:10

Softcoded 'fcache' eg: connect, wizard, quit, etc. txt files.

This is merely a reposting of an old patch on trac. It adds an additional
feature to penn where all the main 'low level' txt files like connect,
wizard, and quit can be optionally stored as a softcode attribute and use
nearly all the functions available in pennmush (ansi() is stripped, and
obviously functions that rely on a dbref or name will not work if the
viewer is not logged in). If the given attributes are not used or the
config options left unchanged, penn defaults to the txt files on the server.

Original issue reported on code.google.com by [email protected] on 14 Jun 2009 at 5:24

Attachments:

lowner() function to retrieve owner of a lock

'It does not look like owner allows you to extract the owner of a lock like
it does attributes. I am trying to colorize the brief list, but in the
process... could not show the ownership.'

Talvo: Adds an lowner(<object>/<locktype>) function for this.

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:29

Attachments:

Visual or All viewable zone() usage

This is basically a copy of an old ticket I posted on dev.penn.org some
time ago requesting to be able to allow zone() to be used by anyone even
including mortals but obviously obeying higher permissions. Obviously
calling zone() on a remote object without see_all or long_fingers powers
will give a permission denied but if you have one of those (if my thinking
on the actual operation of those powers is correct) on your person, zone()
will work.

Since I have sluggishly gotten more familiar with C code (but still far
from a programmer), I'm gonna look into this a bit more.

Original issue reported on code.google.com by [email protected] on 16 Jun 2009 at 11:05

function permission flags instead of called_as functionality.

Sorry, kinda hard to understand what is going on to label the summary
correctly. But here's the full thing:

'Hey,
The patch below adds a new element to the struct softcode functions are
stored in
in the hardcode, storing a set of flags to be passed to the hardcoded functions
which run them. Those flags can then be used, instead of checking called_as, to
determine exactly what the hardcoded function should do, when it's used by more
than one softcode function (like fun_search, fun_pemit, etc).

The benefit to doing that is that any built-in function can be aliased in
alias.cnf, either for simple renaming or for localization. Currently, for
instance,
if you do:

function_alias nspemit spam
@set me=nospoof
th spam(me,test)

you'll still see the nospoof info, because fun_pemit checks for "NS" in the
function
name to decide whether it should show nospoof info or not, and actually
runs pemit()
not nspemit(). Similar for the lkids() function that someone was trying to
softcode
in another ticket on here to alias children(); with this, you can just use a
function_alias of children(), where currently it'd incorrectly alias
lsearch() instead.

(This adds a new argument to function_add() and alias_function(), so anyone
using
those in funlocal.c would need to update them.)

Mike'

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:40

Attachments:

Allow /s in @mail subjects

By Paige on trac:

ATM, It is not possible to escape the / seperating the subject from the
body. I propose allowing this escape much like we do with user defined
commands.

@mail Jav=Walker\/Greg Millam/He is pretty cool... if not silly at time.

This would make 'Walker/Greg Millam' as the subject.

Original issue reported on code.google.com by [email protected] on 9 Jun 2009 at 12:11

Spotty save reliability while using zlib libraries, perfect using gzip/gunzip

Reported by Teal



This one actually turned out to be one doozy of a sleeper. If it wasn't for 
having a dump_complete message and that particular bug being fixed, I 
wouldn't have noticed this bug and it has the potential of losing tons of 
game data if there is a crash, system crash, reboot. I don't even know if 
it'll safely do a paranoid or crash dump either.

Basically using the default configuration of 1.8.3p8/p9 the compression 
scheme for the db files defaults to gz using the system zlib library rather 
than the old way of using the gunzip and gzip binaries. While in this new 
mode, pennmush has been all over the board on my system with no pattern, 
rhyme, or reason. Sometimes get a dump_complete message, sometime not. 
Sometimes the 'last saved on' line in @uptime would update, sometimes 
wouldn't. Sometimes the timestamps on the .gz files would update, sometimes 
not. Would always vary.

Change it to force usage of gunzip/gzip and all is working just fine as I 
expected.

This is currently running on debian testing ("squeeze" at this point.). One 
thing I noticed is that according to Raevnos, it should be using the zlibc 
package and calls for zlib.so. The debian packages put libz.so in the 
zlib1g-dev package while the zlibc package only has /lib/uncompress.so I 
have no idea if this makes any difference to the situation bit figured it 
was at least relevant.

I've done all the debugging that I, personally, could possibly do. The more 
eyes that could look at this, the better. I still am not sure if it's 
isolated to my particular setup or has the possibility of being more 
widespread.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:13

@config/save

reported by Mercutio


@config/save Works... the first time.

However, watch the following error:

@config/save player_flags=enter_ok ansi no_command (twice) and then --> 
@config player_flags

You will see:

player_flags enter_ok ansi no_command enter_ok ansi no_command enter_ok 
ansi no_command


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:26

Additional channel mogrifier functionality for per-user output modification.

This is something that has been subtly proposed before. But simply put:
Allow the mogrifier code to modify the output side of the channel text
based on the receiving player. Something like the censor code in 'help
@chat mogrifying3' but enabled or disabled per the viewing user. Or in
fewer words: @chatformat but integrated into the mogrifier code for better
admin control without forcing/locking a chatformat attribute on each player.

I dunno how you'd go about doing it without interfering with existing code
(maybe an extra *`output`* tree? *shrug*), but would be a cool idea I think.

Just a thought...

Original issue reported on code.google.com by [email protected] on 12 Jun 2009 at 8:52

extra namelist() argument to send error message on invalid names.

'An optional second argument for namelist(), containing a list of dbrefs,
sends an error message to the dbrefs, much like Page does. Maybe a third
argument for the format of the error message, like so:
    "[namelist(#1 Javelin "ringo spar" bogus,%#,No such creature as "%0".)]
No such creature as "bogus".
You say, "#1 #7 #56 #-1"'

'Patch for namelist(<list>[,<obj>/<attr>])'

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:45

Attachments:

no_debug attribute flag

>
The patch below adds a no_debug attribute flag. When it's set on an attribute,
it overrides the debug (object and attribute) flags, stopping debug info being
produced for the attr. Hopefully useful when you're getting <Output
flushed> from
large debug output - as you verify an attr is correct, you can set it no_debug
to suppress it and increase the amount of useful debug info you get shown.
<

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:51

Attachments:

member() ansi-sensitivity

This is a copy of a ticket back on trac that talvo posted. Here's an excerpt:
'Minion reported on M*U*S*H earlier that member() is still ansi-sensitive;
member(a,ansi(y,a)) returns 0, not 1. Not sure if it was just overlooked
when some of the other matching functions were made to ignore ansi, but it
would be nice if it did, too.'

He also posted a patch for the fix too.

http://dev.pennmush.org/ticket/7963

Original issue reported on code.google.com by [email protected] on 16 Jun 2009 at 7:46

Problems with symbols in attribute tree branch names

reported by cooee (6 months ago)



This ticket may or may not be the exact same as #7702. I will raise it 
separately in case they are different problems.

I investigated the problem I was having further (as described in #7702) and 
worked out how to have leaves with no branches.

I believe this error occurs because of the apostrophe in the branch name. I 
also had two full sets of leaves on my mush with - and = in the branch 
name, both with no leaves. Perhaps if you had BRANCH BRANCH- BRANCH= 
BRANCH' and tried to wipe BRANCH using a method similar to the one below, 
you would end up having the extra three sets of leaves with no branches.

Try the following commands:

@create Test Object

&DEFENSE.DODGE-III'`AUTHOR Test Object=General
&DEFENSE.DODGE-III'`JUTSU Test Object=Taijutsu
&DEFENSE.DODGE-III'`RANK Test Object=D
&DEFENSE.DODGE-III'`ROLL.DEX Test Object=2
&DEFENSE.DODGE-III'`ROLL.END Test Object=1
&DEFENSE.DODGE-III'`ROLL.SPD Test Object=3
&DEFENSE.DODGE-III'`TYPE Test Object=BLUNT SHARP CHAKRA FIRE ICE WATER WIND 
LIGHTNING POISON ACID EARTH SHADOW INSECT SMOKE SEAL SCROLL

&DEFENSE.DODGE-III`AUTHOR Test Object=General
&DEFENSE.DODGE-III`JUTSU Test Object=Taijutsu
&DEFENSE.DODGE-III`RANK Test Object=D
&DEFENSE.DODGE-III`ROLL.DEX Test Object=2
&DEFENSE.DODGE-III`ROLL.END Test Object=1
&DEFENSE.DODGE-III`ROLL.SPD Test Object=3
&DEFENSE.DODGE-III`TYPE Test Object=BLUNT SHARP CHAKRA FIRE ICE WATER WIND 
LIGHTNING POISON ACID EARTH SHADOW INSECT SMOKE SEAL SCROLL

@wipe Test Object/DEFENSE.DODGE-III
@wipe Test Object/DEFENSE.DODGE-III'`TYPE
@wipe Test Object/DEFENSE.DODGE-III
@wipe Test Object/DEFENSE.DODGE-III'`TYPE
@dol lattr(Test Object/**)=@wipe Test Object/##

ex Test Object/**

At this point, the only way to remove the leaves is to manually create the 
branch, wipe each leaf, and when done wipe the branch separately.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:30

Pcreate crash

What steps will reproduce the problem?
1.@pcreate name
2.Do not enter a password
3.

What is the expected output? What do you see instead?
Failure creating '' (bad name)
instead:
** DISCONNECTED **
Please use labels and text to provide additional information.

Original issue reported on code.google.com by [email protected] on 6 Jun 2009 at 5:36

Problems with log2 on cygwin

Reported By: Talvo

This could just be me being stupid, but I'm having problems compiling 
1.8.3p6 on cygwin. With an unmodified copy of Penn, I get an error when 
running a 'make':

funmath.c:1101: error: parse error before '/' token

I tried several things to get around it; adding a '#define HAVE_LOG2' 
sorted the compile problem, but the game immediately crashed on restart 
(I'm not able to get a useful coredump with cygwin, I'm afraid). Tried 
changing the definition of log2 to be:

#define log2(x) (log(x)/log(2.0))

which gave me the warning

funmath.c:1100:1: warning: "log2" redefined in file included from 
funmath.c:12: /usr/include/math.h:225:1 warning: this is the location of 
the previous definition

On the assumption that maybe cygwin had a log2 but it was broken, I tried 
changing all the calls of log2() to use log2New(), and renamed the 
definition in funmath.c the same, which again let it compile successfully, 
but caused a crash on reboot. Not sure of anything else that might fix it 
or provide more useful info, but if there is anything I can do/check for 
you, please let me know...

Mike


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:07

terminfo() and prompt_newlines

reported by Talvo

The terminfo() function's return includes prompt_newlines in pretty much 
every instance, but it's not mentioned in 'help terminfo()'. 

Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:27

Flags

reported by adkins

If an object has been destroyed, It seems that it is keeping the flags 
currently set. Also... trying to remove a flag or add a flag to an object 
already set garbage identifies the flag as not existing. 

Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:20

Hidden Disconnect message Wonky

reported by adkins

I took note that with p9, the disconnect message for hidden admin show them 
as connecting.

GAME: Guinan has DARK-connected. <--Connected
GAME: Guinan has DARK-connected. <--Disconnected


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:24

@hook/list 'all hooks' listing without <command> given.

An older patch I came across on Trac by Trinsec:

'Currently:

 @hook/list <command>


Suggested:

@hook/list [<command>]

Without <command> as parameter, it lists all the @hooks that have been
done. That'd be really useful to see what crap we've pulled with
@hooks in general.

Sketch seconds this suggestion.

Trinsec.'

Original issue reported on code.google.com by [email protected] on 17 Jun 2009 at 11:54

Attachments:

Locking out accounts

By Paige on Trac:



Elsemu, there has been a sucessful attack from superstar.insol.be that
gained access to another players account... and changed settings and such.
The incident is currently being investigated. I'd imagine, that who ever
attacked this mush, did so with a password cracking script... If that is
the case, then even M*U*S*H is defenseless. I would like to suggest locking
out the account after the third failed attempt... and severing the
connection from that port. I understand that Unix already has this feature
in place... And it seems to work well. ATM, PennMUSH does not have any
structure/support for such a task. Is this possible?
Change History
Changed 17 months ago by raevnos ¶

    * owner set to raevnos
    * milestone set to 1.8.2p9

This is a good idea; probably worth doing for 1.8.2 as well as 1.8.3.
Blocks for per-player login attempts, and maybe track each IP address and
sitelock those with more than some number of failed logins in a row...
Changed 15 months ago by Boris ¶

How would you conceptually go about this? I was poking around player.c last
night and thinking.

Every connection is written to connect.log with a date/time stamp. Is this
as simple as checking that logfile against failed attmepts in X seconds
before allowing login?

player.c (line 165) has this:

    /* validate password */ if (!Guest(player))

        if (!password_check(player, password)) {

            /* Increment count of login failures */ Mod Time(player)++;
check_lastfailed(player, host); return NOTHING;

        }

I know nothing about c, but I would like to learn, and if this is that
easy, I'd like to take a stab at it.
Changed 15 months ago by Mercutio ¶

I must note that this has a possibility of being abused. If there's hate
between players, a player can try to log into that person's account a few
times to force it to get locked up.

I realize that the staffer would be able to figure out the IP adress of the
player and thus find out who the culprit was, but I may want to suggest
something higher than three? After all, if someone is running a
password-hacking tool, it likely starts with using a 4-letter password and
slowly works its way up.

Asuming it can be 36 types of signs, 4 characters has about 1679616
possibilities. --> 364

I doubt a player who really has it in for another player will take his time
to fail a connection that many times.

About 46656 failed attempts may be a good place to start? --> 363
Changed 14 months ago by loki ¶

Yay for config options, says I. ;) It seems like a good idea, but it ought
to be a simple config option like fail_attempts ... default it to -1 (the
current behaviour; 'infinite'). Then you can do like fail_attempts 3 to
lock out after 3 failed attempts, and so on.
Changed 12 months ago by dbwiddis ¶

I think a failed login timer would work much better than a number. Simply
require a 5 second delay after a failed login attempt.

This solves the cracking problem (there are only 86400 in a day, so 17280
login attempts) as well as the annoying another user problem (no matter
what, the login is available again 5 seconds after the attacking player
finishes their tantrum).

This is also much easier to implement, by simply tracking the LASTFAILED
attribute (which records both the IP and time of last failed connection).

Delay should be higher (say, 1 minute) for wizard accounts.
Changed 12 months ago by dbwiddis ¶

Also, the IP tracking could assign a shorter delay for a failed connection
attempt from the user's last successful IP (more likely to be their own
computer) than a different IP (more likely to be a cracker)

Original issue reported on code.google.com by [email protected] on 9 Jun 2009 at 12:13

htmlencode() function -- convert internal penn markup to html

By Mike:

>
'Hack' is the most accurate description of the patch I did. It's basically
a copy of the
code for decompose() that converts the internal markup codes into <font>,
<b> and <u>
tags for ansi, and the appropriate html tags for Pueblo, and then converts
text to the
appropriate HTML entities instead of escaping it for MUSHcode. It does seem
to work
correctly, though, at least, and would be a useful feature for mainstream
Penn, I think,
given how well PennMUSHes can tie into the outside world via SQL and
suchlike now.
Someone else can probably rewrite it better than I did, but I'll include
the patch I made,
anyway, which adds an htmlencode() function.

(The problem Mercutio mentioned about needing to have Pueblo enabled only
applies to
markup generated by things like tagwrap(), which seem to only bother to do
anything when
Pueblo is enabled, presumably to save the time of adding the tags when
they'll always
just be stripped away again. But if that were changed, so it always
generated the markup
- even if it wouldn't be sent to players b/c of Pueblo being disabled - it
would make the
function work fully.)

Example:
think htmlencode(ansi(rh,<This> & [tagwrap(a,href=www.pennmush.org,this)]
are%b%b%btests))
<font color="red"><b>&lt;This&gt; &amp; <a href=www.pennmush.org>this</a> are
<

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:57

Attachments:

Regexp Command Matching, Ansi Trouble!

Reported by: Mercutio


Regexps skips ansi code to match regexps. Cool, I can live with that. One 
problem...

If one wants to create a command where people /can/ input ansi, it ends up 
disappearing by the time it reaches the resulting arguments.

Example &cmd`pose object=$pose (.+)$:@emit %0|%1 @set 
object/cmd`pose=regexp

pose [ansi(hr,stuff)] pose stuff|stuff

Neither of those have color. It is entirely lost.


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:11

@nscemit

@NSCEMIT is reporting that it does not recognize the /silent switch 
contrary to what is shown in 'HELP @CEMIT'. I am using the p9 distro of the 
1.8.3 series.

Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:24

ncand() function working like not(cand())

'A function which works like not(cand()) -- like cand(), it stops evaluating
after the first argument which evaluates as false. Example:

    think nand(1[pemit(%!,before)],0[pemit(%!,during)],1[pemit(%!,after)])
before during after 1

    think ncand(1[pemit(%!,before)],0[pemit(%!,during)],1[pemit(%!,after)])
before during 1'

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:35

Attachments:

ASCII separator characters as valid delimiters.

Original ticket by Nammyung, patch by Mike/Talvo:

>
ASCII provides a number of special characters designated as separator
characters:
ASCII 28 through 31 (1C through 1F Hex). Currently Penn treats them as illegal
characters. It would be convenient if these could be accessed through chr(28),
chr(29), etc., to be used as list delimeters, etc. It would be even better
if we
had %d1 %d2 %d3 %d4 substitutions for them.
<
>
Patch for Nammy's suggestion, though I used %d0 through %d3 
>

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:49

Attachments:

member() ansi-sensitivity

From Trac:

Minion reported on M*U*S*H earlier that member() is still ansi-sensitive;
member(a,ansi(y,a)) returns 0, not 1. Not sure if it was just overlooked
when some of the other matching functions were made to ignore ansi, but it
would be nice if it did, too.


Changed 2 months ago by Talvo

    * attachment member-ansi.patch.txt added

Patch blatantly stolen from the same code in match()
Changed 2 months ago by dbwiddis ¶

And in the same conversation, grab behaves inconsistently for list vs. pattern:

think grab(a b,[ansi(hr,b)]) --> no match

think grab(a [ansi(hr,b)],b) --> match

Original issue reported on code.google.com by [email protected] on 8 Jun 2009 at 11:57

Attachments:

@mvattr/tree moves whole trees.

The command will be exactly the same as @mvattr, except that it moves whole
trees instead of just the top attribute.

It can be done via softcode, but it is bothersome--at least to me:
&cmd`mvattr-tree #42=$+mvattr/tree */*=*/*:@dolist lattr(%0/%1`*)={@mvattr
%0/##=%2/[edit(before(##,`),%1,%3)]`[after(##,`)]} or something like that.
(I've never actually done it, yet, so that code is off the top of my head)

Original issue reported on code.google.com by [email protected] on 6 Jun 2009 at 1:31

cloning objects

reported by adkins

When cloning an object, the original objects name gets messed up. I cloned 
#101, and now its name is... oth�(#101Tn) 

Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 3:22

Custom INFO options

'Hi, perhaps automated MUSH lists and quick checks by new users might benefit
from the addition of a couple of fields to INFO: genre and age-range?

With good wishes, Eric T.'


'Finally got this to work, after several hours of trying to do it a really
stupid way, and then coming to my senses and doing it the easy way. The
patch adds a new config directive in mush.cnf,

info_text field value

For example, info_text Website http://mush.pennmush.org

Which changes the output to

### Begin INFO 1.1
Name: TinyMUSH
Uptime: Tue Jul 22 06:21:39 2008
Connected: 0
Size: 3
Version: PennMUSH 1.8.3p5
Website: http://mush.pennmush.org
### End INFO
'

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:46

Attachments:

NO_LOG flag for selective per-object bypassing of command.log logging.

>
Update to LT_CMD so that you can remove certain objects/players
from the command.log file.

It might be that you want to log all commands or actions on the
game however you might not want to log anything coming from the
master room (due to a high amount of spam) or you might only want
to log things players do and nothing from objects.

In either of those cases all you would do is set the NO_LOG flag
on the things you don't want logged and then those will never
make it into the command.log file.

To use the patch all you need to do is apply the patch, and then
in game connect as god and 1) @flag/add NO_LOG 2) @flag/restrict
NO_LOG=wizard log,wizard log

Then you can turn 'log_commands' on in mush.cnf and keep not only
your command.log file size down but also the logspam.
<

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 2:03

Attachments:

Bring @search into the modern age: Multiple class @searching

@search is currently stone age. It only allows one class restriction, and
begin+end. lsearch() and friends, conversely, allow multiple class
restrictions.

Ideally, this change should allow:

@search [me] type=player name=walker

Or:

@search [me] type=object, cmd=who, start=10, count=20

...

Whether it uses commas or a space is up to you!

Original issue reported on code.google.com by [email protected] on 9 Jun 2009 at 1:52

New dbreflist attr flag for garbage cleanup

The patch below adds a new DBREFLIST attribute flag. When set on an
attribute, the MUSH assumes it contains a list of space-separated
dbrefs/objids, and at every @dbck it removes dbrefs of non-existant
objects. If anything in the attribute doesn't look like a dbref, it leaves
the attribute alone. (It also complains in the error log, like other @dbck
checks, but since this can be easily done by a user, and is not a huge
error like a bad location, it possibly shouldn't? Maybe just notify the
owner instead?) Saves having to do manual garbage cleanup on softcode db
objects. (I'd planned to try and have it figure out the delimiter so you
could use non-space, but this was much easier, and works the same as the
DBREFLIST @lock.)

Original issue reported on code.google.com by [email protected] on 9 Jun 2009 at 12:10

Attachments:

Mortal flag to temporarily de-wiz or de-roy an admin

>
Patch below adds an @mortal command for this. (I did try a flag that
negates Wizard() / Royalty()
checks in the hardcode first, but a lot of stuff checks for the presence of
the flags rather than
using those, and softcode checks use hasflag(), so I decided against it.)
@mortal <obj> replaces
it Wizard and Royalty flags with Mortal_Wizard and Mortal_Royalty,
respectively, and @mortal/wizard
<obj> or @mortal/royalty <obj> restore them. Not sure if it's the best way
to do it, but it seems
to work OK, from the testing I've done.

Replying to KimikoMuffin:

    My idea is for a flag (say, DE-ADMIN(d), or NOT-STAFF(n), or
OFF-DUTY(f), or something not
currently used by player-flags) which allows admins to temporarily
"disable" their ability to use
wiz/roy commands (@pcreate, seeing dbrefs and attributes, etc), and
re-enable it at will, sort of
analogous to a registered channel operator on IRC having the ability to
remove and add op status
to themselves in a particular channel. This wouldn't affect objects they
own -- the "code wizard"
could set it on themselves without breaking wiz-objects they own that are
@set Wiz in room #2, for
instance -- except insofar as they wouldn't be able to @force Wiz objects,
say. Without having to
login God, @set someone !wiz, and then re-@set them Wiz (which *would*
break the wiz-objects in
room #2). My reasoning for this is so that staffers can be off-duty in more
than just name only.
Especially if they find that they're getting angry and want to remove
temptations before it's too
late (I know what I'm talking about here). Yeah, it won't stop someone
who's really determined to
fly off the handle, but it'll just be ... another option, I guess.
<

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 1:48

Attachments:

@mail/sent

By Trelane on Trac:

Or Folder 1 or some such thing. It would be nice to have a way to view
messages that you sent to someone else.

Original issue reported on code.google.com by [email protected] on 8 Jun 2009 at 11:58

lock owners

By Paige on Trac:

it does not look like owner allows you to extract the owner of a lock like
it does attributes. I am trying to colorize the brief list, but in the
process... could not show the ownership.
Attachments

lowner.patch.txt (3.5 KB) - added by Talvo 3 months ago.
    Adds an lowner(<object>/<locktype>) function for this. 


Original issue reported on code.google.com by [email protected] on 9 Jun 2009 at 12:12

Attachments:

Regexp Matching kills ansi

What steps will reproduce the problem?
1. Create a regexp command with at least one argument.
2. Feed the command an ansi string.
3. Attempt to display $0 - $1 etc.

What is the expected output? What do you see instead?
Expected: Colored text captured.
Result: All output is stripped of ansi.

What version of the product are you using? On what operating system?
1.8.3p9


Original issue reported on code.google.com by [email protected] on 2 Jun 2009 at 8:28

DARK disconnecting shows 'Player has DARK-connected.'

What steps will reproduce the problem?
cd to a wiz character while logged in as a character while monitor, then
disconnect

What is the expected output? What do you see instead?
You see 'Player has DARK-connected.' twice, instead of 'Player has
DARK-connected.' and 'Player has DARK-disconnected.'

What version of the product are you using? On what operating system?
1.8.3p9 on Debian

Please provide any additional information below.
bsd.c line 3365

Original issue reported on code.google.com by [email protected] on 3 Jun 2009 at 7:18

Fixed flag for rooms to hold players in place globally

>
The patch below alters the Fixed flag so it can also be set on rooms;
any player in a room set fixed is considered to be fixed the same as
if they had the flag set themselves. To allow wizards to stop players
from @tel'ing/home'ing out of a certain room without having to use
@aenter/@aleave to set/clear the fixed flag on them. 
<

Original issue reported on code.google.com by [email protected] on 18 Jun 2009 at 2:02

Attachments:

slow_pay

Submitted on Trac by tramp:

Penn [et al] devs,

I humbly submit the following for consideration:

the queue cost (1/32 or 1/64) is very practical for catching runaway
objects; however it doesn't always seem to be practical for automated
recurring processes in ongoing operation... meaning anything from
centralized crons to extensive/intensive bots of any kind.

this results in a situation where, for bot/automation ownership, no_pay (at
minimum) becomes a bar to surpass in order to overcome operational cost and
attain softcoding freedom. no_pay, however, opens the runaway object
security risk.

my proposed solution is a related power/flag/setting/whatever: slow_pay. a
configurable alternative pay rate -- less free than "free as in beer" thus
also less free than "free as the blob-that-ate-manhatten", but free-er
(cheaper) than full price.

e.g., maybe some percent of full price (1/4, .25, 25%) or some other fixed
rate (one unit per 256 queue entries).

respectfully,

teh

Original issue reported on code.google.com by [email protected] on 8 Jun 2009 at 11:54

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.