3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 09:19:23 +01:00
Commit Graph

892 Commits

Author SHA1 Message Date
James Lu
72ca41df33 Irc, clientbot: disallow unsetting bans that don't exist
This fixes an infinite loop when:
- Clientbot modesync is enabled
- 2 or more clientbot linked networks show unsetting modes that weren't enabled (e.g. charybdis)
- A user removes a ban

The workaround in clientbot prevents this process from triggering an infinite loop when a mode change acknowledgement is received for unsetting a non-existant ban,
though multiple -b mode changes may still be seen due to race conditions in updating the various networks' states.
2016-10-07 20:54:52 -07:00
James Lu
aa0d1596b0 ts6: don't crash when CHGHOST target is a nick instead of UID
(cherry picked from commit 4dcbc85a81)
2016-10-01 13:43:18 -07:00
James Lu
36e18929de docs, hybrid, ratbox: Mode definition updates 2016-10-01 13:41:11 -07:00
James Lu
eb79f77bd2 ratbox: fixes for mode name consistency 2016-10-01 13:40:10 -07:00
James Lu
19c5a8c64f ratbox: update mode definitions 2016-10-01 13:00:04 -07:00
James Lu
4dd0709f66 protocols, core: remove unused imports 2016-10-01 12:43:12 -07:00
James Lu
625e7b8aae ratbox: handle ENCAP LOGIN (#338) 2016-10-01 12:39:37 -07:00
James Lu
d943a8286f ratbox: fix typo in outgoing REALHOST 2016-10-01 00:40:20 -07:00
James Lu
4dcbc85a81 ts6: don't crash when CHGHOST target is a nick instead of UID 2016-10-01 00:34:38 -07:00
James Lu
bd9885182e ratbox: stub updateClient to prevent hostname desyncs
In ratbox, arbitrary host changing via CHGHOST is not supported.
2016-10-01 00:20:54 -07:00
James Lu
39987b6dcc ts6: supply SAVETS_100 capability for ratbox 2016-10-01 00:11:50 -07:00
James Lu
d6cb5c1ed0 ratbox: implement REALHOST (#338) 2016-09-30 23:46:23 -07:00
James Lu
f618feea26 Initial protocol support for Ratbox (#338) 2016-09-30 23:33:27 -07:00
James Lu
d9fdd9dfcb ts6: modularize required capabilities 2016-09-30 23:33:04 -07:00
James Lu
1cb320f5f4 clientbot: only send MODE if there are modes left after filtering 2016-09-25 20:21:01 -07:00
James Lu
8dd0cb19af clientbot: fix outgoing mode filtering 2016-09-25 20:07:16 -07:00
James Lu
4222cc30a8 relay, clientbot: implement clientbot mode sync
Closes #287.
2016-09-25 20:07:16 -07:00
James Lu
fe5a40d632 ts6: handle legacy UID by wrapping around EUID 2016-09-18 14:13:05 -07:00
James Lu
8589feaedf protocols: fix incomplete renames from c5c77eeb97 2016-09-12 20:16:56 -07:00
James Lu
b43d714011 clientbot: ignore WHO replies for clients we don't know
This fixes various KeyErrors, etc. when processing the WHO reply later on, as Clientbot doesn't track state for anyone who doesn't share a channel with or talks to the bot.

Reported by Kev`Bz via IRC.
2016-09-08 18:45:34 -07:00
James Lu
90f1999c6d clientbot: downgrade bad updateClient() calls to warning 2016-09-08 17:44:02 -07:00
James Lu
ffa89f1e01 nefarious: fix UnboundLocalError when no modes are given on user introduction
Reported by Kev`Bz via IRC.
2016-09-07 06:57:03 -07:00
James Lu
c5c77eeb97 protocols: chandata->channeldata for MODE and JOIN hooks 2016-09-02 17:52:19 -07:00
James Lu
d1e2dfcf61 clientbot: only call spawnClient for new message sources after irc.pseudoclient is set 2016-09-01 13:08:20 -07:00
James Lu
4d4dbb7764 Revert "clientbot: return existing PUIDs in spawnClient if nick exists"
This reverts commit 113fbf9eb8.

Incomplete fix: would confuse virtual service bots and external users if they had the same nick.
2016-09-01 13:00:27 -07:00
James Lu
113fbf9eb8 clientbot: return existing PUIDs in spawnClient if nick exists
This fixes some silly UID duplication with FNC handling.
2016-08-31 23:22:24 -07:00
James Lu
ae63f72cf9 clientbot: decouple inbound and outbound nick changes 2016-08-31 23:12:45 -07:00
James Lu
9bda4094e4 clientbot: handle pre-auth FNC better
Closes #321.
2016-08-31 23:05:36 -07:00
James Lu
be960bf27b clientbot: handle numerics 463 to 465 as fatal error 2016-08-31 22:46:46 -07:00
James Lu
cf5898fb45 clientbot: only send updateClient() hooks if something changes
Closes #323.
2016-08-31 22:32:12 -07:00
James Lu
663d03ed2c relay/clientbot: begin work on outgoing PMs to clientbot users (#318)
This still needs to implement PMs going the other way around, and should eventually distinguish between PMs and private notices.
2016-08-31 14:08:28 -07:00
James Lu
53de6542f6 clientbot: in nick(), make sure irc.pseudoclient exists 2016-08-27 20:39:35 -07:00
James Lu
42a104534a unreal: ensure type safety from last commit 2016-08-27 19:19:47 -07:00
James Lu
8f8cd95395 unreal: use umode +xt instead of SETHOST in spawnClient
This is to ensure vHosts for all PyLink clients are respected.
2016-08-27 19:14:37 -07:00
James Lu
ae94bec6b8 protocols: add a chandata key to SJOIN hook payloads 2016-08-27 18:56:36 -07:00
James Lu
3c7b201f57 protocols: rename 'oldchan' in MODE payloads to 'chandata' 2016-08-27 17:46:35 -07:00
James Lu
814c714145 clientbot: fix nick() using the wrong arguments
I should learn to proofread...

Also, outgoing NICK changes should not implicitly update the state; we should wait for the IRCd's acknowledgement instead.
2016-08-24 22:54:53 -07:00
James Lu
29bfe108fe clientbot: only send SQUIT payload if nicks are affected 2016-08-21 17:43:10 -07:00
James Lu
8cf771be2f ts6: fix typo 2016-08-20 17:36:56 -07:00
James Lu
e9088792af unreal: support TSCTL alltime
Closes #228.
2016-08-17 21:21:18 -07:00
James Lu
c20dd07a2d inspircd: implement /ALLTIME support (#228) 2016-08-12 19:36:40 -07:00
James Lu
94aee8f05c Implement /TIME support (#228) 2016-08-12 19:19:09 -07:00
James Lu
17127dd131 clientbot: send hook payloads for external updateClient
Closes #300.
2016-08-12 18:47:12 -07:00
James Lu
b4e83e7b1a clientbot: basic prefix mode detection (halfop, admin, owner) 2016-08-11 12:46:05 -07:00
James Lu
226089cc3c clientbot: forward SJOIN on the main client as JOIN (#299) 2016-08-11 11:24:23 -07:00
James Lu
3a0a2c7f1c clientbot: don't update state on join()
Wait for NAMES instead to make sure that the join attempt actually succeeded. #299
2016-08-11 11:23:41 -07:00
James Lu
7a0a013c43 clientbot: suppress mode change hooks for internal clients 2016-08-10 21:07:20 -07:00
James Lu
8ac014709b inspircd: track MODSUPPORT and required modules for updateClient()
m_chgident.so, m_chghost.so, and m_chgname.so are required for ident, host, and real name setting to work, respectively.
2016-08-08 23:40:48 -07:00
James Lu
72f9019300 clientbot: remove self.irc.users print 2016-08-08 23:40:24 -07:00
James Lu
12e1a0edff Move handle_error() to the generic protocol 2016-08-08 18:12:07 -07:00
James Lu
73a70d6952 unreal: declare support for ESVID
This capability declares support for account name arguments in service stamps (+d argument in SVS2MODE).

Realistically this doesn't appear to affect any S2S communication, because services packages only check for ESVID support on their uplink, while SVS2MODE is passed raw from services->IRCd->PyLink.
2016-08-08 17:28:45 -07:00
James Lu
671d6d1893 unreal: request VHP capability so cloaked hosts for Unreal3.2 users are sent 2016-08-08 17:05:28 -07:00
James Lu
7dcabf072b unreal: fix services login tracking for UnrealIRCd 3.2 + Anope 1.8
More specifically, if the +d argument in SVS2MODE is a non-zero integer, ignore it and use the user's nick as account name instead.
2016-08-08 16:35:10 -07:00
James Lu
b36ce36451 protocols: send old IrcServer object (serverdata) in SQUIT hooks 2016-08-04 12:50:04 -07:00
James Lu
1c0900b29d clientbot: introduce virtual SQUIT and SJOIN hooks 2016-08-04 11:48:57 -07:00
James Lu
62099e6078 clientbot: move virtual ENDBURST hook to end of MOTD
Possible fix for #299.
2016-08-04 11:10:51 -07:00
James Lu
0fc0f104bd clientbot: pass realhost and IP options to IrcUser 2016-08-02 23:36:20 -07:00
James Lu
d5c5a34467 Merge branch 'master' into devel
Conflicts:
	protocols/ts6_common.py
2016-08-01 18:07:34 -07:00
James Lu
f60e17907a hybrid, unreal: switch to irc.toLower() for channels 2016-08-01 18:06:38 -07:00
James Lu
9a59c68370 protocols: strip leading prefix modes before checking whether msg target is a channel
(cherry picked from commit 2c7b5669bd)
2016-08-01 17:59:31 -07:00
James Lu
f061a2fc68 ts6: replace str.lower() with irc.toLower() for channel names
(cherry picked from commit 791b124cf7)
2016-08-01 17:59:31 -07:00
James Lu
ac358f4199 ts6: add CHW to required capabilities
This is implicitly used by relay when relaying @#channel messages.
2016-07-31 20:42:34 -07:00
James Lu
2ca3dfe689 ts6_common: rewrite =#channel messages to @#channel (charybdis +z support) 2016-07-31 20:38:25 -07:00
James Lu
2c7b5669bd protocols: strip leading prefix modes before checking whether msg target is a channel 2016-07-31 20:30:51 -07:00
James Lu
77a93b17ac ts6: handle ETB 2016-07-31 20:25:17 -07:00
James Lu
791b124cf7 ts6: replace str.lower() with irc.toLower() for channel names 2016-07-31 20:22:12 -07:00
James Lu
891039dba2 Merge branch 'master' into devel 2016-07-29 14:44:54 -07:00
James Lu
358e03f6ce ts6: don't unconditionally apply modes in outgoing sjoin() 2016-07-29 14:44:25 -07:00
James Lu
8eed60a8f5 nefarious: fix nameerror on start 2016-07-29 01:02:18 -07:00
James Lu
2bc066bacb clientbot: don't send duplicate operups (#289) 2016-07-29 00:56:14 -07:00
James Lu
3ad9362247 clientbot: fix oper tracking, add deoper tracking
Closes #289.
2016-07-29 00:54:47 -07:00
James Lu
f457018f89 unreal: remove mixed_link option; this is now implied
pylink<->unreal4<->unreal3.2 links are stable enough.
2016-07-29 00:37:31 -07:00
James Lu
f4922743fc core: SID and hostname options are now optional (#282)
Hostname defaults to a fallback hardcoded in world.fallback_hostname, while SID defaults to None (protocol modules have to deal with this themselves)
2016-07-28 22:23:59 -07:00
James Lu
87c558537f unreal: refactor to use utils.PUIDGenerator
Closes #238.
2016-07-28 21:59:56 -07:00
James Lu
852bd74c3b core: enumerate our server after calling proto.connect()
This gives protocol modules a chance to manipulate their SID before it's added to the internal server list, replacing hacks previously used by the Nefarious and Clientbot modules.

This is the first step to sid-less servers :)
2016-07-28 21:50:51 -07:00
James Lu
c410de2fad Make server config validation protocol specific
Closes #282.
2016-07-28 21:34:00 -07:00
James Lu
c36c32082f inspircd: support SAKICK 2016-07-28 21:05:59 -07:00
James Lu
a56e464eb6 unreal: handle umode +r on burst as services login, even when no explicit accountname is set
Ref #296.

(cherry picked from commit 5800594d55)
2016-07-28 20:20:35 -07:00
James Lu
4fbb7b1791 unreal: remove obsolete comment about cloaked hosts
(cherry picked from commit e7ccfc9156)
2016-07-28 20:20:35 -07:00
James Lu
94ae457a82 nefarious: fix usermode changes internally applying on the wrong target
A regression from fca23c7d55 overwrote the target UID with a nick before passing it into applyModes(), which raises an "unknown mode target" warning and causes the mode change to be dropped.

(cherry picked from commit af21063834)
2016-07-28 20:20:35 -07:00
James Lu
bc5a508cd7 unreal: rework services login handling
This should now support SVS2MODE without account info, used by Anope versions < 2.0? Also, the protocol module no longer stores umode +r as an actual user mode, as doing so isn't needed.

Closes #296.

(cherry picked from commit 97d09c5015)
2016-07-28 20:20:35 -07:00
James Lu
9233a94379 nefarious: forward CMODE and KICK through the server if the sender isn't opped
This prevents mode bounces, kick failures, and the HACK server notices from showing up.

(cherry picked from commit fca23c7d55)
2016-07-28 20:20:35 -07:00
James Lu
5800594d55 unreal: handle umode +r on burst as services login, even when no explicit accountname is set
Ref #296.
2016-07-27 17:38:37 -07:00
James Lu
e7ccfc9156 unreal: remove obsolete comment about cloaked hosts 2016-07-27 17:38:09 -07:00
James Lu
af21063834 nefarious: fix usermode changes internally applying on the wrong target
A regression from fca23c7d55 overwrote the target UID with a nick before passing it into applyModes(), which raises an "unknown mode target" warning and causes the mode change to be dropped.
2016-07-27 16:55:59 -07:00
James Lu
97d09c5015 unreal: rework services login handling
This should now support SVS2MODE without account info, used by Anope versions < 2.0? Also, the protocol module no longer stores umode +r as an actual user mode, as doing so isn't needed.

Closes #296.
2016-07-27 16:55:59 -07:00
James Lu
4002fb9da5 clientbot: only send AWAY when polling if the message has changed 2016-07-26 23:30:26 -07:00
James Lu
fca23c7d55 nefarious: forward CMODE and KICK through the server if the sender isn't opped
This prevents mode bounces, kick failures, and the HACK server notices from showing up.
2016-07-26 18:31:23 -07:00
James Lu
8ce0ceee37 clientbot: properly track oper 2016-07-25 11:02:25 -07:00
James Lu
db9f362857 clientbot: use colon for realname in USER 2016-07-25 11:02:08 -07:00
James Lu
fcf364f958 clientbot: initialize users with umode +i by default 2016-07-25 00:00:27 -07:00
James Lu
a905f74800 relay/clientbot: rework KICK handling to send the right thing at the right times
Some of the logic was inverted so that the Clientbot would try to kick invalid things like GLolol/ovd, and send clientbot KICK payloads when it's supposed to forward an actual kick.

This also fixes KICKs from servers not being relayed by clientbot.
2016-07-24 11:55:46 -07:00
James Lu
05972e500c clientbot: fix marking of internal/external servers 2016-07-24 11:52:34 -07:00
James Lu
8fc310eb24 clientbot: clear who / kick state on connect 2016-07-24 11:15:33 -07:00
James Lu
51dcfb7d1e clientbot: don't leak private messages via the relay 2016-07-23 21:09:15 -07:00
James Lu
0db9d4e69e relay/clientbot: support relaying KICK, QUIT, NICK, CTCP ACTION, and NOTICE 2016-07-23 18:48:27 -07:00
James Lu
3ec11680ea clientbot: handle nick conflicts on connect (43x) 2016-07-23 12:48:26 -07:00
James Lu
a662f93e15 clientbot: fix part/kick handling to only keep state for internal clients 2016-07-23 12:36:13 -07:00
James Lu
3e91118644 relay/clientbot: implement kick, join, part relaying 2016-07-23 12:25:52 -07:00
James Lu
a402d1057e clientbot: send CLIENTBOT_KICK payloads for external clients 2016-07-23 12:04:32 -07:00
James Lu
88e510b4cf clientbot: begin work on special hooks & move event relaying to a separate plugin 2016-07-23 01:16:26 -07:00
James Lu
7eaf074019 clientbot: poll WHO once every pingfreq 2016-07-23 00:06:11 -07:00
James Lu
91310164be clientbot: more descriptive default hostmasks 2016-07-22 22:52:06 -07:00
James Lu
734db841f1 clientbot: track failed KICKs with /NAMES & a timer
Suggested by @cooper.

This tracking system solves the problem of failed relay kicks causing channel desyncs, because what's seen as a successful KICK when PyLink is linked as a service might not forward
successfully on clientbot network. This can be caused due to the clientbot not being opped, the target being immune or having higher access than the clientbot, etc. When a NAMES reply
(delayed in this case) is received for any channel where an initial /WHO has already been received, a JOIN hook will be sent for any users on the kick queue to rejoin them on the relay.
2016-07-22 22:36:34 -07:00
James Lu
d41d123969 clientbot: send away hook and remove extraneous stub assignment 2016-07-22 00:45:37 -07:00
James Lu
ff807b3d47 clientbot: basic WHO handling, implement away() stub 2016-07-22 00:22:56 -07:00
James Lu
04ed7a8f5d clientbot: add MODE handling 2016-07-21 19:12:05 -07:00
James Lu
3d7e8f8420 clientbot: fix wrong args to _squit 2016-07-21 19:11:57 -07:00
James Lu
2d886367b5 clientbot: handle prefix modes in NAMES 2016-07-21 18:49:01 -07:00
James Lu
deddbde2b0 clientbot: implement updateClient for tracking client ident/host 2016-07-21 18:49:01 -07:00
James Lu
3e8ed35aea clientbot: stub kill() and numeric() 2016-07-21 18:16:15 -07:00
James Lu
95ee94e747 clientbot: implement outgoing INVITE 2016-07-21 18:14:23 -07:00
James Lu
a2043d6762 clientbot: make services clients manipulatable 2016-07-21 18:13:17 -07:00
James Lu
1507a87f31 clientbot: wait for KICK acknowledgement before updating state 2016-07-21 18:04:36 -07:00
James Lu
09ce38a53d clientbot: fix wrong variable 2016-07-21 00:11:15 -07:00
James Lu
dac043a1b6 clientbot: stub updateClient too 2016-07-21 00:04:49 -07:00
James Lu
7a93c1bbb1 clientbot: capability negotiation (cmodes,umodes,prefixmodes,casemapping) 2016-07-20 23:59:22 -07:00
James Lu
eef54cd77d classes: Move ISUPPORT-style PREFIX and capabilities handling to Protocol 2016-07-20 23:59:22 -07:00
James Lu
75d88224f1 clientbot: document some functions 2016-07-20 23:59:22 -07:00
James Lu
d2a3a64293 clientbot: use rfc2812-style USER, kthx 2016-07-20 23:59:22 -07:00
James Lu
f970f760aa clientbot: *untested* autopreform support 2016-07-20 23:55:34 -07:00
James Lu
8fb3310d33 clientbot: properly stub a lot more functions 2016-07-20 23:55:34 -07:00
James Lu
dd0c5c7e63 clientbot: format kick reasons with the sender prefix 2016-07-20 23:55:34 -07:00
James Lu
e7ae6ddbff clientbot: in conditionals, don't break if irc.pseudoclient isn't set yet 2016-07-20 23:55:34 -07:00
James Lu
de618393c0 Fix SQUIT handling from 2f1a338 2016-07-20 23:55:34 -07:00
James Lu
387d47808c clientbot: add nick, kick handling; squit and sjoin stubs 2016-07-20 23:55:34 -07:00
James Lu
154421ffde Move SQUIT abstraction into core 2016-07-20 23:55:34 -07:00
James Lu
8b4b08f589 clientbot: names, join, part, quit handling 2016-07-20 23:55:34 -07:00
James Lu
027dfe46a4 clientbot: handle notice, privmsg
This is literally the world's most useless IRC bot now.
2016-07-20 23:55:34 -07:00
James Lu
b1b13a5c63 clientbot: fix args list 2016-07-20 23:55:34 -07:00
James Lu
8981d71fd0 protocols: rename _getOutgoingNick() -> _expandPUID() 2016-07-20 23:55:34 -07:00
James Lu
e0b254e6ad clientbot: ping/pong support 2016-07-20 23:55:34 -07:00
James Lu
58fa769ba0 clientbot: implement JOIN, uplink enumeration 2016-07-20 23:55:34 -07:00
James Lu
c52d542ed8 Initial Clientbot stub, with very rudimentary user handling (#144) 2016-07-20 23:55:34 -07:00
James Lu
1770058e1b Move ts6_common.parseTS6Args to ts6_common.parsePrefixedArgs 2016-07-20 23:55:34 -07:00
James Lu
47a0a7f8c6 Make plugins/ and protocols/ namespaces 2016-07-20 23:55:26 -07:00
James Lu
80d7be8c7d nefarious: add (untested) SVSNICK handler based on P10 docs
Closes #269.
2016-07-12 21:58:08 -07:00
James Lu
bced9506c3 ts6: add RSFNC to supported caps 2016-07-11 23:29:44 -07:00
James Lu
21d03e7b69 protocols: implement SVSNICK hooks for InspIRCd, Charybdis, UnrealIRCd (#269)
More testing still needs to be done with this on Nefarious, as atheme (what I'm testing against) doesn't use P10 SVSNICK yet.
2016-07-11 23:21:08 -07:00
James Lu
7c1a80708b unreal: demote mode bounce notices to DEBUG 2016-07-11 16:37:01 -07:00
James Lu
64dd7e9387 unreal: fix server name of the uplink not being saved
Closes #268.
2016-07-11 16:20:10 -07:00
James Lu
c04f9d1879 protocols: move handlers for AWAY, VERSION, WHOIS, and QUIT to ircs2s_common 2016-07-11 16:08:46 -07:00
James Lu
d91589c4da protocols: move handle_whois to ts6_common 2016-07-11 16:00:08 -07:00
James Lu
84452bec2e inspircd: always make PyLink handle WHOIS (closes #267)
This removes the use_experimental_whois option, which is always enabled now.

The rationale behind this is that PyLink cannot accurately track signon and idle times for things like relay users, without forwarding WHOIS requests between servers in a way the hooks system is really not optimized to do. However, no IDLE response means that no WHOIS data is ever sent back to the calling user, so this workaround is probably the best solution, aside from faking values.
2016-07-10 22:08:56 -07:00
James Lu
c1cd6f42a0 updateTS: Fix mode tracking again
It looks like we actually do need to track whether we're sending or receiving modes. This time, do so /properly/.
2016-07-10 21:36:18 -07:00
James Lu
fa59e2bded ts6_common: force nick TS to 100 in SAVE 2016-07-10 21:20:47 -07:00
James Lu
a06b478a2e ts6_common: update nick TS on SAVE as well (#267) 2016-07-10 21:14:12 -07:00
James Lu
16b162ffbe protocols: update nick TS on nick change (#267) 2016-07-10 21:10:57 -07:00
James Lu
ade0fa707e nefarious: fix wrong variable in last commit 2016-07-10 21:01:01 -07:00
James Lu
8b04a51daf nefarious: only send EOB_ACK to uplink
Closes #266.
2016-07-10 20:37:21 -07:00
James Lu
1675c43841 ts6: the @cooper fix
Validate that incoming TS is valid, because bad user timestamps like 0 will cause InspIRCd networks to SQUIT if forwarded over Relay.
2016-07-10 20:37:07 -07:00
James Lu
7d321e2e6c inspircd: only send services_login hooks if the user exists
With SASL, services_login can be called before the user is registered. We should ignore that because the actual accountname is still bursted later.
2016-07-08 12:08:13 -07:00
James Lu
e0f050c195 Irc: add getFriendlyName() abstraction
Closes #260.
2016-07-06 22:30:21 -07:00
James Lu
3b80802d1a protocols: rewrite encapsulated commands implicitly
Closes #182.
2016-07-05 13:27:31 -07:00
James Lu
ed6293e54a nefarious: define access_sort() as a static method 2016-07-05 00:42:17 -07:00
James Lu
5ef135d888 nefarious: use handle_kill (with kill path support) from ircs2s_common
Ref #239.
2016-07-05 00:31:24 -07:00
James Lu
bfa69815b4 protocols: split things common between nefarious and ts6_common into a new ircs2s_common module 2016-07-05 00:24:23 -07:00
James Lu
26f4a9c276 nefarious: fix 'changedmodes' type inconsistency causing crashes 2016-07-05 00:13:33 -07:00
James Lu
d549e2ae47 protocols: format kills properly in ts6_common.handle_kill() (#239)
This separates the kill handling for InspIRCd and other TS6 protocols, as InspIRCd pre-formats kills when they are sent.
2016-07-05 00:08:02 -07:00
James Lu
3457da16bd protocols: Move kill() into ts6_common, and make unreal.py use it
Ref #239. protocols/unreal was hardcoding a killpath, lazy me...
2016-07-04 23:43:11 -07:00
James Lu
d0b7d44f1a ts6: implement kill paths in outgoing KILL (#239) 2016-07-04 23:43:11 -07:00
James Lu
6c8731a55a inspircd: refactor opertype handling and opertypes for Services
This gives all protected service clients with +k a special "Network Service" opertype.
2016-07-01 21:03:10 -07:00
James Lu
55e0da96c3 Merge remote-tracking branch 'origin/master' into devel 2016-07-01 20:42:46 -07:00
James Lu
fde7860fc7 ts6: fix wrong args in TB handling
I'm not sure where I got that example from. It's wrong.
2016-07-01 19:45:13 -07:00
James Lu
e8ecc1c775 ts6: 10 modes per line, not 9
I must've made it shorter just to be safe, but that isn't necessary.
2016-06-27 23:40:58 -07:00
James Lu
982e7c43f2 ts6: cut off BMASK at 12 args per line to prevent message cutoff
Ref #253.
2016-06-27 23:35:56 -07:00
James Lu
12f1cce6a9 ts6: 12 users max are allowed in each SJOIN message, not 10 2016-06-27 23:13:39 -07:00
James Lu
f458a40e1c inspircd: new use_experimental_whois option, which forces PyLink to handle WHOIS requests locally 2016-06-27 22:28:37 -07:00
James Lu
57afa806e3 inspircd: implement raw numeric sending 2016-06-27 22:28:00 -07:00
James Lu
b1e138d9c5 nefarious: fix wrong variable in "/join 0" handling causing crashes
(cherry picked from commit 5cb550afd9)
2016-06-26 11:38:09 -07:00
James Lu
fbeb3a3747 protocols: fix ts actually defaulting to None in sjoin() 2016-06-25 13:56:24 -07:00
James Lu
d2956c3d00 protocols: return uplink field in SQUIT handlers 2016-06-25 13:34:43 -07:00
James Lu
5cb550afd9 nefarious: fix wrong variable in "/join 0" handling causing crashes 2016-06-25 11:33:56 -07:00
James Lu
167963ddc4 updateTS: fix handling for outbound modes
Outgoing and incoming modes should be handled the same way - we're only dealing with a "received TS" which could originate from PyLink (sjoin() in protocols) OR the uplink.
2016-06-24 13:24:44 -07:00
James Lu
77e13bce03 inspircd: fix logic for tracking existing bans in sjoin() 2016-06-23 22:36:22 -07:00
James Lu
6555ba2e6a nefarious: burst bans according to the P10 standard
Closes #250.
2016-06-23 22:36:22 -07:00
James Lu
2936e94f50 unreal: warn about mode bounces instead of fighting with the uplink 2016-06-22 22:37:53 -07:00
James Lu
f2b139c828 core: make inbound SJOINs also respect the updateTS() rules 2016-06-22 22:28:15 -07:00
James Lu
6b8e80cd5b core/protocols: add modes option in sjoin(), TS6 BMASK, and mode TS rules in updateTS()
Closes #249.
Closes #250.
2016-06-22 21:34:16 -07:00
James Lu
8969cfb74e Merge branch 'master' into devel
Conflicts:
	plugins/networks.py
2016-06-22 19:10:59 -07:00
James Lu
6060a8857f ts6: fix incorrect WHOIS syntax
Thanks to @cooper for reporting.
2016-06-22 18:34:17 -07:00
James Lu
101bd9664e unreal: fix typo in comment 2016-06-21 17:03:23 -07:00
James Lu
481d70eff8 New import paths for properly installed pylinkirc 2016-06-20 18:18:54 -07:00
James Lu
3e19e9c3f1 unreal: add missing inviteonly (+i) definition 2016-06-19 21:18:35 -07:00
James Lu
26df48c26d ts6: add missing definition for cmode +i 2016-06-19 21:13:14 -07:00
James Lu
5d5d4acd55 hybrid: rename debug umode (+g) to sno_debug 2016-05-31 20:57:17 -07:00
James Lu
d18e9c82f9 ts6: recognize umode +p (override) 2016-05-31 20:57:17 -07:00
James Lu
0124678ed3 nefarious: use SETHOST instead of FAKE for internal clients
Closes #209. Thanks to Jobe and Andromeda on #evilnet for the help!
2016-05-28 13:21:38 -07:00
James Lu
0e298dcb4d nefarious: support SETHOST-based (+h) cloaks
Closes #210.
2016-05-28 12:53:23 -07:00
James Lu
188d2f891c nefarious: use nicks in user MODE targets
This is more consistent with what Nefarious and P10 do.
2016-05-28 12:52:52 -07:00
James Lu
841d58d82e nefarious: set umode +x when changing hosts of service clients 2016-05-28 12:15:27 -07:00
James Lu
ae87def11f Purge c_ and u_ prefixes from named modes
Closes #217.
2016-05-15 11:05:02 -07:00
James Lu
2864c41d7a hybrid: only call endburst once per connection
Since this is based off TS6, both initial PING and EOB are handled as endburst. However, ENDBURST should only be called once per session, or things are respawned automatically and nick collisions happen.
2016-05-14 14:06:14 -07:00
James Lu
998d57dbb3 ts6: recognize elemental-ircd +G (blockcaps) 2016-05-11 21:49:57 -07:00
James Lu
beae4eea9e core: rename utils.fullVersion -> irc.version (#199) 2016-04-30 17:00:28 -07:00
James Lu
3bb1208e74 core: move toLower to Irc (#199) 2016-04-30 16:57:38 -07:00
James Lu
78f8a2fc8d core: move isManipulatableClient, getHostmask to Irc 2016-04-30 16:44:37 -07:00
James Lu
064cb9b6aa core: move reverseModes, joinModes into Irc 2016-04-30 16:33:46 -07:00
James Lu
05752d9f60 Merge branch 'master' into devel 2016-04-29 23:43:15 -07:00
James Lu
01bf0325fb inspircd: fix wrong variable in KILL text 2016-04-29 23:43:03 -07:00
James Lu
bd0874a484 Merge branch 'wip/split-utils' into devel 2016-04-29 23:32:52 -07:00
James Lu
b61ac21e86 hybrid, ts6: adjust umode definitions again
- Prefix non-standard snomask umodes with sno_ to avoid confusion
- Remove _hybrid suffixes and chary_ prefixes, they serve little use
- Re-map some hybrid modes to match existing definitions: showadmin->admin, smessages->snomask, hideops->hideoper, softcallerid->deaf_commonchan
2016-04-29 22:39:37 -07:00
James Lu
0061414ee5 nefarious: remove untested parsing of umode +h for now 2016-04-29 22:32:26 -07:00
James Lu
b78b911323 unreal: fix JOIN handling & normalize channel case
Reported by Rascle on IRC.
2016-04-28 19:17:20 -07:00
James Lu
dd7b3821e9 nefarious: deduplicate outgoing BURST mode prefixes 2016-04-27 16:43:09 -07:00
James Lu
1bd2bd760c hybrid, nefarious: add missing BURST/SJOIN->JOIN hook mapping
Reported by Rascle on IRC.
2016-04-27 16:42:38 -07:00
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