Commit Graph

109 Commits

Author SHA1 Message Date
Mark Veidemanis 918d410927
Fix variable scope in LIST error handling 2020-04-21 23:32:17 +01:00
Mark Veidemanis 778690ae3a
Add more comments and remove obsolete code 2019-12-07 16:35:29 +00:00
Mark Veidemanis 7ffb6125aa Fix various bugs uncovered by the LIST system
* Work around Twisted's broken handling of spaces
* Work around Twisted's broken line decoding
* Don't run signedOn twice for relays
* Improved detection of whether the endpoint is connected to ZNC
* Delay a LIST until all configured relays are online
* Discard a LIST if there are no callbacks for it
* Get rid of some double-negative ternary blocks
2019-10-31 15:44:59 +00:00
Mark Veidemanis b4fa747853 Fix LIST handling and message parsing
* Always use simple LIST syntax if it succeeded once after a failed
complex query
* Reject asking for a LIST twice
* Quickly discard any ISUPPORT messages that don't contain things we
need to use
* Detect the server name and drop any messages from the server
2019-10-20 16:44:33 +01:00
Mark Veidemanis f34de8940f Improve performance in userinfo
* Implement a nick -> user mapping, preventing a superfluous SSCAN on
the entire dataset for when networks are disconnected
* Use one thread for all channels when a network instance is
disconnected, instead of one thread per channel
* Made returns comprising of only a list into tuples
2019-10-17 20:19:35 +01:00
Mark Veidemanis 5777ef0cfe Improve ZNC error message detection 2019-10-13 12:38:44 +01:00
Mark Veidemanis 0321651c20 Implement fair channel allocation in ChanKeep
* Allocate channels to relays only if they have free space based on
their chanlimit value
* Minify channels by removing ones that are already covered before
passing them off to be joined
2019-10-12 21:05:55 +01:00
Mark Veidemanis 7a6e3338c0 Implement ChanKeep joining functions
* Low-key channel joining with incrementally increasing delay
* Spin up needed instances to be able to cover a certain channel space
* Fix provisioning functions to prevent race conditions with lots of
relays being created at once
* Tweakable switchover from covering all channels to only covering
channels with more users than the mean of the cumulative user count
2019-10-11 13:07:57 +01:00
Mark Veidemanis da14a86e70 Fix getting LIST output to work with more networks
* Parse ISUPPORT properly if more than one channel prefix is supported
* Retry getting LIST another way is the response is empty
2019-10-08 21:00:57 +01:00
Mark Veidemanis 06d3dd4d7e Implement storing analytics on a LIST response 2019-10-08 18:17:32 +01:00
Mark Veidemanis 15b394bd79 Implement requesting a LIST and parsing the output 2019-10-06 21:10:44 +01:00
Mark Veidemanis 5eda50af13 Use net and num instead of name in relay output 2019-10-05 18:13:04 +01:00
Mark Veidemanis 78e4d6bd66 Rename 'message' to 'msg' and 'target' to 'channel' 2019-10-05 00:51:00 +01:00
Mark Veidemanis ddadeb617c Change message to msg in relay output and in functions, include name in connection notifications instead of net 2019-10-03 18:02:00 +01:00
Mark Veidemanis 89894287b3 Add error handling to exec command and fix minor bug in cleaning up relays 2019-10-02 21:25:15 +01:00
Mark Veidemanis 32309ecec2 Change alias definitions to be global, so aliases can be reused across different networks 2019-09-29 22:45:16 +01:00
Mark Veidemanis 355a80b19b Fix the all and allc commands so they work with the new data format 2019-09-29 14:57:36 +01:00
Mark Veidemanis 15ca45e5df Implement Ctrl-C handling and fix a large number of small bugs 2019-09-28 19:46:10 +01:00
Mark Veidemanis 2d70d5af11 Add error checking in places, set up automatic relay provisioning and fix starting bots 2019-08-25 21:29:11 +01:00
Mark Veidemanis ff74968ff8 Merge branch 'master' into datarestructure 2019-08-19 20:19:42 +01:00
Mark Veidemanis c63f301b7f Defer initialUsers, initialNames and delChannel to threads to improve performance 2019-08-19 20:12:42 +01:00
Mark Veidemanis 22bd0d3ac6 Don't crash if the part message is null 2019-08-15 22:14:45 +01:00
Mark Veidemanis f34ddab6fc Improvements to query and self event detection, implement all command and debug flags 2019-08-15 21:20:49 +01:00
Mark Veidemanis 1ec0e1f7e6 Remove provisioning restrictions, move all user tracking code to monitoring module, fix proper network name not being passed to the relay 2019-08-12 21:03:47 +01:00
Mark Veidemanis 51b89b9d05 Use the ISO format for time 2019-08-11 22:05:34 +01:00
Al Beano 63539a4edb Merge branch 'master' into datarestructure 2019-08-11 22:01:29 +01:00
Al Beano e5adcfef4c Rework data structures, storing all front-end network data in Network objects 2019-08-11 21:58:14 +01:00
Mark Veidemanis 1c8cbf808b Send fake quit and nick messages to every channel 2019-08-11 21:54:52 +01:00
Mark Veidemanis 3a92ebab6b Convert nickname and messages to lowercase before comparison 2019-08-11 21:54:51 +01:00
Mark Veidemanis 2757256d4f Implement a single function for all callbacks from IRC hooks and send a seperate notification if an action takes place that concerns a bot 2019-08-11 21:54:22 +01:00
Mark Veidemanis 56840e0060 Add the network number in ZNC relay notifications 2019-08-06 12:49:29 +01:00
Mark Veidemanis c0b45c1db6 Fix adding of time to relay messages 2019-08-05 23:10:06 +01:00
Mark Veidemanis 68c6aa969d Remove keyword system, implement ZNC notifications to relay, remove exact from cast fields and fix security bug in relay 2019-08-05 22:51:16 +01:00
Mark Veidemanis 38cabc0472 Fix bug in relay unsubscribing 2019-03-23 18:22:46 +00:00
Mark Veidemanis 29424383de Fix bug in relay subscriptions 2019-03-23 11:39:28 +00:00
Mark Veidemanis fc304d4b25 Implement the relay channel and command for generating tokens 2019-03-18 21:01:28 +00:00
Mark Veidemanis 488d81dac8 Fix a race condition in disabling networks post-creation, remove redundant bindhost code and fix a minor bug in the load command 2019-03-16 17:05:16 +00:00
Mark Veidemanis a4b7bd50b1 Implement additional error checking for provisioning instances and parsing messages, and prevent ZNC from auto-connecting an instance if ConnectOnCreate is off 2019-02-01 23:26:01 +00:00
Mark Veidemanis 8926cb76ec Renovate the module system and implement adding and resuming pool instances using the new relay/alias/network system 2019-01-26 18:58:21 +00:00
Mark Veidemanis 4efea3f535 Implement the backend for automatically provisioning relays 2019-01-26 01:57:24 +00:00
Mark Veidemanis 1c3435d0d7 Don't provision new user information on messages 2018-10-21 19:21:53 +01:00
Mark Veidemanis 3bf361134f Make the stats command aware of duplicate networks 2018-10-21 17:14:50 +01:00
Mark Veidemanis 7cd6bc3616 Purge metadata entries on quit and escape glob characters 2018-10-21 00:49:15 +01:00
Mark Veidemanis 3b42f19291 Use the network name instead of the numbered instance name for counting events 2018-10-14 20:16:41 +01:00
Mark Veidemanis 36105c7e9a Move user metadata info into redis 2018-08-27 20:42:49 +01:00
Mark Veidemanis b31b5d40e8 Make monitor notifications ignore numbers to support multiple networks in only one reference 2018-08-26 19:08:27 +01:00
Mark Veidemanis a61f74e578 Implement staggered WHO information collection to avoid detection 2018-07-29 13:04:47 +01:00
Mark Veidemanis 9e3ae677e1 Add config option for WHO loop interval 2018-07-28 22:02:40 +01:00
Mark Veidemanis edea19222d Implement support for modes and get WHO data on a loop 2018-07-28 21:32:31 +01:00
Mark Veidemanis bc87ffddf7 Implement monitoring system for flexible metadata matching 2018-07-27 22:58:37 +01:00
Mark Veidemanis 66e7785f6f Implement query notifications and recognise ZNC's messages 2018-05-07 19:58:19 +01:00
Mark Veidemanis 2e2e35cad7 Fix yet another typo 2018-04-21 15:05:32 +01:00
Mark Veidemanis d168d69732 Import the main module properly and fix some oddities in Twisted to prevent it from discarding some data 2018-03-14 20:14:02 +00:00
Mark Veidemanis 5b1e3c6fb1 Implement counting nickname changes and remove check on listener 2018-03-10 14:01:43 +00:00
Mark Veidemanis da6c45f093 Implement counting keyword events and a unified buffers system for when the master channel is unavailable 2018-03-10 13:54:04 +00:00
Mark Veidemanis eae4315562 Move server functions to a separate file 2018-03-04 13:26:53 +00:00
Mark Veidemanis 8dec0b6828 Implement counting of various IRC events 2018-02-24 12:42:27 +00:00
Mark Veidemanis 378c4d9bba Implement loading new modules at runtime 2018-02-23 23:26:21 +00:00
Mark Veidemanis cb7142ef88 Separate out everything into files and implement a modules system to segment commands 2018-02-23 22:05:40 +00:00