James Lu
c7fd037879
Revise handling of KILL and QUIT hooks
...
- Both of these now always contain a non-empty userdata argument.
- If we receive both a KILL and a QUIT for any client, only the one received first will be sent as a hook.
- Also, adjust _remove_client() to return the data of the user that was removed.
2019-07-01 13:36:53 -07:00
James Lu
61ca8dd781
clientbot: fix error when MODES is defined in ISUPPORT but given no value
2019-06-23 20:13:04 -07:00
James Lu
df468064d6
clientbot: rework to support freeform nicks
...
By overriding _get_UID() to only return non-virtual clients, we can stop worrying about nick conflicts and remove relay nick tags from Clientbot.
2019-06-23 19:46:23 -07:00
James Lu
e25a5df4db
ClientbotBaseProtocol: disallow part() from the main pseudoclient by default
2019-06-16 11:24:45 -07:00
James Lu
44a364df98
Move message tags code from clientbot to ircs2s_common
2019-05-02 15:54:34 -07:00
James Lu
f90b0c8577
clientbot: avoid adding empty nicks to the state
...
It looks like names replies may end with an extra space, which should not be considered as part of the nick list..
2019-04-29 12:04:11 -07:00
James Lu
a8bb5f66e5
clientbot: log the entire args list when splitting /names reply fails
2019-04-29 11:58:18 -07:00
James Lu
9056799633
clientbot: only split /names replies by spaces
...
This fixes issues with colored hostnames because \x1f is treated as a whitespace char by str.split().
Closes #641 .
2019-04-08 22:35:37 -07:00
James Lu
ba17821af4
Declare visible-state-only by default in ClientbotBaseProtocol
2019-02-16 16:43:05 -08:00
James Lu
873283e61e
clientbot: properly bounce kicks on networks not implementing them
2019-02-10 13:01:31 -08:00
James Lu
d089b8d40e
clientbot: split wrapper stuff into a ClientbotBaseProtocol class
...
Closes #632 .
2019-02-10 12:40:02 -08:00
James Lu
298913200c
clientbot: properly handle cases when the bot is told to kick itself
...
- Treat kicks to the PyLink client as a real user kick instead of a virtual one
- Forward on kick hooks if the PyLink client is kick target - this allows things like autorejoin to work
Closes #377 .
2018-08-25 01:14:26 -04:00
James Lu
9cf507183d
clientbot: filter PART hooks for only parts we didn't initialize
...
This fixes Relay being confused by its own "Relay plugin unloaded" /part's, and makes Clientbot's behaviour in this regard consistent with other protocols.
2018-07-18 19:14:47 -07:00
James Lu
76c0db15c4
core: merge TLS validation code into IRCNetwork ( #592 )
...
Certificate verification is now enabled for all Clientbot networks, but not yet for S2S links (self-signed certs are common here and direct IP links even more so)
2018-06-15 15:29:15 -07:00
James Lu
4524aebbac
clientbot: initial pass of TLS cert validation ( #592 )
...
This works OK, but we should make the validation options built-in instead of clientbot-specific.
2018-06-15 02:47:12 -07:00
James Lu
040b009fcb
clientbot: ignore RPL_ENDOFBANLIST (368) responses for removed channels
2018-06-15 02:19:56 -07:00
James Lu
1b68bfadc6
coremods, plugins, protocols: drop now redundant allowAuthed=False in is_oper() calls
2018-06-11 23:56:44 -07:00
James Lu
31a0d36990
clientbot: ignore missing args in 324 / RPL_CHANNELMODEIS
...
Fixes #537 .
2018-06-08 18:45:20 -07:00
James Lu
1ab5d614c0
protocols: convert user TS to an int when receiving new users ( #594 )
2018-05-26 16:26:14 -07:00
James Lu
f20fa5e995
Add User.get_fields(), and rework plugins to fix $nick broken expansions
...
User.nick is no longer a writable attribute since a085aed924
, so it won't show up in __dict__ now.
get_fields() replaces the User.__dict__ hack various plugins used and also provides some new expansion variables:
- $sid and $server expand to the server ID and name respectively
- $modes and $channels are now preformatted strings
- $netname expands to the network name
$manipulatable and $_irc were removed since their values aren't quite meaningful as strings
2018-05-26 02:12:38 -07:00
James Lu
3120fa5396
clientbot: stop sending duplicate JOIN hooks
...
Also set _clientbot_initial_who_received on 315/ENDOFWHO, instead of on the first /who response we get.
Really fixes #551 .
2018-05-09 22:31:19 -07:00
James Lu
451db74f0c
clientbot: don't send duplicate away statuses
2018-05-09 22:23:14 -07:00
James Lu
f54382534c
kick and kill should raise NotImplementedError when not supported by a protocol
...
Closes #605 .
2018-05-09 22:19:03 -07:00
James Lu
8eba402a33
clientbot: drop pre-WHO join bursting with userhost-in-names, it's too unreliable
...
Closes #602 .
Closes #551 .
2018-04-24 12:39:29 -07:00
James Lu
9e212fc0a4
protocols: migrate utils.wrapArguments, splitHostmask use to camel case ( #523 )
2018-03-02 20:23:47 -08:00
James Lu
804791b8af
clientbot: support expansions ($nick, etc) in autoperform
2018-02-20 23:19:32 -08:00
James Lu
37be73d39c
clientbot: add STATUSMSG support ( #570 )
2018-02-18 22:15:19 -08:00
James Lu
ea84497359
protocols: remove the endburst_delay option from spawn_server
...
Interestingly, this was never documented in the protocol module spec...
2018-02-10 15:44:09 -08:00
James Lu
18c1a277f5
clientbot: remove extraneous use of to_lower() in handle_part
2018-01-31 19:35:24 -08:00
James Lu
74848853ac
clientbot: fix KeyError caused by lower() in spawn_server
...
This affected connections to afternet for example.
2018-01-31 19:33:05 -08:00
James Lu
958bb351ca
clientbot: log warnings if the bot cannot join a channel
...
Closes #533 .
This adds handlers for the following numerics:
* ERR_TOOMANYCHANNELS (405)
* ERR_CHANNELISFULL (471)
* ERR_INVITEONLYCHAN (473)
* ERR_BANNEDFROMCHAN (474)
* ERR_BADCHANNELKEY (475)
* ERR_BADCHANMASK (476)
* ERR_NEEDREGGEDNICK (477)
* ERR_BADCHANNAME (479)
* ERR_SECUREONLYCHAN / ERR_SSLONLYCHAN (489)
* ERR_DELAYREJOIN (495)
* ERR_OPERONLY (520)
2017-12-22 12:28:27 -08:00
James Lu
509c2e52c4
clientbot: fix KeyError when there are still queued outgoing messages to a channel we just left
2017-11-05 01:17:59 -08:00
James Lu
544e078512
clientbot: treat 0 as an empty account name (for WHOX)
...
This fixes incorrect "X is logged in (on somenet) as 0" messages in WHOIS.
2017-10-25 16:01:10 -07:00
James Lu
66c762b63f
Merge remote-tracking branch 'origin/clientbot-fixes' into devel
2017-10-10 20:53:12 -07:00
James Lu
25ec88c566
clientbot: don't send empty MODE hooks when enumerating empty ban lists
2017-10-07 21:51:38 -07:00
James Lu
eca40a3d7c
coremods/handlers: implement cleanup code for visible-state-only servers
...
Closes #536 .
Closes #517 .
2017-10-07 21:49:17 -07:00
James Lu
de5ab051aa
clientbot: rename cap. clear-channels-on-leave => visible-state-only ( #517 )
2017-10-07 21:48:48 -07:00
James Lu
740b399ec2
clientbot: block attempts from virtual clients to change to an existing nick ( #535 )
2017-10-07 20:50:09 -07:00
James Lu
d7766d54d5
clientbot: check for nick collisions with virtual clients on NICK
...
Closes #535 .
2017-10-07 20:07:26 -07:00
James Lu
84ff797b5f
clientbot: rewrite _get_UID nick collision handling to be less confusing
2017-10-07 20:03:25 -07:00
James Lu
76a0eb78e3
clientbot: fix possible TypeError in squit()
2017-09-23 21:54:42 -07:00
James Lu
a2a32ed32f
clientbot: wrap outgoing modes to prevent cutoff
2017-09-23 21:54:02 -07:00
James Lu
6e89dbed24
clientbot: implement ban list enumeration on JOIN
...
Closes #530 .
2017-09-23 21:26:13 -07:00
James Lu
5112fcd7d1
clientbot: warn when an outgoing message is blocked
...
Closes #497 .
2017-09-02 21:46:35 -07:00
James Lu
8170e777e8
protocols: move setting irc.connected to endburst
2017-08-30 19:39:57 -07:00
James Lu
c4a3baca7d
protocols: switch to self.is*
2017-08-28 20:07:36 -07:00
James Lu
2a7594e56e
Move PUIDGenerator->classes, IncrementalUIDGenerator->ircs2s_common ( #476 )
2017-08-28 19:42:24 -07:00
James Lu
8c0f19422f
core: Add irc argument to User and Server classes
...
Also, add a __deepcopy__ override to channel because we cannot clone IRCNetwork objects (locks cannot be pickled).
2017-08-25 13:53:45 -07:00
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