Commit Graph

45 Commits

Author SHA1 Message Date
Mark Veidemanis 16133fb7b4 Fully make use of ECA for multiple channels 2022-08-13 21:40:53 +01:00
Mark Veidemanis 28c1a33615 Implement configurable chanlimit and add more fields about LIST output to Redis 2022-08-13 20:37:21 +01:00
Mark Veidemanis 496a3d0374 Implement ChanKeep without requiring persistent chanlimits on all networks 2022-08-13 19:20:29 +01:00
Mark Veidemanis 75965497be Add some debug statements and statistics for chanlimits 2022-08-13 18:40:13 +01:00
Mark Veidemanis 1e9dd1b223 Print message if relay is unauthenticated/disconnected 2022-08-13 14:06:34 +01:00
Mark Veidemanis facf58ec2c Add connected status to IRC info return and check when getting active relays 2022-08-13 13:40:33 +01:00
Mark Veidemanis 21ed66bc00 Reformat code 2022-08-13 13:32:22 +01:00
Mark Veidemanis 5c63fb5048 Implement getting LIST information from API 2022-08-13 13:27:20 +01:00
Mark Veidemanis acc363d207 Add docstrings to chankeep 2022-08-12 23:53:02 +01:00
Mark Veidemanis 49214644ff Implement migrating networks 2022-08-12 23:32:00 +01:00
Mark Veidemanis 20f59362ff Subtract allocated channel slots from total 2022-08-12 22:31:12 +01:00
Mark Veidemanis 065fe94cbd Improve channel allocation and write basic tests for it 2022-08-12 22:27:49 +01:00
Mark Veidemanis 8ba4831d9c Implement best effort allocation 2022-08-11 21:44:19 +01:00
Mark Veidemanis 4c040bbf78 Simplify variable names and reformat 2022-08-11 20:51:41 +01:00
Mark Veidemanis 5a4ae2153e Use ceil instead of round for relay number rounding 2022-08-11 20:46:44 +01:00
Mark Veidemanis 8c3a75b3c8 Expand ECA secondary allocation algorithm 2022-08-11 20:43:34 +01:00
Mark Veidemanis dc13515aa8 Adding more debug statements in ECA system 2022-08-11 20:36:24 +01:00
Mark Veidemanis d38f7ba1ba Print information about received LIST 2022-08-11 20:32:49 +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 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 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 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 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 ff1ee63900 Reformat code with pre-commit 2022-07-21 13:39:41 +01:00
Mark Veidemanis 9c95fa8eaf Implement relay-independent join 2020-11-02 20:14:02 +00:00
Mark Veidemanis 49fd03304d Fix various bugs and off by one with provisioning 2020-10-31 23:55:11 +00:00
Mark Veidemanis c06e922749 Clarify error message to be more helpful 2020-10-31 00:11:28 +00:00
Mark Veidemanis 913009ab71 Fix circular import in ChanKeep/provisioning modules 2020-10-28 18:38:27 +00: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 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 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 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 33cb173db6 Switch to using Redis for LIST storage 2019-10-08 21:10:42 +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