Commit Graph

113 Commits

Author SHA1 Message Date
Mark Veidemanis 1640955e5c Fix various bugs in the event system
Squash many bugs in the event notification system and simplify the
code.
2020-06-02 21:34:15 +01:00
Mark Veidemanis 097f100ec5 Implement authentication detection
* pending command to see which instances have never authenticated
* authcheck command to see which instances are not currently
  authenticated
2020-05-31 21:52:56 +01:00
Mark Veidemanis 5c6b626396 Check registration status before joining channels
Do not join channels if any relay for a network is unregistered.
2020-05-31 13:09:58 +01:00
Mark Veidemanis a3cdb35e05 Implement registration and confirmation of nicks 2020-05-30 21:40:10 +01:00
Mark Veidemanis 690bf93676 Fix variable scope in LIST error handling 2020-04-21 23:32:17 +01:00
Mark Veidemanis 06903d872e 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