3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-28 05:29:25 +01:00
Commit Graph

533 Commits

Author SHA1 Message Date
James Lu
2c60aa6395 Separate UID/SID generators into various protocol modules (#199) 2016-04-24 21:08:07 -07:00
James Lu
128a6363d5 nefarious: easier SID encoding using struct 2016-04-23 10:54:54 -07:00
James Lu
0e0d96efc6 nefarious: properly decode IPv6 addresses, move IP decoding into separate function 2016-04-23 10:44:17 -07:00
James Lu
9f454402d2 nefarious: don't confuse the TS argument with the user list, if a BURST is sent with only bans 2016-04-18 21:29:00 -07:00
James Lu
fd909395ff nefarious: ignore empty BURSTs with no useful data 2016-04-18 20:59:06 -07:00
James Lu
bc578240bb nefarious: fix checks for what is an IPv6 / IPv4 address 2016-04-18 20:54:16 -07:00
James Lu
0fad0f7a2c nefarious: add missing import
Reported by Rascle on IRC.
2016-04-18 20:40:01 -07:00
James Lu
c59997827f hybrid, ts6: update mode definitions
- +p is actually just noknock on hybrid & charybdis
- Fill in *A-*D lists (they were incomplete)
2016-04-18 11:22:54 -07:00
James Lu
560311a98b nefarious: handle VERSION requests 2016-04-18 10:55:05 -07:00
James Lu
81d2450460 nefarious: relay KILL user data properly 2016-04-18 10:52:41 -07:00
James Lu
4b4db64705 nefarious: experimental host changing support via FAKE
This seems to work fine for changing remote users' hosts, but changing the host of internal PyLink clients doesn't seem to work at all...
2016-04-18 10:52:09 -07:00
James Lu
25aacbd1fa nefarious: actually check RECVPASS 2016-04-17 22:33:16 -07:00
James Lu
c379287482 nefarious: implement account & vhost checking
Many thanks to @jobe1986 again, for giving me the specifics on how all of this works. :)
2016-04-17 22:23:44 -07:00
James Lu
38441f0302 nefarious: fix typo in NICK change handling 2016-04-17 22:23:11 -07:00
James Lu
9d28be1dc8 nefarious: updateClient stub 2016-04-17 22:22:38 -07:00
James Lu
fbd71a88f5 nefarious: convert nicks to UID in mode handling 2016-04-17 21:26:21 -07:00
James Lu
1a8652e982 nefarious: fill in cmodes, umodes lists 2016-04-17 21:17:27 -07:00
James Lu
9362b74d78 nefarious: handle CLEARMODE 2016-04-17 20:52:38 -07:00
James Lu
2a6b096401 nefarious: add KNOCK stub (not supported on P10) 2016-04-17 20:33:35 -07:00
James Lu
29d2fea3b2 nefarious: implement WHOIS handling & outbound numerics 2016-04-17 20:32:21 -07:00
James Lu
933029824c nefarious: AWAY and INVITE support 2016-04-17 20:28:51 -07:00
James Lu
20123c52e0 nefarious: implement TOPIC support 2016-04-16 18:46:31 -07:00
James Lu
68eed62f70 nefarious: implement outgoing SJOIN and SQUIT 2016-04-16 18:05:32 -07:00
James Lu
1892dd5fb4 nefarious: implement outgoing SJOIN (via BURST) 2016-04-16 17:49:59 -07:00
James Lu
25ca2f8399 nefarious: fix BURST prefix handling
When one userpair is given with some mode prefixes, it implicitly applies to all other following UIDs,
until another userpair is given with a prefix. For example: UID1,UID3:o,UID4,UID5 would assume that
UID1 has no prefixes, but UID3-5 all have op when joining.

This was not properly accounted for previously.
2016-04-16 17:06:48 -07:00
James Lu
fccfb62609 Merge branch 'devel' into wip/p10 2016-04-16 17:04:32 -07:00
James Lu
36683fc70e ts6: keep state properly when handling JOIN 2016-04-16 17:03:57 -07:00
James Lu
d635967d3b nefarious: keep state properly when handling JOIN 2016-04-16 17:00:50 -07:00
James Lu
20087c8872 nefarious: inbound SQUIT support 2016-04-16 16:54:34 -07:00
James Lu
a13211e0db nefarious: implement KILL, fix bugs in outgoing kick & incoming join 2016-04-16 16:46:30 -07:00
James Lu
e18c7025db nefarious: implement NICK, QUIT, PART, KICK 2016-04-15 14:08:33 -07:00
James Lu
560aa5b1f8 nefarious: MODE support 2016-04-15 13:50:09 -07:00
James Lu
1c7e0fbeae nefarious: handle inbound & outbound PRIVMSG/NOTICE 2016-04-15 12:30:52 -07:00
James Lu
f9f3e97f42 nefarious: handle end of burst (send acknowledgement and hook) 2016-04-15 12:30:31 -07:00
James Lu
cc16c610dd nefarious: handle ban exempts in BURST 2016-04-15 12:19:54 -07:00
James Lu
8a7c39691f nefarious: fix type error in handle_join 2016-04-15 12:12:17 -07:00
James Lu
1676d33795 nefarious: fix PING syntax for Nefarious 2016-04-15 12:12:07 -07:00
James Lu
b9e568c962 nefarious: don't send empty mode lists to parseModes
Doing so raises assertionerror, which causes the link to fail!
2016-04-15 11:53:08 -07:00
James Lu
3c8c6f2027 nefarious: fix syntax in BURST mode handling 2016-04-15 11:41:49 -07:00
James Lu
0d217845ab nefarious: Handle BURST, incoming & outgoing JOIN 2016-04-15 11:38:27 -07:00
James Lu
6682627af8 nefarious: handle PING / PONG
Doesn't seem to work yet...
2016-04-15 11:37:53 -07:00
James Lu
8ba0412ece nefarious: set realhost = displayed host 2016-04-14 17:31:51 -07:00
James Lu
5796b75373 nefarious: track and send user IPs the P10 way - thanks @jobe1986 for the tips! 2016-04-14 17:25:45 -07:00
James Lu
393771a32a nefarious: split p10b64encode() away from P10SIDGenerator 2016-04-14 16:24:26 -07:00
James Lu
3299a871f2 nefarious: basic command handlers for NICK and SERVER
Still a bit incomplete atm. User IPs and accounts are not tracked yet.
2016-04-14 16:10:44 -07:00
James Lu
db911149db nefarious: update module header 2016-04-14 15:36:59 -07:00
James Lu
a12b2cb5dc nefarious: don't drop messages without a sender
During the initial link phase, the uplink server isn't even known. It sends "SERVER blah blah" and "PASS :whatever" as is.
2016-04-14 15:36:59 -07:00
James Lu
74af9b67ba protocols: p10.py -> nefarious.py 2016-04-12 07:00:45 -07:00
James Lu
19f1ee1be8 p10: initial protocol stub (#87)
This can connect and spawn the main PyLink client right now... It can't do anything else
2016-04-10 20:24:58 -07:00
James Lu
3a00e46b48 Move getSid/getUid into classes.Protocol 2016-04-10 19:00:44 -07:00
James Lu
38e098aef4 inspircd: normalize chmode +r name
This should be "registered", not "c_registered" in order to be consistent with other protocols.
2016-04-09 18:25:17 -07:00
James Lu
0ccdf4cfce unreal: require UMODE2 cap too
I realize we don't handle MODE being used for users at all. UMODE2 is always used when enabled, which is what we're expecting right now.
2016-04-09 11:43:26 -07:00
James Lu
5dee6ab651 unreal: simplify capability checks & require NICKIP cap 2016-04-09 11:34:09 -07:00
James Lu
29030073b9 unreal: request NICKIP capability, track Unreal 3.2 user IPs
Closes #196.
2016-04-09 10:17:25 -07:00
James Lu
62c8cd2405 protocols: s/_getNick/_getUid/g
The old function name _getNick was a bit misleading, as the function converted nicks to UIDs, not the other way around..
2016-04-08 22:21:37 -07:00
James Lu
248c0cbb78 hybrid: virtual umodes +d/+x don't take arguments 2016-04-08 22:20:23 -07:00
James Lu
32038e666a hybrid: track vHost changes (#198) 2016-04-08 22:02:08 -07:00
James Lu
d0655b701a hybrid: implement services account tracking (#198) 2016-04-08 21:38:41 -07:00
James Lu
3ec3d4cebb hybrid: Fix typo in 0be83449fb (#198) 2016-04-08 20:57:03 -07:00
James Lu
e4cd028e86 hybrid: prettier logging, fix wrong argument being passed to IrcUser 2016-04-08 20:46:03 -07:00
James Lu
b3447b74c2 hybrid: make a note of how hybrid UID differs from standard TS6
These are two mutually incompatible implementations, which is why this module exists separately from ts6!
2016-04-08 20:41:27 -07:00
James Lu
5a6a6ca40e hybrid: require caps EX IE SVS EOB HOPS QS TBURST SVS 2016-04-08 20:40:54 -07:00
James Lu
3dbae3b744 hybrid: fix EOB handler name 2016-04-08 20:36:14 -07:00
James Lu
0be83449fb hybrid: implement outgoing host change in updateClient (#198) 2016-04-08 20:35:45 -07:00
James Lu
3b3080d199 hybrid: drop unused svstag handler 2016-04-08 20:22:53 -07:00
James Lu
aeb65478cb hybrid: implement topicBurst (#198) 2016-04-08 20:01:45 -07:00
James Lu
abcf3b6082 ts6: re-add some of the ircd traffic examples 2016-04-07 18:23:21 -07:00
James Lu
fb74179f58 hybrid: handle services logins on burst too 2016-04-07 18:23:18 -07:00
James Lu
3ae9155e78 hybrid: inherit from proto/ts6, drastically reducing the module size 2016-04-07 18:11:13 -07:00
James Lu
d585b60507 Merge branch 'devel+hybrid' of github.com:DanielOaks/PyLink into wip/hybrid 2016-04-07 17:53:57 -07:00
Daniel Oaks
59809e1530 hybrid: Dispatch ENDBURST so it can be caught by plugins 2016-04-07 22:29:15 +10:00
James Lu
1e3aba2cce protocols: simplify super() syntax 2016-04-05 18:37:09 -07:00
James Lu
f620b5b4e8 protocols: initialize sidgen/uidgen in ts6_common 2016-04-05 18:34:54 -07:00
James Lu
cb3187c5e9 ts6_common: do reverse nick lookup for KICK targets
Also needed for Unreal 3.2 compat, as the kick target may be a nick (on legacy servers) instead of a UID.
2016-04-03 13:03:00 -07:00
James Lu
55afa1bff6 unreal: log instances of PUID manging to debug 2016-04-03 13:01:08 -07:00
James Lu
75984c3c4c ts6_common: add abstraction to convert UIDs->outgoing nicks
This is a more complete fix for #193.
2016-04-03 12:57:47 -07:00
James Lu
9f20f8f767 unreal: update SJOIN matching regex
We should only treat symbols as a possible prefix, not letters. Things like +nick might be sent in a SJOIN instead of +001AAAAAA, for legacy servers.
2016-04-03 12:57:47 -07:00
James Lu
4157cb5671 ts6_common: use a better variable name for _getSid() 2016-04-03 12:49:50 -07:00
James Lu
e687bb0a78 unreal: remove outfilter hack, this doesn't handle text including PUIDs properly
Reverts part of 44dc856ffa.
2016-04-03 12:38:38 -07:00
James Lu
02ec50826b unreal: fix super() syntax in SQUIT handling 2016-04-02 12:12:38 -07:00
James Lu
6acfbb4125 unreal: case-desensitize legacy server names when handling user introductions from them 2016-04-02 11:51:29 -07:00
James Lu
956167538a unreal: add warnings & more descriptive errors regarding mixed_link 2016-04-02 10:56:41 -07:00
James Lu
f3ceefe87f unreal: initialize legacy users on the right server 2016-04-02 10:56:13 -07:00
James Lu
c4273e68a4 unreal: fix for Python 3.4 support
The general syntax for unpacking lists with *list was only introduced in Python 3.5: https://www.python.org/dev/peps/pep-0448/
2016-04-02 09:32:03 -07:00
James Lu
4f08894227 unreal: typofix 2016-04-01 23:35:48 -07:00
James Lu
10be962318 unreal: actually return the hook data for NICK & KILL 2016-04-01 23:27:31 -07:00
James Lu
44dc856ffa unreal: use an awful outFilter hack to convert PUIDs->nicks when sending outgoing commands 2016-04-01 23:14:04 -07:00
James Lu
74ee1ded4d unreal: Start work on some really hacky Unreal 3.2 compat code (#193)
What works:
- Tracking user JOINs, QUITs, PARTs

What doesn't work:
- Sending messages from PyLink clients to 3.2 users. They have fake UIDs (nick@counter) which don't go anywhere, meaning messages are silently dropped.
2016-04-01 23:02:12 -07:00
James Lu
fd32bbf45f unreal: fix typo in last commit 2016-04-01 19:12:58 -07:00
James Lu
efcc30c983 unreal: don't confuse legacy SERVER introductions from our uplink with protocol negotiation
Reported by Rascle on IRC.
2016-04-01 19:08:25 -07:00
Daniel Oaks
80b659a940 hybrid: Actually set irc.connected on CAPAB, like other protocols 2016-03-30 17:24:26 +10:00
Daniel Oaks
9d40efc114 hybrid: Steal some more handlers from TS6/Unreal protocols 2016-03-30 16:25:03 +10:00
Daniel Oaks
153b77c4bb hybrid: Set irc.connected after receiving EOB 2016-03-30 15:48:44 +10:00
Daniel Oaks
4b14134a17 hybrid: Fix TBURST, support WHOIS 2016-03-30 13:59:04 +10:00
Daniel Oaks
177e690dd3 hybrid: Support TBURST 2016-03-30 13:51:53 +10:00
Daniel Oaks
89c88d9111 hybrid: Use standard handle_events (with our special additions), don't lower() commands anymore since that isn't done now 2016-03-30 13:40:35 +10:00
Daniel Oaks
c71010f1b0 hybrid: Reorder a little, send EOB right after sending SERVER 2016-03-30 11:38:03 +10:00
Daniel Oaks
c4608fb891 hybrid: Set prefixmodes properly, handle MODE and TMODE 2016-03-30 11:34:52 +10:00
Daniel Oaks
a2bd0a8617 hybrid: Fix JOIN, handle JOIN (hopefully correctly), send EOB after receiving EOB 2016-03-30 09:11:43 +10:00
Daniel Oaks
3cd2dbac5a hybrid: Update for new methods 2016-03-30 09:11:43 +10:00
Daniel Oaks
6ff06cb881 hybrid: Use new CLIENT_OPERED name 2016-03-30 09:11:43 +10:00
Daniel Oaks
e914dc1e8e hybrid: Start making modes more consistent 2016-03-30 09:11:43 +10:00
Daniel Oaks
46610d217d hybrid: Remove silly debug print 2016-03-30 09:11:42 +10:00
Daniel Oaks
24589b21c1 hybrid: Handle PONG 2016-03-30 09:11:42 +10:00
Daniel Oaks
7ec4962412 hybrid: Implement suggested changes, remove comments 2016-03-30 09:11:42 +10:00
Daniel Oaks
1e79adc171 hybrid: Start module, very very broken 2016-03-30 09:11:42 +10:00
James Lu
662d1ce03f inspircd: warn that inspircd 2.2 support is experimental 2016-03-26 18:19:19 -07:00
James Lu
d5d3c2422b inspircd: define minimum & target protocol versions instead of hardcoding them 2016-03-26 16:23:22 -07:00
James Lu
70b9bde2c4 unreal: fix a little typo 2016-03-26 13:26:57 -07:00
James Lu
ad517f80da unreal: bump protocol version to 4000 2016-03-26 13:19:06 -07:00
James Lu
19ac5b59a5 protocols: drop underscores from pre-defined opertypes 2016-03-26 13:15:22 -07:00
James Lu
44083ccd5e core: Store opertype info in all IrcUser objects
This allows plugins to define custom opertypes for their clients, and still have them show in WHOIS queries.
2016-03-26 12:55:23 -07:00
James Lu
bdbc1020f2 Merge branch 'master' into devel 2016-03-26 12:50:35 -07:00
James Lu
9cd1635f68 unreal: fix wrong variable name in handle_umode2 2016-03-26 12:50:23 -07:00
James Lu
f618b96b34 inspircd: add VERSION handling
InspIRCd is different from the rest in that it stores and caches version data for other servers during BURST, instead of whenever it is requested by a client.
2016-03-26 11:35:29 -07:00
James Lu
23056e97e3 protocols & coreplugin: add handlers for VERSION requests 2016-03-26 11:27:07 -07:00
James Lu
e183078645 protocols: Remove "secret" testing channel name 2016-03-20 17:34:13 -07:00
James Lu
d12e70d5e5 ts6: unset has_eob correctly on reconnects
(cherry picked from commit 6962f3b73e)
2016-03-19 18:37:48 -07:00
James Lu
6962f3b73e ts6: unset has_eob correctly on reconnects 2016-03-19 18:19:41 -07:00
James Lu
15b35f1853 ts6: support charybdis +T mode (closes #173) 2016-03-07 21:38:57 -08:00
James Lu
d531201850 Merge branch 'master' into devel 2016-02-27 17:47:55 -08:00
James Lu
a7a98c9a52 inspircd: format kill reasons like "Killed (sourcenick (reason))"
InspIRCd will show the raw kill message sent from servers as the quit message.
So, make kills look actually like a kill instead of someone quitting with an arbitrary message.
2016-02-26 07:16:39 -08:00
James Lu
decdf141fd unreal: don't use updateClient to update hostname of clients internally 2016-02-20 18:19:15 -08:00
James Lu
2ebdb4bad6 unreal: support services account tracking (#25), fix handle_SVSMODE applying modes on the wrong target 2016-02-20 18:16:21 -08:00
James Lu
cabdb11f86 inspircd: implement services account tracking (#25) 2016-02-20 17:54:46 -08:00
James Lu
0fff91edfd ts6: implement services account tracking (#25)
This adds a new protocol hook: [user_logging_in, 'CLIENT_SERVICES_LOGIN', {'text': account_name}], sent whenever someone logs in to services. Actual state tracking is done in coreplugin.py
2016-02-07 18:38:22 -08:00
James Lu
5877031203 Merge branch 'master' into devel 2016-01-30 23:39:08 -08:00
James Lu
341c208513 inspircd, ts6: don't crash when receiving an unrecognized UID 2016-01-27 18:41:25 -08:00
James Lu
fdad7c9c16 ts6: record null IPs as 0.0.0.0 instead of 0 2016-01-23 13:52:37 -08:00
James Lu
3c3ae104ba unreal: remove bad check for users connecting via IPv4
This fixes a crash when... anyone using IPv4 connects.
2016-01-23 13:52:37 -08:00
James Lu
4b939ea641 ts6: rewrite end-of-burst code (EOB is literally just a PING in ts6) 2016-01-23 13:52:37 -08:00
James Lu
06d22722dc protocols: parse modes on the TARGET, not the sender
This fixes crashes on AssertionError when the sender of a MODE is a server.
2016-01-19 21:23:07 -08:00
James Lu
bb9d87bdca inspircd: split protocol negotiation handlers into separate functions (#156)
Use the generic handle_events in ts6_common, which passes everything to event handlers appropriately.
2016-01-17 21:03:10 -08:00
James Lu
814ebc9fe0 ts6: use new-style module design (#156) 2016-01-16 18:14:46 -08:00
James Lu
a220659eaf Move unreal's handle_events block to ts6_common
Precursor to part 2 of #156.
2016-01-16 17:48:22 -08:00
James Lu
812a866a4e protocols: rename pingServer -> ping 2016-01-16 17:11:23 -08:00
James Lu
3d0bf18001 protocols: rename topicClient -> topic; topicServer -> topicBurst
This is one of the few commands that I won't consolidate at this time, because there is actually a difference in how most IRCds handle topic bursts and normal topic changes
2016-01-16 17:09:52 -08:00
James Lu
5ccf204c75 protocols: consolidate modeClient and modeServer into mode() 2016-01-16 17:08:17 -08:00
James Lu
eef97ac035 protocols: consolidate killServer / killClient into kill() 2016-01-16 17:03:22 -08:00
James Lu
975ace3e04 ts6_common: consolidate kickClient and kickServer into kick 2016-01-16 16:56:40 -08:00
James Lu
ee65ac60e1 protocols: rename sjoinServer(...) -> sjoin(...) 2016-01-16 16:53:46 -08:00
James Lu
9a61e64dfc protocols: squitServer(...) -> squit(...) 2016-01-16 16:53:06 -08:00
James Lu
5324475d18 protocols: quitClient(...) -> quit(...), partClient(...) -> part(...) 2016-01-16 16:51:54 -08:00
James Lu
7e5284969d protocols: rename nickClient(...) -> nick(...) 2016-01-16 16:51:04 -08:00
James Lu
196282db86 protocols: numericServer(...) -> numeric(...) 2016-01-16 16:47:35 -08:00
James Lu
3a53005d8c protocols: messageClient -> message, noticeClient -> notice 2016-01-16 16:44:23 -08:00
James Lu
108be5e25e protocols: rename knockClient -> knock 2016-01-16 16:41:17 -08:00
James Lu
20cb65e668 protocols: rename awayClient -> away 2016-01-16 16:40:36 -08:00
James Lu
b4e5c57a35 protocols: rename inviteClient(...) -> invite(...) 2016-01-16 16:38:27 -08:00
James Lu
acdd7dbb78 protocols: rename joinClient(...) -> join(...) 2016-01-16 16:36:45 -08:00