3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-30 14:49:28 +01:00
Commit Graph

246 Commits

Author SHA1 Message Date
James Lu
9d9b01839c Split Irc.reply() into _reply() to make 'networks.remote' actually thread-safe
Previously, the Irc.reply_lock check was in the reply() function itself: replacing it with another function checking for the same lock would delay execution,
but then run the wrong reply() code if another module used irc.reply() while 'remote' was executing.
2017-03-31 16:25:28 -07:00
James Lu
ae6c68018b core: half the default throttle time (from 0.01 to 0.005) 2017-03-28 22:38:54 -07:00
James Lu
938a1fb9d7 Irc: reorder comments from last commit 2017-03-26 14:25:02 -07:00
James Lu
397df48efd Irc: simplify runloop error catching, adding RuntimeError and SystemExit (closes #438)
socket.error is aliased to OSError since Python 3.3, and ConnectionError is actually a subclass of OSError.
So, it makes more sense to just catch the more generic type here.

Also, make ProtocolError derive from RuntimeError instead of Exception.
2017-03-26 14:17:37 -07:00
James Lu
e3c0bf6a1b Irc: break out of processQueue as soon as self.aborted is set 2017-03-24 18:40:02 -07:00
James Lu
99d3780773 Irc: add locking for reply() calls (#437) 2017-03-24 00:57:21 -07:00
James Lu
ff6d961922 Protocol: add missing self in hasCap() 2017-03-23 22:41:12 -07:00
James Lu
f512ae1b33 Protocol: add a hasCap() wrapper function (#337) 2017-03-15 23:46:13 -07:00
James Lu
2ca0cf05a0 Start work on protocol capabilities (#337) 2017-03-15 23:32:47 -07:00
James Lu
afc5cc26fa Irc: more compact __repr__ for IrcChannel/IrcServer/IrcUser 2017-03-11 22:49:48 -08:00
James Lu
2028cab04c core: Grow autoconnect delays by a configurable factor whenever connections fail
Closes #348.
2017-03-11 00:21:30 -08:00
James Lu
9e50c5e69a Irc: try to make breaking out of autoconnect loops faster 2017-03-10 23:57:37 -08:00
James Lu
3096c54bb8 Irc: return in msg() if the main client is missing and no explicit source is set 2017-03-10 23:47:07 -08:00
James Lu
9a9e0b2c20 Irc: deprecate the botdata field as well (#273) 2017-03-05 00:14:43 -08:00
James Lu
b4f70bdece Irc: remove duplicate botdata assignment 2017-03-05 00:06:49 -08:00
James Lu
4284853a4a Irc: remove internal use of 'conf' and 'botdata' (#273) 2017-03-05 00:06:44 -08:00
James Lu
7f070448b7 utils, Irc: add abstraction to warn on deprecated attribute usage (#273) 2017-03-05 00:00:26 -08:00
James Lu
5fe277f90d Irc: mention CIDR matching (#411) and casemappings in matchHost() desc. 2017-02-25 22:26:37 -08:00
James Lu
4df8567fa6 Irc: move PYLINK_DISCONNECT firing and connected.clear() into disconnect() (#421)
This may prevent extra irc.connected.clear() calls from messing with the was_connected state.
2017-02-25 22:06:43 -08:00
James Lu
7c0cb92696 Irc: hack in CIDR support in matchHost() (#411) 2017-02-24 22:27:26 -08:00
James Lu
04fa0520a6 Irc: make was_successful check the last Irc.connected state 2017-02-24 22:09:41 -08:00
James Lu
b30d696e3a Irc: add "was_successful" data key to PYLINK_DISCONNECT
This stores whether the network was actually connected before this disconnect message fired (i.e. the disconnect wasn't caused by a configuration error, etc.)
2017-02-24 21:42:44 -08:00
James Lu
3d9f69dba7 Irc: deprecate checkAuthenticated() 2017-02-24 18:42:58 -08:00
James Lu
21cbcb8cf6 Irc: fix / simplify defaults in msg(), reply, error() 2017-02-24 16:28:23 -08:00
James Lu
12bb59d257 Irc: more parseArgs tweaks
- Make parsePrefixedArgs() a class method
- Split the input if parseArgs() is given a raw string instead of a list
2017-02-18 19:58:24 -08:00
James Lu
03fc16dd5a Irc: rewrite parseArgs to be more efficient 2017-02-18 19:47:36 -08:00
James Lu
b3161d6d5d Irc: add a getFullNetworkName() function 2017-02-18 13:32:48 -08:00
James Lu
2f968aca80 Irc: allow defaulting to private command replies (Closes #409)
Squashed commit of the following:

commit c168500235b65f833b1d7fe49ebde674159683ee
Author: James Lu <GLolol@overdrivenetworks.com>
Date:   Thu Feb 16 17:33:36 2017 -0800

    ServiceBot: default notice and private to None

    This is so that it respects the changes from the last commit.

commit f685f3ef522f7f0ee356082c3c1b8b5a4e34b211
Author: James Lu <GLolol@overdrivenetworks.com>
Date:   Thu Feb 16 15:10:33 2017 -0800

    Irc: implement a prefer_private_replies option (#409)
2017-02-16 17:41:07 -08:00
James Lu
7bbe77fe4a Irc: remove unused "bot_clients" attribute
Thanks to @IotaSpencer for pointing this out!
2017-01-21 11:08:37 -08:00
James Lu
e2c0877e9b wrapModes: optionally check for max. modes per line (#253) 2017-01-08 21:19:26 -08:00
James Lu
7594933550 parseModes: reorder logic so that -k * workarounds work again
Thanks @cooper for noticing this.
2017-01-08 17:31:50 -08:00
James Lu
d4b4cfb32e wrap* funcs: convert input args to a list, so that pop(0) always works 2017-01-06 22:13:27 -08:00
James Lu
ba330bbfac updateTS: don't save any broken TS values lower than 750000
Workaround for #385, and other related timestamp issues caused by the TS value getting cut off in mode messages (#283)
2017-01-06 21:56:22 -08:00
James Lu
a3ff32c22e core: implement bind host support
Closes #379.
2017-01-02 12:30:24 -08:00
James Lu
d1d3c3ef15 Irc: oops, wrapModes() needs to be a classmethod 2017-01-02 12:15:44 -08:00
James Lu
5843eebba2 Irc: add wrapModes() abstraction 2017-01-02 12:08:22 -08:00
James Lu
1a1dff7609 IrcChannel: don't assume +nt on new channels
Revert "classes.IrcChannel: default modes to +nt on join"

This reverts commit 1062e47b72.
2017-01-01 00:37:12 -08:00
James Lu
a6b889c469 Irc: fix whitespace 2016-12-17 16:18:11 -08:00
James Lu
cbc7f438d2 clientbot: implement preliminary message tags parsing
Untested so far...
2016-12-16 22:28:22 -08:00
James Lu
e7e2f2c98e core: update "missing dependencies" errors
Closes #363.
2016-12-09 17:15:53 -08:00
James Lu
f9e798cf93 Irc: fix matchHost not using realhost [rp[er;y 2016-11-20 12:29:51 -08:00
Ken Spencer
02dfe5aeab classes: pass force_privmsg_in_private and private booleans to irc.reply() in irc.error() 2016-11-18 23:10:45 -08:00
Ken Spencer
c450d71f84 classes: add irc.error() for easier error replies 2016-11-18 23:10:45 -08:00
James Lu
377df413ed Irc: s/isServiceBot/getServiceBot/g (#355)
This function is renamed to better reflect its return value (ServiceBot object instead of boolean True).
2016-11-09 19:09:59 -08:00
James Lu
08fa64c3cc Irc, services_support: store service name in IrcUser objects (#355) 2016-11-09 19:07:01 -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
ddd0436937 Irc: rewrite getServer() to look for IrcUser.server attribute (#355)
The relevant attribute was introduced in c57fabc9ef.
2016-11-09 18:55:08 -08:00
James Lu
c57fabc9ef core, protocols: add server argument to IrcUser (#355) 2016-11-09 18:40:16 -08:00
James Lu
6ad40c91b4 Irc: explicitly kill connect loop threads after an Irc object has been removed
Possible fix for #351.
2016-11-02 22:34:02 -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