Jeremy Stanley [Tue, 2 Jun 2015 06:08:02 +0000 (06:08 +0000)]
Fix punctuation match order and add tests
Add explicit punctuation functional tests with a conversation
between the two test sessions, and fix a nondeterministic bug this
exposed. Punctuation is now matched in a sorted order rather than
arbitrary hash table lookup order, and the sort is reversed so that
the longest match always wins.
Jeremy Stanley [Sun, 17 May 2015 13:24:34 +0000 (13:24 +0000)]
Test interaction between multiple connections
Extend functional testing to utilize a second connection, and test
that the second actor entering and exiting the World causes the
first actor to see the correct messages for each of these events.
Jeremy Stanley [Sat, 9 May 2015 11:45:03 +0000 (11:45 +0000)]
Lay groundwork for more thorough functional tests
Make bin/test support an arbitrary number of connections, be more
verbose about what it's doing, and archive complete captures of each
session involved.
Jeremy Stanley [Sat, 18 Apr 2015 06:54:07 +0000 (06:54 +0000)]
Switch to yaml.safe_load for better security
Use the yaml.safe_load to avoid unwanted privilege escalation due to
deserializing unsafe objects. Also switch to yaml.safe.dump for
symmetry, so that we don't write out files we'll later refuse to
parse.
Jeremy Stanley [Mon, 23 Mar 2015 07:05:55 +0000 (07:05 +0000)]
Be more strict about file permission masks
Set a reasonably strict umask of 0022 when creating most files and
directories. Also set the umask to 0077 for private files to avoid a
brief race where someone could open them for reading after creation
but prior to the prophylactic chmod to 0600.
Jeremy Stanley [Mon, 23 Mar 2015 06:46:05 +0000 (06:46 +0000)]
Accumulate logs if necessary while loading data
Prior to existence of the global universe, the destination files for
logging may not be known. Accumulate log entries during
DataFile.load() if immediate logging fails, so that they can be
flushed later once logging is possible.
Jeremy Stanley [Wed, 18 Mar 2015 09:52:01 +0000 (09:52 +0000)]
Remove stray non-generic references in sample data
The sample data was adapted from an actual test implementation, and
a few references to that original dataset missed cleanup. Take care
of them.
Jeremy Stanley [Wed, 18 Feb 2015 03:35:59 +0000 (03:35 +0000)]
Switch password handler to passlib's PBKDF2
The passlib implementation of PBKDF2 is strong, portable and more
heavily audited. Use that instead of implementing our own custom
handler. Also simplify password use by dropping optional parameters
from the create and verify functions, and don't bother carrying the
old upgrade_legacy_hash public function forward; it can be reworked
to provide in-place hash upgrades later if desired.
Jeremy Stanley [Sat, 17 Jan 2015 01:16:13 +0000 (01:16 +0000)]
Write files directly from yaml.dump
Simplify data file writing by passing a file descriptor directly to
the yaml.dump method rather than unnecessarily passing a string back
out of it and into a separate writer.
Jeremy Stanley [Fri, 9 Jan 2015 21:19:05 +0000 (21:19 +0000)]
Remove UTF-8 encoding header from Python files
The Python 3.x interpreter assumes source files are in UTF-8 by
default, so file encoding headers are no longer necessary. Get rid
of them.
Jeremy Stanley [Mon, 29 Dec 2014 20:21:49 +0000 (20:21 +0000)]
Fix type mismatches in save file rotation
The numeric suffix on rotated save files needs to be treated as an
int during rotation calculations but as a str during filename
generation. Make it so.
Jeremy Stanley [Fri, 26 Dec 2014 10:00:06 +0000 (10:00 +0000)]
Correct avatar inheritance
The inherit facet should be a list, so correct an instance where it
was inadvertently left as a string literal instead.
Jeremy Stanley [Thu, 6 Nov 2014 01:41:56 +0000 (01:41 +0000)]
Log missing avatars
If an avatar is missing, it's likely that it was created but not yet
saved during a crash. This is usually safe to skip but could imply
data corruption, so log the situation with a high log level.
Jeremy Stanley [Mon, 13 Oct 2014 03:12:08 +0000 (03:12 +0000)]
Accumulate logs during setup
Prior to existence of the global universe, the destination files for
logging may not be known. Accumulate log entries during
Universe.load() and then flush them once it's safe to do so.
Jeremy Stanley [Thu, 18 Sep 2014 23:31:35 +0000 (23:31 +0000)]
Add a .gitignore file
Use .gitignore to track ephemeral files created during testing.
Jeremy Stanley [Sat, 13 Sep 2014 06:48:51 +0000 (06:48 +0000)]
Finalize INI to YAML conversion
Convert the main configuration file to YAML and rip out any remnants
of INI support.
Jeremy Stanley [Wed, 6 Aug 2014 14:38:51 +0000 (14:38 +0000)]
Remove the git2gch utility
The git2gch utility was previously used to generate GNU-style
ChangeLog files from Git commit history, but there are useful
existing tools for this now and it's out of scope for mudpy.
Jeremy Stanley [Tue, 5 Aug 2014 00:33:41 +0000 (00:33 +0000)]
Clean up parenthetical spacing in bin/mudpy
For better PEP-8 conformance, correct parenthetical spacing in the
bin/mudpy file.
Jeremy Stanley [Tue, 29 Jul 2014 19:37:50 +0000 (19:37 +0000)]
Mark unused import false positives
Since the reload framework in the package's init imports modules
which look as if they don't get used, add noqa comments inline to
indicate they should be ignored by static analysis tools.
Jeremy Stanley [Mon, 23 Jun 2014 22:35:01 +0000 (22:35 +0000)]
Convert sample data directory index to YAML
Jeremy Stanley [Tue, 17 Jun 2014 05:36:27 +0000 (05:36 +0000)]
Support data directory indices in YAML
* lib/mudpy/data.py(DataFile.load_yaml,DataFile.load_mpy): Add routines
to look for a YAML file index as well as the old INI-based format. For
YAML files, don't bother recasting entries to lists or dicts since they
should already be returned as the desired type.
Jeremy Stanley [Mon, 16 Jun 2014 09:49:27 +0000 (09:49 +0000)]
Convert sample prop data file to YAML
Jeremy Stanley [Fri, 13 Jun 2014 00:25:05 +0000 (00:25 +0000)]
File read-only check supports YAML
* lib/mudpy/data.py(DataFile.is_writeable): Add support for determining
read-only status of YAML data files.
Jeremy Stanley [Sat, 7 Jun 2014 21:32:16 +0000 (21:32 +0000)]
Convert sample area data file to YAML
Jeremy Stanley [Mon, 2 Jun 2014 06:31:26 +0000 (06:31 +0000)]
Don't unnecessarily recast lists and dicts
* lib/mudpy/misc.py(Element.getlist,Element.getdict): Unlike INI, YAML
directly encodes other datatypes in addition to strings. When using get
functions for lists and dicts, if they're already provided in their
desired form then don't recast them as doing so would instead create
nested datatypes instead.
Jeremy Stanley [Sun, 1 Jun 2014 19:11:37 +0000 (19:11 +0000)]
Initialize data file contents on creation
* lib/mudpy/data.py(DataFile.__init__): When instantiating a DataFile,
initialize its data class variable as an empty dict in case it's
traversed before getting populated.
Jeremy Stanley [Tue, 27 May 2014 23:01:24 +0000 (23:01 +0000)]
Convert menu data file to YAML
Jeremy Stanley [Tue, 20 May 2014 08:40:10 +0000 (08:40 +0000)]
Catch exceptions in YAML menus
* lib/mudpy/misc.py(Element.facets,Element.get): Early in login and
account creation, elements can have None in place of a dict for their
data. Under these circumstances, listing their keys throws
AttributeError and deep-linking into specific keys throws TypeError.
Catch these and treat them as empty.
Jeremy Stanley [Thu, 15 May 2014 23:42:22 +0000 (23:42 +0000)]
Convert command data file to YAML
Jeremy Stanley [Sat, 10 May 2014 16:16:56 +0000 (16:16 +0000)]
Convert archetype data file to YAML
Jeremy Stanley [Thu, 8 May 2014 13:09:01 +0000 (13:09 +0000)]
Begin the transition from INI to YAML
* lib/mudpy/data.py(DataFile.load): Temporarily turn this method into a
selector which calls different loader methods depending on the file
extension so that old INI and new YAML files can be intermixed during
the transition.
(DataFile.load_yaml): This new loader method handles YAML files.
(DataFile.load_mpy): This is basically the old DataFile.load method.
(DataFile.save,DataFile.is_writeable): Add some TODO reminders for the
YAML transition.
* lib/mudpy/misc.py(Element.__init__,Element.facets,Element.get)
(Element.getboolean): Add conditional branching around calls deeper into
mudpy.data which need different behavior depending on the underlying
file formats.
* requirements.txt: Start tracking Python module dependencies in this
new file, and add the pyyaml module as the first entry.
Jeremy Stanley [Sun, 4 May 2014 23:53:06 +0000 (23:53 +0000)]
Correct stray use of location
Jeremy Stanley [Tue, 29 Apr 2014 00:13:52 +0000 (00:13 +0000)]
Clean up rendering in coder documentation
* doc/coder.txt: Correct top-level numbering prefix and several
syntactically incorrect references.
Jeremy Stanley [Wed, 23 Apr 2014 11:16:46 +0000 (11:16 +0000)]
Use area instead of location or room
Since the term "location" was already used for the name of the facet
identifying the area where an element is located, it was vague to also
use that term for a class of elements which serve as those locations.
Instead use the term "area" since it's as descriptive and shorter. Also
avoid the term "room" as a synonym since areas can be outside as well as
indoors. This further implies renaming the location.mpy sample file to
become area.mpy instead.
Jeremy Stanley [Tue, 15 Apr 2014 13:08:54 +0000 (13:08 +0000)]
Simplify coder documentation
* doc/coder.txt: Stop suggesting that tarballs and epydoc documentation
are updated for every commit, since currently they aren't. Gut the style
guide now that the project is fully PEP-8 compliant, and suggest a
couple of code checking utilities to help keep it clean.
Jeremy Stanley [Thu, 10 Apr 2014 19:09:01 +0000 (19:09 +0000)]
Make exception logging failures more robust
* lib/mudpy/misc.py(excepthook): When an uncaught exception is raised
and the attempt to log it fails, try to write it to stdout directly and
also mention the new exception details.
Jeremy Stanley [Sat, 5 Apr 2014 01:58:58 +0000 (01:58 +0000)]
Be explicit when show result raises an exception
* lib/mudpy/misc.py(command_show): If an admin uses the show result
command and it raises an exception, return the details in the result
message.
Jeremy Stanley [Thu, 27 Mar 2014 10:51:17 +0000 (10:51 +0000)]
Tighten exceptions for new sockets and reads
* lib/mudpy/misc.py(User.enqueue_input,check_for_connection): When
reading from a socket or polling for a new connection, be specific about
the exceptions which are benign so that we will still error out when
more detrimental exceptions are raised.
Jeremy Stanley [Wed, 19 Mar 2014 19:05:57 +0000 (19:05 +0000)]
Fix log spamming on premature socket disconnect
* lib/mudpy/misc.py(User.flush): When sending on a user's socket raises
BrokenPipeError, their connection has probably dropped. Go ahead and set
their state to disconnecting so the socket will be cleaned up earily.
This also stops spamming the log on every failed write to a broken
socket before it eventually times out in the TCP/IP stack as well.
Jeremy Stanley [Mon, 10 Mar 2014 13:45:46 +0000 (13:45 +0000)]
Stop trying to rename the daemon process
* lib/mudpy/misc.py(daemonize): Remove the hacky process table entry
rewriting routines. They weren't cross-platform and never really worked
well. Also, these days admins are more used to daemons in interpreted
languages and know how to spot them in a process list with relative
ease.
Jeremy Stanley [Thu, 6 Mar 2014 02:32:27 +0000 (02:32 +0000)]
Wrap long lines without using backslashes
Try to align more closely with Python style guidelines on wrapping long
lines.
Jeremy Stanley [Sun, 23 Feb 2014 14:36:51 +0000 (14:36 +0000)]
Clean up docstrings
Jeremy Stanley [Mon, 10 Feb 2014 01:57:26 +0000 (01:57 +0000)]
Fix reload to use a copy of datafile keys
* lib/mudpy/misc.py: Python 2.x was more tolerant of this and it now
breaks under 3.4 release candidates, but correcting it to iterate over a
copy is arguably more correct anyway.
Jeremy Stanley [Tue, 4 Feb 2014 19:15:00 +0000 (19:15 +0000)]
Remove unused event code
* lib/mudpy/misc.py: Event elements weren't fully implemented, so rip
out the dead code in preparation for a different implementation.
Jeremy Stanley [Tue, 28 Jan 2014 16:35:02 +0000 (16:35 +0000)]
Correct copyright date for changelog
Jeremy Stanley [Mon, 20 Jan 2014 15:23:11 +0000 (15:23 +0000)]
Drop support for Python 2.x
Remove all derecated conditionals and fallbacks which provided
workarounds for supporting Python 2.x versions.
Jeremy Stanley [Sat, 7 Dec 2013 23:19:08 +0000 (23:19 +0000)]
Clean up imports
Group all imports at the tops of files and alphabetize, for ease of
maintainabiity.
Jeremy Stanley [Fri, 22 Nov 2013 10:27:38 +0000 (10:27 +0000)]
Fix an incorrect TODO comment line
Jeremy Stanley [Wed, 16 Oct 2013 01:26:22 +0000 (01:26 +0000)]
Recast to unicode when normalizing on Python 2.x
* lib/mudpy/misc.py: Explicitly recast text to unicode type when passing
to unicodedata.normalize on Python 2.x.
Jeremy Stanley [Tue, 17 Sep 2013 08:13:03 +0000 (08:13 +0000)]
Byte type comparisons on the output queue
* lib/mudpy/misc.py: When comparing against data already in the output
queue, use byte type for compatibility with Py3K.
Jeremy Stanley [Wed, 7 Aug 2013 06:45:32 +0000 (06:45 +0000)]
Import a correct configparser for the interpreter
* lib/mudpy/data.py: Now import configparser and fall back to
ConfigParser if it's not found, for Py3K compatibility.
Jeremy Stanley [Sun, 21 Jul 2013 20:03:58 +0000 (20:03 +0000)]
Correct byte types and encoding in test script
* bin/test: It is sufficient to encode lookahead and written values on
the Telnet socket into UTF-8, and works correctly with Py3K now.
Jeremy Stanley [Sun, 9 Jun 2013 15:32:36 +0000 (15:32 +0000)]
Use chr instead of unichr
* lib/mudpy/misc.py: Missed in the earlier unicode to str patches, use
the chr function instead of unichr for Py3K compatibility.
Jeremy Stanley [Wed, 15 May 2013 10:35:51 +0000 (10:35 +0000)]
Use bytes in process table manipulation
* lib/mudpy/misc.py: When manipulating the process table, do so using
bytes type for Py3K compatibility.
Jeremy Stanley [Tue, 23 Apr 2013 17:39:49 +0000 (17:39 +0000)]
Use byte type for passwords hash encoding
* lib/mudpy/password.py: Raw hash values are manipulated as bytes for
Py3K compatibility.
Jeremy Stanley [Tue, 19 Mar 2013 03:10:40 +0000 (03:10 +0000)]
Handle byte type on sockets
* bin/test
* lib/mudpy/misc.py
* lib/mudpy/telnet.py: For Py3K compatibility, socket I/O uses byte type
instead of str.
Jeremy Stanley [Mon, 25 Feb 2013 01:09:54 +0000 (01:09 +0000)]
Use new 0o notation for octal constants
* lib/mudpy/data.py: For Py3K compatibility, only refer to literal octal
constants using the 0o prefix.
Jeremy Stanley [Wed, 30 Jan 2013 00:28:34 +0000 (00:28 +0000)]
The reload function is in the imp module
* bin/mudpy
* lib/mudpy/__init__.py: For Py3K compatibility, only invoke the reload
function from the imp module rather than the global built-in namespace.
Jeremy Stanley [Wed, 12 Dec 2012 20:58:27 +0000 (20:58 +0000)]
Use int type instead of long
* lib/mudpy/misc.py: Use int type instead of long, since Py3K will no
longer have a different representation for the latter.
Jeremy Stanley [Wed, 7 Nov 2012 06:55:32 +0000 (06:55 +0000)]
Correct copyright years for change log
Jeremy Stanley [Wed, 17 Oct 2012 22:03:31 +0000 (22:03 +0000)]
Recast filters when comparing
* lib/mudpy/misc.py: For Py3K compatibility, filters will need to be
recast to comparable data types when used in comparisons.
Jeremy Stanley [Tue, 25 Sep 2012 16:32:32 +0000 (16:32 +0000)]
Work around lack of dict_keys index in catch-all
* lib/mudpy/misc.py: In Python 3000, dict.keys() returns a dict_keys
type which is not indexed, so work around it by converting to a list
anywhere we attempt to sort keys or access a key by ordered index.
Jeremy Stanley [Wed, 1 Aug 2012 11:28:59 +0000 (11:28 +0000)]
Work around lack of dict_keys index in data loader
* lib/mudpy/data.py: In Python 3000, dict.keys() returns a dict_keys
type which is not indexed, so work around it by converting to a list
anywhere we attempt to access a key by ordered index.
Jeremy Stanley [Fri, 13 Jul 2012 13:20:09 +0000 (13:20 +0000)]
Use range instead of xrange
* lib/mudpy/password.py: Python 3000 is deprecating xrange in favor of
an iterator-based range which will be effectively as efficient, so stop
using xrange in preparation for the transition.
Jeremy Stanley [Sat, 9 Jun 2012 12:50:00 +0000 (12:50 +0000)]
Use absolute imports in telnet service module
* lib/mudpy/telnet.py: Absolute imports are more readable and easier to
debug, so use them.
Jeremy Stanley [Wed, 23 May 2012 21:07:52 +0000 (21:07 +0000)]
Use absolute imports in catch-all module
* lib/mudpy/misc.py: Absolute imports are more readable and easier to
debug, so use them.
Jeremy Stanley [Tue, 24 Apr 2012 20:26:31 +0000 (20:26 +0000)]
Use absolute imports in data handler module
* lib/mudpy/data.py: Absolute imports are more readable and easier to
debug, so use them.
Jeremy Stanley [Tue, 6 Mar 2012 07:02:59 +0000 (07:02 +0000)]
Use absolute imports in package init module
* lib/mudpy/__init__.py: Absolute imports are more readable and easier
to debug, so use them.
Jeremy Stanley [Fri, 24 Feb 2012 08:59:36 +0000 (08:59 +0000)]
Use strings not unicode in telnet service module
* lib/mudpy/telnet.py: Python 3000 treats strings as unicode by default,
so we should too.
Jeremy Stanley [Wed, 25 Jan 2012 00:20:04 +0000 (00:20 +0000)]
Use strings not unicode in password module
* lib/mudpy/password.py: Python 3000 treats strings as unicode by default,
so we should too.
Jeremy Stanley [Fri, 9 Dec 2011 14:37:10 +0000 (14:37 +0000)]
Use strings not unicode in catch-all module
* lib/mudpy/misc.py: Python 3000 treats strings as unicode by default,
so we should too.
Jeremy Stanley [Sat, 5 Nov 2011 21:17:09 +0000 (21:17 +0000)]
Use strings not unicode in data handler module
* lib/mudpy/data.py: Python 3000 treats strings as unicode by default,
so we should too.
Jeremy Stanley [Sat, 1 Oct 2011 16:57:14 +0000 (16:57 +0000)]
Use strings not unicode in package init module
* lib/mudpy/__init__.py: Python 3000 treats strings as unicode by
default, so we should too.
Jeremy Stanley [Mon, 19 Sep 2011 17:44:00 +0000 (17:44 +0000)]
Use strings not unicode in functional test script
* bin/test: Python 3000 treats strings as unicode by default, so we
should too.
Jeremy Stanley [Mon, 15 Aug 2011 11:01:17 +0000 (11:01 +0000)]
Use strings not unicode in daemon executable
* bin/mudpy: Python 3000 treats strings as unicode by default, so we
should too.
Jeremy Stanley [Tue, 19 Jul 2011 09:26:07 +0000 (09:26 +0000)]
Use strings not unicode in changelog generator
* bin/git2gch: Python 3000 treats strings as unicode by default, so we
should too.
Jeremy Stanley [Mon, 6 Jun 2011 04:26:17 +0000 (04:26 +0000)]
Additional style cleanup
* lib/mudpy/__init__.py
* lib/mudpy/data.py
* lib/mudpy/misc.py
* lib/mudpy/telnet.py: Limit lines to <80 characters and adjust
hanging/visual indents for clarity and consistency.
Jeremy Stanley [Fri, 27 May 2011 19:31:39 +0000 (19:31 +0000)]
PEP 8 conformance for package init library
* lib/mudpy/__init__.py: Conform to the PEP 8 style guide.
Jeremy Stanley [Sun, 10 Apr 2011 11:28:58 +0000 (11:28 +0000)]
PEP 8 conformance for monolithic library
* lib/mudpy/misc.py: Conform to the PEP 8 style guide.
Jeremy Stanley [Fri, 4 Mar 2011 14:41:23 +0000 (14:41 +0000)]
PEP 8 conformance for password management library
* lib/mudpy/password.py: Conform to the PEP 8 style guide.
Jeremy Stanley [Fri, 18 Feb 2011 18:53:14 +0000 (18:53 +0000)]
PEP 8 conformance for telnet server library
* lib/mudpy/telnet.py: Conform to the PEP 8 style guide.
Jeremy Stanley [Tue, 11 Jan 2011 10:49:21 +0000 (10:49 +0000)]
PEP 8 conformance for data handling library
* lib/mudpy/data.py: Conform to the PEP 8 style guide.
Jeremy Stanley [Mon, 6 Dec 2010 12:11:37 +0000 (12:11 +0000)]
PEP 8 conformance for daemon executable script
* bin/mudpy: Conform to the PEP 8 style guide.
Jeremy Stanley [Thu, 11 Nov 2010 21:34:57 +0000 (21:34 +0000)]
PEP 8 conformance for ChangeLog writer script
* bin/git2gch: Conform to the PEP 8 style guide.
Jeremy Stanley [Wed, 27 Oct 2010 15:18:45 +0000 (15:18 +0000)]
PEP 8 conformance for test script
* bin/test: Conform to the PEP 8 style guide.
Jeremy Stanley [Mon, 13 Sep 2010 19:05:19 +0000 (19:05 +0000)]
Back end data storage separation.
* lib/mudpy/__init__.py (modules): Added the new data module to the
list.
* lib/mudpy/data.py: Implemented a new module to contain back end
data storage and retrieval functions, preparing to merge work on the
new data handling routines.
* lib/mudpy/misc.py (DataFile, find_file, makedict, makelist): Moved
to lib/mudpy/data.py.
(Element.__init__, Element.getdict, Element.getlist, Universe.load)
(replace_macros): Updated references to relocated classes and
functions.
Jeremy Stanley [Tue, 6 Jul 2010 20:23:08 +0000 (20:23 +0000)]
Inline literals are more readable in source form.
* doc/coder.txt: Adjusted sections referencing literal backslashes
to use inline literal syntax rather than double-backslash syntax,
for improved clarity.
Jeremy Stanley [Wed, 23 Jun 2010 00:28:38 +0000 (00:28 +0000)]
ASCII Scrub
* doc/coder.txt: Found and replaced a non-ASCII UTF-8 apostrophe.
Jeremy Stanley [Fri, 18 Jun 2010 00:44:54 +0000 (00:44 +0000)]
Correcting docstring format.
* lib/mudpy/password.py (create): Corrected docstring format so that
epydoc -v will run clean of errors again.
Jeremy Stanley [Fri, 18 Jun 2010 00:23:26 +0000 (00:23 +0000)]
Correcting minor docstring typos.
* lib/mudpy/password.py (create): Corrected two minor typographical
errors in the function's docstring.
Jeremy Stanley [Thu, 17 Jun 2010 23:49:58 +0000 (23:49 +0000)]
Secure, extensible, forward-compatable passwords.
* lib/mudpy/__init__.py (modules): Added the new password module to
the list.
* lib/mudpy/misc.py (handler_checking_password)
(handler_entering_new_password, handler_verifying_new_password):
Replaced existing md5 usage with calls to the new password
functions.
* lib/mudpy/password.py: Implemented a new module to handle creating
and verifying account password hashes. The functions and format are
forward-compatable to new hashing algorithms, and can be scaled to
allow tuning for CPU utilization/brute-force mitigation trade-offs.
The new functions are not directly backward-compatable with the old
format, but a utility function (upgrade_legacy_hash) is included to
upgrade those hexdigests if needed.
Jeremy Stanley [Mon, 31 May 2010 14:15:35 +0000 (14:15 +0000)]
Reformatted README for 72 columns.
* README: Switched from 79 columns to 72 columns in accordance with
the style guide in the doc/coder.txt coder guide.
Jeremy Stanley [Mon, 31 May 2010 14:12:28 +0000 (14:12 +0000)]
Change README for new on-line documentation link.
* README: Updated the URL for the on-line documentation reference
and reworded the last sentence for clarity.
Jeremy Stanley [Mon, 31 May 2010 02:59:38 +0000 (02:59 +0000)]
New coder guide document.
* doc/coder.txt: New document focused on topics of interest to
anyone wishing to modify the mudpy engine or get involved with the
project's development process.
Jeremy Stanley [Sat, 29 May 2010 14:46:52 +0000 (14:46 +0000)]
Script to generate ChangeLog file from commit log.
* bin/git2gch: New executable script for generating GNU-format
ChangeLog files from the Git commit log.
Jeremy Stanley [Fri, 7 May 2010 00:59:56 +0000 (00:59 +0000)]
Regression testing script.
* bin/test: New executable script for regression testing against all
future commits to the mudpy core engine, modules and sample data.
Jeremy Stanley [Tue, 4 May 2010 03:39:43 +0000 (03:39 +0000)]
Cosmetic adjustment to disconnect message.
* share/menu.mpy (menu:disconnecting): Appended a newline to
separate the disconnect message from any lines which the client
might add thereafter, and switched from description to prompt.
Jeremy Stanley [Tue, 4 May 2010 03:01:14 +0000 (03:01 +0000)]
Proper RFC 1143 Telnet option negotiation queue.
* lib/mudpy/__init__.py: Added telnet to the modules list.
* lib/mudpy/misc.py (Element.send, User.__init__)
(User.adjust_echoing, User.enqueue_input, User.flush)
(User.replace_old_connections, User.send, check_for_connection)
(get_echo_sequence, handle_user_input): Minor adjustments to
accomodate new code in telnet.py.
(User.negotiate_telnet_options, telnet_proto): Moved to telnet.py
and reworked option negotiation stack to eliminate a possible loop,
bringing the code fully in compliance with the "Q" method described
in IETF RFC 1143.
* lib/mudpy/telnet.py: New file for constants and functions related
to support of the Telnet protocol.
Jeremy Stanley [Fri, 26 Mar 2010 18:30:33 +0000 (18:30 +0000)]
Clarification in README file.
* README: Adjusted indentention for the copyright metadata block and
added references to additional available documentation.
Jeremy Stanley [Sun, 31 Jan 2010 00:58:49 +0000 (00:58 +0000)]
New top-level README file.
* README: New file containing basic information on the project along
with pointers to additional documentation.