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

673 Commits

Author SHA1 Message Date
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