Sat, Apr 3, 2004 -- dave (df-1.3.8.lfix) * Fixed /list when user is DVSLIMITed. Previously, we would enter into an infinite loop until they were unlimited. Fixed s_bsd.c * Fixed argumented /list for non-DVS networks Thu, Apr 1, 2004 -- dave (df-1.3.8) * Removed nickip due to crazy OpenBSD problems -- it may return in an improved form in the near future * Only show /lang message if the client is not english * Removed debugging code for channel problems * Allow users to mode +x as an alias for +d (disguise) * Added DVS tag flag to say if a client was ever DVS limited * SVSMODE +Z makes a client DVS limited, -Z removes like /allow. * Wrote new mkconf script in perl, saved old mkconf as oldmkconf (to be used with oldconfig, if necessary, though discouraged) * Updated DVS messages, added /dvs message (/dvs ? for opers) * Fixed /dvs 0 bug * Added fix for OpenBSD and any OS that has __dn_skipname but not dn_skipname. Res includes should not be needed in most cases now * Usermode +d is now automatic on connect * Added /whois line for opers to show if a user was exempt from DVS protection (and has never been DVS'd) * Fixed version.c.SH Wed, Mar 10, 2004 -- dave (df-1.3.7c) * Created include/dvs.h * Disable dvskill when DVS_TIMEOUT <= 0 * New config program does it all * Updated DVS Status/Lock sync in netburst (server w/ services always wins, otherwise the highest values will win) * Fixed misc. bugs (thanks Mysidia) * Redundant questions added to ./config to force some answers * Grammatical fixes * No lmembers code to test OpenBSD issues -- #define NO_LMEMBERS Sat, Feb 07, 2004 -- dave (df-1.3.7b) * Updated the WHOISRHOST ("actually") line to only send necessary info * If a local client doesn't have ident (but should), they are automatically given DVSLIMIT when DVS Status is 1 * Added HELP_MESSAGE to config.h -- this message is sent to any user that does /help * Modified chbuf code -- maybe this will fix some of the problems we've been seeing with semi-random (channel related) crashes Sun, Jan 25, 2004 -- dave (df-1.3.7) * Save list options for DVSLIMIT clients and send first /list when flag is removed (for mIRC compatibility) * Updated /lusers code to not update when unnecessary and also poll some DVS data (shown in /stats D) * Added NICKIP support so IP is checked on /who (oper-only), bans, kills (akill and kline checking), /mkill, and /wkill * Consolidated o:line flags, see example.conf for more information. A full oline is now SAa*, a normal globop line is Or (in other words, *) * Allow servers to send :Source RMBAN (must originate from a user, i.e. ChanServ not .serv) Sender must have authority * Added DVSLOCK command/toggle which requires DVS Authorization even if services are not online (useful to stop an attack when services is offline) * Updated NICKIP sending b/w servers, use default if unknown * Consolidated DVSLOCK toggle into the DVS command * Added /allow command for opers to exempt a client from DVS Protection * Moved TS notices to umode junk (+j) * Fixed /oper and /mode to support new o:lines (including the mode-only oline with only the 'm' flag) * Improved connect time for clients with unresolving IPs (thanks to Adam9 for his experimenting!) Wed, Jan 14, 2004 -- dave (df-1.3.6) * Code cleanups around DVS * Always set DVS flag (independent of Services status), when checking DVS status for use, include a Services check. * Store a DVS time for each local client (time of warning) and give them 10 minutes to ID. This can initialize when services return * Fixed chbuf to allow for channels to already exist, also send joins in order * Added oper flag to allow SA's to use reserved commands (/samode and /akill) when services are online. Compile option to allow this must be enabled, the W oline flag is used in combination with the oper's existing privilges (it does not imply them) * Exempt operators from excess flood (can be disabled in config.h) * Updated user /mode command (to make oflags work as advertised and to make more sense) * Added umode F to exempt opers from normal throttling (certain commands still trigger). Opers must have oflag F to set this umode * Added warning when a non-ULined server connects that does not support DVS (all servers running versions prior to 1.3.6 will cause the warning) * Updated chbuf to prevent duplicate joins. If possible, run the chbuf_empty() function on /join (so if services disappeared, the joins are already processed) prior to processing the command itself * Added support for /dvs command. Uses the W oline flag * Fixes for networks w/o DVS enabled Fri, Jan 02, 2004 -- dave (df-1.3.5 updated) * Fixed some confusing bugs in configure, updating release files... Sun, Dec 21, 2003 -- dave (df-1.3.5) * Added internal counter for number of DVS Kills * Added ability to change default DVS status in config.h and ircd.conf (ircd.conf has priority) * Fixed possible non-DVS error with chbuf * Added /stats D for DVS information * Changed Y:line operation for DVS Exempt/Force. To force a client to be DVS'd (in Limited (1) status) set its class to ConnFreq = 10. For a client to exempted in Expanded (2) status, ConnFreq = 20. * Implemented 4-tier DVS setup. See doc/DVS and doc/example.conf * Fixed a bug to make new DVS backwards-compatible -- no more cores for accessing local user data for remote users * Updated resolv.h to allow most systems not to need the extra res source files * Created new I:line logic (see doc/Ilines) * Removed outdated Win32 support Tue, Nov 04, 2003 -- dave (df-1.3.4) * Added new usermode V (DVS Exemption). * When a client's class has a ConnFreq of 100, the client will be exempted from DVS status (umode V will be sent to remote servers) * Show DVS Exemption in /whois (numeric 326) * Added who flag V to show DVS Exemption Sat, Sep 14, 2003 -- dave (df-1.3.3) * Added DVS forward command to pass along DVS status on netburst (if we had services before link processing) * Added DPATH to MOTD and CONFIGFILE paths. Now works as advertised. * Created "null" token values for user-only commands. Certain commands will *always* be sent in long format (if they are sent at all) * Stats o (and similar) now shows oper flags instead of numerical port * Notify realops when DVS status is changed * Allowed usermode 'R' and channel mode 'R' to be used with DVS on or off Tue, Jun 24, 2003 -- dave (df-1.3.2) * Allowed DVS clients to use /mode command * Added Channel Join Buffer which allows DVS Protected clients to JOIN channels (joins are saved until DVS Protection is removed and then parsed quickly) * Added 'fake' motd on connect which instructs users to type /motd to see the actual motd * Moved akill expire notices to junkops * Fixed bug in nick collisions: me should've been &me * Added flag to prevent DVS 5 minute warning message flood * Added ULined DVS command to toggle DVS status (DVS 1 enables, DVS 0 disables) * Fixed bug - DVS is now recognized across the network * Changed Join Buffering to be memory friendly (thanks again, binary) * Free channel buffer (member list) when a client quits before identifying * Numerous updates to chbuf: now supports keys, ability to join checked only on buffer execution (although mode is checked to see if key is needed on /join) Sun. Jun 01, 2003 -- dave (df-1.3.1) * Completely cleaned numerics in s_err.c, s_err_spanish.c, and numeric.h * Added additional URL for network-specific DVS info (config.h) * Transitioning certain messages from notices to numerics (bilingual) * No longer show motd on connect; give notice when client is removed from DVS Protection * Added /lang command to change langauge Sat. May 31, 2003 -- dave (df-1.3.0) * Added DVS support (DarkFire Verification System). For more information see the DVS document in doc/ * Cleaned up oper message functions (wallops, globops/gnotice, locops, chatops, goper) * All kills are now sent to +k (UMODE_KILLS) which is now given by default to all IRCops * Notices for samode, sajoin, unbanme, svsnoop, and wkill moved from wallops to globops * All DVS clients must be recognized to a nickname within 10 minutes or they will be disconneted. * DVS clients will be warned after 5 minutes of inactivity. * Added message flags to more easily check if a command can be used, for example, by a hushed or DVS user. Eliminates lengthy checks in parse.c * Slightly changed how hushes are stored, now sync on netjoin * Added who flag 'D' to show DVS status * If a client is killed after the 10 minute DVS Timeout and there are no other local clients from the same host, a 10 minute ban will be placed locally on that host (using autokill method) * Fixed fatal bug in m_wkill which causes ircd to crash when the last client in the buffer killed is local * Fixed bug in dvs_kill() so that clones will not prevent DVS from placing autokills. * Added who flag 's' to denote a secret/private channel * Cleaned up outdated numerics. * Translated s_err.c to spanish (s_err_spanish.c). All users with mode +E (Espanol) receive numerics in spanish. * Disabled +R user and channel modes while DVS is in use * The spanish language is now default for users coming from 148.* and from various tlds Tue, Feb 18, 2003 -- dave (df-1.2.2) [unreleased] * Added a small init.d script in the tools directory * Chatops is no longer optional, default mode for opers Tue, Feb 18, 2003 -- dave (df-1.2.1) * Modified /who for non-opers to protected disguised users. If doing a search by host and the user is disguised, the host given will only be matched against the disguised host; if the user is not disguised it will be matched against only the real host. Operators can match either host and will see the real host at all times, including a d flag to designate that the user is actually disguised. * Moved autoconnect notices to junkops * Allowed /oper while hushed * Added internal trigger to detect if Services are on or offline when servers are added or deleted. * Allowed non-registered nicks to join +R channels when services are offline. * Implied moderation for non-registered nicks in +R channels when services are offline. * Allowed global operators to send messages to a channel over restrictive modes except no outside messages. * Moved write error warnings for autoconnect servers to junkops. Also clear the autoconnect flag on register_server * Made akill expire function much more efficient and fixed an error that caused it to keep a running total of akills removed, not just the latest value. * Fixed ban removal code (thanks binary) * Fixed qline and sqline checks on nick, they now work on connect. Wed, Feb 05, 2003 -- dave (df-1.2.0) * Updated doc/example.conf to include CONFIG (G) lines * Flag autoconnects to not complain when a connection fails to wallops (send a junk notice instead) * Updated except list to comply with pre-existing numeric standards (348 for except list, 349 for end of list) * Allowed ULined clients to send messages through +R (to prevent services from being blocked) * Updated flags in /who response: G = gone/away, H = here, d = disguised, i = invisible, - = hushed, @ = op, % = halfop, + = voice * Fixed a bug in /list when used with /list #channel. Now show secret channels to operators as #channel, like /list *chan* would * Allowed DCCs to be sent to ULined clients over +d channel mode (enables virus scanning to be done without limit checks) Sun, Feb 02, 2003 -- dave (df-1.2.0.b2) * Cleaned up send_list function. Implemented channel mode +p (private) to hide lists to non-opers (+s already did this, too). Designed these modes in /list to opers by placing a comma after the name * Removed halfops preprocessor mess. Halfops are now a part of IRCd. * Fixed /rmban bug which causes IRCd to crash when a non-member does a /rmban on a channel * Added chanop (not halfop) notices when an oper uses /sajoin to join a channel and when a user exceeds the DCC send limit (+d) * Implemented new mode.c mode lists by binary * Now treating /samode differently than ULined mode changes. Services Admins cannot edit +r for channels * Added new ULine only channel mode, MODE_NOSAJOIN (+S) which prevents a SAdmin from using /sajoin or /wkill on a channel * Fixed remote errors for sending channel messages (will only occur on mode desyncs anyway) * Rewrote send_channel_join function to no longer include modes and be more efficient. * Rewrote m_cjoin to no longer do the majority of the mode parsing, but still handle member flags, distribution of modes to local users, and timestamps. * Edited send_channel_modes to not send memberflags if the protocol level supports cjoin. * Fixed a crashing bug in /list. * Fixed major cjoin bugs in userlist processing and mode handling * Updated protocol level, fixed sending of user-joins to compact servers that no longer support cjoin. * Updated the example configuration file (doc/example.conf) * Changed channel message (by flag) operation. The message will be sent only to the users with the flags specified in the command, and may be given in any order. Example: %+#darkfire (halfops/voices only) and +@#darkfire (voices/ops only) * Added a new message if a user is akilled (reason still displayed) that will direct users to a website (AKILL_ADDR is configured either via config or include/config.h) * Modularized ban code, now in mode.c. Similar functions now combined to support both bans and excepts. * Added new channel mode for exception bans. Overrides all channel modes (ban, invite only, no outside messages, limits, moderation, keys, etc.) * Changed split function in /mode command to allow blank spaces that some clients send between parameters * Added support for /mode #channel +e to list excepts with unique numeric * Allowed NOSAJOIN channels to be /listed Mon, Dec 30, 2002 -- dave (df-1.2.0.b1) * Removed the remains of the token send function (replaced by formatting in the new send functions) * A few more optimizations, namely binary's changes to accomodate C++ compilers * Removed the connection rule patch (crule) * Removed unnecessary send.c functions in favor of the existing sendto_umode() * Cleaned up several messages * Modularized server linking functions and new user registration * Updated mode list in 004 numeric (usermodes, channel flags, channel modes) * Modified do_join to elimate channel timestamps of 0 and to more accruately sync network timestamps. It is better to have the same "wrong" TS than to have different TS values that are more accurate. Join from servers now includes channelts. * Added WKILL function, a hybrid of /who and /mkill. Takes a who pattern as the first argument and a reason. Note: /wkill is the same as /kill , not /mkill * Secret channels in /whois are now designated as * to IRC Operators, % means halfops, not secret. * Added halfops support (may be disabled via include/config.h). Shows in whois as %#channel. Halfops can set modes (except add/removing ops or halfops), set the topic, kick regular and voiced users, and invite users. Fri, Dec 27, 2002 -- dave (df-1.2.0.a3) * Added new user mode 't' (TS_NOTICE) for various Timestamp notices. Similar to the priority of junkops, but may be useful at times * Changed behavior of autoconnect again (due to floods on some platforms) Only connect to 1 server at a time. Highest class wins. Set your hubs to class x, leafs to class less than x, etc. (i.e. 40 and 30) Be sure to define Y:lines! MaxLinks still applies on a per-class basis! 0 for no max * Added autoconnect flood limit * Only allow /samode when services are down (via SERVICES_NAME) * Supported AKILL reasons in AKILL (from services) but not required. Akill reason may be given in RAKILL but is not necessary (match function ignores this field) * Redesigned include/config.h * Added SA /akill command, see /akill ? for more info. Available only when services are down. * Display akill reasons in /stats k * Rewrote akill function to support old and new syntax: OLD: AKILL [ :comment] NEW: AKILL user@host [ :comment] When an operator uses /akill, comment must be given (only available when services are offline) * Changed add_temp_conf syntax (added hold field for akill expires) * Added expire_akills, will run no more than once a minute (config.h), at the most efficient time possible * Remote kline and remote rehash are now the DEFAULT. Saying no to the questions in config enables NO_REMOTE_KLINE and/or REHASH * Removed duplicate preproc declarations * Completely removed R lines (some references still remained!) * Implemented many changes from binary's df-1.1.1: designated [df-1.1.1] * Removed chkconf from the CVS tree (outdated) * [df-1.1.1] Renamed usermode +R (SRA) to +S, and +L (LimitReg) to +R to conform with chanmode +R (also forward to other servers) * [df-1.1.1] Invite allows users to join in all circumstances * [df-1.1.1] Implemented Protocol Levels. Each protocol is assumed to be a part of a chain. If a server has complex protocols, it must also support the earlier features * Added protocol level 4 (PROLEV_COMPACT and PROLEV_AKILL) for new protocols in df-1.2.0. Older version of 1.2.0 will act like 1.1.0 servers until they are upgraded (no cjoin, no new akill, no modes in nick) * [df-1.1.1] Made /who show real host to opers. Response will contain the 'd' flag to designate that the host is diguised * [df-1.1.1] Fixed cmode +f to be less sensitive at first and harsher on likely offenders * [df-1.1.1] Touched up exit_client() and close_connection() * Various optimizations * Fixed misc. compile warnings * Show protocol level in /version * [df-1.1.1] Integrated m_kill and m_fquit into do_kill() which takes a flag to determine whether its a kill or an fquit. Removed path accumulation * [df-1.1.1] Updated sending functions to more easily implement protocols such as token and be more efficient when sending channel messages * [df-1.1.1] Readded support for sending numerics to channels * [df-1.1.1] Implemented sptr caching (PROLEV_CACHE) * [df-1.1.1] Improved channel dcc block so that users can send a few DCCs. If the user sends a certain number over a certain period of time, the user's ability to send dccs is revoked for a period of time Tue, Dec 17, 2002 -- dave (df-1.2.0.a2) * New sending functions for protos and mode formats * NICK command now includes +modes in place of depricated hopcount when sent to any SERVHASH or SERVJOIN server (not services). New ircds will look for this from any SERVJOIN server. * register_user sends modes to non-servjoin servers * Various optimizations * Rewrote SVSNOOP code (m_svsnoop) to set CONF_NOOP_GLOBAL or CONF_NOOP_LOCAL on conf lines affected by a +NOOP, and reset to CONF_OPERATOR or CONF_LOCOP on a -NOOP. SVSNOOP :[+|-] SVSNOOP :[+|-] "server mask" can be a server name (i.e. services.darkfire.net) or a wildcard (i.e. *.net or *) "oline name" is the exact name on the oline (aconf->name), as used in /oper. "oline mask" permits wildcards, and matches against the host of the oline. The command must be issued by a ULined server * Added /stats N to list SVSNOOP'd O:lines. Uses same format as /stats O * Added alternate /who sytnax (/who mask;flags) for use with broken clients * Implemented CJOIN sending to replace send_user_joins (send joins by channel) Users and modes sent with initial CJOIN, following CJOINs have no modes, bans sent as MODE once finished * Fixed RMBAN to allow services to use it to unban users :ChanServ RMBAN #darkfire dave * Removed all NOSPOOF code from IRCd * Removed all server ips from public view (i.e. sendout_wallops and sendto_ops) * Renamed the SERVJOIN protocol to a more appropriate name -- COMPACT Now affects more than just net syncs * Seperated PROTOCTL for users and servers. Server protocol now in SERV_CAPAB * Added m_cjoin to parse incoming CJOIN replies. Handles modes, params, and users based on @+name syntax. Uses TS handling similar to upcoming changes, may not be completely compatible. * Created seperate /info and /contrib * Changed autoconnect behavior. If MaxLinks is 0 for the CONNECT conf line is, a connection attempt is made. Otherwise, check Links in the given class against MaxLinks before connecting. * Fixed numerous CJOIN bugs (wrong calls to channel funtions, undefined ints, missing params, mb_init) Tue, Nov 26, 2002 -- dave (df-1.2.0.a1) * Added SAJOIN command to allow SAdmins to force join a channel in which they could not normally join (banned, invite only, etc.) The command centralizes the old m_join into do_join, having m_join and m_sajoin forward that function. If SAJOIN is used and the oper could have used JOIN, no notice will be sent. Otherwise, a WALLOPS is sent. * Fixed MyFree/Free in DEBUGMODE * Require services aliases to verify that the target is ULined * Migrated to autoconf and new config script * Opers automatically get +A and/or +a depending upon their access when they become an operator * Fixed bug in socket loop which broke autoconnect * Moved die/restart notices to WALLOPS rather than local +s (sendto_ops) * Changed autoconnect behavior to act differently on leafs than on hubs. The preivous behavior now applies only to leafs: * Loop through the CONNECT confs. Find a server to attempt to connect to and move it to the end of the conf list. Then attempt to connect to it. New behavior for hubs: * Loop through the CONNECT confs and connect to all servers that can be connected to. Hold times still apply. This can grealty speed up split recovery and is more efficient when linking the network/rebooting the ircd. * All opers can see +s channels in /whois and /list * Added 2 new compile options - TOKEN_ONLY sends all messages in TOKEN format, reducing bandwidth. Suitable for most leafs and some hubs. - NO_TOKENS sends all messages in standard format, using more bandwidth but compatible with services. Suitable for hubs with many servers that also host services. - If neither option is enabled, tokens will be sent to servers who say they support it. This requires extra processing for many broadcast-type commands. Suitable for hubs with few amounts of servers that host services, but NO_TOKENS may be must as beneficial depending on resources. - If both options are enabled, we pretend neither are enabled. debug: T = TOKEN_ONLY, t = NO_TOKENS (in version reply) * Implemented token sends via sendto_serv_butone_token (replacing sendto_serv_butone) * Cleaned out s_debug.c * Re-implemented and updated the identify command Wed, Jan 2, 2001 -- binary (ver df-1.1.0.c9) * More changes, optimizations, as usual. * /who and /whowas without parameters or simply a single question mark parameter will now display a help description of the command. * Unix sockets removed from Config. * New disguise algorithms can now be inserted via a secret.h file. The Config script asks if the user has a secret.h file to be used. The options are using the default disguise algorithm and making a dummy secret.h file, using one already there if there is one, and copying one from another location. * Added back ability of opers to see what channel a user is in via /who if the user is in only in hidden channels * Flood protection placed into IRCD. New mode +f takes an integer argument, which corresponds loosely to a number of tenths of a second, and smaller arguments correspond to more sensitive flood controls. Numbers from 30-100 work well. The flood detection determines one of these: no flood, probable flood, definite flood. The flood algorithm works like the algorithm used to delay message processing for users -- it penalizes them a certain time period per message, greater for larger messages. A definite flood is when the user is unable to send before the user receives a penalty, and the user receives a fairly severe penalty, like placing them in a "hole" where the depth to climb corresponds to the rate at which they try to send more messages. Probable floods are when the user will almost certainly receive a definite flood if another message is sent -- there is a small penalty for this to help the user get into the hole. * Fixed bugs. Since svskill used hunt_server, it seems that servers were relaying the message as :NickServ SVSKILL and when the servers tried to kill themselves they realized that it wouldn't work, so it went crash. Fixed SVSKILL not to use hunt server and put protections in exit_client so as not to try to close connections marked as IsMe(). * "Link cancelled - server exists" and "Unauthorized connection" give only a junkop notice, no wallops or globops. Wed, Nov 28, 2001 -- binary (ver df-1.1.0.c8) * Lots of stuff fixed and touched up... * Going to put zalloc library into ircd -- it also allocates memory in blocks, but it makes efforts to crystalize unused areas in order to free them. The old dalloc will stay, since zalloc puts 4 extra bytes of memory in each item as a pointer to the block it belongs to right before the memory is dealt out to avoid searching huge lists. These extra 4 bytes are not desirable for both small item sizes or when the usage is fairly constant. Since dbufs are often allocated massively in bursts, huge lag, etc, it's desirable to be able to free them when usage drops down to its usually extremely low number. * Fixed get_client_name so that it works right. And don't let normal users do stats L to see user's ip's. * More fixes in m_who. Also added a help screen invoked by /who with no parameters. * Changed behavior of not putting the *@* in the I:line: ident always takes priority, but only by putting *@* rather than * in the I:line will a tilde(~) be inserted into users without ident. Thu, Jul 12, 2001 -- binary (ver df-1.1.0.c2 to .c5) * Added block allocation in dalloc.c ; this hangs onto memory after it's supposedly "freed" to prevent malloc waste, and because it's simply a little more efficient. * Lots of minor changes I probably have forgotten to document. * Made a short sweet version of sprintf and vsprintf called mysprintf and myvsprintf now used throughout ircd. * Now send.c is fine-tuned a little bit to use mysprintf and myvsprintf and is utilizing varargs in some functions, but not all. * Users can't send part messages if user cannot send to channel. * A user trying to quit will send out a PART in channels to which he can't send. * Rewrote parse(), do_numeric(), and zapped s_numeric.c * New channel mode +d: prohibits members without +o or +v from sending DCC's while joined to the channel (autojoin DCC virus prots) * m_whowas reworked, masks can be specified: nick host.name nick!user nick!host.name user@host.name nick!user@host.name $nick_currently_online (trace current user's hostname) * m_who done some reworking...for masks it works like this: nickname -- match nickname exact using hashes nick*mask -- match nickmask, or realname if sender is IRCop host.mask -- match hostname user@host.name -- match user and host nick!user@host.name -- match nick user and host .serv -- match server name using first 4 characters of the server's name (.schizy.* and longer will work too) #channel -- oh yes of course, /who #channel * m_mode changed to allow an unlimited number of parameters from the user end. however each line sent out will be limited to only 12 mode parameters per line. * channel names now must begin with only # * userload module removed -- perhaps a more efficient replacement will be added sometime later. * m_fquit fixed to prevent certain kinds of desnycs * maximum key length downed to 11 * regular m_whowas and m_whois contain disguised host and a separate line for real host (only shown to opers) * revised m_map() to be nonrecursive; map now also displays hopcount * if user is ircop it says: nick is {an IRC operator|a Server Administrator} ({global|local|Services Administrator|CSop|SRA}) * made m_who more efficient: /who no longer checks joint membership * new server list implemented, i was lazy so the base is me.s->next * when connecting, the PROTOCTL is not sent before the SERVER (why wasn't it done that way earlier?!?!) * channel keys are now actually case sensitive... * do not truncate the /whois channels list for nonopers * m_who reworked, again, check out new syntax: nick -- match nick user@host -- match user@host nick!user@host -- match nick!user@host /realname -- match realname .serv -- first four characters of server name * /whois channels not truncated for opers * changed "who limit exceeded" to a numeric (same one used in hybrid for more compatability) * Ay, dbuf's working as supposed to; no longer the need to allocate huge buffers during resyncs! We try to send the sendq each time 2000 bytes is added to the queue. * redid match(); new function qmatch() that expects all masks to be preformatted by collapse(), match2() as well only takes collapsed masks * collapse() forces all characters to be lowercase and changes any string of ?*?*???** to equal the total number of questions followed by one asterisk; no collapsed mask will have a * followed directly by a ? or another * * new function send_num, replaces sendto_one(sptr, rpl_str(RPL_BLAH), me.name, sptr->name, ...) with sned_num(sptr, RPL_BLAH, ...); and also uses server hashes when possible ;) * do_numeric redone to allow server hashes * for channel modes an array, chan_modemap[256] is used for efficiency! * changed the way the modetab works, again, look at mode.c for info * /stats z expanded to allow an abridged version (ie, not counting bans or res memory but including the da stats) for nonopers * who restructured again, new function who_match; nick, user, host, real moved to static global variables w_nick, w_user, w_host, w_real * m_who supports new syntax, nick!user@host:serv/realname which can be combined in just about any reasonable way except ! always requires presence of @ (just watch out -- you can't do /who :serv because of the ':' character's special meaning) * dns/auth resolution lowered much lower so it doesn't take 90 seconds to connect... * sort of progressive 1-at-a-time bubble sort in message parsing; once a command is hit, its count is checked with the one before it and swapped if necessary :) * Part and quit messages are properly color filtered; parting is now done within m_quit * Little ircd fix for bad scripts... when someone tries /mode #channel +b *!*10chrident@*.blah.com it normally gets cut to *!*10chriden@*.blah.com and thus does not serve its purpose at all...instead, just scrap the leading * and then it'll fit. * Added a mode handler for channel mode +h though it won't do anything, in case we want to implement it in the future without confusing clients. * Adding a ban is now super-efficient! Rather than blindly clearing the unbanned flag for all members, if chan is unmoderated we do this: 1. check if the user has the unban flag 2. if it's my client... a. if we have already done more ban matches than needed for 4 is_banned calls, go ahead and blindly clear the unban flag for the rest b. if the new ban doesn't affect this member then go on to next member c. set this user as banned 3. remove the unbanned flag for this user Fri, Jun 15, 2001 -- binary (ver df-1.1.0.c) * Finally changed disguise method for ip's (*.od doesn't have this tho) * Command /kline accepts a max of 2 parameters, a : is no longer necessary in front of the reason. * Hopefully klines should now get all people the first time they're added. * Ahh yes! That's why all users who are klined aren't disconnected immediately. The call to check_pings() went up the list of fd's. If a user was found to be klined, it was disconnected. However, when the user is disconnected, the user applying to that SAME fd is a DIFFERENT user, and in the past, the new user was NOT properly checked! That's the cause!!! YAY! * Separate function check_kills() made, check_pings() no longer does kline checking. Excuse the pun... rlines are also zapped. * Opers see real host in /who now. Yay! * IP's such as 24.100.23.90.stupidisp.com will now disguise to xxxx.stupidisp.com; previously, just the least variable part(s) were disguised. * New whowas feature: /whowas $nickname_currently_online will do a search for all users in the past using the host of the user currently online. * All helpop-forwarding crap has been zapped. That also takes with it an obnoxious usermode. Basically, for help, a user can enter the appropriate help channel. * Anti-ghost: let's say we get a ghosted user on one of our links. Then, that link introduces another user of the same name. Instead of seeing the greater timestamp and expecting the other user to lose to itself, we kill the ghost on our side * New server-hashing tables based on first four characters of server's name. The algorithm uses a u_int32_t translation of the first four characters of the server's name and the hash table's size is prime so all four characters should significantly affect the bucket number. Note: No two servers may begin with the same first four letters anymore!! * Users without op/voice in +m channels now cannot change nick. * New function can_member_send does a quick check -- returns 0 if user has op/voice, or is unbanned in an unmoderated channel. Mon, Apr 16, 2001 -- binary (ver df-1.1.0.b10) * Mode changes made by servers are relayed without a prefix to save bandwith users. When these server modes are relayed to users, a fictional server m.sync will appear as the server setting the modes; this dramatically reduces the size of the buffers sent to users. * Similarly, topic cmds sent by servers (not including U:lined ones) will have the sender be replaced by fictional server "t.sync" * Disguising now avoids buffer overflow potential... also, if you have a host like f.c61.up.smark.net, in which the leftmost segment isn't very informative, disguise will combine the first two when making the mask. * Nospoof now uses a much simpler randomizing algorithm; the extensive md5 stuff was totally unnecessary. * Fixed something with the disguise... * Mode +0 now clears bans. Messed with the semantics of m_unbanme a little, and also moved it into mode.c * m_unbanme modified a little to allow extra functionality; is not only for SA's anymore. However only SA's may use this command without having op status in the specified channel. This may be someday useful for unbanning a person if the mode +d might have caused some problem... Anyway, here are some examples of how it'd be used: - /unbanme #channel <-- unban the sender from #channel - /unbanme #channel fred <-- unban fred from #channel - /unbanme #channel * <-- remove all bans from #channel - /unbanme #channel *!*@*.mx <-- remove all Mexican bans * Fixed bug that prevented the relay of /topic commands * Watch lists ALWAYS show the disguised host because upon logon users are not initially +d, and this allows one to easily find someone's disgusied host. * After the help ignore list is freed the pointer to the beginning is set to NULL, so as not to try to delete the same thing twice ...... * Fixed something with make_nick_user_host that caused ban probs... * + channels dont give ops to anyone...oops! * Next mass upgrade will include code so disguised IP's will contain all digits, because many scripts freak out if duisguising puts letters into the ip addies. The last term of the IP address will consist of a number ranging from 300-999, completely out of the normal 0-255 range. * Unbanme alias made called "rmban" that calls the same function... * Fixed something with mode that allowed ocasionally a 13th mode parameter to be sent out when doing mass-unbans... Sat, Apr 07, 2001 -- binary (ver df-1.1.0.b9) * Okay, doing some streamlining..... the modebufs in mode.c now belong to a struct to help it be more modular. Maybe in the future we might want this to work with >1 modebufs. * All those functions in send.c have been majorly shortened. We had long ago lost hope of putting in varargs, and if we find some way to avoid the chain limitation, it wouldn't be too hard to put them back in. The defines got a little too cumbersome and unsightly. About one-third of the file was deleted (1536 lines to 1009 lines) and hopefully it's more flexible. * More send.c reforms (for channel notices and such a buffer is pre-made and instead of calling sendto_one each time, a simple send_message is utilized instead) * Reformed member lists again. Now assumed that we won't have bots joining thousands of channels. * Made new struct for hushes containing both the time and the reason -- no need for user->hushend when user is not hushed. * User and server structs are put directly into the client in the form of a union; sptr->user will now be sptr->u and sptr->serv will now be sptr->s. However neither of these will ever be NULL, so the status macros must be used instead of null-tests. * IRCD *FINALLY* stores a tree of server links! * Mode restructured so if there is a potential risk of overflowing mode buffers, the mode will be split into separate lines. * Timestamps for local users somehow were becoming 0...now properly set. Sat, Mar 24, 2001 -- binary (ver df-1.1.0.b8) * Fixes fixes fixes...let's hope this will work right!!!!! * Use of privmsg and notice from remote hushed users will be ignored because previously lag time allowed a few extra messages to get sent out. * The umode command streamlined a little... now when an oper goes -o he/she will keep +hb and be able to reset them as long as *both* modes are not removed * Fixed some stuff dealing with exit_client. Turned out that close_connection reset cptr->fd to NULL and so that when exit_one_client was called, cptr == cptr->from resulted in FALSE and thus the notify tables etc. were not properly removed. No more sending notifies after exit! * Well, glad that svsnick problem was fixed...some reason svsnick was taking the user parv[1] and trying to change his nick right back to parv[1], decreasing the effectiveness...fixed! Wed, Mar 21, 2001 -- binary (ver df-1.1.0.b7) * Put all the channel mode stuff into mode.c for increased convenience and modularity. Made functions that add stuff to the mode buffers, etc. which can be used relatively easily. * Mode syncing is optimized so that only the last MODE command will have less than 8 parameters. * Members who are both +o and +v will now have both modes synced. * Some fixes made to some various functions; hopefully there should be much fewer bugs. * Hopefully hash table will be better.... hashyell.c (one with extensive testing of table integrity) is currently implemented. Mon, Mar 19, 2001 -- binary (ver df-1.1.0.b6) * Rewrote client/channel hash functions... the old ones were starting to break down and the functions were simple enough to rewrite. * Some other touchups... * Channel mode +z (MODE_PRIVMSGSONLY) prohibits sending of notices or CTCP's other than action for those without ops/voice. Added because /notice is often used to avoid antiflood scripts and also because mass CTCP's can often crash clients or use unnecessary bandwidth. Tue, Mar 13, 2001 -- binary (ver df-1.1.0.b5) * Seems to work pretty well... various cleanups. * Function m_ison was cleaned a little, the old had some bugs and the code was kinda strange. * Made function check_params that automatically checked params and sent necessary "Not enough params" message. Also made implementation for simply sending the message in a return. * Split quit messages are now shorter and copy the Quit: prefix for regular /quit's. New sample quit message from a split between schizy.ca.us.darkfire.net and semisolid.ga.us.test.darkfire.net would be unlucky_user has left IRC (Split: schizy <-> semisolid) Mon, Mar 5, 2001 -- binary (ver df-1.1.0.b4) * And now this is nice and peachy clean and just everything you want in an IRCD. Syncing with +l, +k, and +a are now picture perfect as on syncs the larger one is taken. * IRCD will not reject nicknames from other servers for having illegal characters. If someone is dumb and makes nicks containing bells, tokens, etc. allowed on a server, then well let them suffer from inability for others to /msg them etc. * IRCops see real host in /whowas now. * Now /whowas will search by hostnames. For regular users, the real host will be checked, and disguise host only if the person was +d when he exited. For opers, both realhost and dishost are tested regardless. * New function made called change_nick that handles *EVERYTHING* that goes on when a user changes nicks (after I found an inconsistency between that in m_nick and m_svsnick) * Removed support for chans with server masks such as #mychan:server.* because now they'll only cause problems. * IRCops can do /names and /who for secret channels etc, assuming they know the name of the channel. * Changed disguise method on IP's to prevent the endings from looking like TLD's: now the end will consist of one letter followed by a number. * Fixed quit messages generated by fquit. Wed, Feb 28, 2001 -- binary (ver df-1.1.0.b2 and .b3) * Basically, this will be the bug-free version. * Whowas struct no longer replies on users online. Adds to static memory use but nothing really bad. * Servers are now included in the whowas database. * Now whowas struct's server name storage points either to the live server, or the location of the server's name in the whowas list. * Fix made against bouncing +k if both chans have the same key. * Mode command touched up a little for efficiency * On mode resyncs... the lexicographically greater channel key is taken to prevent desyncs. * Made m_map()'s output a little more visually pleasing. * Sync mode negotiation now actually refuses to set the mode in the first place... basically, it's effective now. Sat, Feb 24, 2001 -- binary (ver df-1.1.0.b1) * Removed various antiquities from m_user, m_nick, and register_user. * Changed cptr->user->server to a pointer to cptr->srvptr->name to avoid excess memory waste. * Disguising for ip's will now include 0 as a digit... * Got the \ thing in match() to work properly. * And now \ is removed from match(). Once it started working properly, horrible bugs appeared dealing with the \ char in nicks. * Non-opered U-lined users can use fquit and kill again * Cleaned up exit_client and exit_one_client_backend of old junk. * Removed some stuff out of free_user into exit_one_client_backend so that user the struct will be bared at time of quit rather than at deletion of whowas entry. * Made separate exit_server function to do the recursive server split handling. Finally got it to display the *CORRECT* server names in split messages. Aye aye aye... Tue, Feb 20, 2001 -- binary (ver df-1.1.0.a13) * Optimized ban checking * Refurbished remove_user_from_channel * Removed some antiquities from s_user.c * Changed some members of certain structs to be smaller sizes * User is informed if /who list is truncated * MASSIVE cleanup in m_who. Removed lots of unneeded variables. * Banchecking with +d is faster. For this, new function match2 was written, which returns the first char at which a nonmatch was found. ONLY if the nonmatch happens beyond the dot will the disguised host be checked separately. * Removing bans with -b will now scan with matching for local users if a literal match is not found. If someone does something like mode #chan -b *!*@* and there is no ban on *!*@*, the first ban in the list will be removed, for example. The message will be relayed using the original mask. Tue, Feb 13, 2001 -- binary (ver df-1.1.0.a12) * Basically fixed some bugs * Now mode +l syncs better; if timestamps are equal and there are two different user limits, the larger one is taken. (Also applies to +a) * Made a separate function for displaying whois info for a user. Accordingly, if the user specifies no wildcards, then the user's name will be looked for in the HASH rather than searching *all* the clients. * Since /stats z is EXTREMELY CPU INTENSIVE (counts up all ram in use) it is now limited to use by opers only. * If someone is /hush'ed while already /hush'd, the user's old hush reason is now freed from ram. Thu, Feb 8, 2001 -- binary (ver df-1.1.0.a11) * FINALLY restructured channel member lists and user channel lists... - New struct called "Member" contains: chptr(channel) cptr(user) flags(guess) nextu(next user in chan's member list) nextc(next chan in user's chan list) - Rather than having two separate linked lists, one storing the channels a user is in and the other storing the users in a channel, each join is stored in a single struct, all of which are interconnected in a web. - Benefits: (1) Allows addition of more data for member info rather than being restricted by the inflexible Link struct (2) Takes less ram and less separate structs are allocated. (3) If you're going through the user's channel list, you don't have to look up the user's position in the chan to find his/her chanflags. (4) Member lookups are done so that chptr and cptr are passed. It is checked whether the channel's member list or the user's channel list is smaller, and searches in whichever list is smaller. * REPEAT PROTECTION via channel mode +a [x] (antirepeat) - Local users' messages are stamped. Stamp is compared with that of previous message. If stamps are equal, see if user has exceeded the set limit of messages in a row. - Protection can be enabled via channel mode +a (only 1 identical line) or +a x (where x is the max # of identical lines.) - Protection can be disengaged via mode -a. - Once the user meets the max # of identical lines, subsequent identical messages will simply be ignored. Non-verbose to prevent unnecessary load and disruption. * Members with ops and voice aren't prone to repeat protection. * Appeased obsolete architecture worshiper's demands and make disguise u_char and u_int32_t rather than char and int. Wed, Jan 31, 2001 -- binary (ver df-1.1.0.a10) * now not possible to ban evade by going umode -d * whowas matches masks now * /who is patched a little to run better * after discovering ircd's strtoken has an O(n^2) (a while loop kept going until index didn't find a ',') I made haste to remove that from m_whois. * m_whois now doesn't use next_client and now traverses more sanely * removed numerous possibilities in m_whois for redundant checks... ie. searching for common channels if showperson is already known to be 1 (really stupid, I'd say!) * fixed bug with hostnames, caused only 3 chars to be registered because sizeof(user->host) returned the size of the pointer, which is 4 bytes, rather than that of the array to which it points. * OPCanZline NOW checks OFLAG_ZLINE instead of OFLAG_SADMIN. * a user sees his real host when doing /userhost on himself Wed, Jan 17, 2001 -- binary (ver df-1.1.0.a9) * tested on network--some misplaced "features" fixed * can_send testing is now again performed for remote users in case of severe lag; a k/b'd user on a lagged server could send * reverse added to list of chars to strip * disguise skips hosts such as microsoft.com or henry.net * added feature for forcible mode +d for users that services sets svsmode +D to affect ISP's which are likely to have users vulnerable to attacks Thu, Aug 10, 2000 -- binary (ver df-1.1.0.a8) * removed nick/server collisions which are now impossible * removed various checks associated with the old nick/user protocol * when bouncing a user mode, don't deop the user if not in the chan -- kick the user instead. * only check Q:lines for local users * slight, non-detectable changes in m_join and sento_serv_butone * oops, +s should dominate over +p, as it does as of now. * fixed general insanities in m_unbanme * trying to get local channels to work again! * removed null-traps from PubChannel etc macros * revised m_who just a little, and implemented the idea of setting a limit on /who replies -- should opers have higher limits? * created is_member_banned that checks if a member link is banned -- sets the flags if not already set * bans now store a pointer to the hostname part of the banid, so that we need not check the entire mask when we do the disguised-user retest with sptr->user->realhost. Fri, Aug 4, 2000 -- binary (ver df-1.1.0.a7) * fixed various flaws in the mode command * removed obsolete and nonsupported CLIENT_COMPILE stuff * reimproved bouncing code * always relay sender to U:lined servers because they run more protocol-sensitive software and still expect normal IRCD servers to automatically insert the sender name. * re-included the sender in RELAYING server modes, repealed old decision * channel mode +r is synced on net.join * now all param-less modes supported in m_mode are shown to user in /mode #channel except +r * fixed protocol bug by making +p exclusive over +s * removed old code that sent a comma-separated /part list to other servers using multiple part commands * U:lined bans still pass through the server to prevent desyncs which can easily happen when a channel is recreated on one server but not recreated on another server * servers can now send FQUIT's successfully * this change allows servers to fquit unknowns, and fixes some bug with desyncs caused when services enforce a forbidden nick Fri, Jul 28, 2000 -- binary (ver df-1.1.0.a6) * re-applied the concept of truncating the server name after the first dot in /fquit paths * fixed bug in /who where for a nonoper, if a non-invisible user was in a secret channel, the user would not be shown * channel flood protection added but is currently commented out * timestamp is sent for calls to sendmodeto_one even if there is no op being done * drop the sender on server modes to help alleviate some net.burst lag * drop the sender on bounces * rearranged some code to prevent coring * only strip color in channel messages coming from *local* users * removed the old outdated service stuff * made the :'s not mandatory on several commands which aren't supported by IRC clients to prevent having to add one manually Thu, Jul 20, 2000 -- binary (ver df-1.1.0.a5) * color stripping also ignores bold and underline too * opers now can see +s chans in /who * ban code optimized -- a user checked for a ban checks to see if the ban flags are set, and if not, it checks for a ban match and then sets the flag. Only applies to members. * fixed the m_unhush sender drop (used to send server name as the sender) * shortened the method for IP address disguising * in m_mode, if chptr->creationtime is 0 and the other server supplied a valid timestamp, then we should change chptr->creationtime to that value. For some reason, that code didn't exist, but it didn't seem to be causing any major problems. Tue, Jul 18, 2000 -- binary (ver df-1.1.0.a4) * m_kick was touched up likewise * all traces of zombies have been wiped out * made m_who less repetitive and more clean-looking * fixed various redundancies in m_mode Sat, Jul 16, 2000 -- binary (ver df-1.1.0.a3) * The old m_names was large and cumbersome, and by eliminating using /names without any channel specified, IRCD does not need to go through unnecessary steps and also, nowadays, networks are getting to the size where listing all clients would probably flood most users off. * Optimized m_invite a little. Made it easier to read. Mon, Jul 10, 2000 -- binary (ver df-1.1.0.a2) * Fixed the bug where a : was ommitted and you couldn't use spaces at all in global k:lines. * Added option channel mode +c. It strips colors from channel messages that people send. * Reworked the code for mode +d. It came to my attention that for the mask du-148-223-40-*.prodigy.net.mx, when used with +d, only the last character would change. The new method forms a 4-character hash instead rather than whatever it used to do. * Supported svsmode disguise by using +X (d was already taken). The regular code wouldn't have supported it anyway because it just set the mode but didn't actually disguise the user. Also, disguise() was moved to s_misc.c because it was rather unnecessary in its previous location in s_user.c Mon, Jun 26, 2000 -- binary (ver df-1.1.0.a1) * Added logging of K:lines, at request of Kloud421. This feature is optional, now a question in the Config file. This features logs the use of /kline, /unkline, /zline, and /unzline in a file called kline.log in the DPATH dir along with ircd.conf. The format is something along the line of "opernick!user@host [remotely ]added/removed a temp k/z:line for user@host (reason) date -- time" * Fixed most warnings reported with -Wall except for implicit decls and /* within comment because of their overabundance. Sun, Jan 16, 2000 -- binary (ver df-1.0.4.b7) * Fixed another bug! Before, once you identified to NickServ and your "registered nick" flag was set on, you kept your flag even when you changed nicks. Now, you lose your special status at having a registered nick when you /nick, but don't worry -- you'll get it back when you identify to NickServ again. * In the reply that says "you must have a reg'd nick to join" for +R channels, it now tells you that you must also be identified, how to identify, and to see /msg nickserv help for further info. We must be friendly to newbies and people who don't know every single nuance! Sat, Jan 1, 2000 -- binary (ver df-1.0.4.b6.nc.ncts.ntb) * Removed the 19- prefix to the date in /time. EEK THE BUG! BTW, HAPPY NEW YEAR Sun, Jul 25, 1999 -- binary (ver df-1.0.4.b6.nc.ncts.ntb) * Verbose timestamp fixing will not be shown for newly created channels anymore. Yay! * Got rid of topic bouncing. Topic bouncing is probably unnecessary, but if it happens to be needed, then something is probably wrong with the existing code. Fri, Jul 23, 1999 -- binary (ver df-1.0.4.b6.nc) * Patched up nick collision code some. Killing the user on the *other* server is now taboo. Let *them* take care of it, because you will get excessive nick collisions with instantaneous reconnects. Wed, Jul 7, 1999 -- binary (ver df-1.0.4.b6) * In h.h, sendto_failops_whoare_opers is now spelled correctly; it used to be spelled "opsers" * Dreaded bug with Linux and dn_skipname FIXED! For some reason, the #if that enclosed the definition of dn_skipname in sys.h did not have the "|| defined(__linux__)" in it like it was supposed to. Sun, Feb 7, 1999 -- binary (ver df-1.0.4.b5) * Fixed SAMODE, and found a slight bug where U:lined mode timestamps aren't relayed. * Topic now accepts topics with equal timestamps, but ignores all topics if the topics are the same. Topics are also bounced now, but with the equivalent-topic checking, most of the time they won't get very far. * Verbose timestamp fixing for +j people, shows when we fix timestamps or when we do bounces. * Before, during unhush, the local server name was always relayed as the sender instead of the user/server doing the unhush. Thu, Jan 28, 1999 -- binary (ver df-1.0.4.b4) * Fixed various /hush and /unhush bugs * Hopefully fixed this "always-bounce" thing that servers do Thu, Jan 21, 1999 -- binary (ver df-1.0.4.b3) * Fixed a bug with /hush - it checked for MyConnect(acptr) before acptr was set, causing it to crash. Not anymore. Sun, Jan 17, 1999 -- binary (ver df-1.0.4.b2.dfix.w32fix) * Now fixed to compile better in win32 * Situations where a double bounce may occur *should* happen less frequently. Sat, Jan 2, 1999 -- binary (ver df-1.0.4.b2) * Touched up on various things to make them run faster Fri, Jan 1, 1999 -- binary (ver df-1.0.4.twilight.b1.rh.para.tts) HAPPY NEW YEAR !!!!!!!!!!!!!!!!!!!!! * Redundant bans can't be added anymore, for example, if *!*@*.x.net is already banned, then *!*janedoe@*.x.net can't be banned because it is already covered by the broader ban. Wed, Dec 30, 1998 -- binary (ver df-1.0.4.twilight.b1.rh.para.tts) * Michael's RedHat fix implemented - now works on RedHat Linux * parv[] only contains valid pointers or NULL - no more possibilities for old pointers left over from old calls to parse() * Topic timestamps are presumed to be 0 if no timestamp is specified * NS ghost now works right - a fix to the bug where fquit() didn't check for proper privileges didn't allow U:lined clients to use FQUIT without opering. Now they can. * Old QUIT fake direction bug fixed * Miscellaneous other bugs fixed Tuesday, December 29, 1998 -- binary (version df-1.0.4.twilight) * Changed version name to cause less confusion * Opers can't fake kills with SQUIT anymore * "Erroneous" is now spelled correctly instead of "Erroneus" Tuesday, December 22, 1998 -- binary (version df-1.0.3.twilight) * In nick collisions, if the server with the new user is the same as the server with the old user, the new user will rule out. This will help relieve problems with ghosts. * A new command, /rkill, will be used by opers to override the normal switch to fquit that happens when m_kill is called. This will be used to get rid of ghosts, because the server with the ghost won't have the ghost. * QUIT's are not going to be sent to the server with the user who is quitting or being killed. The old backwards QUIT caused unnecessary load and maybe some confusion from the fake directions. It was a bug in send.c/sendto_common_channels where it did not check if the user was a local user. Remote users are normally taken care of by sendto_serv_butone, so this redundant sending is not needed and can cause confusion. That bug was *FINALLY* fixed! Wednesday, December 16, 1998 -- binary (version df-1.0.3.twilight) * If an oper is away but also a helpop, their helpop status will no longer be shown in the oper's /whois. This will cause less fuss when trying to find helpful opers. Wednesday, December 2, 1998 -- binary (version df-1.0.3.twilight) * Map command added, and working (but not very "clean"-looking) It shows a detailed branched map of the servers on the work for clients that do not have a /links parser. The current map isn't very "smart" - lines continue downards even if the last server on that level was already reached. Also, it goes through the whole list of clients a number of times, which will be changed to some kind of linked list later. But at least it works. Sunday, November 29, 1998 -- binary (version df-1.0.3.twilight) * Hush and unhush commands added. /quote hush nick seconds :reason done by an IRC operator hushes a user, and /quote unhush nick unhushes the user. A hushed user cannot use most commands that effect others, like privmsg, notice, join, kick, mode, and nick. When the time period is over, the user is unhushed, unless the user is indefinitely hushed if the seconds field is specified as being zero. The only way for an indefinitely hushed user to become unhushed is through an oper doing /unhush or by quitting IRC. Also, a hushed user has an extra line in their /whois saying "nick is hushed (TheHusher (flooding))" * /unoline can no longer remove global O:lines Friday, November 27, 1998 -- binary (version df-1.0.2.twilight) * Kills (fquits) are now working like they should, no mess-ups * Topics are relayed properly, bug in which only topics with lesser timestamps were accepted, not lesser OR equal to Saturday, October 10, 1998 -- binary (version df-1.0.2.twilight) * Double-bounces are a thing of the past. The mode string of a bounce is preceeded by an "&" sign. If the server wants to bounce a mode and the string begins with an "&", it won't bounce it. That'll fix mode fights, but this shouldn't happen in the first place. It'll send a server notice to +j when it prevents a potential double-bounce. * +C and +R for CSops and SRA's. These can only be set via svsmode. Unlike +a, this mode is never on unless services sets it -- not where the user sets it and services make sure they're authorized. * Best possible /quote help response Sunday, September 13, 1998 -- binary (version df-1.0.1.twilight) * More bugfixes! Modes should now sync properly. Tuesday, September 8, 1998 -- binary (version df-1.0.1.twilight) * /quote help does not flood the user any more with the available commands from _all_ servers. Before it was relaying the help even if the command list sending took care of it, so the user ended up getting flooded by every server on the net. Monday, September 7, 1998 -- binary (version df-1.0.1.twilight) * More bugfixes! Yay!!! * No more "Q-lined nick NickServ from on services.*" anymore! Sunday, September 6, 1998 -- binary (version df-1.0.1.twilight) * /list now lists channels with only one user in them Thursday, September 3, 1998 -- binary (version df-1.0.1.twilight) * Fixed various bugs that would cause ircd to core, such as buffer overflowing in m_mode, by setting a char to '\0' without checking if the string is long enough * New /who flags: a - list only admins (+A) s - list only services admins (+a) & - list only local clients * QOTD command now writes to a file "ircd.qotd" * Brushed up on remote klines, unklines, and rehashes. They now work MUCH better Saturday, August 29, 1998 -- binary (version df-1.0.twilight) * Remote klines and rehashes are working fully, and access is now restricted to opers with "s" in their oflags. Also, the owner of a server can disable remote klines and rehashes, meaning that remote klines and rehashes will not EFFECT their server, BUT it can go THROUGH the server. This is done with the REMOTE_KLINE and REMOTE_REHASH defines, or via the Config script. Wednesday, August 26, 1998 -- binary (version df-1.0.twilight) * match() rewritten to work faster, and now both match() and mycmp() use registers, not RAM for the major variables. * The unoline command will not de-oper any opers using that O:line, because of an odd bug that makes ircd crash when you /rehash. Monday, August 17, 1998 -- binary (version df-1.0.twilight) * Added command called qotd, standing for Quote of the Day. Server admins can type "/qotd new quote of the day" to change the quote of the day or "/qotd" to delete it. The quote of the day is stored in memory and displayed at the end of /motd. Is this useful??? * Added new command called FQUIT: - This is a forced quit. Unlike kill, it just sends an fquit notice, and when the server with the victim receives the fquit, it forces the user to quit. With kill, it would remove the user once the kill message is received, but that would cause desyncs. - When an oper on the local server does a /kill, it is automatically aliased to /fquit. It appears to be exactly the same as a kill to the user, but it is propagated to other servers as an fquit. - NOTE: It is only forwarded for _opers_ that are _on this server_, because some servers may not yet support fquit, and also for nick collisions, where the user must be removed immediately with no wait. * ChanServ may now re-op users multiple times, because I was asked to do that. * Fixed svsnoop. Now it actually works. It didn't work before because !hunt_server(blah) != HUNTED_ISME is NOT the same as !(hunt_server(blah) != HUNTED_ISME) Friday, August 14, 1998 -- binary (version df-1.0.twilight) * The UNOLINE command will deoper anyone using the particular O:line that was removed. Now, server admins can also remove even perm global O:lines. It's their server anyway. Tuesday, August 11, 1998 -- binary (version df-1.0.twilight) * Added command mkill: /mkill nickname reason will kill nickname and all of its clones, and /mkill ppp1.isp.com will kill all users with the exact hostname, not hostmask. This will NOT kill IRC operators. Sunday, August 9, 1998 -- binary (version df-1.0.twilight) * m_unbanme - /unbanme #channel will remove all ban masks against them from the channel they specify. * Nick collision stuff rewritten. - Before, if two clones with the same nick collided on a net_rejoin, they would get killed every time they do a /nick after they reconnect, and the server would have to be restarted. Not anymore. - Also, when the nick on "our" side of the net wins, we WILL kill the other user, instead of hoping that the other server will kill it off. This plan is more foolproof. Redundant, but more foolproof. * Usermode +d hides a user's exact hostname, so their hostname would be converted from ppp1.isp.com -> kla1sjg4.isp.com or 123.123.123.123 -> 123.123.123.7yg2 (not real conversions) Friday, August 7, 1998 -- binary (version df-1.0.twilight) * Completely rewrote m_mode(). This should be MUCH easier to read and "hack". Every "section" of the mode command is together, instead of 500 lines apart as in the old one. * m_mode's bounce filtering is better. If a non-U:Lined server is setting a mode and the timestamp is greater, you bounce it. A timestamp of 0 always overrules others. If a remote nonopped user changes the channel mode, it'll bounce them. For local nonoped users, you just tell them "You don't have chanops" and exit. * /oline and /unoline commands - /oline user@host.mask opername password adds a temp o:line, accessed by /oper opername password /unoline opername removes all temp o: and O:lines with "opername" as the oper name * Remote /klines and /unklines - /kline user@host:server.mask [comment] /unkline user@host:server.mask * Added umode +j which makes the server send you "annoying" server notices that are now ignored from just +s. Tuesday, Aug 4, 1998 -- binary (version df-1.0.twilight) * /who flags, only show: o - opers w - umode +w h - helpops i - invisible users (for IRCops only) G - gone/away H - here/not away @ - channel op + - voiced * /who mask interpreting: - nick!user@host.mask - matches nick AND user AND host - user@host.mask - matches username AND hostname - something.with.dot - matches host OR ident OR server - nickname - don't go through the /who thing, just show the info on that one nick. Like /whois, it shows invisible users if the exact nick is specified. - anyothermask - searches for nick OR ident; no dots are in it, and searching realname is pointless and wastes CPU cycles. * /who now shoes helpop status with a lowercase 'h' * Remote /rehashes: /rehash server.mask Saturday February 21st, 1998 10:42am GMT dal4.6.5.DreamForge -DuffJ * basically bug fix release of dreamforge * SCO UNIX and Red Hat 5.0 Linux should now compile df smoothly * help files updated and expanded * casetable high-bit flipping bug (oh no!) fixed *phew!* * df will now compile on boxes without snprintf * other bug fixes - unkline readded, kill path truncation bug fixed Monday January 19 1998 -- 20:02 -08:00 dal4.6.3.DreamForge -wd * Finally, release dreamforge! * Various minor bugfixes, changes, etc. * Added 'dalnet-keys.pgp' file containing DALnet PGP keys. Sunday December 28 1997 4:20pm dal4.6.2.DreamForge -wd * Rolling the first "Release" of dreamforge. * Added wd-lusers patch, sacrifice 100% accuracy of lusers for performance gain. * Added the script.ini supressor patch, along with it a Config option to enable/disable, and a token letter in the version reply to signify its inclusion/exclusion. * Added wd-malloc patch, should slightly boost performance for FreeBSD 2.2.2+ DALnet servers (anything below 2.2.2 is untested, i don't even know if the patch will work, but it won't hurt) * Added X:line patch via NikB (See doc/example.conf) Saturday Dec 27th 12:15am dal4.6.1.DreamForge -DuffJ * completely separated flags and usermodes. sptr->flags is now sptr->flags for flags, and sptr->umodes for usermodes Friday Dec 26th (Merry Christmas!) 12:05am df-r4-fix4 -DuffJ * bug fix in m_join() that allowed desynchs due to incomplete channelname length checking. Fix by Dianora via Barubary * /whois reply now returns this format: "foo is an IRC operator" OR "foo is an IRC operator - Services Administrator" OR "foo is an IRC operator - Server Administrator" * when an admin sets usermode +A, he is now automatically set +a aswell. * /notice @+#channel implemented * connect time notices \r added, improved wording. * ns,cs,ms + os shortcut aliases removed (thanks ns) * help.c updated * chatops implemented (from darkrot) /mode JoeOper +b /chatops blahblahblah identical to globops * restart and die removed from * and global oper flags Thu Nov 20 22:09:14 EET 1997 Donwulff (donwulff@iki.fi) * fixed merge-conflict with resync-burst NICK's * FREEMODE changed, see channel.h for remarks Wed Nov 19 21:53:31 EET 1997 Donwulff (donwulff@iki.fi) * fixed an old bug involving remote modes with > 6 parameters * added in #definable FREEMODE to allow "unlimited" sized resync-burst MODE's - this would improve throughput, but requires the above fix first propagated * made m_oper now reject saltless passwords * msgmap is now an array of pointers to msgtab entries; fixed a bug * added in the changes-list for dal4.4.17 * QUIT-comments no longer buffer-overflow... * /whois now doesn't display extra dots * removed extra newlines from the end of HelpOp replies Mon Nov 17 16:36:27 EET 1997 Donwulff (donwulff@iki.fi) for dreamforge-r4 * fixed the version number, now 'dal4.5.17.r4' instead of dal4.4.17... * tried to mark the authors of biggest changes in code as per GNU license * changed my own e-mail address references to donwulff@iki.fi... Tue Nov 4 18:48:41 EET 1997 Donwulff (donwulff@iki.fi) * Nuked find_userserv() function completely, nick@server now relies on hash * Added in Wizzu's patch to fix the PASS->services interface as intended * Included taz's preliminary code to shorten /whois * Removed the preliminary support for server timestamps; not finished * Oops, donwulff-dbuffix ended up twice there; removed the other one * Imported in the fastbuf-branch, tested code from Undernet Tue Oct 14 16:36:21 EDT 1997 Donwulff (donwulff@iki.fi) * Imported changes from between dal4.4.12 and dal4.4.13: + parse.c on 4.4.13's favour, return 0 from fake dir + s_serv.c m_server() server-collide: combined + s_user.c m_kill() saw no difference in anUnknownUser * aliased HELP to HELPOP so that it's usable without scripts dreamforge-r3: * moved TRACE from 'A' to 'b', leaving 'A' and 'a' free * dbuf_put() returns if nothing to do * fixed a relapse of nospoof 'unreg-client-nick-change' crash Fri Aug 22 10:13:07 EDT 1997 Donwulff * Now default to very streamlined hash-function instead of the ELF-hash * Added in some of the Undernet optimizations for dopacket() * Fixed a bug in debugmode hashtable rehashing memory allocation * Added in a notify for invites thru bans etc. * m_hash now requires IrcOp privs * Removed 'hashv' from both channel and client-structs, we don't use raw hashes Thu Aug 21 23:03:38 PDT 1997 darkrot, entered by Cabal95 * Masskill patch to let opers /kill nick1,nick2,nick3 * Kill messages now display the user@host of the user killed Wed Aug 20 17:44:24 EDT 1997 Donwulff * Invites by channel-ops (or U-lined) now allow passing thru +b and +l too * Now enforce a limit for invites-per-channel too * Add invites to the _top_ of list in all cases, expire from _bottom_ Wed Aug 20 13:43:42 EDT 1997 Donwulff * Link-slab allocator, allocate 4k of Links at time, reuse * Break Bans out of Link-structures for further memory savings * Put flush_connections() back at the end of the mainloop * Add some blocking-checking, now use #defines for those * Remove an extra space from resync-burst modes * Move to use PJW/ELF hashing-routine, slightly slower but better * Fix display of memory used by bans in /stats z * Add elementary ignores to HelpOp system * Add over-rides to HelpOp system * Add a "frontpage" to HelpOp system * Moved make_nick_user_host() and check_string() to s_misc.c * HelpOps now use numerics to avoid errors from "buggy" clients. * sendto_common_channels() streamlined now that zombies are removed * Double-insert checking in DEBUGMODE or if INSERTCHECK defined * Bytes counter for /stats m fixed? (No idea what the old code tried...) * Numerics-handler now has debug code to try to catch weirdness * userid@server-messages now *forwarded* for non-IrcOp's * The new Hash-function now "documented" better... * /rehash will now empty the global HelpOp ignore-list on server * HelpOp ignore-list now uses properly DupSring() & make_link() * The /list handler has been made to scan thru topics as well * IsService now made to return 0 and let the optimizer sort it out * Same thing with zombie-stuff, since we don't use zombies anymore Sun Aug 10 12:13:34 PDT 1997 * client structures now keep track of related whowas entries themselves. off_history was eating up the most CPU, now it doesn't. * /stats l correctly displays server connections, again. Thu Aug 7 22:50:41 PDT 1997 Cabal95 * Added new undernet-like /list handler by Rakarra * Removed fake direction notices/splits Wed Aug 6 16:58:22 PDT 1997 Cabal95 * Many misc changes * Removed alarm() calls; some bugs in Config script running in auto config mode; nickchange delay(3 seconds) * Increased hash table sizes Tue Aug 5 17:52:10 PDT 1997 Cabal95 * PROTOCTL - changed it back to =. :P Apperently Undernet is only talking about it and hasn't done it yet. I like = better :-) * WATCH system appears to be working under some mild testing. Tue Aug 5 00:26:42 PDT 1997 Cabal95 * Added Donwulff's WATCH system in, untested as of yet. * Changed PROTOCTL to use : instead of = for Undernet(?) compatibility. Mon Aug 4 19:49:41 PDT 1997 Cabal95 * Heard from them, general agreement. PROTOCTL msg now is sent only after the connection logs in, servers get "PROTOCTL" and clients get numeric 005. * Token system setup and working - yeah! :-) (Donwulff) Sun Aug 3 22:35:25 PDT 1997 Cabal95 * First draft of protoctl finished, waiting to hear from others on making a change in the way PROTOCTL is communicated. * SQUIT is (hopefully) completed, appears to work fine, so that is a good thing. :-) (Aetobatus) Changes from 4.4.15 to 4.4.17: * SVSNOOP is restricted to services, not *from* services and allowed by everyone else.. Anyone can disable all your O: lines in 4.4.15. * Temporary K-lines are able to be removed again. * Users cannot set themselves -r as they could before. * +R channels show more than "Cannot join channel." * Users off channel cannot change topic on -t channels. * Nickname changes not affected if nickname to change to is already in use. * Config option to specify whether or not users can see /stats o. * Other minor bug fixes. Sun Oct 27 21:34:21 EDT 1997 Various, entered by David Kopstain * Changes for 4.4.15 * New user modes. 'a', 'A,' 'r' and 'R' - 'a' represents a services admin. This is set by the server upon opering. This +a allows ircops to do any normal command that a services admin can do. - 'A' represents a server admin. This flag shows that you are the owner of your server. - 'r' means that you are identified to acc2 of a registered nick. - 'R' means acc3 - a and A are settable O:flags in ircd.conf * New channel modes. 'r' and 'R'. - 'R' is for users to close the channel to only registered nicks. - 'r' set by services to track registered nicks * New NICK protocol - server<->server protocol changes in the aspect that right before the gecos is displayed, a services tracking number is put in place. - client<->server protocol changes in the aspect of when an initial client connects, if it sends a 2nd argument in the nick line (NICK taz JIM), "JIM" is sent to services as a nick password and if the password matches, services will reply. * New SAMODE command - IRC Operators with the 'a' flag can now change channel modes with the SAMODE command * Nick Flood protection - Normal users cant nick flood anymore. This does not apply to opers * Mass invite/mass message protection - Normal users can only message/invite 20 targets withing 120 seconds. This does not apply to opers. * donwulff's dbuf check. * SVSNOOP command - Services can remotely disable a servers O:lines * SQLINE command - Services can send out a common set of qlines to all servers * New /whois information - New fields for SA's, admins and registered nicks * /ns, /cs, /os, /ms, /nickserv, /chanserv, /operserv, /memoserv aliases * /identify - Automatically parsed to the appropriate service. * /stats q - Shows all Services QLines * /LUSERS addition - Current local users: 69 Max: 1243 - Current global users: 12362 Max:18004 * SVSKILL command - Used by services to send a non nick chasing kill directly to the clients server. * SVSNICK command - User by services to change a clients nickname. This will be used instead of killing the client when nick kill is enforced. * allowance for normal users to /msg nick@full.server.dal.net for security purposes. * SVSMODE command - Used by services to change certain user modes, like +r for registered nicks, or +d to set a services timestamp. ONLY U:Lined servers can use this command. * Changes in Config to define your network services name, etc. * The Quit: patch. All quitting clients exit with "Quit: " * Rakarra's opernick patch. Shows the o-line that the person used to /oper: *** Notice -- NickInOline (CurrentNick!user@host) is now operator (O) * New, more efficient command parsing routine (JK, Cabal95, Donwulff, taz) Sun Oct 5 20:17:51 EDT 1997 Various, entered by Mikko Hänninen * Changes for 4.4.13 * Changes to the connect time notices: - connect problems contact resource shown always if defined, either an URL (CONNECT_URL define) or email address (CONNECT_EMAIL define), old nospoof message (and NS_ADDRESS define) removed - nospoof CTCP version request "from" field changed to %X!nospoof@servername format - numeric 001 shows Nick!user@host instead of just nick * /stats m, l and w show additional info (cpu time) when compiled in debug mode (the checkload3 patch): - /stats m shows CPU cycles used by command - /stats l shows CPU cycles used by connection, replacing the idle time - /stats w shows estimated ircd CPU usage * Server exists -errors report show additional info: where the existing server is connected from * Invisible opers (+io) no longer shown with /trace for non-opers (-o) * /kill allows multiple targets (nick1,nick2,nick3) and show the killed client's address in the Nick!user@host format (the mkil6 patch) * Kill patch truncated to first . on servernames. * example.conf's Y:Line section has been updated to what the routing team has requested * Config script has the right version in it now :) * Fixed bug in operflag system, wallop and locop access used the same flag bit, oops * Fixed compile errors for the WIN32 platform, now is error free * Fake direction notices removed, fake direction splits removed Sun Sep 21 18:21:52 EDT 1997 Various, entered by Mikko Hänninen * Changes for 4.4.12 * Fix for crashing bug in the /server command * Changes for 4.4.11 * Win32 compiling support Mon May 5 13:52:37 HST 1997 Cabal95, entered by Michael Sawyer * Changes for 4.4.10 * Minor bug fixes for /stats L and a test to disallow funky host names (with @'s in them). Sun May 4 20:20:44 HST 1997 Various, entered by Michael Sawyer * Changes for 4.4.9 * JK's qualify-match patch * Fix to K-line message in quit message * Some new additional modes (CLIENT, KILL, FLOOD) * Timed k-line patch * Hostile username patch * LOCOPS Mon Feb 10 21:07:03 EST 1997 Michael Sawyer * Fix problem in password testing of SERVER command * Add ability to use different case tables, safely * Prohibit most commands beforeregistration complete. Fri Nov 29 04:16:15 1996 Michael Graff > * Changes for 3.2.6: * Make it almost unnecessary to edit the Makefile or include/config.h anymore. Config now asks questions, and stores the answers in a file called Options. The theory is this file can be copied into a new version and pathnames and other options will get defaults from it. * Make nospoof code optional. Many servers do NOT need it, and some clients break badly with it. Thank you, Netscrape... Changes for 3.2.5 Sun Nov 24 04:39:57 1996 Michael Graff * Remove 2-second client connect delay. * Print "Client exited" not "error 0" Changes with dal4.3.3 (Barubary - barubary@dal.net, Donwulff - donwulff@iki.fi) Bugfix version and anti-hacking/spoofing * Spaces in kline comments (not akills!) are converted to _ instead of hiding them totally. find_kill exits for a non-akill kline the message *** You are not welcome on this server: reason Email kline@dal.net... * Deleted #wallops from the source code completely * Added md5-based anti-spoofing system * Fixed channel mode hacking * Fixed various memory leaks * Stopped certain commands while unregistered * Fixed WHOWAS bugs * Fixed problem with PONG (part of nospoof) * Fixed "ghost kline" bug * Added dn_skipname for BSDI systems (check src/Makefile) * chkconf now shows line error is on (Magel) * Config - script now tries to set up libraries properly (Magel) * Made dropping out USER server<->server protocol messages mandatory Changes with dal4.3.2 (Russell - russell@dal.net) Port of Fake Direction fix to dal4.3; special thanks to Roddy for pointing out that it wasn't in there already * Fixed Fake Direction caused by m_error Changes with dal4.3.1 (Donwulff - donwulff@iki.fi) * Fixed @-in-username bug Changes with dal4.3 (Donwulff - donwulff@iki.fi) Alpha on performance fixes while waiting for dal4.5 * Added Roddy's ircd.doc into doc/ directory * Tripled hash table sizes in hash.c and hash.h * Optimized hashing function in hash.c * Removed extraneous debug data from hash.c in non-debugmode * Numerous minor performance increases in hash.c * Added /hash m in DEBUGMODE for getting list.c memory usage summary * Removed maximum nickname limit from USERHOST * Added optionally matched address part to ISON - no wildcards in nick * Optionally drops USER protocol messages from server-server (Barubary) * Ident replies with @ are now refused * Added +h mode that can be set when you're opered * Parameters following /quote help are sent to all +h * Starting writing a help database to /quote help * Improved version control Changes with 2.8.21.mu3.dal4.2 (Russell - Russell@dal.net) Minor bugfix revision * Removed hack and netride wallops - and finally did it *right* * Users can no longer hide from opers by joining an invisible channel * Only hubs will send out the connection established global * Connect globals are now working right. * Miscellanous bugs are fixed. Changes with 2.8.21.mu3.dal4 (Russell - Russell@dal.net) * Added new user mode "g" that does the following: *notices all +og users with failed and/or succesful oper attempts on all servers *notices all +og users with failed server connection attempts *moves miscellanous other things anyone can see. * RAKILL command that allows ulined servers to remove an autokill as easily as it adds one. * Added support for temporary klines. * defined new A: class of klines (for autokill). These are meant to be services managed. * UNKLINE command allowing opers to remove k:lines by address. * Allow quote KLINE by address * Hacked STATS K to distinguish between permanent and temporary klines. * GOPER command allows a ulined client to broadcast all opers whether or not any other flags are enabled. * GLOBOPS command allows opers to broadcast over GLOBAL messages, thereby depreciating wallops. Wallops behavior stays the same though. * patch to allow the proper propagation of autokills. * Masks server notices that show PRIVMSGs * Masks the password from the failed oper attempt messages * Removed those annoying NET.RIDE and HACK notices * Allow opers to take quarantined nicks. * Fixed away bug that sends blank away messages on netjoin * Patch to allow opers to see invisible users on a /who * any oper can see all connections on any server in a /trace * Miscellaneous bug fixes. Changes with 2.8.21.mu3.dal3 (Lefler - lefler@dal.net): * Added modeless channels (starting with character +) * Now allows comments on channel parts * Changed TOPIC timestamp code to avoid unneccessary changes [NOTE: TOPICs are now incompatible with versions prior to dal2] * Q line can now exclude nicks (from the local server only) * Added a STATS X function that shows what C lines are not currently active (i.e. missing servers) * Will now WALLOP all +w users when a server connects or disconnects from the network * Added AKILL command, which allows U lined servers to establish temporary global K lines. * New KLINE command; operators can now temporarily add K lines to the server * Fixed a missing feature (bug?) where you could change nicks while banned if the channel was moderated. Side effect of this fix is that noone can now change nicks when banned, even chanops. * NOTE is gone for good. May it rest in peace. * Tidied up STATS K to work with spaces in the comment field (it turns the field into a * if there are spaces), so you can use ircii's /stats k handler as well as spaces. * New example.conf file with DALnet defaults Changes with 2.8.21.mu3.dal2a (Lefler - lefler@dal.net): * Fixed bug in AWAY resynch where only the first word would be shown. * New Solaris IRCDLIBS defnition in the Makefile [Pipis] Changes with 2.8.21.mu3.dal2 (Lefler - lefler@dal.net): * Allows users behind U lined servers to make mode changes, topic changes, invites and kicks regardless of whether the user is allowed to or not. * Gets rid of HACK notices for mode changes from U lined servers. * Sends AWAY info in response to SERVER message where appropirate. * Resynchs TOPICs on net rejoins. Resvoles conflicts using the older topic (using time/date stamp info). * Makes NPATH (the NOTE function) #undef by default. * Some tidying up of code distribution. * New features from irc2.8.21 and mu3.2. Changes with 2.8.20.mu2+Dal (Dalvenjah - dalvenjah@dal.net): * Allows non-chanops to see bans.