Mark Veidemanis
a78229a288
Add irc.json to gitignore
2020-05-30 21:35:50 +01:00
Mark Veidemanis
918d410927
Fix variable scope in LIST error handling
2020-04-21 23:32:17 +01:00
Mark Veidemanis
bc4d5cba8e
Separate provisioning into user and auth info
2019-12-28 17:51:03 +00:00
Mark Veidemanis
376d1bd911
Add IRC network definitions
2019-12-28 17:50:38 +00:00
Mark Veidemanis
778690ae3a
Add more comments and remove obsolete code
2019-12-07 16:35:29 +00:00
Mark Veidemanis
9c4ea94ebd
Add requirements file
2019-11-17 18:52:47 +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
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