James Lu
96a202acce
core: make User.channels use IRCCaseInsensitiveSet
...
Closes #515 . This is an API breaking change!
2017-08-25 13:26:34 -07:00
James Lu
80766e051e
core: define two (joined) versions of the channels index
...
Closes #509 .
PyLinkNetworkCore.channels is split into the following:
- irc._channels which implicitly creates channels on access (mostly used in protocol modules)
- irc.channels which does not (recommended for use by plugins)
2017-08-25 02:12:08 -07:00
James Lu
a02fa45d96
clientbot: use existing fallback hostname abstraction instead of hardcoding it separately
2017-08-24 01:12:45 -07:00
James Lu
903f86a342
clientbot: add extended-join support ( #290 )
2017-08-23 19:28:10 -07:00
James Lu
abdc67e0c1
clientbot: track numeric 900 (RPL_LOGGEDIN) and set our own account name
...
This is mostly for completeness.
2017-08-23 19:19:53 -07:00
James Lu
c9f10796ee
clientbot: move services account setting bits into a shared function
2017-08-23 19:16:20 -07:00
James Lu
c2fc9080cc
clientbot: don't send JOIN hooks for the bot itself when receiving JOIN
...
Closes #519 .
2017-08-23 19:11:15 -07:00
James Lu
bd6272abf6
clientbot: add a dummy internal host for the clientbot bot...
2017-08-21 23:28:10 -07:00
James Lu
060a947798
clientbot: whoops, fix wrong arg count for WHOX services acc handling
2017-08-21 23:27:47 -07:00
James Lu
0bb4a35c6f
Support pre-auth irc.pseudoclient enumeration & configurable altnicks
...
Closes #516 . Closes #288 .
2017-08-21 23:05:56 -07:00
James Lu
6981869c06
clientbot: split up join() and handle_join() to prevent duplicate JOIN/MODE/WHO on connect
2017-08-20 19:24:46 -07:00
James Lu
81f3112d01
clientbot: use WHOX where available to fetch account names on join
2017-08-20 18:49:07 -07:00
James Lu
55f50eb251
clientbot: don't send /NAMES on join, it isn't needed
2017-08-20 17:29:03 -07:00
James Lu
85f283c5f8
clientbot: add support for IRCv3.2 account-tag ( #290 )
2017-08-20 16:52:23 -07:00
James Lu
48c6765411
clientbot: add support for IRCv3.1 account-notify ( #290 )
2017-08-20 16:12:25 -07:00
James Lu
0bbe5d3a1a
clientbot: add support for IRCv3 CHGHOST ( #290 )
2017-08-19 23:55:41 -07:00
James Lu
766450afd3
clientbot: add experimental userhost-in-names support ( #290 )
2017-08-19 23:23:19 -07:00
James Lu
471733bfd0
clientbot: track /who received status by user, not by channel
2017-08-19 22:29:08 -07:00
James Lu
72145e09b8
clientbot: implement away-notify support ( #290 )
2017-08-19 22:04:24 -07:00
James Lu
046fe0c385
protocols: add headers to modules where missing
2017-08-11 12:27:58 -07:00
James Lu
9702030bf5
protocols: continue removing to_lower() calls on channels ( #372 )
2017-08-07 21:54:33 -07:00
James Lu
07fa53d128
protocols: remove direct usage of to_lower() for channels
...
Not needed as of 32249ace3e
(ref #372 )
2017-08-06 18:05:14 -07:00
James Lu
970b38719d
core: rename ping() to _ping_uplink(), and drop the unused source/target arguments
2017-07-04 22:09:50 -07:00
James Lu
276b0b251d
protocols: move handle_pong to IRCCommonProtocol
2017-07-04 21:55:09 -07:00
James Lu
06d69aadf7
clientbot: fix self.connected.set() order
2017-07-03 13:04:43 -07:00
James Lu
ec308acfcb
protocols: move 005 handling code to IRCCommonProtocol
...
Also enable extended server negotiation for ngIRCd, which really just passes 005 between servers (nifty!)
2017-07-03 12:45:39 -07:00
James Lu
78034096a8
protocols: merge _expandPUID into ircs2s_common
2017-07-03 00:11:49 -07:00
James Lu
d4260734dc
clientbot: make sure incoming server messages don't clash with a PSID/PUID
2017-07-02 22:13:57 -07:00
James Lu
1e39fb78db
clientbot: rename _validateNick -> _check_puid_collision
2017-07-02 22:11:40 -07:00
James Lu
ce2852bdc0
clientbot: get rid of _get_SID in message parsing
...
It isn't needed because any external server messages are sent raw.
2017-07-02 22:09:22 -07:00
James Lu
51d8d3b3b8
clientbot: store external server names raw instead of using server name mangling
2017-07-02 21:59:40 -07:00
James Lu
ee5a884328
clientbot: fix imports for PyLink 2.0
2017-07-02 21:59:29 -07:00
James Lu
54d7fe6dc5
protocols: convert IrcServer usage to Server
2017-06-30 21:45:10 -07:00
James Lu
a204d2b2db
core: convert IrcUser calls to User
2017-06-30 21:44:31 -07:00
James Lu
b81a03fda9
protocols: Channel.removeuser -> Channel.remove_user
2017-06-30 21:40:50 -07:00
James Lu
7d68c03101
various: convert sortPrefixes/getPrefixModes calls to snake case
2017-06-30 21:40:05 -07:00
James Lu
927fa9aac9
protocols: updateClient -> update_client
2017-06-30 21:29:38 -07:00
James Lu
f38b9c9a2c
protocols: topicBurst -> topic_burst
2017-06-30 21:29:11 -07:00
James Lu
d0846170c4
protocols: spawnServer -> spawn_server
2017-06-30 21:27:15 -07:00
James Lu
f60dc8fa37
protocols: spawnClient -> spawn_client
2017-06-30 21:25:58 -07:00
James Lu
a4e321522b
protocols: migrate away from camel case
2017-06-29 22:56:14 -07:00
James Lu
77357b765e
clientbot: rename various private functions
...
* capEnd -> _do_cap_end
* requestNewCaps -> _request_ircv3_caps
* saslAuth -> _try_sasl_auth
* sendAuthChunk -> _send_auth_chunk
* parseMessageTags -> parse_message_tags
2017-06-27 22:28:31 -07:00
James Lu
310f3f23b8
protocols: rename various parse* functions (no migration stub)
...
Renamed to camel case:
- parseArgs -> parse_args
- parsePrefixedArgs -> parse_prefixed_args
Renamed to show that we're specifically parsing ISUPPORT data:
- parseCapabilities -> parse_isupport
- parsePrefixes -> parse_isupport_prefixes
2017-06-27 17:16:46 -07:00
James Lu
56275c5a3b
NetworkCore: rename removeClient -> _remove_client (no migration stub)
2017-06-27 16:21:30 -07:00
James Lu
7814914a05
classes, protocols: convert self.irc usage to self
2017-06-25 02:09:52 -07:00
James Lu
d0209f720a
Rewrite network intitialization bits
...
- Move protocols.connect -> protocols.post_connect to fix namespace conflict
- Starting an IRC connection is now explicit (via irc.connect instead of __init__)
2017-06-25 01:12:58 -07:00
James Lu
f8155ff74c
protocols: sed -i 's/_getSid/_get_SID/g'
2017-06-16 17:13:30 -07:00
James Lu
a60d746e3b
protocols: sed -i 's/_getUid/_get_UID/g'
2017-06-16 17:13:30 -07:00
James Lu
7ca98eb965
Split IRC-specific code from classes.Protocol into a new IRCCommonProtocol ( #454 )
2017-06-16 17:13:26 -07:00
James Lu
cfec70730f
clientbot: reinitialize PUID generators on connect
...
Closes #448 .
2017-05-12 19:57:24 -07:00
James Lu
2feb93aaf0
clientbot: generate PUIDs/PSIDs with the nick or server name as prefix
2017-04-09 15:32:13 -07:00
James Lu
3f6501fa88
clientbot: make sure incoming nicks don't clash with a PUID/PSID
...
This should really never happen, but it might break quite a few things if it does.
2017-04-09 15:12:52 -07:00
James Lu
cc9ffd47b1
clientbot: fix misleading comment
2017-04-09 15:01:49 -07:00
James Lu
bf1d7812e2
clientbot: track channel modes and TS on join
...
Closes #345 .
2017-04-09 14:49:19 -07:00
James Lu
9d50a4363b
clientbot: make SASL timeout configurable & raise default to 15 secs
2017-04-05 23:08:17 -07:00
James Lu
029bb38af8
protocols: skip queuing when responding to PING
2017-03-28 22:30:33 -07:00
James Lu
efe468b0d2
protocols: declare slash-in-nicks, slash-in-hosts, underscore-in-hosts as necessary ( #337 )
2017-03-15 23:58:51 -07:00
James Lu
936535786e
clientbot: declare clear-channels-on-leave capability
2017-03-15 23:47:32 -07:00
James Lu
47f0b7626f
clientbot: time out CAP/SASL after 5 seconds
...
Closes #424 .
2017-03-04 23:54:16 -08:00
James Lu
9420f21680
clientbot: send CAP LS before NICK/USER so that it consistently gets a response before connect
...
Previously, SASL was failing on networks like freenode, as the connection completed before a CAP response was received.
2017-03-03 15:39:28 -08:00
James Lu
8424870ec3
clientbot: abort when receiving a QUIT from uplink ( #405 )
2017-02-17 22:27:38 -08:00
James Lu
75158c47e2
clientbot: block PRIVMSG/NOTICE from being routed the wrong way ( #405 )
2017-02-17 22:27:38 -08:00
James Lu
fb9144a715
clientbot: always add channels to users' channel lists in names reply
...
Do this regardless of whether the user is already added to the channel's user list/kick queue, since those are tracked separately.
Closes #388 .
2017-01-09 22:23:59 -08:00
James Lu
ccfc2f601d
clientbot: explicitly send /names after join ( #388 )
2017-01-09 22:23:59 -08:00
James Lu
602f35cb70
clientbot: fix message recognition treating nick prefixes without ident@host as servers
2017-01-09 22:23:59 -08:00
James Lu
e566b99b75
clientbot: don't crash if we receive /who for someone we don't know
2016-12-27 22:16:12 -08:00
James Lu
f1da5c57e8
clientbot: don't repeat KICK hooks if the source is internal
...
This prevents KICK events from being relayed twice to Clientbot links, when the kicked user is also a Clientbot user.
2016-12-27 22:09:16 -08:00
James Lu
59f232d69f
clientbot: fix SASL PLAIN auth on Python 3.4
...
A strange bug causes "TypeError: unsupported operand type(s) for %: 'bytes' and 'tuple'" when formatting multiple args into a byte string using %b.
2016-12-27 18:16:15 -08:00
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
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
c57fabc9ef
core, protocols: add server argument to IrcUser ( #355 )
2016-11-09 18:40:16 -08: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
4dd0709f66
protocols, core: remove unused imports
2016-10-01 12:43:12 -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
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
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