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
James Lu
ff6841c551
protocols: record the right sender in TOPIC handlers (first part of #127 )
2016-01-09 20:50:55 -08:00
James Lu
8db8f6b6c4
note to self: never use case-insensitive find/replace again
2016-01-09 18:34:41 -08:00
James Lu
48203ff321
protocols: reword error text
2016-01-09 17:44:18 -08:00
James Lu
9a43a620f9
unreal: implicitly set +xt when SETHOST or CHGHOST is received ( #136 )
2016-01-03 11:28:35 -08:00
James Lu
adcb61da67
unreal: update users' hosts properly on setting +x/-x
...
Closes #136 .
2016-01-03 11:28:26 -08:00
James Lu
eac934c237
classes: sort code, move nickToUid, clientToServer, isInternalClient, isInternalServer into the Irc class
...
The following BREAKING changes are made:
utils.nickToUid(irc, nick) -> irc.nickToUid(nick)
utils.isInternalClient(irc, uid) -> irc.isInternalClient(uid)
utils.isInternalServer(irc, uid) -> irc.isInternalServer(uid)
utils.clientToServer(irc, uid) -> utils.getServer(uid)
2015-12-31 17:28:47 -08:00
James Lu
8b8895988d
ts6: map EUID hook to UID
2015-12-30 16:53:35 -08:00
James Lu
741fed9acd
protocols: allow changing remote users' hosts in updateClient
...
Closes #142 .
2015-12-30 15:54:09 -08:00
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