Circle 3.0 Ident Patch 1.3 ========================== Fourth release, 8 December 1997 This package provides ident lookups for Circle Muds. It attempts to contact the host from which a user connects and determine the user's login ID. It is nonblocking, so the mud will not slow when someone connects. Installation ------------ 1. Copy the ident.c and ident.h to your circle/src directory 2. In your circle directory (not circle/src), run "patch -p1 < ident.patch" 3. Rerun configure (to update your Makefile and conf.h) 4. Recompile your MUD. The patch is based on Circle 3.0 pl12, so you may have to do some patching by hand if you have modified your source or are using it on a different version. This has been tested on Linux, SunOS, FreeBSD, and Windows NT. It should work on most systems unmodified. Please let me know if you have to make any changes for it to work on your system. This patch modifies the circle/configure script, which is generated from the circle/cnf/configure.in file. If you are patching by hand, you can save yourself a lot of time by just patching the configure.in file, running autoconf in that directory, and replacing the circle/configure script with the one generated by autoconf. Using ----- This feature can be toggled on and off in the game by using the "ident" command. To turn it off when the game boots, change the ident variable in config.c. You can use usernames for banning. Once the username is resolved (if it is resolved), a second ban check is made against the full username@host string. Effectiveness of banning this way varies. Possible Problems ----------------- If the mud fails to compile with this patch due to errors like: comm.o(.text+0xaf8): undefined reference to `waiting_for_ident' comm.o(.text+0xb0c): undefined reference to `ident_check' comm.o(.text+0xb30): undefined reference to `waiting_for_ident' comm.o(.text+0x17a1): undefined reference to `ident_start' then you did not properly update your Makefile, either by rerunning configure, or copying over the Makefile.win to Makefile. ident.o must be added to OBJFILES in order for it to compile properly. Users on very slow connections or behind certain firewalls will experience up to a 30 second delay before they are able to enter their name, the minium amount of time recommended by rfc1413 to wait. You can change this amount of time by changing IDENT_TIMEOUT in ident.c. Part of the user names might be cut off if the hostname is too long. The whole hostname is saved, and if there is any space left in the host field of struct descriptor_data, as much of the user name as can fit will be filled in. If you are getting a lot of truncated user names, you might wish to increase the size of HOST_LENGTH (in structs.h). However, doing this will destroy your existing player file. It is reported that on some systems, a responce of "No route to host" can terminate all connections between the two machines. This is a problem with the system's networking, not the ident patch. If you are debugging your mud with gdb, you may find your mud interrupted with a message "Program received signal SIGPIPE, Broken pipe" while in the ident code. This is normal, and will sometimes occur other places in the mud. You can continue with no problems, or if you would like, you can disable the SIGPIPE breaks with the gdb command "handle SIGPIPE nostop" Location -------- The latest version of the ident patch should be available from the CircleMUD ftp site (ftp://ftp.circlemud.org/pub/CircleMUD/contrib/code) or from my web page (http://www.imaxx.net/~thrytis) or ftp site (ftp://ftp.imaxx.net/users/thrytis). Contributers ------------ John Evans (evansj@hi-line.net) discovered and provided a fix for a bug in the order of closing a socket on a banned address. Chris Clos (delbin@delbin.ionline.com) suggested using the extra space in the hosts variable for the user name, instead of a fixed length. If you find a problem with this package, please email me. Eric Green thrytis@imaxx.net