splidge [Thu, 31 May 2007 14:46:59 +0000 (15:46 +0100)]
Added support for remembering the oldest-ever timestamp seen for a channel.
Added to the database with a function to change the timestamp entry on a
channel when needed.
This timestamp is then used when we need to join a channel - the
localburstontochannel() function is used with that timestamp as an argument.
This means we can get the ircd to enforce the sanctity of +i/+k channels via
the netrider code, and also take care of rogue topics, ops, bans and the
like.
Also two unrelated fixes - one to save when we automatically remove +k from
forcemodes because no key was set, and another to prevent the wrong
maxuserid being recorded during load.
splidge [Thu, 31 May 2007 14:40:33 +0000 (15:40 +0100)]
Added "localburstontochannel" function. This allows a burst message to be
sent in order to change the channel's timestamp and modes, and optionally
join the specified user onto the channel as well.
This has the following effects, which are entirely determined by how the
remote ircd is going to interpret the burst message:
If the timestamp is older than the existing one:
* All users are deopped and devoiced
* All bans are removed
* Modes are set to the ones specified
* The named user (if any) is added as the sole op
* Note that if the set modes include +k or +i, all users will be kicked off
the channel by the net rider code. This is handled by the remote ircus
though.
If the timestamps are equal:
* Existing users and bans are unaffected.
* Modes are unchanged - if we try to change them remote ircus will just
merge the two sets of modes which is icky. You will have to change modes
via a separate mode command (which would be the only way to remove modes
in any case).
* The named user (if any) is added as an op.
If the provided timestamp is newer than the existing one:
* The code will bail out and do a join (so if no user was specified it will
do nothing). None of the other effects can be achieved via a burst with
a newer timestamp.
At the moment the code doesn't support non-existing channels (the first
argument needs to be a pre-existing channel *).
splidge [Wed, 30 May 2007 21:09:54 +0000 (22:09 +0100)]
Added module dependency support.
In order for this to work you need to arrange for a modules.dep file to
exist in the same place as your modules. To create this file, cd to the
module directory and run depmod.pl from there. Note that the default
Makefile will do this for you on "make install".
Things should fallback gracefully if you lack a modules.dep file (but then
you won't get the benefit of course).
insmod() now automatically loads needed modules first.
rmmod() now automatically removes dependent modules first.
New functions preparereload() and reloadmarked() can be used either side of
a reload to mark dependent modules which are to be removed, and then reload
them, respectively. control and noperserv's reload methods have been
updated to use these as appropriate.
Ian Barker [Wed, 30 May 2007 00:56:52 +0000 (01:56 +0100)]
added gline time support as (and (channel #tlz) (gline 2w)). changed gline format to asuka (from snircd test server).
added global oper notification of use of kill/gline functions.
Paul [Sun, 27 May 2007 12:42:34 +0000 (12:42 +0000)]
drop 0/0, 0:: and 255/255 as valid ip's for services/servers - iptrie was coring on this:
I'm thinking this might be an issue with ipv6 and +6 server flag and so may/may not be a problem --> if it was a major issue, Z would have core'd by now.
==6728== Invalid read of size 4
==6728== at 0x8054D28: derefnode (patricia.c:579)
==6728== by 0x429E763: deletenick (nick.c:137)
==6728== by 0x429E642: handleserverchange (nick.c:95)
==6728== by 0x804AA02: triggerhook (hooks.c:67)
==6728== by 0x428B0A9: deleteserver (server.c:181)
==6728== by 0x428AE65: handlesquitmsg (server.c:128)
==6728== by 0x4026DBE: parseline (irc.c:336)
==6728== by 0x4026A9E: handledata (irc.c:244)
==6728== by 0x804BB03: handleevents (events.c:168)
==6728== by 0x804AAE0: main (main.c:35)
==6728== Address 0x489FE6C is 4 bytes inside a block of size 24 free'd
==6728== at 0x402135C: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==6728== by 0x8054B96: patricia_remove (patricia.c:537)
==6728== by 0x8054D5E: derefnode (patricia.c:584)
==6728== by 0x429E763: deletenick (nick.c:137)
==6728== by 0x429E642: handleserverchange (nick.c:95)
==6728== by 0x804AA02: triggerhook (hooks.c:67)
==6728== by 0x428B0A9: deleteserver (server.c:181)
==6728== by 0x428AE65: handlesquitmsg (server.c:128)
==6728== by 0x4026DBE: parseline (irc.c:336)
==6728== by 0x4026A9E: handledata (irc.c:244)
==6728== by 0x804BB03: handleevents (events.c:168)
==6728== by 0x804AAE0: main (main.c:35)
Chris Porter [Fri, 25 May 2007 20:21:27 +0000 (21:21 +0100)]
Add #include "../lib/version.h" for where it was needed (how did these modules compile?!)
Patricia stuff looks ok, except the following (at least) is still broken:
T, P, play, geoip
Added GPL warnings to GeoIP, probably fine as it's a module if we LGPL/BSD/GPL the core.
Added warnings to the irc_ipv6.c, this is GPL'ed and part of the core so probably needs replacing/relicensing.
........
r481 | cruicky | 2006-05-04 14:47:19 +0100 (Thu, 04 May 2006) | 1 line
Cleaning up the CRLF's in preparation for new version.
........
r482 | cruicky | 2006-05-04 15:00:58 +0100 (Thu, 04 May 2006) | 1 line
VersionScan speed increase on returned results.
........
r483 | blackshroud | 2006-05-04 17:55:50 +0100 (Thu, 04 May 2006) | 1 line
fixed compilation warning
........
r484 | blackshroud | 2006-05-04 17:59:14 +0100 (Thu, 04 May 2006) | 1 line
forgot to replace something.. bleh
........
r638@blue (orig r486): paul | 2006-05-08 20:21:25 +0100
sync lpart mode changes with asuka default mode changes from years ago :)
r639@blue (orig r487): paul | 2006-05-08 21:20:20 +0100
send messages to L, not notices ( from nopersv clients)
r646@blue (orig r494): slug | 2006-05-15 23:35:33 +0100
Merged revisions 488-493 via svnmerge from
https://svn.quakenet.org/svn/dev-com/N/trunk
........
r488 | slug | 2006-05-15 21:48:33 +0100 (Mon, 15 May 2006) | 1 line
Mark GPL code as such, and replace numeric.h from scratch
........
r489 | slug | 2006-05-15 21:54:22 +0100 (Mon, 15 May 2006) | 1 line
match and collapse now BSD.
........
r490 | slug | 2006-05-15 22:18:39 +0100 (Mon, 15 May 2006) | 1 line
BSD licensed ircd_strcmp/ircd_strncmp.
........
r491 | slug | 2006-05-15 23:24:19 +0100 (Mon, 15 May 2006) | 1 line
Regenerate table
........
r492 | slug | 2006-05-15 23:25:56 +0100 (Mon, 15 May 2006) | 1 line
New unencumbered array code.
........
r493 | slug | 2006-05-15 23:31:10 +0100 (Mon, 15 May 2006) | 1 line
Remove numeric.h
........
r657@blue (orig r496): slug | 2006-05-16 00:09:51 +0100
Merged revisions 495 via svnmerge from
https://svn.quakenet.org/svn/dev-com/N/trunk
........
r495 | slug | 2006-05-16 00:08:38 +0100 (Tue, 16 May 2006) | 1 line
Last bit of GPL code now licensed under the BSD license.
........
r713@blue (orig r502): slug | 2006-06-07 22:49:22 +0100
Fix the bloody annoying requestop 'feature' that reops all 'services' even when there are ops remaining.
r729@blue (orig r504): slug | 2006-06-09 14:02:53 +0100
Merged revisions 503 via svnmerge from
https://svn.quakenet.org/svn/dev-com/N/trunk
........
r503 | slug | 2006-06-09 14:02:16 +0100 (Fri, 09 Jun 2006) | 1 line