James Lu
a8fc9428cf
protocols: migrate to irc.parseModes/applyModes ( #199 )
2016-04-24 21:44:31 -07:00
James Lu
40a86de040
protocols: reword spawnClient description text
2016-04-24 21:17:56 -07:00
James Lu
f8c2ee3ed3
protocols: use KeyedDefaultdict to enumerate UID generators
2016-04-24 21:16:41 -07:00
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