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
Mark Veidemanis
de5baf562b
Fix monitors to work properly with multiple groups
2018-08-19 16:02:14 +01:00
Mark Veidemanis
ae017eab36
Show the message on one line in monitor notifications
2018-07-28 22:32:24 +01:00
Mark Veidemanis
00985d29c5
Implement support for more attributes and handle data type collisions when merging monitor group definitions
2018-07-28 21:33:50 +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