James Lu
a96bb0ce11
clientbot: make unattended SASL reauth optional
2016-12-19 01:06:49 -08:00
James Lu
68c618887f
clientbot: auto-attempt SASL when it is introduced in CAP NEW
2016-12-19 00:54:20 -08:00
James Lu
f42d49b8eb
cleintbot: only CAP END if we haven't registered yet
2016-12-19 00:52:28 -08:00
James Lu
880714b2f2
clientbot: implement CAP DEL, CAP NEW
2016-12-19 00:40:19 -08:00
James Lu
fdda28799c
clientbot: fix message tag parsing
2016-12-19 00:18:15 -08:00
James Lu
3a8710540c
Merge branch 'devel' into wip/ircv3
2016-12-19 00:10:07 -08:00
James Lu
5f6337a734
Merge branch 'master' into devel
...
Conflicts:
plugins/networks.py
2016-12-18 00:15:24 -08:00
James Lu
194a62fcea
protocols: implement basic nick collision detection in UID handlers
...
Closes #285 . Closes #375 .
2016-12-18 00:13:42 -08:00
James Lu
9bfa0c9bb8
clientbot: whitelist supported SASL mechanisms, and abort on invalid ones
2016-12-17 16:18:11 -08:00
James Lu
90e10f948e
clientbot: rename conf value sasl_mech -> sasl_mechanism
2016-12-17 16:18:11 -08:00
James Lu
0cc1ff8fa3
clientbot: log CAP REQ, CAP NAK events
2016-12-17 16:18:11 -08:00
James Lu
8b0b4bfcc4
clientbot: log SASL failures to warning instead of info
2016-12-17 16:18:11 -08:00
James Lu
651752d23d
clientbot: send CAP END if SASL is disabled
2016-12-17 16:18:11 -08:00
James Lu
9cc817d544
clientbot: require SSL for SASL external, better grammar in SASL misconfiguration errors
2016-12-17 16:18:11 -08:00
James Lu
ffed5e3378
clientbot: also CAP END on 906 (SASL aborted)
2016-12-17 16:18:11 -08:00
James Lu
8666151189
clientbot: properly verify ACKed/NAKed caps, add support for SASL PLAIN & EXTERNAL
2016-12-17 16:17:36 -08:00
James Lu
3bc9b1bc55
clientbot: implement IRCv3.2 CAP and IRCv3.1 multi-prefix ( #290 )
2016-12-16 22:28:40 -08:00
James Lu
cbc7f438d2
clientbot: implement preliminary message tags parsing
...
Untested so far...
2016-12-16 22:28:22 -08:00
James Lu
7e37a90c80
clientbot: delete channels on kick / part, or if a channel becomes empty after parting
...
Closes #314 .
2016-12-16 20:50:36 -08:00
James Lu
0815df1bca
Irc: rewrite isInternalClient to use getServer & return a boolean ( #355 )
2016-11-09 18:55:53 -08:00
James Lu
c57fabc9ef
core, protocols: add server argument to IrcUser ( #355 )
2016-11-09 18:40:16 -08:00
James Lu
405b886ba2
clientbot: overload _getUid() to deal with nick collisions between virtual clients and Clientbot users
...
Closes #327 .
(cherry picked from commit 05e2d6d060
)
2016-10-14 22:33:29 -07:00
James Lu
eb64190228
Clientbot: use a more specific realname fallback
...
(cherry picked from commit 288a2fffd7
)
This is cherry-picked as a prerequisite for the next commit.
2016-10-14 22:33:10 -07:00
James Lu
05e2d6d060
clientbot: overload _getUid() to deal with nick collisions between virtual clients and Clientbot users
...
Closes #327 .
2016-10-14 22:29:13 -07:00
James Lu
7917502799
clientbot: make oper status tracking a network-specific option
2016-10-09 19:04:59 -07:00
James Lu
288a2fffd7
Clientbot: use a more specific realname fallback
2016-10-07 21:08:55 -07:00
James Lu
5c2e7e9324
Clientbot: unconditionally block MODE hooks if we're the sender
...
This is another check to prevent possible infinite loops in MODE syncing.
2016-10-07 20:54:52 -07:00
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
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