Commit graph

581 commits

Author SHA1 Message Date
jesopo
38a41a6404 We need to wait for _check to finish so read/writes can be triggered correctly 2019-06-07 11:05:55 +01:00
jesopo
09fbbae5e3 "send" event on SentLines should be run on the main thread 2019-06-07 11:05:43 +01:00
jesopo
b3b4d07e63 Call _check *after* read epoll call - to make sure timeouts are hit accurately 2019-06-07 10:39:31 +01:00
jesopo
f3b6d6df0a Switch to using threading.Condition to trigger write thread 2019-06-07 10:39:19 +01:00
jesopo
1f1b63ea6d Checking if we should enable write buffer should be in _fill_throttle() 2019-06-07 08:02:22 +01:00
jesopo
c89bd74a48 select.poll, as opposed to select.epoll, uses milliseconds not seconds for
timeout
2019-06-06 23:45:33 +01:00
jesopo
23d2993b9f Remove debug print 2019-06-06 23:25:03 +01:00
jesopo
6d44f12193 Use .trigger (without triggering read/write threads) to call _check 2019-06-06 23:23:46 +01:00
jesopo
24ca7ed97f use trigger_write() instead of a raw .send(b"") 2019-06-06 23:19:57 +01:00
jesopo
ef0c2c65e0 use _event_queue for _check, don't .disconnect() from outside of respective
loops
2019-06-06 22:36:56 +01:00
jesopo
ae6c65d743 remove _trigger_function code, it's not used any more 2019-06-06 21:43:21 +01:00
jesopo
d9de4fdec2 Lambda scopes are irritating 2019-06-06 21:03:25 +01:00
jesopo
539bebafea select.epoll -> select.poll 2019-06-06 20:26:05 +01:00
jesopo
0f7b040165 call timer callbacks and expire cach objects on main thread 2019-06-06 20:22:56 +01:00
jesopo
5b7d8dea91 Only trigger read/write threads once 2019-06-06 19:21:18 +01:00
jesopo
05fcb33ff7 print lines as soon as they're read, don't wait for _post_send 2019-06-06 19:15:34 +01:00
jesopo
f96378ac07 move immediate-write-trigger to IRCServer.py, trigger _event_loop for
running=False
2019-06-06 17:58:35 +01:00
jesopo
35b97f836a Merge branch 'master' into feature/write-thread 2019-06-06 17:20:30 +01:00
jesopo
59eeee1030 message-tags are joined by ";", not "," 2019-06-06 17:19:27 +01:00
jesopo
a1ebe8035e Split read/write/process in to 3 different threads 2019-06-06 17:05:44 +01:00
jesopo
2ca4fd48f7 Make params arg for logging functions optional 2019-06-06 12:59:47 +01:00
jesopo
eb7d90bb00 message_tag_escape() message-tag values when .format()ing IRCLine 2019-06-06 09:29:17 +01:00
jesopo
8fe5098739 Make 'circular dependency' WARN more explicitly about 1-to-1 dependencies 2019-06-05 19:13:44 +01:00
jesopo
67b4aa69e2 check_purge() after removing a context as it could make a hook purgable 2019-06-05 16:56:02 +01:00
jesopo
2d46fe0cbf labels: Use BatchType to match, pass lines not line, batch ID isn't a label,
fire event on label response
2019-06-04 17:54:19 +01:00
jesopo
2470c1ec03 Add new BatchType object, to match like how Capability and MessageTag do 2019-06-04 17:51:55 +01:00
jesopo
8dbae6a5e9 Give SentLine (and preproc.send events) a new event object, to track events
related to a line after it is sent
2019-06-04 17:51:20 +01:00
jesopo
3ac01197f2 Send PING and PONG as 'immediate' lines 2019-06-04 14:31:34 +01:00
jesopo
4a4d0a37d7 Only return definitely-writen lines from IRCSocket._send, refactor in prep for
lines that request to be sent 'immediately'
2019-06-04 14:28:35 +01:00
jesopo
a802e66dcf Defer decoding http payload bytestring until after checking ContentType 2019-06-04 13:47:03 +01:00
jesopo
ef221f4165 v1.8.0 release 2019-06-03 13:30:39 +01:00
jesopo
c212d70b68 Hold on to BATCH args, allow event hooks to manipulate batches 2019-06-02 15:18:36 +01:00
jesopo
5204ac3300 fix some CAP related type hints 2019-06-02 10:14:09 +01:00
jesopo
f9f637e084 Remove IRCSendBatch, fix some batch-related type hints 2019-06-02 10:13:51 +01:00
jesopo
20c027fd0b check if we should enable write throttling before writing, clear _recent_sends
when we turn on throttling and only "turn on" throttling once
2019-06-01 22:28:57 +01:00
jesopo
b84d133500 add __str__ and __repr__ defs to IRCLine.ParsedLine 2019-06-01 22:28:37 +01:00
jesopo
e5c11f4aef add 'module-blacklist/whitelist' to bot.conf - use that as well as DB setting 2019-06-01 15:06:57 +01:00
jesopo
5077bad522 list()-ify filter() return, otherwise boolean checks against it are wrong 2019-06-01 15:05:57 +01:00
jesopo
c3454f2bfe available_capability returns str - fix type hint for this 2019-06-01 15:02:38 +01:00
jesopo
dc284bab4a Only enable write throttling when _write_buffer is empty
closes #59
2019-05-31 15:49:34 +01:00
jesopo
f2cf86b8c0 More explicitly require throttle_done() only for _queued_lines 2019-05-31 15:32:55 +01:00
jesopo
a3a61d2e86 Log server name when we see a _send failure 2019-05-30 15:46:01 +01:00
jesopo
367eb1c60e Make labeled-resposnes it's own module, tag and track every sent line 2019-05-30 15:36:10 +01:00
jesopo
f0dee5ebd6 Immutable arg default values leads to weird data persistence 2019-05-30 15:30:15 +01:00
jesopo
b8f778d7bd Only try to send QUITs on ctrl+c when we're connected - sys.exit otherwise 2019-05-29 16:11:47 +01:00
jesopo
768059fcf4 Switch resume.py to use the last server-time it saw, not last .recv() 2019-05-29 15:53:20 +01:00
jesopo
0be9046669 Pass str object to BeautifulSoup, not bytes. closes #56 2019-05-28 10:22:35 +01:00
jesopo
69a780b596 append ".py" when doing find_module on ModuleType.FILE 2019-05-27 16:56:13 +01:00
jesopo
786f04ea16 set changed = True when we pop a module with no dependencies left 2019-05-27 14:50:15 +01:00
jesopo
ce3a0668c6 Throw an exception when we detect a complex circular dependency 2019-05-27 11:42:47 +01:00
jesopo
5b780672a8 Enable TCP keepalives 2019-05-27 07:58:24 +01:00
jesopo
2a93a8f1dd Only check for unknown dependencies once 2019-05-26 20:27:17 +01:00
jesopo
38dd69a71e Only iterate a module's deps, not all modules, when checking for circular deps 2019-05-26 14:47:05 +01:00
jesopo
4048f63538 'cicular' -> 'circular', words are hard 2019-05-26 11:25:52 +01:00
jesopo
9815ddac8a 'cycular' -> 'cicular' 2019-05-26 06:54:29 +01:00
jesopo
69a1f42ecc Add basic comments for dependency-sorting system 2019-05-25 21:47:28 +01:00
jesopo
bb475d5cc8 Implement ordering modules by depends-on hashflag 2019-05-25 21:43:32 +01:00
jesopo
eeee2458d3 Fix utils.parse.hashflags type hints 2019-05-25 21:42:42 +01:00
jesopo
552902d462 Refactor ModuleManager 2019-05-25 18:24:50 +01:00
jesopo
d0634bb54e Don't store hashflags as a dict before returning them - allow duplicate keys 2019-05-25 12:58:07 +01:00
jesopo
a3a2c1e5a4 Store IRCSocket connect_time, show bytes read/write per second in stats.py 2019-05-24 17:32:59 +01:00
jesopo
503969abfd Bump version to v1.7.1 2019-05-24 06:52:25 +01:00
jesopo
b12298135e Bump version to v1.7.0 2019-05-23 19:10:22 +01:00
jesopo
6678076490 Remove column from server.add SQL (leftover from removing 'ipv4' column) 2019-05-21 10:45:24 +01:00
jesopo
ab1074cf4d Remove mention of ipv4 - detect address family automatically 2019-05-21 10:11:09 +01:00
jesopo
db33e12c8c Remove Capability.enabled() - it's unused 2019-05-20 16:36:02 +01:00
jesopo
b12c38c326 typing.List -> typing.Sequence 2019-05-20 16:35:50 +01:00
jesopo
bdd161256d has_capability -> has_capability_str, add new has_capability 2019-05-20 16:33:32 +01:00
jesopo
3ad83655d5 ParsedLine already deals with preventing newlines 2019-05-20 16:19:37 +01:00
jesopo
e752b60f6c use fnmatchcase( so the strings are not case-"normalised" 2019-05-19 16:28:46 +01:00
jesopo
c607a0e67c Implement utils.irc.hostmask_match for glob-like hostmask matching 2019-05-19 16:24:38 +01:00
jesopo
58d6b16744 Remove _name and _draft_name (unused) and add Capability.copy() 2019-05-19 11:00:58 +01:00
jesopo
7671dd2086 Switch back to events.name defaulting to None, use typing.cast to fix linting
error
2019-05-18 21:14:28 +01:00
jesopo
105351d6f3 Add a timestamp to recent_sends for EACH line sent 2019-05-18 19:08:34 +01:00
jesopo
d64d12f8fd give EventCallbacks their event name 2019-05-18 18:35:23 +01:00
jesopo
eccd43d357 Add a way to not put spaces between docstring lines when stripping \n 2019-05-18 18:34:27 +01:00
jesopo
bea8556329 Bump version to v1.6.0 2019-05-17 13:39:55 +01:00
jesopo
7547eee96d Catch server version string, from RPL_MYINFO 2019-05-15 17:12:21 +01:00
jesopo
a80eda614d Add IRCBot.SOURCE, use it in ctcp.py 2019-05-15 10:30:36 +01:00
jesopo
38ba656bda Add type hints to utils.irc.MessageTag 2019-05-14 23:07:42 +01:00
jesopo
421d9c10c7 Add utils.irc.MessageTag and use it for both draft and ratified msgid 2019-05-14 13:02:45 +01:00
jesopo
1c296826d7 Move module black/white list to IRCBot, allow "safe" loading of all modules 2019-05-12 14:10:59 +01:00
jesopo
d291cd5063 Revamp how CAPs are tracked through REQ and ACK/NAK etc 2019-05-11 18:22:40 +01:00
jesopo
295f7a751c Refactor CAPs in to objects 2019-05-11 15:11:09 +01:00
jesopo
091818fa32 Hold context in EventCallback objects, add name<->context translation in
ModuleManager
2019-05-10 16:11:22 +01:00
jesopo
f7eae1a978 Tokenize IRC data as soon as it comes out of IRCServer 2019-05-09 10:36:33 +01:00
jesopo
920dce0221 Add IRCServer.has_user_id, to check if we've seen a user before 2019-05-05 00:16:37 +01:00
Patrick Nappa
2c344c9ddd forgot the beautiful % 2019-05-03 13:50:51 +10:00
Patrick Nappa
471c11e229 ensure that non-url characters not separated by whitespace aren't consumed 2019-05-03 13:43:08 +10:00
jesopo
e844004ba1 Fix reconnect() type hint issues 2019-05-01 17:13:55 +01:00
jesopo
aa1b457632 Change TRIGGER_RETURN and TRIGGER_EXCEPTION to an enum 2019-05-01 17:13:41 +01:00
jesopo
992ab15394 Bump version to v1.5.0 2019-04-30 12:05:59 +01:00
jesopo
280e647a84 Only pass through args from connection params when reconnecting 2019-04-30 12:05:36 +01:00
jesopo
0afe798b83 Support parsing iso8601 with microseconds 2019-04-28 12:11:48 +01:00
jesopo
74c16a1bbe Actually respect default return in Exports.get_one 2019-04-27 14:49:18 +01:00
jesopo
bdcb4b5db2 Add missing ":" 2019-04-25 17:50:41 +01:00
jesopo
1240b154cb Support interfaces that don't have AF_INET and/or AF_INET6 2019-04-25 17:48:51 +01:00
jesopo
7643a962bd Refuse to get the title for any url that points locall 2019-04-25 15:58:58 +01:00
jesopo
dffee4d223 Move REGEX_URL out of isgd.py and title.py in to utils.http 2019-04-24 15:46:54 +01:00
jesopo
e095c56f77 Record and show when a !to was created 2019-04-24 14:32:56 +01:00