Commit Graph

160 Commits

Author SHA1 Message Date
Mark Veidemanis 22e853a3f7 Simplify is_first_relay 2022-08-11 20:26:19 +01:00
Mark Veidemanis 87ee96dd26 Don't add 1 to current relays when iterating 2022-08-11 20:13:30 +01:00
Mark Veidemanis cc0e3b872b Add extra debug call for allRelaysActive 2022-08-11 20:12:38 +01:00
Mark Veidemanis 16d268ca90 Reformat helpers 2022-08-11 20:09:14 +01:00
Mark Veidemanis 502b45cda5 Allow gaps in relay numbering 2022-08-11 19:22:09 +01:00
Mark Veidemanis b42c82eac2 More error handling when joining channels with ChanKeep 2022-08-02 09:01:24 +01:00
Mark Veidemanis e8870e95e7 Implement automatic provisioning 2022-08-01 19:34:35 +01:00
Mark Veidemanis 6359918639 Fix joining channels with inactive relays 2022-07-29 17:28:09 +01:00
Mark Veidemanis 8409a39e57 Implement relay, channel and alias management 2022-07-27 22:03:42 +01:00
Mark Veidemanis 5aebf63c2e Implement API endpoint for network listing 2022-07-25 18:05:53 +01:00
Mark Veidemanis b149886128 Don't send to Logstash if it's disabled 2022-07-21 13:40:40 +01:00
Mark Veidemanis 4b33559e65 Implement getting number of channels and users 2022-07-21 13:40:18 +01:00
Mark Veidemanis e5a14b2c91 Reformat again 2022-07-21 13:40:09 +01:00
Mark Veidemanis f4c5323de1 Reformat project 2022-07-21 13:40:05 +01:00
Mark Veidemanis 6c7d0d5c45 Reformat and fix circular import 2022-07-21 13:40:03 +01:00
Mark Veidemanis 3229d9b806 Revert "Reformat project"
This reverts commit 64e3e1160aa76d191740342ab3edc68807f890fb.
2022-07-21 13:40:01 +01:00
Mark Veidemanis 760e43b59a Reformat project 2022-07-21 13:39:59 +01:00
Mark Veidemanis e4a6e0d3c2 Don't attempt to register if it is disabled 2022-07-21 13:39:56 +01:00
Mark Veidemanis 7ffdc63eeb Rename time to ts 2022-07-21 13:39:54 +01:00
Mark Veidemanis 757b22c4a1 Extra error handling around emails 2022-07-21 13:39:52 +01:00
Mark Veidemanis 5c7d71dc99 Fix provisioning with emails 2022-07-21 13:39:46 +01:00
Mark Veidemanis ff1ee63900 Reformat code with pre-commit 2022-07-21 13:39:41 +01:00
Mark Veidemanis edc5f85ba6 Implement modifying emails for aliases 2021-06-06 10:31:13 +00:00
Mark Veidemanis c389094365 Finish Logstash implementation 2021-06-06 10:16:04 +00:00
Mark Veidemanis 9c95fa8eaf Implement relay-independent join 2020-11-02 20:14:02 +00:00
Mark Veidemanis 45fa21fea3 Use substitutions in registration tests 2020-11-01 22:19:03 +00:00
Mark Veidemanis a0bea0b18a Fix bug with using muser attribute when absent 2020-11-01 19:03:56 +00:00
Mark Veidemanis 19e04dbf36 Implement setting modes in ZNC 2020-11-01 03:39:32 +00:00
Mark Veidemanis b652b11335 Fix registration cancellation bug in regproc 2020-10-31 23:58:03 +00:00
Mark Veidemanis 49fd03304d Fix various bugs and off by one with provisioning 2020-10-31 23:55:11 +00:00
Mark Veidemanis b0eaa7fd47 Move WHO and NAMES logging to trace 2020-10-31 16:52:00 +00:00
Mark Veidemanis d60d89dbf6 Improve authentication detection
Add a negative check in the event we are authenticated and registered,
but not confirmed, as this fools other checks.
2020-10-31 16:49:37 +00:00
Mark Veidemanis 388cd1e4b9 Error checking in testing for registration message 2020-10-31 00:13:09 +00:00
Mark Veidemanis c06e922749 Clarify error message to be more helpful 2020-10-31 00:11:28 +00:00
Mark Veidemanis 69fbe180f1 Implement authentication checking on connection 2020-10-28 22:50:12 +00:00
Mark Veidemanis b16b5d690b Fix decoding issue with some Redis keys 2020-10-28 22:30:49 +00:00
Mark Veidemanis 6acb106761 Provision users with lowercase names 2020-10-28 22:30:04 +00:00
Mark Veidemanis 7d9a45ee91 Add the time field to some notifications 2020-10-28 22:26:41 +00:00
Mark Veidemanis 913009ab71 Fix circular import in ChanKeep/provisioning modules 2020-10-28 18:38:27 +00:00
Mark Veidemanis 82c5c2d163 Start implementing prefixes 2020-07-09 19:43:47 +01:00
Mark Veidemanis 3acf182171 Fixes to auth detection and message parsing
* don't check authentication if the network doesn't need to
  register
* don't pass through muser for ZNC type messages
* avoid duplicate message for queries containing highlights
* make a copy of the cast for metadata analysis to avoid poisoning it
* set up callback for when the instance is authenticated, so we can
  request a LIST immediately if so desired
* separate out seeding functions to populate CHANLIMIT to ease future
  work involving other options, such as PREFIX
2020-06-07 17:26:53 +01:00
Mark Veidemanis 2a9869d0f9 Remove condition-based monitoring system 2020-06-07 15:31:43 +01:00
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 290e0b5f87 Fix syntax error in redis query 2020-05-31 21:54:43 +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 5ee53ace4c Add additional error handling in user queries 2020-05-31 13:44:34 +01:00
Mark Veidemanis 81b0450904 Function to select and merge IRC network defs 2020-05-31 13:23:09 +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 d99c3c394f Restructure provisioning into fewer functions 2020-05-30 21:37:22 +01:00
Mark Veidemanis f4e5d248d5 Separate provisioning into user and auth info 2019-12-28 17:51:03 +00:00
Mark Veidemanis a20fcdb8fc Remove some debugging code from ChanKeep 2019-10-31 15:54:07 +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 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 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 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 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 78e4d6bd66 Rename 'message' to 'msg' and 'target' to 'channel' 2019-10-05 00:51: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 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 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 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
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 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 15bc195648 Add automatic alias generation function 2019-08-10 11:44:31 +01:00
Mark Veidemanis 56840e0060 Add the network number in ZNC relay notifications 2019-08-06 12:49:29 +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 0637f762ea Add network name to fields shown in relay notifications 2019-08-04 04:22:40 +01:00
Mark Veidemanis 4ce093bfbe Implement a running count of the number of events per minute 2019-07-28 15:07:46 +01:00
Mark Veidemanis 9e1a6613a4 Implement sending of relay messages 2019-03-20 20:22:46 +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 7cd6bc3616 Purge metadata entries on quit and escape glob characters 2018-10-21 00:49:15 +01:00
Mark Veidemanis 7d7ef69d98 Avoid doing pointless lookups against numbered networks 2018-10-14 14:47:08 +01:00
Mark Veidemanis 44aa0f1727 Implement users command to see the mutual users of one or more channels and squash some bugs 2018-10-08 20:08:10 +01:00
Mark Veidemanis a98ed4e4d0 Fix bug in the keyword module 2018-10-07 20:52:58 +01:00
Mark Veidemanis cfefa1d627 Implement a command to get the channels common to one or more users 2018-10-07 20:48:39 +01:00
Mark Veidemanis 249e99805a Implement optional x in y matching for attributes in the monitor system 2018-09-01 00:25:51 +01:00
Mark Veidemanis 2cb0b5d4a6 Add a count parameter to ensure all entries are searched 2018-08-27 21:10:49 +01:00
Mark Veidemanis ad00e0c07d Make the Redis socket configurable 2018-08-27 20:52:39 +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