3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-25 20:22:45 +01:00
Commit Graph

214 Commits

Author SHA1 Message Date
James Lu
bd30bc862e unreal: Implement spawnClient and (most of) inbound UID handling 2015-09-04 11:51:00 -07:00
James Lu
83725f90ff unreal: coerse sender names to UIDs if they're not given
Unreal's protocol isn't quite consistent with UIDs yet... Some commands (PART, QUIT, NICK) use them, while others (KILL, MODE) don't.
2015-09-04 11:51:00 -07:00
James Lu
6d00309f9f unreal: update imports, add (shared) handlers for QUIT, PART, NICK, and KILL 2015-09-04 11:51:00 -07:00
James Lu
3469603763 Merge branch 'devel' into wip/unrealircd 2015-09-04 11:25:26 -07:00
James Lu
167f5cd0cf Move shared stuff into a ts6_common library
Closes #78.
2015-09-04 11:24:40 -07:00
James Lu
18dc1591aa unreal: Niceties like PING/PONG handling and enumerating our uplink's server 2015-09-03 16:07:30 -07:00
James Lu
58b00d1c23 Initial UnrealIRCd protocol stub (#39) 2015-09-03 13:32:59 -07:00
James Lu
1be4034681 Make TS6 command parsing a shared library (#78) 2015-09-03 12:59:50 -07:00
James Lu
ce83bea09a ts6: less garbled error message for UID handler 2015-09-02 23:51:16 -07:00
James Lu
0b590d6ab3 relay/protocols: use utils.toLower() for channel names, respecting IRCd casemappings
Closes #102.
2015-09-01 22:01:22 -07:00
James Lu
26e102f01a Show oper types on WHOIS 2015-08-31 14:52:56 -07:00
James Lu
5480ae14c4 classes: Remove "opertype" IrcUser() argument
This is useless and should've never been here, oops.
2015-08-31 14:11:12 -07:00
James Lu
531ebbba0a Merge branch 'master' into devel 2015-08-31 13:33:30 -07:00
James Lu
f9b4457ced Decorate relay clients, etc. with custom OPERTYPEs
New PyLink internal hook: PYLINK_CLIENT_OPERED, called (supposedly) when a client opers up.
2015-08-31 13:31:20 -07:00
James Lu
c8e7b72065 protocols: lowercase channel names in PRIVMSG handling
Merge NOTICE and PRIVMSG handlers together; they're essentially the same thing.
2015-08-31 11:45:00 -07:00
James Lu
4a964b1595 Merge branch 'master' into devel 2015-08-31 10:58:47 -07:00
James Lu
37eecd7d69 pr/inspircd: use OPERTYPE to oper up clients correctly, and handle the metadata accordingly 2015-08-31 10:31:50 -07:00
James Lu
7620cd7433 pr/inspircd: fix compatibility with channel mode +q (~)
InspIRCd's defaults use "founder" as the mode name for cmode +q, not "owner". My config was different, so I overlooked this.
2015-08-30 23:16:39 -07:00
James Lu
549a1d1ba4 classes: IrcServer.users is now a set() 2015-08-29 12:35:06 -07:00
James Lu
80bebe3827 protocols: also validate TS on incoming SJOIN 2015-08-26 14:59:05 -07:00
James Lu
977b69b8e9 protocols/: Fix args parsing when the sender UID == the last argument
args.index() would return 0 instead of the index of the current argument.
2015-08-26 14:57:46 -07:00
James Lu
05be3e6c17 pr/: add prefixmodes in sjoinServer if TS <= theirs
The old comparison of our TS < theirs was wrong, because modes are merged (not dropped) when two channels of the same TS join.
2015-08-24 18:37:39 -07:00
James Lu
694e7b87f6 various: make the server description configurable
Two options for this: bot::serverdesc, and server::<network>::serverdesc, with the latter taking precedence if present.
2015-08-24 18:14:35 -07:00
James Lu
1d245bf001 protoocols.sjoinServer: only add prefix modes to channel state if our TS < theirs 2015-08-20 01:32:30 -07:00
James Lu
61d95c19cc protocols: delete empty non-permanent channels 2015-08-15 23:29:40 -07:00
James Lu
c99a6a7b9d protocols: update topic in channel state when sending outbound TOPIC 2015-08-15 22:34:40 -07:00
James Lu
06c466896e ts6: fix prefixmodes not being updated in sjoin 2015-08-15 20:14:36 -07:00
James Lu
4352a68357 Check for TS changes on SJOIN (both incoming and outgoing)
Restore relay to the devel branch; TS bursts shouldn't be handled there, but in the protocol modules.

TODO: fix prefixmodes being cleared after BURST, and never being reset?
2015-08-15 19:53:09 -07:00
James Lu
0d41e35d9c Merge branch 'devel' into wip/handle-ts-bursts
Conflicts:
	plugins/relay.py
2015-08-15 19:28:49 -07:00
James Lu
13e4baba8b inspircd: also strip listmodes in joinClient (#58) 2015-08-14 08:47:23 -07:00
James Lu
7d912bbb28 pr/insp: Strip out listmodes in FJOIN
They should always be sent separately according to the protocol documentation: https://wiki.inspircd.org/InspIRCd_Spanning_Tree_1.2/FJOIN

Closes #58.
2015-08-12 07:05:05 -07:00
James Lu
1a57dfcdc3 prs+IrcUser: add incoming (handle_away) and outgoing (awayClient) AWAY handling 2015-08-12 04:17:01 -07:00
James Lu
bf3116d704 First attempt at handling channel TS @ burst (#93)
Doesn't quite work yet, more testing needed.
2015-08-05 06:14:34 -07:00
James Lu
4d76593901 TS6: Initial support for elemental-ircd
The TS6 protocol gets some new options here: use_halfop, use_admin, use_owner, and use_elemental_modes, to deal with features
supported in Elemental but not charybdis. A second server block is added in the example config to document this.
2015-08-03 23:20:19 -07:00
James Lu
8a134aadc5 Remove duplicate assignment of irc.uidgen 2015-08-03 19:44:11 -07:00
James Lu
e5eb58ee73 inspircd: use parse_as instead of forcibly mapping ENCAP to KNOCK 2015-08-03 05:00:32 -07:00
James Lu
ddefd38591 ts6: fix the broken mess of a JOIN handler, and 'parse_as' handling in irc.callHooks... 2015-07-25 20:43:26 -07:00
James Lu
69e16e536b ts6: add QS as a required capability 2015-07-25 18:27:30 -07:00
James Lu
e354ada838 relay: fix nick collision loop on SAVE + when both tagged UID and untagged UID exist on one net
This fixes a clash when for example: both 42XAAAAAA and _42XAAAAAA exist on a network, and PyLink tries to relay both nicks as _42XAAAAAA/network.

Also, this adds an oldnick argument to the SAVE protocol handler, which is then used by relay.normalizeNick to check whether the original pre-SAVE nick is also in use, in the event of nick collisions.
2015-07-25 18:27:30 -07:00
James Lu
146ab5e444 ts6: support +AOS charybdis extension modes, warning if the IRCd doesn't support them
Also, add 'adminonly' (+A) to relay's whitelist.
2015-07-24 20:55:48 -07:00
James Lu
a4da9b5324 protocol/relay: fix handling of KILLs sent to non-relay users 2015-07-24 18:26:31 -07:00
James Lu
007a1d9389 Merge branch 'master' into devel 2015-07-24 11:09:53 -07:00
James Lu
01220b3024 correction: InspIRCd uses RFC1459 case mapping by default 2015-07-24 10:59:04 -07:00
James Lu
868b4503e6 protocols: Fix #81 - that was easy!
Split data by only one space at a time, not as many spaces as possible. Thanks to @nathan0.
2015-07-23 19:09:19 -07:00
James Lu
57c3a04cda ts6: call SQUIT hooks upon receving it... 2015-07-23 15:05:10 -07:00
James Lu
a77427ded9 ts6: fix SQUIT handling
These come in a different syntax? Strange.
2015-07-23 13:45:55 -07:00
James Lu
0575de1fac Support noctcp (+C) on charybdis, and wallops (+w) in relay 2015-07-23 13:45:38 -07:00
James Lu
254ccea0a3 remove some debugging cruft and unused imports 2015-07-23 11:46:45 -07:00
James Lu
42593ae431 ts6: add missing handler for SID 2015-07-23 11:17:57 -07:00
James Lu
58a8d7134c Fix handling of inbound CHG* 2015-07-23 11:02:32 -07:00
James Lu
2e34d9e85d ts6: Use EUID in spawnClient, and error on attempts to use plain UID
The latter isn't handled and thus would lead to pretty bad desyncs. Closes #79.
2015-07-23 10:22:55 -07:00
James Lu
8799e1ccc8 spawnClient: add ts as opt. argument; relay: spawn pseudoclients w/ TS of original user 2015-07-23 00:11:24 -07:00
James Lu
d52fba37b8 add numericServer for sending raw numerics from servers, and WHOIS handling in coreplugin
Basic WHOIS handling (user information, server information, IRCop access) are sent. #72

TODO: send channel lists, an extra note for relay clients, user modes, and idle time
2015-07-22 21:15:34 -07:00
James Lu
8a1f965303 Consistently use applyModes in spawnClient, so user modes are stored like ('o', None) instead of ('+o', None)
Drop the 'modes' argument in IrcUser, for this is incorrect.
2015-07-22 21:14:22 -07:00
James Lu
686467ffa6 Remove endburst toggling in spawnServer, has_bursted IrcServer flag
Neither are being used at all; they're essentially dead code.
2015-07-22 20:39:38 -07:00
James Lu
35cdfbf7e6 Declare IRCd casemapping in protocol modules, and respect these in utils.nickToUid
This adds a new utils.toLower(irc, text) function which returns the lowercased version of <text> based on <irc>'s declared case mapping.

Closes #75.
2015-07-22 20:31:45 -07:00
James Lu
bad1132789 ts6: fix users not joining channels properly due to command cutoff
https://github.com/grawity/irc-docs/blob/master/server/ts6.txt#L5-L6 states that there can only be 15 parameters max per command, GLOBALLY. Ugh.

No warnings? No clue whatsoever that the SJOIN is dropped? This wasted a lot of time.

COME ON.
2015-07-21 19:29:15 -07:00
James Lu
ea7681502f fix some bugs, introduce others 2015-07-21 17:33:36 -07:00
James Lu
57f8b0d6f7 ts6: add handler for BMASK (ban propagation on burst) 2015-07-21 14:38:53 -07:00
James Lu
9b8ef0a45d make relay and ts6 a bit less, well, buggy 2015-07-21 12:44:01 -07:00
James Lu
6ba42759cf ts6: manually set a timer for ENDBURST so relay's initializeAll works 2015-07-20 23:53:21 -07:00
James Lu
73c41b4363 relay & ts6: miscellaneous fixes? 2015-07-20 23:36:26 -07:00
James Lu
88dbe3cde9 TS6: misc fixes; finish off the basic protocol spec!
TODO: move the shared functionality with inspircd into a new ts6_common module
2015-07-20 22:31:40 -07:00
James Lu
419a39c89c ts6: implement initial connection, JOIN/EUID handlers, and more 2015-07-20 21:21:43 -07:00
James Lu
b593b39421 Merge branch 'devel' into wip/proto-ts6 2015-07-20 19:54:08 -07:00
James Lu
72be5ca79c inspircd: make handle_part return a list of channels, not just one
Some IRCds, like TS6, allow sending multiple channels (as a comma-separated list) in PART.

Update relay accordingly.
2015-07-20 19:52:52 -07:00
James Lu
6a0a61296d ts6: handle_sjoin stub (untested) 2015-07-20 18:26:17 -07:00
James Lu
3494d4f794 inspircd: remove RSQUIT handler
Events like this shouldn't be handled at the protocol level, ever. There's little point in adding this globally, since plugins should be able to choose what happens when they receive an SQUIT.
2015-07-20 18:05:42 -07:00
James Lu
8234eb7304 Initial (incomplete and untested!!!) TS6 protocol stub (#40) 2015-07-20 17:36:43 -07:00
James Lu
a10a18d9cc Irc: make prefixmodes a dict mapping chars to their prefixes
This is needed by TS6 support (#40), which send the characters (@+) instead of modes
2015-07-20 16:48:59 -07:00
James Lu
b1e409ff3e relay: unbreak topic handling (closes #68)
Introducing a new .topicset attributing in IrcChannel denoting whether we've received a TOPIC for this channel from the uplink yet.
2015-07-20 13:18:04 -07:00
James Lu
fe9c317f2c inspircd: make channel user tracking more fault tolerant (in sjoinServer / handle_part) 2015-07-19 23:46:19 -07:00
James Lu
bf444f3f6a pr/insp: Servers should use FTOPIC, not TOPIC to send topics 2015-07-19 17:27:53 -07:00
James Lu
0cb9065d53 pr/insp: coerse 'reginvite' named mode to 'regonly' 2015-07-19 16:53:51 -07:00
James Lu
0540e10d50 relay: don't add bans that don't match nick!user@host
Closes #55.
2015-07-19 16:53:51 -07:00
James Lu
a51cfcb7b2 Fix fakeirc and tests for relay (#56) 2015-07-17 22:52:55 -07:00
James Lu
fdea348cbe move hook calling out of pr/insp and into Irc 2015-07-17 16:09:50 -07:00
James Lu
95853924ad Revert "protocols/: thread calls to each event hook to prevent blocking globally"
This reverts commit 99fd6060a7, which caused a bunch of race conditions in relay :/

Ref #59.
2015-07-17 15:13:57 -07:00
James Lu
f41e1a2eb5 Fixes for connection handling?
XXX: using SQUIT on the PyLink server doesn't respect autoconnect delays; why?
2015-07-17 15:08:24 -07:00
James Lu
99fd6060a7 protocols/: thread calls to each event hook to prevent blocking globally
Closes #59.
2015-07-17 14:35:02 -07:00
James Lu
9bef93c341 More stuff for PINGing uplink and autoreconnect (#42 #59 #57)
Doesn't quite work yet; still blocks everything on disconnect for some reason...
2015-07-17 13:41:14 -07:00
James Lu
0aa2f98705 Move client spawning, command / KILL / KICK handling outside the protocol module
New plugin 'coreplugin' takes care of command/KILL/KICK handling, while client spawning is moved into Irc.spawnMain() and is used by the former.

Closes #33.
2015-07-16 21:52:44 -07:00
James Lu
73c625a429 pr/insp: don't raise KeyError when removing channel from user fails 2015-07-16 16:48:54 -07:00
James Lu
d97fce8205 IrcUser & pr/insp: Implement user channel tracking 2015-07-16 12:20:40 -07:00
James Lu
f9d82153bb pr/insp: map FIDENT/FHOST/FNAME hooks to their CHG* counterparts 2015-07-15 23:23:46 -07:00
James Lu
e413a21e68 pr/insp: send the list of affected users in handle_squit 2015-07-15 19:08:49 -07:00
James Lu
798476c850 pr/insp: don't crash when a server sends TOPIC 2015-07-15 19:08:36 -07:00
James Lu
6e37e1c05d make Irc.connected a threaded event object, setting it to True ONLY when we receive server capabilities from our uplink
The previous behavior set this to True as soon as we ran connect(), but this caused problems because the default capabilities (i.e. nicklen)
that Irc() initializes won't match the real value of the network.
2015-07-15 13:49:12 -07:00
James Lu
67190d8329 pr/insp: send the user data of the kileld user in handle_kill 2015-07-14 23:23:35 -07:00
James Lu
ef0436c906 inspircd: merge _sendFromUser and _sendFromServer into _send
They do exactly the same thing, just with different variable names. Keeping two of these is useless...

(why didn't I notice this earlier?)
2015-07-14 22:33:56 -07:00
James Lu
8942c2fa08 pr/insp: add kickServer 2015-07-14 22:32:05 -07:00
James Lu
79a1ac9006 pr/insp: fix sjoinServer not updating the internal modes list 2015-07-14 18:23:15 -07:00
James Lu
994b2961ee pr/insp: call endburst AFTER the server object is initialized...
derp
2015-07-14 12:03:22 -07:00
James Lu
59295f921b relay: part users on DELINK/DESTROY 2015-07-13 23:29:20 -07:00
James Lu
c11dc769cf pr/insp: allow explicitly specifying ts in mode* 2015-07-13 22:42:33 -07:00
James Lu
a7a5688e69 pr/insp: add sjoinClient(), make auto-endburst optional for spawnServer 2015-07-13 16:06:58 -07:00
James Lu
45cef19eaa Make plugins global, not per IRC instance 2015-07-12 23:28:34 -07:00
James Lu
d19cabf16c pr/insp: save irc.max{nick|chan}len correctly as integers 2015-07-12 14:00:52 -07:00
James Lu
c655d975a6 pr/insp: remove isNick check in spawnClient 2015-07-12 14:00:33 -07:00
James Lu
f8a7bc6033 pr/insp: use TS6SIDGenerator in spawnServer if no SID is explicitly given 2015-07-11 20:21:10 -07:00