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

375 Commits

Author SHA1 Message Date
James Lu
f3d8c35219 ts6: fix sending wrong UID in handle_chghost hook payload 2015-12-30 15:53:31 -08:00
James Lu
bf7522697a Rename PYLINK_CLIENT_OPERED hook -> CLIENT_OPERED
To be consistent, any PYLINK_* hooks should internal hooks sent out by PyLink itself. CLIENT_OPERED, on the other hand, requires protocol modules to send it and thus, shouldn't be labeled as a PYLINK_* hook.
2015-12-26 15:41:22 -08:00
James Lu
11adee9d78 Yet another documentation refresh (#113) 2015-12-26 14:45:28 -08:00
James Lu
3c51231ce8 inspircd: re-add RSQUIT handler (closes #150) 2015-12-24 19:52:52 -08:00
James Lu
3f45450969 unreal: move setting irc.connected to AFTER protocol negotiation, and add missing EOS (ENDBURST) handler
The lack of the latter caused relay to *fail* to spawn users whenever an Unreal server reconnects, which should be fixed now.
2015-12-24 18:13:53 -08:00
James Lu
349cff36e1 protocols: in TOPIC hooks, send the topic as keyword "text" instead of keyword "topic"
This is just to be more consistent, as other hooks usually use "text" for text fields.
2015-12-18 22:05:10 -08:00
James Lu
d60a48bb11 protocols: actually update away status in awayClient
"Oops, I forgot to do this."
2015-12-17 21:50:50 -08:00
James Lu
6d597e4482 unreal: call PYLINK_CLIENT_OPERED hooks where we're supposed to 2015-12-17 21:37:01 -08:00
James Lu
09bb2976f8 inspircd: Remove a couple of overzealous find+replaces 2015-12-17 21:19:40 -08:00
James Lu
6b14a885bc protocols: add support for endburst_delay in spawnServer (#128) 2015-12-17 21:18:11 -08:00
James Lu
f79524e9e1 unreal: remove duplicate import 2015-12-06 17:44:59 -08:00
James Lu
62501ce8f2 unreal: actually, storing the cloaked host instead of the real host is a better idea
This prevents IP leaks, at least until #136 is fixed. Reverts part of b965f2c.
2015-11-28 20:57:33 -08:00
James Lu
f8cc297522 unreal: remove "possible desync" warning in _getNick 2015-11-26 22:52:29 -08:00
James Lu
994eaef12c unreal: forcibly SETHOST to the desired vHost in spawnClient
This prevents real host / IP address leaks, since the "virt host" specified in UID doesn't seem to be respected by the IRCd (real host is shown instead). Workaround for #136.
2015-11-26 22:34:15 -08:00
James Lu
0c068c6543 unreal: fix #137
a.k.a. fix the mess I made encoding IPs by not knowing about socket.inet_pton / socket.inet_ntop.
2015-11-26 22:15:52 -08:00
James Lu
b965f2c4b0 unreal: store the displayed host, not the Unreal-cloaking (+x) host in users
I was misinterpreting the UID command syntax. See #136 for what still has to be done.
2015-11-22 13:07:25 -08:00
James Lu
5c0517ba40 unreal/ts6/relay: add some more user mode support
Cloaking is still a bit iffy on UnrealIRCd networks - Unreal insists on applying its own cloaking for +x users, but vHosts for non +x remote users don't apply at all (their real host is shown instead)
2015-11-21 23:57:24 -08:00
James Lu
e86d21e67d unreal: map SETHOST/IDENT/NAME to the right hooks 2015-11-21 23:28:39 -08:00
James Lu
06539fc813 unreal: add missing SJOIN->JOIN hook map, and set irc.connected (relay will otherwise break) 2015-11-15 21:42:58 -08:00
James Lu
f3428d264b ts6: actually send original TS in INVITE hook 2015-11-15 21:16:03 -08:00
James Lu
0f269da9b8 unreal: add outgoing KNOCK
In Unreal, KNOCKs are simply specially formatted notices sent from the orginating user's server. No special inbound hook is used to handle this as a result.
2015-11-15 21:09:40 -08:00
James Lu
2ddb72f9ec unreal: add incoming/outgoing INVITE support 2015-11-15 21:00:51 -08:00
James Lu
89e515f513 unreal: don't set TS to 0 when it's sent in MODE (samode overrides the timestamp as this to ensure it always works) 2015-11-15 09:52:01 -08:00
James Lu
7e8e8f33f7 unreal: add updateClient 2015-11-15 09:45:46 -08:00
James Lu
e167be2a69 move awayClient/handle_away to ts6_common 2015-11-15 09:34:26 -08:00
James Lu
a5a2481205 unreal: handle sethost, chghost, and all that 2015-11-15 09:30:29 -08:00
James Lu
ac48c49591 Move squitServer/spawnServer to ts6_common, add topicServer for Unreal 2015-11-15 09:12:21 -08:00
James Lu
5664218254 unreal: add WHOIS handling 2015-11-11 19:40:26 -08:00
James Lu
dfefaeabc5 Merge branch 'devel' into wip/unrealircd 2015-11-11 19:40:22 -08:00
James Lu
eeedeb0135 Move numericServer to ts6_common 2015-11-11 19:40:10 -08:00
James Lu
8c60782753 unreal: add modeClient/modeServer 2015-11-11 19:24:57 -08:00
James Lu
76472560ab unreal: add killServer/killClient 2015-11-11 19:09:37 -08:00
James Lu
fcd1bf5c37 unreal: fix typo in one updateTS call 2015-11-11 19:09:30 -08:00
James Lu
6f9feb46b1 unreal: fix last commit (actually map the hook & set modes on RIGHT target) 2015-11-11 18:55:05 -08:00
James Lu
6601071d35 unreal: add svsmode/svs2mode handler 2015-11-08 15:27:09 -08:00
James Lu
119aa8939b unreal: use Protocol.updateTS() for TS checks 2015-11-08 15:27:09 -08:00
James Lu
619b004bdf Merge branch 'devel' into wip/unrealircd 2015-11-08 15:14:51 -08:00
James Lu
2008df047c Fix logic in last commit
ts has to be set to orig_ts if missing, otherwise a later comparison would try to check for None <= some int, which would error
2015-11-08 15:14:03 -08:00
James Lu
c88f126331 Merge branch 'devel' into wip/unrealircd 2015-11-08 15:10:42 -08:00
James Lu
2eeba50a2a Modularize TS updating code (Closes #129) 2015-11-08 10:49:09 -08:00
James Lu
6f36fb7126 unreal: alias SVSKILL to KILL 2015-11-01 21:50:46 -08:00
James Lu
4a4c43d3c4 unreal: handle timestamps in MODE (channel bursts), ignoring when TS is 0 2015-11-01 21:41:41 -08:00
James Lu
cedcb9b11a Merge branch 'master' into wip/unrealircd 2015-11-01 20:40:56 -08:00
James Lu
c5b3441f6a inspircd: alias SVSTOPIC to FTOPIC (reported by @siniStar7boy)
SVSTOPIC is used by services to set topics when m_topiclock (server side topic locking) is enabled on the IRCd. Unfortunately, usage of this isn't documented anywehere......
Basically, this makes PyLink treat it as a regular server topic change (FTOPIC), since the arguments are the same anyways.
2015-10-31 19:15:03 -07:00
James Lu
59af8e196c ts6: fix call to operup hook when handling EUID 2015-10-25 10:27:06 -07:00
James Lu
dbe24973d5 unreal: add joinClient + sjoinServer, support +qaohv properly 2015-10-12 19:38:38 -07:00
James Lu
f0ff14fda9 unreal: fix spawnClient manipulatable setting 2015-10-12 19:34:52 -07:00
James Lu
90fd64b125 unreal: store IPs properly, now that I understand how... 2015-10-12 18:45:25 -07:00
James Lu
399f89900b unreal: TOPIC inbound handler (#104) 2015-10-12 18:25:30 -07:00
James Lu
00a6008078 unreal: we can send NETINFO instantly now, since network full name is a config option 2015-10-12 18:20:16 -07:00
James Lu
b5677806e7 unreal: bump protocol version to 3999 (Unreal 4.0.0-rc1) 2015-10-12 18:17:58 -07:00
James Lu
1eeeba1e86 unreal: support legacy server introduction (#119) 2015-10-12 18:15:39 -07:00
James Lu
2fc0e086ae unreal: rename _convertNick => _getNick 2015-10-12 17:58:36 -07:00
James Lu
4f4ad7b54d unreal: switch to _getSid for server name reverse lookup 2015-10-12 17:50:44 -07:00
James Lu
07fce69c5e Merge branch 'devel' into wip/unrealircd 2015-10-12 17:50:35 -07:00
James Lu
d4200424fa ts6: support legacy (non-sid) server introduction
Closes #119.

For the sake of simplicity, server swithout a SID are stored by their server names internally, which is convenient because no reverse lookup is needed when an SQUIT is received for it.
2015-10-12 17:49:03 -07:00
James Lu
1f0426d7ff ts6: fixes to SQUIT handling 2015-10-10 14:58:52 -07:00
James Lu
64cba70cbd ts6: add stub for legacy (no SID) SERVER introduction 2015-10-09 22:50:11 -07:00
James Lu
6e30a62a4a unreal: SQUIT and SID handlers (#114) 2015-10-09 22:38:28 -07:00
James Lu
d5a2d3b0e8 unreal: fix incorrect comment 2015-10-09 21:39:09 -07:00
James Lu
a3ee7f2c8a unreal: handle UMODE2 (self user mode changes)
For #114. TODO: find out if it's possible to set modes on other users, and handle that if applicable
2015-10-09 21:37:44 -07:00
James Lu
f97d3eb756 Merge branch 'master' into wip/unrealircd 2015-10-09 21:36:02 -07:00
James Lu
9927627630 unreal: add handle_mode (channel modes) and support for unreal +f (#104) 2015-10-08 21:06:57 -07:00
James Lu
181c40d9fe inspircd: fix another "find all, replace" mistake 2015-10-08 21:06:35 -07:00
James Lu
c50866c3a9 unreal: Fix handle_sjoin (#104) 2015-10-08 20:48:10 -07:00
James Lu
963b9e978e unreal: Add handle_sjoin (#104) 2015-10-08 20:46:30 -07:00
James Lu
009cac2263 unreal: fix joinClient not adding users to state (#104) 2015-10-08 20:44:12 -07:00
James Lu
665481276d unreal: update spawnClient to latest spec, improve handle_events and documentation to be more correct 2015-10-08 20:28:21 -07:00
James Lu
7c7f07b3a9 Merge branch 'master' into wip/unrealircd 2015-10-08 20:14:30 -07:00
James Lu
8bde21f1e6 inspircd: remove clients from state when killing own clients
Closes #115.
2015-10-08 20:13:37 -07:00
James Lu
a9253eda77 ts6: fix removeClient usage 2015-10-02 23:31:38 -07:00
James Lu
f015fe5e25 Documentation updates, finish off pmodule-spec.md (#113) 2015-09-24 18:36:54 -07:00
James Lu
3351aafc79 inspircd: fix wrong arguments in numericServer() stub 2015-09-24 18:13:11 -07:00
James Lu
c77d170765 Move parseArgs and removeClient into the base Protocol class
These aren't really TS6-specific, and can be useful anywhere.
2015-09-24 18:03:30 -07:00
James Lu
886994475d Merge branch 'master' into wip/unrealircd
Conflicts:
	classes.py
2015-09-23 18:59:17 -07:00
James Lu
e92f35018f TS6SIDGenerator: take an IRC object, and skip any SIDs that are currently in use 2015-09-20 18:32:43 -07:00
James Lu
f38958995c Store opertypes with spaces instead of underscores, and only change them back when sending OPERTYPE
Another "Janus sucks" commit - it should be always using underscores when sending OPERTYPE, but it doesn't...
2015-09-20 11:25:45 -07:00
James Lu
c3e8420aa0 relay/ts6_common: be more error tolerant with network (dis)connections 2015-09-18 22:11:27 -07:00
James Lu
fb91ff8ea3 Remove allow_abcd attributes from protocols (not needed anymore) 2015-09-17 19:07:37 -07:00
James Lu
069cd62865 core: allow marking spawned clients as manipulatable or protected
This flag determines whether the client should be manipulated by commands like bots.py's MODE/QUIT/JOIN commands, or protected from them (services).
2015-09-17 19:01:54 -07:00
James Lu
b87e34efa2 Slightly more consistent logging format... 2015-09-16 21:32:27 -07:00
James Lu
c5b6658200 bots: more validation in "MODE" to prevent bad things from happening
This adds a new "allow_forceset_usermodes" attribute to protocol modules, which determines whether the IRCd allows us to force usermode changes on other servers' clients.

Also, make sure our target is a valid nick/UID/channel, and that the parsed modes are not empty!
2015-09-14 17:46:20 -07:00
James Lu
6476aefb5f Merge branch 'master' into devel
Conflicts:
	protocols/inspircd.py
2015-09-14 16:55:35 -07:00
James Lu
1f95774131 inspircd: add proper fallback value for OPERTYPE? 2015-09-13 17:04:17 -07:00
James Lu
9c4e0107f3 ts6_common: make old topic retrievable in handle_topic 2015-09-13 14:23:09 -07:00
James Lu
c82a0a771c protocols: return an "oldchan" IrcChannel object with the previous state of a channel when processing channel mode changes
This allows plugins to check for op statuses, etc. before the mode change is processed.
2015-09-13 13:47:18 -07:00
James Lu
17282aa049 protocols: fix typo and ts6._sendModes when input is a set() 2015-09-12 23:35:20 -07:00
James Lu
3a8d3d146c protocols: make "uidgen" a protocol instance attribute 2015-09-12 16:02:51 -07:00
James Lu
0cbdefcab1 ts6/inspircd: fix TS6SIDGenerator not actually incrementing...
It was being replaced on every call... It was only supposed to do that if sidgen hadn't been set yet!
2015-09-12 12:08:02 -07:00
James Lu
36b0a08368 ts6_common: return server name in SQUIT handler too 2015-09-12 12:08:02 -07:00
James Lu
df42a81191 classes/protocols: store server descriptions internally
Closes #106.
2015-09-12 12:07:59 -07:00
James Lu
d6cb9d45c7 Merge commit '320de2079a78202e99c7b6aeb53c28c13f43ba47'
Many things here, including:
- New 'exec' plugin
- INVITE, umode +H (hideoper) support for relay
- New and improved 'showuser' command, now with internals that support multiple binds to one command name.
- relay: bug fixes, like not sending empty user mode changes.
2015-09-12 09:11:52 -07:00
James Lu
ca3372b0af protocols/unreal: class()-ify everything 2015-09-10 18:41:01 -07:00
James Lu
da1b101bc4 Merge branch 'devel' into wip/unrealircd 2015-09-10 18:27:46 -07:00
James Lu
29065fdd04 protocols/: remove unused imports & various documentation improvements 2015-09-08 19:51:14 -07:00
James Lu
983acd5adc Move MODE handling back from ts6_common->inspircd, now that ts6.py does different handling 2015-09-08 19:50:46 -07:00
James Lu
6c503b3603 Fix typos and other stupid mistakes... 2015-09-06 23:18:27 -07:00
James Lu
7952590436 ts6_common: fix a typo 2015-09-06 22:09:09 -07:00
James Lu
197ccd7916 relay/protocols: use utils.toLower() for channel names, respecting IRCd casemappings
Closes #102.

(cherry picked from commit 0b590d6ab3)
2015-09-06 21:47:27 -07:00
James Lu
57da0aa3b3 Classify all our protocol modules - why didn't I do this earlier 2015-09-05 18:00:57 -07:00
James Lu
3b7d81d62a inspircd: fix typo in comment 2015-09-05 14:28:18 -07:00
James Lu
9f2d8a1b01 Document the sources of protocols/inspircd & ts6_common 2015-09-05 14:25:11 -07:00
James Lu
871e6a5c47 unreal: JOIN handlers 2015-09-05 12:29:20 -07:00
James Lu
76246dea70 unreal: add NOTICE and PRIVMSG (inbound/outbound) 2015-09-05 12:02:45 -07:00
James Lu
b63d7619da unreal: validate uplink protocol version (needs >=2351) 2015-09-05 11:52:46 -07:00
James Lu
cae4c60b56 unreal: stricter protocol negotiation (check needed capabilities) 2015-09-05 11:45:28 -07:00
James Lu
a96826273f Merge branch 'devel' into wip/unrealircd 2015-09-05 11:24:45 -07:00
James Lu
72cfe04904 protocols: respect serverdesc config options in spawnServer 2015-09-04 18:59:57 -07:00
James Lu
759f6c4492 protocols/: add outgoing squitServer() 2015-09-04 18:55:39 -07:00
James Lu
47a63cb8d6 Merge branch 'master' into devel 2015-09-04 18:48:08 -07:00
James Lu
8f70582d1b ts6: fixes to spawnServer
1) Use SID, not SERVER - This allows us to actually spawn clients on these servers...
2) Fix check for existing server names (drop the .keys() loop, it raises TypeError and isn't needed)
2015-09-04 18:47:53 -07:00
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