Commit Graph

476 Commits

Author SHA1 Message Date
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 a64765121a Allow multiple arguments for the logging functions 2019-10-13 12:40:16 +01:00
Mark Veidemanis 5777ef0cfe Improve ZNC error message detection 2019-10-13 12:38:44 +01:00
Mark Veidemanis b97ebe43ab Only start one relay with the auto command
We only need one initial relay, as ChanKeep will automatically add as
many as it needs when receiving a LIST response.
2019-10-13 12:37:01 +01:00
Mark Veidemanis 6ad6d6dc50 Fix channel allocation when relays are provisioned
Fix a bug where the channel allocation algorithm failed due to
necessary relays not having been provisioned yet.
Passed the newly created relay numbers to the allocation function
and assumed their CHANMAX would be the same as all other relays for
the same network.
2019-10-12 21:40:50 +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 c3d0cb04b6 Pass all arguments from debug into print
Allows for multi-argument debug() statements without ugly + or %s
operators.
2019-10-11 13:04:58 +01:00
Mark Veidemanis 324af04de0 Don't return the same thing twice
The add_relay and provisionRelay functions both returned the alias.
Only use the output from one function.
2019-10-11 13:02:39 +01:00
Mark Veidemanis f9619a5bc4 Remove help entry for del 2019-10-08 21:12:06 +01:00
Mark Veidemanis 31c9e64790 Implement function to set up multiple relays 2019-10-08 21:11:04 +01:00
Mark Veidemanis 33cb173db6 Switch to using Redis for LIST storage 2019-10-08 21:10:42 +01:00
Mark Veidemanis 7e90080a2c Set up Redis database which isn't cleared on quit 2019-10-08 21:07:54 +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 a027a0b4f6 Fix getting user records by nickname
Use -1 to refer to unlimited records instead of an arbitrarily large
number.
2019-10-08 20:53:39 +01:00
Mark Veidemanis c92e618076 Remove the del command 2019-10-08 20:53:10 +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 aa54759337 Additional error checking on user record deletion 2019-10-05 18:22:14 +01:00
Mark Veidemanis f0fff7c958 Implement sorting relay output by custom keys 2019-10-05 18:20:51 +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 872d08be3e Implement exec command for running raw Python code 2019-10-02 20:46:00 +01:00
Mark Veidemanis d35f96de87 Error checking on alias removal and clean up when removing relays 2019-10-02 20:45:28 +01:00
Mark Veidemanis a3b81f8849 Implement more automated provisioning of aliases and relays, and remove networks cleanly 2019-10-02 20:26:05 +01:00
Mark Veidemanis 0f31d7f5e2 Implement admall command to run commands as the administrative relay user 2019-10-02 13:46:02 +01:00
Mark Veidemanis b19dfcc113 Add alias.json to gitignore 2019-09-29 23:55:22 +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 006f8db6f6 Update the class name in the single command loader and import the debug function which it uses 2019-08-25 23:12:51 +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 545282e201 Add deduplication precision toggle, fix printing odd characters and implement sending messages to all instances of a certain network, or all networks associated with a certain alias 2019-08-16 21:27:23 +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
Al Beano f6657cb905 Merge branch 'command_class' into aliasgen 2019-08-10 11:45:21 +01:00
Al Beano 15bc195648 Add automatic alias generation function 2019-08-10 11:44:31 +01:00
Al Beano 88077782f3 Rename classes representing commands to <CommandName>Command 2019-08-09 23:49:21 +01:00