/****************************************************** * Serv SuperChat Channel Services by: Jason Hamilton * * Started: 10.30.96 * ******************************************************/ 07.09.00 ------------------ * Serv no longer does pending channel registrations. Channel reg's are now immediate. 06.10.00 ------------------ * Updated automatic backup and restart to go on every 4 days to keep things moving smoothly. * Updated the restart code (for when out of ram) to work smoother (old one gave sig segv sometimes when writing data to disk when it was out of ram) 03.11.00 ------------------ * Fixed N so unregister works properly. * Set unregister of channels to email the chan owner. * Updated the join 'pending notice' so when the pending period is over, but owner hasn't logged in yet, the bot tells you what to do next. 03.07.00 ------------------ * Serv has instant online userid/nick registrations now. * Updated UNREGISTER for both channel and userids, users can now unregister their channels and userids without outside help. * The pending notice for channels has been changed from a 'motd' output, to a notice from SuperChat.Org, this is so users are made more aware of it, and it comes from a server not a nick so users are aware it's legit and not some user playing around. 03.06.00 ------------------ (13045 43878 305681 serv.v10.0) * Serv now has dynamic online channel registration. You need to be an op in the channel you wish to register, all you supply is /msg h register #chan * Channels registered have a pending period of 24 hours till activated. 11.01.99 ------------------ (300k serv.v9.02) * Serv checks it's uptime every 5 minutes, and when it has been up full week, will automatically save it's data files, do a database backup, and restart. 04.05.99 ------------------ * Made Serv give himself ops immediately when connecting, I had been having it mode_que it, but when it ques it, the settopic doesn't get done. 03.29.99 ------------------ (12902 43325 301614 serv.v8.67) * Updated the SERVER cmd output * Added in a few lines of code to track how many times we've allocated memory, and how many times we've free'ed it. * Fixed SETMODE to lock modes. The previous fix prevented Serv from using 100% cpu (along with ircd) due to the bouncing of the modes back and forth, however it also made SETMODE useless -- a lot of channels were -tn. 03.26.99 ------------------ (12870 43032 299860 serv.v8.65) * Updated the "AUTHENTICATION SUCCESSFUL #chan!" reply to remove the "!", reason? New mIRC allows users to double-click on text with a chan name and auto-join that channel, so with the extra "!", the join would be to #chan! instead of the real #chan. * Added in parse_kick(), didn't have one before (since the old serv code never stored users in channels), so the prob now is when someone is kicked, serv doesn't see it, and when the user rejoins, serv still sees them in the chan, with ops. Thus asking Serv for ops is returned with a "No Match!" error. * Updated SERVERS output to show total seen users. * Fixed the prob with one of the anti-mass-msg nicks, it was giving out 'bad nick' notices. 03.25.99 ------------------ (12838 42845 299098 serv.v8.64) * Found a major flaw with P10 upgrade, Serv was fighting with NB over modes, SETMODE wouldn't like what NB set, and it would bounce back and forth over and over, using 100% cpu usage of the server. * Found a stricmp sigsegv, removed the stricmp line. * Updated SERVERS output, a bit shorter, and also including the user count on each server. * Updated mode que to give the mode in que a new updated timestamp if a user gives a second identical mode. ie; If someone makes Serv CYCLE in their chan, the +o mode is qued for 10 secs, if they CYCLE a second time, it's updated for another 10 secs. 03.24.99 ------------------- (12803 42728 298254 serv.v8.63) * Speed up the mode queing, waiting 15-30 secs is too long IMO, it's now 10-20 secs delay. * Found a weird situation where a user's join would include (only sometimes) a join to "#chan 780000000", so it now strtoks out the first word of a join for that. * Fixed the mode que count so it's always accurate. 03.23.99 ------------------- (12798 42687 298005 serv.v8.62) * Adding in a server mode queing, where instead of having SuperChat.org +o instantly when serv joins your chan, he'll do it 15-20 secs after joining. This is to prevent people from /msg h cycle #chan repeatedly and creating a lot of hack notices. 03.22.99 ------------------- (12664 42191 294919 serv.v8.61) * updated serv to work with P10 servers (chans have longer length, and server numerics must be sent in a stricter format) * Fixed a bug that crashed when a long chan is joined. * Had to make all the mode timestamps set to 780000000 in order for serv to always be able to do modes. Kinda sucks, but all the chans already contain this timestamp now :/ 03.20.99 ------------------- (12685 42251 295346 serv.v8.60) * It has come to my attention that a channel has been /cycle flooding repeatedly to give themselves a high ranking in the TOP cmd. I've added an UNTOP command which allows us to remove those channels from showing in the TOP listing. * There were a few versions before this with some minor changes here and there, but I was too lazy to write them into this HISTORY listing :/ 02.21.99 ------------------- (12614 42006 293648 serv.v8.55) * Updated Serv to ban, but NOT kick operators when they are permbanned (some chans have had a permban set to *@* and the repeated "anti-ban" wallops got old =) 02.12.99 ------------------- (N/A) * Bug fix, there was a login bug that one user kept on exploiting (unknowingly), and crashed serv 8 times before I was able to get a new ISP with static host (so I could once again access the machines) to upgrade Serv. * Wrote a WWW interface nph cgi script to allow for remote upgrades of Serv. 01.19.99 ------------------- (12589 41892 292878 serv-v8.53.c) * Updated connection listing output. * Added in c->Changed for all UID's, so during shutdown, only UID's that have been changed are written to disk, instead of all UID's as previously. * Updated the UPTIME output to show Activated count of chans/uid's. * Updated the statistics page to be in .html rather than plaintext. 01.18.99 ------------------- (12571 41765 291820 serv-v8.52.c) * Added in wildcarded host storing, of all users who connect to superchat. During shutdown, all hosts with >10 connects are saved to disk. * Added disk loading and dynamic storing of new hosts. * Added in sorting function when saving wildcarded hosts to disk. 01.17.99 ------------------- (12427 41332 288978 serv-v8.51.c) * Added in crash and restart data to the statical data storing. * Added in avg # of user connects per hr to stats. 01.16.99 ------------------- (12409 41249 288397 serv-v8.50.c) * Data storing for www statical data. http://www.superchat.org/opers/statistical.txt * Auto-kill for any user who gets online with a * wildcard in host. 01.11.99 ------------------- * Added botnick Y2k * Added in access check for channel auth, so no levels in a chan can ever be authed at over level 500, reason is the levels show up then on the "online cservice admins" list. 12.11.98 ------------------- (12216 40600 283391 serv-v8.45.c) * Added CHECKPASS into G (so all opers can checkpass) * Replaced botnick Protector with "Santa" 12.06.98 ------------------- * Found a bug in N when it stores the QUITMSG, if quitmsg was > 200 chars in length, the datafile got line wrapped, so the next value (in this case, registered_time) then has a NULL value. This ended up giving me a 2 meg error.log file ;) * Added in new botnick, Angels. 11.05.98 ------------------- * Fixed AUTOPURGE on quit, the memo file is destroyed when there is no memos left unread. * Disabled the SET EMAIL command for the time being. People are setting it to invalid addresses such as "bomb@someone.else" because in the /msg N INFO uid, it shows their email and they think others can see their address ... * Updated playmail and playmail2 programs to not log error msg on a completed mail send. * Fixed shutdown code to also make Guardian quit with the quitmsg, instead of just splitting. * Max memo length upped to 512 chars. * Number of bug fixes, fixed a few syntax errors. * Error checking for SETINFO and SET INFOLINE, disallows garbage text such as \1 (^A, aka, CTCP char) 11.02.98 ------------------- (wc: 12146 40285 281072 serv-v8.41.c) * Added option to READ ALL (will display all unread memos) * Updated playmail mail client that serv uses. * Fixed the last_host thing, so it updates the last host the user has when he logs OFF, rather when he just logs in. * Added AUTOPURGE SET, which will delete all read memos when you quit IRC. * New kill code to terminate process on a sigsegv, hope it'll force core dump at every sigsegv. * Added new option for MEMOS, FORWARD, which allows you to have your memos forwarded to you via email, rather than on-line IRC. * Coded second mail client for use with the FORWARD. * Coded option SET FORWARD for the above forward command. * Fixed bug for userid's with "`" in the nick, which would then cause the mail client to not send the user the email. 11.01.98 ------------------- (wc: 11957 39184 285391 serv-v8.40.c) * Wrote my own email client for Serv to use to email users about channel and uid registrations. Using the default 'mail' meant going without a few options... so I decided it was time. * Updated Serv to use the mail client 'playmail' * Updated DELETE command to be able to delete all READ memos, and also delete ALL. * Added auto-ghost kills, one userid is supposed to be in use only once, so when a newer userid auth occurs, the old one is destroyed. * Shutdown now saves all changes made to UserID's. * Doing an N info on your own userid shows your email addy and ignores. * Added new SET option, for EMAIL. * Updated /msg N MEMO command, so you can send to up to 8 targets at a time. Example: /msg n memo play,mregit,zaf hey there, this memo is important... * Added in Auto-purge, userid's not used for 20 days are purged. * Updated UNREGISTER for N, requires a , so we can refer users who ask about their userid, to the www.superchat.org/opers page to search and find out. * Greatly improved /msg N LIST output. * When you get a new memo, rather than tell you to /msg n list, it now tells you /msg n read * Added an option for MEMO ignores. * Added a SET for IGNORES, syntax is, /msg n set ignores uid1,uid2,uid3,etc can be up to 440 chars in length. * Added in a MEMOALL command to memo all UID's at once (admin level access required for usage). * Added in a SET option called AUTOGREET. If you have access in a channel, and AUTOGREET is set ON, your INFOLINE in N will be displayed in the chan. * Added in a SET option called AUTOGHOST, where you can switch off the auto-ghost kill on older clients logged in with your UID. 10.31.98 ------------------- (wc: 11543 37631 262326 serv-v8.32.c) * Added into INFO command, counter that counts # of logins a user makes. * Updated /msg H access which now shows UserID (if logged in), and duration. * Finished the "N" help files. * Bunch of minor things updated. 10.30.98 ------------------- (wc: 11386 37112 258337 serv-v8.31.c) * Added in unregister command. * Many minor bug fixes. * Updated UserID length to allow up to 25 chars. * Added in automated email to registered user. * Fixed bug that userid entered with caps, userid then became case sensitive. * Added in limits code, one user cannot send more than 8 memos to a userid, also users memobox can hold up to 40 memos. * Added in code to store the last quit msg of auth'ed users. * Added in login_time, which in the INFO command, tells you how long a user has been on IRC (authed) total. * Added in a SET command, to set values such as URL, and infoline. 10.27.98 ------------------- (wc: 11206 36487 253688 serv-v8.30.c) * Started new "N" Nick registration system. * Added function GetTime() which formats ctime into a nice format. * Updated many functions to use GetTime() which saved a lot of space in the src code. * Added in /msg N INFO command, to get info about a nick. * Updated register_channel() fn to check that email addy given contains at least a '@' character (some chans were being reg'd with the pass as the email, and email as the pass. * Updated the following commands to give more detailed responces in the HISTORY reply: STRICTOPS, FILTERKICK, DEVOICE, ROLL, DELBAN, PERMBAN, SETMODE, BAN, OP, DEOP, DELUSER, ADDUSER, MODE. * Added in login for "N", /msg auth@superchat.org userid pass There will be no u@h masks with the N auth. * Wrote write_auth_changes() function to save changes made. * Added in changepass function for N. * Added in command to list memos. * Added in function to read and delete memos. * Added in functions to register userids and also to send memos. 10.19.98 ------------------- (wc: 10549 34642 249830 serv-v8.13.c) * Fixed up the nopass auto-purge, it was not auto-purging correctly. * Updated the automatic channel register form email. * Removed the remains of the command statics storing which had a memory leak (was not in use). * Replaced all \002's with \2's to save space. * Updated the illegal_nick checking, less data-lookups, also logfile writing stores timestamp properly. * Same as above for illegal topic and nick checking. * Do not output to logfiles or clone channel when user has been killed already and finishing up checking (host would be == NULL). * Fixed the /msg H ACCESS output, so levels are without the 0 prefix, ie; 0499. 10.17.98 ------------------- (wc: 10630 34943 242108 serv-v8.12.c) * Added in Auto-purge feature, users who have not been seen for three months (90 days) are deleted (exception is level 500 users). * Also users who have not set a pass within 24 hours, are also deleted. * Added the auto-purge stats into the UPTIME command. * Removed LCARS and beanbag since they were inactive nicks. Added in Computer and Detective. 09.18.98 ------------------- (wc: 10628 34880 241762 serv-v8.11.c) * A number of little changes/fixes. * New botnick, LCARS for the StarTrek fans. 05.10.98 ------------------- (wc: 10611 34853 241489 serv-v8.08.c) * Added a lot more info into the auto-email sent from Serv when a channel is registered. * Changed the register email address cc to cservice@superchat.org. * Fixed formatting error in /msg h acess (for users w/ >1000 access. * Removed notice to #cservice about a channel registeration. Not needed.. also removed a whole bunch of on-line notices to the nick of the user who now owns a channel, not needed since Serv now emails the user that his/her chan is registered, along with instructions. * Fixed the email sending process, forgot to unlink the tmp_email file, so ended up with a lot of .TMP files =) 05.05.98 ------------------- (wc: 10615 34857 241470 serv-v8.07.c) * Fixed some spelling errors. * Set Serv to email me when it Sigsegvs, along with the logfiles or what the last input command, and input data from online were. * Added in alias for CLEAR, CLEAN. * Fixed UNDO's HISTORY logging, it was recording a SETURL rather than UNDO in the HISTORY. * Fixed a few very -minor- rec counters for MEM. Also added in the new cmd counter to the ram statics. * Made a dynamic counter for commands issued to H. To view list: /msg H CMDS ... all commands in CAPS are server level, not command names. Due to it's length, this counts as four commands (floodpro), so don't do it twice in a row. --suggested by rew. 05.04.98 --------------------------------------------------------------- * Updated REGISTER CHANNEL, so Serv now emails the person who registers a channel immediately when a channel is registered. * Updated parse_privmsg, so spamming/mass messages never triggers the flood protection. -jas (wc: 10510 34501 239050 serv-v8.05.c) 04.30.98 --------------------------------------------------------------- * Moved the illegal counter to the user's database. Rather than only remembering the last 2 people who have made an IL*, we now store in the user's own record file how many he has done since online. * Fixed it so if your current botnick is Guardian, when you set a ILT, the bot no longer leaves the channel after changing your channel topic. --reported by klick. * Fixed SETNICK, so if you select a nick that does not exist, your current botnick does not leave the channel. * Fixed formatting in /msg H access so data is lined up properly. * Fixed up parse mode for +limit, the previous fix removed a sig_segv problem, however if a +limit was set, serv did not parse the data (new limit) properly. * Added in new command, ADMINS, which lists all cservice admins currently on-line and logged in. --suggested by klick. -jas (wc: 10489 34379 237960 serv-v8.03.c) 04.29.98 --------------------------------------------------------------- * Fixed SERVERS output, so time is shown in proper format. Also replaced time split and split time to display in mins, not seconds. * Fixed a parse MODE bug, when a user does -l with more than one parm, Serv was expecting a -l which will never happen. * Fixed /msg h TOPIC command. If you had your #chan topic unlocked (with SETTOPIC), it would still say your topic was locked when you use Serv to TOPIC. A minor bug... but it's fixed now. -jas (wc: 10432 34199 236845 serv-v8.02.c) 04.23.98 --------------------------------------------------------------- * Fixed DELURL HISTORY listing, so it shows DELURL rather than SETURL, Added in HISTORY listing for UNDO. - reported by klick * Fixed CHECKPASS, channel and input passwd are not case insensitive. - reported by SnowGOD. * Updated SERVERS so it also tracks the number of seconds a server has been split total time, as well as current time a server has been split (if currently split). -jas (236747 serv-v8.01 10432 lines) 04.21.98 -------------------------------------------------------------- * Removed checks for flooding for notices and invites (since none of them trigger any command besides mass messaging. * Removed some excess code... * Added in help for the SERVERS command. * Made this version of Serv v8.00 since there have been no bugs, no problems, no nothing. I wanted to reflect the best version of Serv with a whole new version number =) -jas (235794 serv-v8.00 10367 lines) 04.20.98 -------------------------------------------------------------- * There has been NO bugs found so far in the last two weeks... so not much work has been done. The only change in this version is that Serv now tracks servers that link to SuperChat. It counts the # of user connects per server, the # of netsplits, as well as if the server is linked, or net split. -jas (235528 serv-v7.35 10412 lines) 04.09.98 -------------------------------------------------------------- * Updated SETPASS, if user trys to setpass with a #chan specifed, returns and error (had users specifying a chan and end up setting their pass to a channel name) * Compressed modes. When massunban (mub) rather than unban each address one at a time, Serv does them six at a time. * Updated HISTORY command, since it can spew up to 40 lines at a time, it'll count twice for check_flood. So doing HISTORY a few times fast is not recommended (easier to get ignored). * Updated IsMask() (which checks for valid u@h masks for adduser among other things) to allow more than two wildcards. The old wildcard function not only had a huge mem leak, but couldn't process masks unless it was *@*.stuff or *@stuff.* format. So if you WANTED to, you could add a user like: ??tru??t@*19.??s.??*m?au, which would match a user Altruist@dialup-19.tas.webnet.com.au :) -jas (233894 serv-v7.34.c 10347 lines) 04.08.98 -------------------------------------------------------------- * Removed getsoftuserhost() since there isn't two soft/reg userlists anymore. * Added cserv admin + auto-gline ram totals into MEM. * The '?' wildcard is useable by serv now. So: [msg(h)] fkick #superchat *aso?@*.??perlin?.ne? >>> You have been kicked off #superchat by Sentinel \ (*aso?@*.??perlin?.ne?: FilterKick!) -jas (?????? serv-v7.33.c ????? lines) 04.07.98 -------------------------------------------------------------- * Fully replaced the old wildcard function with new (malloc-less) version -- Which means no more memory leak! Since new wc fn is case sensitive, all u@h data was forced to strlwr(). * Added in MEM command, which displays memory usage from on-line data such as user records, channel records and permbans. * Added in 3 shortcut defines, which cut down on file size. -jas (232027 serv-v7.32.c 10334 lines) 04.06.98 -------------------------------------------------------------- * Started move away from wildcard string comp to new WC comp that does not use malloc. * Updated KICK and KICKBAN commands. They now log the target of the kick/kickban in HISTORY. * Removed 'o' from POSSIBLE_MODE (for setmode), and added mkick alias for fkick. * Condenced more source code.... Rewrote the Makefile... -jas (237293 serv-v7.29.c 10387 lines) 04.05.98 -------------------------------------------------------------- * Due to some large channels migrating over from other networks, Serv's max userlist and banlist has been upgraded to allow 200 users in the userlist, and 60 permbans. * SETTOPIC moved to a 400 level access command. * ADDUSER command has been updated - you no longer have to specify the u@h of the user you are adding (if that user is currently online). * Put a cap on gline time to 10 days. Any ban requiring more time than 10 days, should be requested to be added in as a kline. * Removed the old /msg h whois command. It is now fairly useless, the /msg h access command does all it did, and more. -jas (237428 serv-v7.28.c 10414 lines) 04.02.98 -------------------------------------------------------------- * Added in CLEAR command. Allows any 450 user to delete all users with a lastseen (in days) greater or equal to the day specified. Meaning /msg h clear #blah 14 .. will delete all users from #blah who's lastseen is over 2 weeks. -jas (236734 serv-v7.25.c 10374 lines) 03.30.98 -------------------------------------------------------------- * Added in extra ADD PERMBAN checks, disallows more than 2 wildcards, stops '?' wildcards (bot doesn't use them), among other things. * Fixed SETNICK, no longer makes new botnick join chan if setjoin is off. * Major overhaul on the illegal channel checking. I now have serv parse the channel names char by char stripping away anything that isn't a regular letter. So #Wa---R$%^e_Z will be closed now. -jas (234589 serv-v7.24.c 10298 lines) 03.29.98 -------------------------------------------------------------- * Updated MASK command to mask a resolved host properly: Mask used to mask a u@h of userid@dial100.na.ut.uk as userid@*.na.ut.uk, Mask now will return userid@*.ut.uk * Removed some old database compatibility code (no more channels have the old format) * Minor text/wording changes. -jas (233911 serv-v7.23.c 10276 lines) 03.28.98 -------------------------------------------------------------- * Fixed uMode counters in uptime stats. * Added in more error checking for uMode additions. Will not allow double uMode of the same type, Or uMode of O set on a user under 50 access. * Added in final TS lastseen update. All n/a lastseens will be updated to current time when found. So all lastseens from now on will be avaliable. -jas (234292 serv-v7.22.c 10296 lines) 03.26.98 -------------------------------------------------------------- * Serv now updates a channel's TS and a user's last seen ONLY when he logs in. Before it was updating also when a user joined the chan which is wasteful .. * Wrote up a few functions, such as is_umode() which will return TRUE/FALSE when given a nick+chan+uMode. * Added in UMODE command to allow users to set their own uModes. Many error checks, such as a user <= 50 access can't set uMode "O". Added in auto-correcting code which verfies uModes and resets if uMode is set when it shouldn't have been (from previous ver allowing all users (including 50- users) to set to default_umodes of IO (Op being the one not allowed for level 50- users). * The change to uMode also required all of the verify and login code to recoded. Also wrote up function to display for uMode "P", -jas (232814 serv-v7.20.c 10228 lines) 03.25.98 ------------------------------------------------------------- * Removed OPERCHAN stuff. No one uses it. And added extra checks for every user JOIN. * Made function called IsLegalMask which checks for invalid address input, more than one wildcard, missing userid, etc. * Put IsLegalMask to use for add_user and modinfo address. * Recoded verify_login(), which now returns cached access of specified user. With this, finally makes auto-voice for level 1-50 users. Also when a user trys to login again to a chan alraedy auth'ed on, will return access level validated at. * Added in vars for uModes. Next step after this will be to make an IsuMode() fn. to return TRUE/FALSE for a specified uMode request. * Spent a lot of time with gcc's -Wall option fixing every little warning gcc complained about. * Added in code (on update_lastseen) to check all users in a chan's database, if anyone has no uMode's, will set user to DEFAULT_UMODES, this code will also check for UMODES that are not in the POSSIBLE_UMODES, so if theres a umode that is removed, this check will remove them and default the user to DEFAULT_UMODES. -jas (225856 serv-v7.15.c 9977 lines) 03.24.98 ------------------------------------------------------------- * For reg'd and add_user host given is auto strlwr'ed for instances later where a comp might be case sensitive. * Fixed up a few looping sections of code where a loop was run thru twice, condenced into one loop. * Removed a bunch of code, mostly just test code to prevent any "Unlimited" forever loops, which there are none .... * Added to login (w/o chan being specified) a check to see if user is already verfied on current chan, so redundent checks to disk are not made. * Moved SETPASS to /msg serv@superchat.org as it should have been from the start. * Final code move to load_data() where on startup, Serv only needs to open a channel's db once. (Previously chan db's were opened twice, thus if 300 chans are reg'd, 600 fopen/fclose). * Started implimentation of personal uModes for each access listing. Default modes will be IO (I = auto-invite on auth) and (O = auto op). Currently these modes will not be in actual USE, till the next step in the personal mode implimentation, which will store the mode toggles along with auth info when a user logs into serv. BTW current other planned modes will be: V = auto-voice, N = No notice on join (setinfo). * Bug fix for PERMBAN, was causing serv to sig_segv randomly when a banned user joined a chan during net.burst. -jas (229668 serv-v7.10 10215 lines) 03.17.98 ------------------------------------------------------------- * Fixed a bug which crashed serv when /msg serv@super* pass It caused a sig_segv.. :) * Fixed modinfo, it wasn't working properly before if the channel name given had any CAPS. * Various text updates. -jas (234282 serv-v7.03 10443 lines) 03.12.98 ------------------------------------------------------------- * Fixed up serv_login so it trunc's the input pass to 30 chars. * Fixed up nickjupe to work properly. * Updated adduser to check address being added, and allows only one wildcard; user@*.isp.com or user@176.263.73.* format. * Updated login to allow (when specifying a chan) to allow up to ten chans to be specified at a time. Example: login #chan1,#chan2,..,#chan10 MyPass -jas (247327 serv-v7.02 10640 lines) 03.11.98 ------------------------------------------------------------- * MAJOR update I've been trying to get done for some time now. Removed login data/pass since Serv doesn't store the pass anymore, it only verfies, and adds a chan+access level to a user's data. Thus the old code has been rendered useless and has now been removed: + removed update_pass, add_passinfo, getuserpass(), check_nicklist- by_userhost, return_nickinfo, delete_node(hard). nickhead, nickinfo, verify_user. Don't let this list fool you, I've spent over six hours today working on this. Additional changes such as login (w/o chan being specified) has no limits, you can keep entrying the command, the bot verfies you on the chans you are currently on. If you specify a channel, the bot will not let you login again for the same chan, but no need to logout and relogin again for other chans. So no more need to logout unless you want to remove all your serv access. * The login command for global cservice admins has been moved to ADMINLOGIN. * Removed Nirvana botnick and put in Creative. * passwd change requires to be sent to serv@superchat.org (you can use "P" shortform for pass). * adminlogin also must be sent to serv@superchat.org (you can use "A" for shortform of adminlogin). * Made denied_message random error replys. * Auto-voice put back into use for level 50+ users. * Auto voice will be set if a user logs in (specifying a chan) or joins a chan after already being verfied for the chan. However to save cpu and time, login w/o chan being specified will not give voice to the user, nor will he be verified. * Level 50 users now can also update a channel's timestamp. * registered.chan database is sorted every 4 hours. -jas (231301 serv-v7.00 10306 lines) 03.10.98 ------------------------------------------------------------- * Updated DELURL - command was not converting input chan to lowercase, so when a user did DELURL with a #ChanName like this, it would reply no such channel. * Updated LOGIN when specifying a channel: Returns LOGIN FAILED when Serv doesn't verify you for a given channel. Also when logging in, and user is on the chan (and not oped) Serv will give the user ops and mark user as having ops. Also login for a specified channel will not allow redundent logins. * Serv updates the registered.chan database (for use only w/ the list.cgi) every 4 hours. * Added in UNDO command, to delete the last ADDURL for a specified channel. * In UPTIME, added in counter for clones, showing # of single, # of double, tripple and four or more connections to the network. -jas (238635 serv-v6.93.c 10644 lines) 03.09.98 ------------------------------------------------------------- * Removed 24hour gline. * Added in total gline host processing, prevents any accidental gline of all users. * Totally rewrote the login system. Serv no longer trys to auth a user when he joins a channel, this saves about 700 fopens on loading, and many more when just in regular use. This greatly speeds up the startup, and login process, almost instant responces now. The only change for users - you can't login (without a chan being specified) then join channels and get ops. A user must now join their channels, then login, or login #chan . This change allows users to use bother a global passwd, and also be able to login to specific channels with a diffrent passwd. * Added in ADDURL/SETURL and DELURL commands, which allows a user to dynimacly put up a online web page on www.superchat.org/homepages/#chan A user can add up to 20 SETURL's - can do so in html format, and even links to graphics on other pages, so this can be quite elobarate. DELURL deletes the page so you can start over. -jas (235739 serv-v6.90.c 10527 lines) 03.05.98 ------------------------------------------------------------- * Not much of an upgrade today. Added in the help for SETPASS and deleted some useless code... -jas (236082 serv-v6.86.c 10597 lines) 03.02.98 ------------------------------------------------------------- * Replaced COPY (for modinfo) with ADDHOST, which thus removes the need to COPY then modinfo ADDRESS- its all done in one step (thanks to Lightmind for the suggestion). * Updated ACCESS command, in addition to the = search, you can now also do < and > to search for access greater- than and less-than a given level. * ADDED THE MOST USEFUL COMMAND SINCE LOGIN! Serv's ONE passwd system is really nice, no having to login to each channel. Where it has failed has been when a user wants to change his/her passwd - logging in repeatedly - logging out, using the PASSWD cmd in each chan, its a PAIN! Enter the new command, SETPASS. Syntax? SETPASS All the channels a user has access on currently (/msg h access ) will be updated to the newpass. Simple as that. -jas (237150 serv-v6.85.c 10595 lines) 03.01.98 ------------------------------------------------------------- * Updated LASTCOMM, data is sent from G now rather than H. * Added new option to MODINFO, called COPY. Allows users to COPY an entry then MOD ADDRESS - so a new host without having to know/set pass for it. * Fixed SETTOPIC, the last ver of Serv didn't set back the SETTOPIC when changed. * Added in WHO/NAMES into OPER_SERVICE. -jas (236628 serv-v6.82.c) 02.27.98 ------------------------------------------------------------- * Updated output of TOP, formatted with %2lds. * Updated the MMG gline time, now same as ignore time, increased auto_kill look up times. Removed the WALLOP on MMG. * Added in a counter (in uptime) to show the # of hits for the access caching vs disk checks. * Fixed the UNBAN command mask. * Fixed SETTOPIC, the last ver would lock topic even tho it was unlocked (only happened @ startup tho), fixed. * Updated TOPIC command, before if you set an illegal topic, the bot would change the topic (if it was SETTOPIC) then guardian would change it (waste of cpu and topic). Now illegal topic is processed before setopic (when a user is /msg h TOPIC #chan). * Added in IGNORE command so cserv admins can put ppl on ignore in serv. -jas (235782 serv-v6.80.c) 02.25.98 ------------------------------------------------------------- * Fixed ROLL, it wasn't working (I blame it on paranor hehe) * Updated HISTORY, if no parms are given, it'll default to show the last ten commands. * Updated BAN command. You can now specify a [level], level being 1, 2 or 3, which will ban *!*user@host.isp, *!*@host.isp or *!*@*.isp, accordingly. * Fixed SETTOPIC - I didn't realise that Serv wasn't setting the settopic when it restarted- reason? load_data is done before serv gets online, so it was TRYING to settopic, but wasn't online to actually set the topic (serv used to load the topic before, when it was already online...) * Updated TOP "Idle" output, easier to read now. -jas (235603 serv-v6.78.c) (235448 serv-v6.79.c) 02.23.98 ------------------------------------------------------------- * Added in new command, MODINFO. This will allow 400+ level users to change ADDRESS or LEVEL of users without having to delete and readd them. I know everyone has waited a long time for this one :) * Updated MODINFO to write to the HISTORY list that modinfo was used. Also updated some error replays and help. * Updated Guardian #! check to also include double !'s. * Put in backwards compatable channel listing - so the online CGI's will work. * Updated NOTES/NOTE command. Notes now include the Date! Also notes can be a lot longer, in the range of 400 chars now. To prevent users from flooding Serv- NOTES only store 12 notes now. * SETINFO is also lengthened. 400 char SETINFO allowed. * SETTOPIC is set to 200 chars allowed now. * Updated ACCESS - Shows by DAYS as well as min hour sec. -jas (236188 serv-v6.75.c) (236473 serv-v6.77.c) 02.22.98 ------------------------------------------------------------- * Updated passwd help - didn't have alias' or pass/password help reply * Updated the parsing of PART, SuperChat IRCD allows for part messages, and Serv wasn't deleting a channel from the list of chans a user is in when parting with a part message. Fixed now :) * Updated NICKS and NICKS help. Nicks is in the updated format, and also includes number of times a nick has been used. * Updated ACCESS and DELUSER commands. ACCESS now shows the UID (number the user is in the access list). DELUSER can now delete by the UID, so no need to delete by nick|address anymore. * Updated BACKUP command. * Updated serv.cfg file, more compact and faster to load. -jas (231901 serv-v6.73.c) 02.21.98 ------------------------------------------------------------- * Updated Strictops to not op users thru the /msg h op cmd. * Updated the voice and giveop commands to also tell the persons oped who oped them. * LASTCOMM works now up to twenty-six cmds issued. * Fixed the new PERMBAN. The new code wouldn't let you delete the last permban in your chan. Simple error in logic... works now. * Removed master channel database finally! Serv does readdir() to load channels now. This was a big change because there can no longer be any "desync" problems within Serv. Also big due to a large number of internal workings being redone ... -jas (230641 serv-v6.70.c) 02.20.98 ------------------------------------------------------------- * Deleted massive amounts of stuff ;) I'm not saying what tho :) * Updated register(), for some reason it was letting people register an already registered chan more than once. * Reintroduced random swap files. * Added in StrictOps (/msg h help setop/strictop) -jas (226722 serv-v6.66.c) (230655 serv-v6.67.c) 02.19.98 ------------------------------------------------------------- * Updated SETNICK, SETJOIN, among a list of 30 other functions, to load data more efficently. This also cut down on Serv's .c filesize. * Fixed a SETNICK bug that came about from the last ver of serv, the bot wouldn't setnick properly for a few nicks (would sent a second PART instead of a join). * Also removed some faulty code that caused Serv to flood users hehe. * Fixed the topic parser, it called get_botnick too soon... was getting "ERROR: Can't get_botnick for #etc.etc" for non reg'd chans. * Updated show_cservice to send data from ram, instead of loading from disk. * Fixed the join(), the mass changes (and deleting of code) messed it up a little in the pervious version. * Updated HISTORY to log 40 commands now. Also fixed the way it removes old entries, it can't make a mistake now. * Updated HISTORY so you can specify the number of commands to list, ie; /msg h history #chan 6 will return the last 6 commands. -jas (244818 serv-v6.65.bf) 02.18.98 ------------------------------------------------------------- * Updated the auto-ops section, it autooped, but didn't mark the user as having ops. * Updated add_permban(), now checks address added for legal chars. * Updated check_user_in_chan() returns 2 for 'no such nick'. * Updated MASK, WHOIS, INFO, KILL, HELP, SETNICK, JOIN commands, entering more than one word for the above commands the bot will correctly take the first word as an argument (thnx to Zaf for pointing this out). * Updated SETJOIN to not join chans that are set to OFF (it didn't work the last few days cause I recoded the load_data() and placed it after the join_load(), so it joined the chans, then loaded the data (like SETJOIN). D'oh! (thnx to klick for pointing this out) * Replaced Warlord with Sentinel botnick. * Removed alias help. * Retyped all the online help files. New format, which includes the alias of the given command. * Updated BAN and UNBAN to allow a specified *user@host instead of *!* being required. UNBAN also unbans *@host and *user@*host when you specify nick. * Added in a bunch of alias'. ie; j for join, p for part, etc. * Added in two counters for fopen/fclose. * Updated MUB to take in first parm as argument. * Updated ACCESS command to now return data in real case, ie; user DoOdEz on #superchat will be returned in correct case with ACCESS. -jas (246332 serv-v6.62.c) (247474 serv-v6.64.c) 02.17.98 ------------------------------------------------------------- * Spent a few hours to make Serv parse modes within a channel. Currently, serv knows who is a chanop, who is voiced. The output from /msg h names #chan reflects what serv sees. For the ircops, output from /msg g whois nick reflects it as well. - Redundent modes are not done; ie; you can't make serv op a user repeatedly. - When logging into serv, the bot will not op unless your deoped. Again, no redundent modes. With this is a few new functions like IsMode which returns true/ false when given a nick, chan and a mode (ie; v or o) if a user is oped, voiced in the specified chan. * haha, removed some debug code I forgot to remove, was making the bot pause from 3-60 secs with each DELUSER command issued to the bot. * Updated Serv to know the modes Guardian sets, so if Guardian deops a user in a chan, H knows about it. * Updated WHO/NAMES to show # of chanop and regulars. -jas (246926 serv-v6.60) 02.16.98 ------------------------------------------------------------- * Updated ILN, Serv wasn't deleting the user from ram after killing him/her. * FINALLY UPDATED the input parsing. The bot parses the data input word by word stripping out double spaces. * Added in Warlord and R2D2 botnicks. * Zaf helped out (again) this time he spotted my error in delete_cached_host() ... so now when you delete a user from your channel access list, it also checks users who are logged in, any user who matches the wildcard access gets looked at, checking to see if that user is also logged into the chan and checks for matching logged in access levels. If everything matches, Serv deletes them from ram. * Updated command input, each command has a predefined MAX_ALLOWED, commands like SAY, ME, NOTICE, SOUND have been set to allow 400 chars now. * IGNORES is now made a level 0 command. * Went thru and deleted many unused functions that were just taking up space. Also shortened a few functions that were really long.. -jas (256324 serv-v6.53.c) (243203 serv-v6.55.c) 02.15.98 ------------------------------------------------------------- * Updated the output of CACCESS. * Fixed some stuff in DELUSER. Also if no matches for DELUSER, will reply saying no matches. * Added in help file for DEL (it only responded to DELUSER previously) * Channel owner is now loaded into ram, rather than disk read. * Updated SETMODE to check for valid MODES. * Added in error checking for data storage for chans a user is present in. * Updated the ILC warning and a typo :) -jas (256024 serv-v6.52.c) 02.14.98 ------------------------------------------------------------- * Updated DELUSER. Until the memory cache for user's access came about, deleting a user from a channel stopped all possible Serv commands. With the access cache, not so anymore, deleting access in a chan only prevents the user from logging in any futher. The access is still present till the user 1) logs out, 2) quits irc, or 3) is deleted with the new DELUSER. /msg H DELUSER to delete the cached access. Had to add 3 new functions for this :) * Added in a new command- CACCESS, much the same as ACCESS, but shows all users online who have cached access for a given chan. Will be useful if you have a naughty user who you've deleted access to a chan already, but need to find his/her nick to delete their cached access. * Added in a few more alias': V for VOICE, DEV and DV for DEVOICE. -jas (254256 serv-v6.50.c) 02.13.98 ------------------------------------------------------------- * Fixed a few sections in the code where an open file was not properly closed after being opened. * Added in new admin command CHECKPASS, which allows a serv admin to verify a passwd for a given user in a given chan. -jas (250358 serv-v6.48.c) 02.12.98 ------------------------------------------------------------- * CLONE_CHAN is now set to +i, new opers are auto-invited. * Started to work on an updated IGNORE. Added in IGNORE listing cmd for cservice admins: /msg h ignores * /msg G ignores also works. * Data correcting feature..... * Added a final GLINE safty feature.... * Finished ignore upgrade. -jas (248220 serv-v6.47.c) 02.11.98 ------------------------------------------------------------- * Trashed the "top10" TOP command, its now going to list "active" channels. Output can be with notice, privmsg, or regular /list formatting. * WHO/NAMES command updated to send in bursts of 6 users so it doesn't wrap around screens (looks messy). * Fixed DEBUG_CHAN output. -jas (245290 serv-v6.45.c) 02.10.98 ------------------------------------------------------------- * Action updated to not log into HISTORY twice for every one action done. * Sound updated to not allow non-text input. * Updated TOP command. TOP may not show 10 channels every time if there aren't 10 active channels. * Added in HELP/COMMANDS commands into the oper service, which quickly lists the commands in the oper service. * Updated the WHO/NAMES command- it sends in bursts of 20 nicks at a time. Before it had no limits and would buffer overflow when something like 70+ nicks were shown ;) -jas (247943 serv-v6.44.c) 02.07.98 ------------------------------------------------------------- * Updated the TOP command, now shows correct number of users currently in the top 10 channels. * I've been having so much problems with permban, I decided to cut out the fancy stuff for now, permban only bans a host. No reason for now. * LASTCOMM now stores last 20 commands. * G's WHOIS outputs in NOTICES again. * Adding in a PERMBAN also makes Serv +b the host. -jas (246988 serv-v6.42.c) 02.06.98 ------------------------------------------------------------- * Updated G's whois command to return data in actual /whois numerics. * Updated /msg h CHANINFO #chan - now also shows current number of users. * Removed the storing of the nick and user@host of who added a permban- takes up too much ram, usually more than the actual permban itself! * Updated GLINES/GLIST to show the number of connections to the network from the given host in the glist. * Updated PERMBANs to allow more than one word reason. * The PERMBANs had some flaw in them, causing the bot to die, so its disabled for the time being. -jas (248878 serv-v6.40.c) 02.05.98 ------------------------------------------------------------- * Added in UNRESOLVED counter for auto-gline. * Serv auto-login set to ignore chans that aren't registered (only effected global users). * Spent a few hours to rewrite the PERMBAN, BANLIST, DELBAN commands. The bot now caches all bans in a chan (if a user joins, otherwise nothing is loaded for that chan). This plus the user access cache and storing all chans a user is on, makes Serv (on startup) now take up 1.2 megs ram. Permban checks are done really fast, no disk read anymore besides the startup. * DELBAN now also unbans the host permbanned. * Updated SETMODE to parse data properly. +k requires a key. * Added in an idle counter for channels, where the bot stores the last time someone joined the chan. This is mainly for future use such as auto-purging the banlist for a chan from ram if the chan is idle for a few hours. However, the Idle time is now shown in the /MSG H INFO #chan * Replaced long cmds with shortforms, reduced .c file by 20k ;) * Added in LASTCOMM command into G, which shows the last 10 commands issued into the operator bot. * Zaf found the create_mask() bug, which also fixes a little memory leak ;) -jas (249844 v6.36) 02.04.98 ------------------------------------------------------------- * Removed auto-greeting when a user /opers up. * Added a memory caching system- Serv stores all chans you have access on. It always refers to that before searching disk for access. To clear out a user's cache, just /msg H LOGOUT. * The login command was updated to work with the memory cache, where it now logs you in, and checks all channels your in- if you have access in any channel, the chan is auto-added to the user's cache. Serv will send a notice at the end, telling the user all chans he was just auto-added to in the bot. Serv then gives ops to that user in all chans he is currently in. Autoops have also been updated- If a user is logged in, it'll check the cache to see if he has access loaded already, if so, autoops. If not, check diskfile- if yes, then store to cache and give autoops. * Updated ACCESS command, /msg H ACCESS will return all channels and access lists cached for the given user. * Fixed a little bug- when a user /msg h pass #chan newpass, it'd strip off all the lastseen data from all the users. So no more N/A for lastseen times. * Fixed auto-ops giving auto-ops to ALL cservice admins. Now admins don't get auto-ops anywhere ;) * Added admin access cached. * Updated and totally rewrote showcommands, it now uses the cached data only. * Updated cache adding, where chans a user is verfied on is not readded (redundent cache). -jas (256156 serv-v6.30.c) 02.03.98 ------------------------------------------------------------- * Recoded chan_userdel and chan_useradd. Added in memset to all malloc functions, which cleared a serious problem for later when reallocating used mem that wasn't properly inited. * Recoded the delete_node() which deletes users from soft and hard user lists. New delete function is much cleaner. * Updated all other stuff that deletes (free())'s. * Added in new WHO command, which shows all users in a chan. * Added in new FILTERKICK command (alias fkick). * Added alias for who, NAMES. -jas (248,971 serv-v6.25.c) 02.02.98 ------------------------------------------------------------- * Updated ME and SAY commands to only allow regular CHARS/NUMBERS and SYMBOLS- no weird symbols, ctcp chars, etc. * Updated ADDUSER to check data input, ie; nick has to be valid nick chars, addy can only be numeric/alpha, level can only be numeric, etc. * Fixed a little conflict in online database sync when a user MMG's. * Updated ACCESS command so the search '=' is case insensitive. * Removed SHOW_STATS, I forgot about it, and its pretty much the UPTIME command :) * Updated Ghost kill so it also kills admins ghosts. * Fixed MASK command for numeric users (It didn't have a wildcard for numeric users) * Added in parsing for serv to store all the channels a user is in. Serv stores all channels a user is in now, this will lead to serv being able to op you if you login when already in a chan, or having diff passwds for diff chans if you want... also... updating a channel TS without having to join AFTER logging in. Special thanks to Zaf for helping fix the bug in the chan_useradd function, at 3am in the morning :) * Added a new ILC, the windows upper asci char that appears as a space, ppl use this to get on #chanon@#chan2 so it looks like they are ops on offical chans. * Updated NOTICE command for the same text check as SAY/ME have. * Updated the valid text allowed for SAY/ME/NOTICE to allow bold, inverse, underline and color chars. -jas (244,132 serv-v6.15.c) 02.01.98 ------------------------------------------------------------- * Updated the auto-gline- so that each host can have a specified number of clones: eg; .my can have 3 clones max, while glinx can have 4. * Updated GLINES command to show the MA (max allowed) info. Same with output to CLONE_CHAN. example: ( 3) Kentvi* Paranor (timhawk@ke-ts3-22.glinx.com) [MA: 5] * Updated the MMG, should be more effective :) * Updated spew output. * Added in an extra check for ADDUSER, so users can't add the same host into a channel's access list more than once. I even did this without opening any extra files. :) * Updated ADDUSER- a few more error checks. -jas (245,942 serv-v6.14.c) 01.31.98 ------------------------------------------------------------- * Updated auto-op code so that: If a user is under level 450, and the access number is an ODD number, they will get auto-voiced, instead of the usual auto-ops. * Started Serv updates to remove master database- Now channel database stores channel time stamp- Will later opendir() and read all chans from dir rather than an index of chans. * Major changes to the way Serv loads data from its file system- it opens 3/4ths less files than before, so loading is gonna be 3/4's faster. * Gline now copies the first user online that matches the gline- and adds that user's n!u@h into the gline message. * Modified ADDUSER so level added at can only be numeric. -jas (244,509 serv-v6.12.c) 01.30.98 ------------------------------------------------------------- * Processed servers (rejoining from a split) show up in CLONE_CHAN. * Fixed output of auto-purged channels to go to OPER_CHAN and CLONE_CHAN. * Setup Serv to auto-VOICE anyone who has <= 50 access, meaning helpers. * Recoded Serv to allow users to add at any level up to one less than their own. Had to recode SHOWCOMMANDS command to work with that as well.. * Minor changes to help.h * Auto-op notice with "Time stamp updated" will show (O) if u get +o, and (V) if you get +v. * Added in an auto-gline list, and more clone checks. Clones that are on the AGLN list show up with ()'s around their count number, instead of the regular []'s. Soon as they go over 3 connects, they are glined. To see what hosts are in the auto-gline list: /msg G GLIST ...or... /msg G GLINES -jas (245,463 serv-v6.10.c) 01.28.98 ------------------------------------------------------------- * Fixed KICKBAN so it too doesn't ban (null) when a nick doesn't exist. * Updated MASK to have some error messages returned to the user for incorrect syntax. * Modified create_mask to work with host only, userid can be modified at will depending on the function that calls it. * Updated ROLL command, to accept any number sided dice (int). * Recoded GLINE to allow the opers to specify the time a gline is placed for. * Added GLINE output to go to CLONE_CHAN- shows gline time. * Updated Gline: Gline now has