3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-26 20:52:45 +01:00
Commit Graph

440 Commits

Author SHA1 Message Date
James Lu
31bf984996 Revert "relay: don't try to force network disconnects"
This reverts commit 77edd9870c.
2016-07-13 18:43:22 -07:00
James Lu
92466e4a00 relay: make tag_nicks default to True 2016-07-11 23:35:16 -07:00
James Lu
59f6c861e0 relay: treat SVSNICK as a cue to tag nicks
Closes #116.
2016-07-11 23:23:26 -07:00
James Lu
bc369bf6a6 relay: force tags when a nick collision happens 2016-07-11 21:54:48 -07:00
James Lu
95ff33876c relay: handle KILLs to untagged clients as a cue to tag them (#116) 2016-07-11 21:43:43 -07:00
James Lu
5bfba0a411 relay: make default nick tagging and separator global options (#116) 2016-07-11 21:43:43 -07:00
James Lu
77edd9870c relay: don't try to force network disconnects
This doesn't work, and seems to cause PyLink to freeze instead.
2016-07-11 16:35:35 -07:00
James Lu
9c2bec7a3d relay: don't create relay clones with the user's original TS
There's no point of doing this. Relay should purposely lose nick collisions anyways because it can simply switch to the next one.
2016-07-10 22:25:01 -07:00
James Lu
df41dabb71 relay: drop prefix modes if the target doesn't have a relay clone yet
This fixes modes like ('+v', None) from being accidentally sent by Relay, when Automode happens to set modes before all relay clients are spawned.
2016-07-07 22:16:34 -07:00
James Lu
00766041f3 plugins: make DB save delay configurable 2016-07-07 22:16:21 -07:00
James Lu
b3310eaf78 relay: also send internal hook for services login, for integration with automode 2016-07-07 21:43:25 -07:00
James Lu
0d502095c5 relay: integrate with automode by sending relay JOINs as a hook 2016-07-07 21:38:12 -07:00
James Lu
81fca49738 relay: hide disconnected networks from LINKED output
Closes #258.
2016-07-03 12:40:23 -07:00
James Lu
7c6daa839c relay: don't error if servers for current net were already removed 2016-07-01 22:20:10 -07:00
James Lu
e3170cda83 relay: remove another _ in opertype handling 2016-07-01 21:07:07 -07:00
James Lu
1a0983b8e9 relay: prefix nicks starting with - (this is invalid) 2016-07-01 19:19:11 -07:00
James Lu
c9b6695f90 relay: make sure normalized nicks have no invalid characters
This affects the separator option too: if someone puts something invalid in that field, this will coerse bad chars to | instead of letting the IRCd deal with it.
2016-07-01 19:16:47 -07:00
James Lu
042a173d87 relay: use a 5 second timeout when acquiring all threading locks 2016-07-01 18:54:35 -07:00
James Lu
06ee35dcfc relay: catch various errors if a relay client is killed while commands are called from it 2016-07-01 18:54:07 -07:00
James Lu
4cd49296e5 Merge remote-tracking branch 'origin/master' into devel 2016-06-30 19:00:39 -07:00
James Lu
91a663d5c7 commands, relay: use irc.reply() with private=True instead of irc.msg()
This is more flexible, etc.
2016-06-30 18:43:56 -07:00
James Lu
14f569fd7c relay: improve command help, add featured command definitions 2016-06-30 18:05:27 -07:00
James Lu
5f2da1c8c3 relay: cap waiting time for irc.connected to 5 seconds 2016-06-29 18:12:50 -07:00
James Lu
8b39635fa8 relay: don't expect that serverdata['channels'] is always present 2016-06-27 23:00:39 -07:00
James Lu
8af4b0c06d relay: use extra_channels to persistently join the PyLink bot to relay channels
Closes #247.
2016-06-25 14:21:18 -07:00
James Lu
1ce6102ae8 relay: allow toggling netsplit hiding 2016-06-25 13:47:59 -07:00
James Lu
1a6bb714ac relay: drop spawn_servers toggle, remove "Relay network lost connection" quits
Relay server spawning is now always on - there's no real reason why it shouldn't work.

Closes #237.
2016-06-25 13:27:24 -07:00
James Lu
f009a739bc Merge remote-tracking branch 'origin/master' into devel 2016-06-25 11:36:55 -07:00
James Lu
f445f7baef relay: be more tolerant to users sending messages to channels they're not in
This extends the routing of messages from servers across the relay via the main PyLink client to users too.
This allows atheme's GameServ, various commit announcers, etc. to work over relay regardless of whether +n is set.
2016-06-25 11:31:04 -07:00
James Lu
e966fe7e56 relay: typo in comment 2016-06-25 10:43:07 -07:00
James Lu
504a9be7d6 relay: attempt to eliminate freezing when networks are down 2016-06-24 18:41:13 -07:00
James Lu
90ee20ee8b relay: revert changes to mode handling that only bursts modes from the owning network on connect 2016-06-22 21:41:04 -07:00
James Lu
6fc5fa3130 relay: split relayModes() into getSupportedCmodes() for better reusability
First part of #248.
2016-06-22 19:49:49 -07:00
James Lu
8969cfb74e Merge branch 'master' into devel
Conflicts:
	plugins/networks.py
2016-06-22 19:10:59 -07:00
James Lu
cfa2cda885 relay: only reverse modes for CLAIM if there are any to reverse 2016-06-21 20:29:48 -07:00
James Lu
481d70eff8 New import paths for properly installed pylinkirc 2016-06-20 18:18:54 -07:00
James Lu
87cbbc9c57 relay: clearer error message when DESTROY'ing a channel you didn't create 2016-06-19 12:32:27 -07:00
James Lu
d3e207d653 relay: axe unused variable 2016-06-19 12:32:12 -07:00
James Lu
bcc754cf0b relay: allow forcing slashes on unsupported IRCds
This adds an undocumented option "relay_force_slashes" to allow slashes in nicks anyways, for IRCds that are, for example, TS6 or P10 variations that don't validate remote nicks.
2016-06-19 12:32:03 -07:00
James Lu
e47738c27f relay: forbid linking two channels on the same network 2016-06-19 12:14:09 -07:00
James Lu
9732d01a9e relay: default DB to {} so it doesn't flip out on 'load relay'
(cherry picked from commit db56513ac7)
2016-06-17 07:19:13 -07:00
James Lu
e1d3003683 relay: less accusatory message for links blocked by LINKACL 2016-06-08 16:00:25 -07:00
James Lu
ed19c2b24a relay: block topic changes from the main SID, not the PyLink client 2016-05-22 19:12:11 -07:00
James Lu
8c55eb43e7 relay/commands: reformat showuser output slightly 2016-05-21 23:05:39 -07:00
James Lu
03790b5939 relay: implement LINKED <netname> to filter by network
Closes #227.
2016-05-21 22:55:06 -07:00
James Lu
357eabe27a relay: optionally relay home server & login details in /WHOIS
Closes #221. Closes #222.
2016-05-19 23:32:43 -07:00
James Lu
4e8de60005 core: Rewrite WHOIS handlers to simply listen to a custom hook (PYLINK_CUSTOM_WHOIS) 2016-05-19 23:32:43 -07:00
James Lu
ae87def11f Purge c_ and u_ prefixes from named modes
Closes #217.
2016-05-15 11:05:02 -07:00
James Lu
75798b5fba relay: don't relay kicks to service bots 2016-05-14 16:24:26 -07:00
James Lu
28f992d3cb relay: don't spawn clones for service bots 2016-05-14 16:17:20 -07:00
James Lu
3930891e9f relay: don't rely on irc.pseudoclient as much during init 2016-05-14 14:03:59 -07:00
James Lu
bcc648adff relay: support relaying more channel modes
flood, flood_unreal, joinflood, freetarget, c_noforwards, and noinvite are whitelisted with this commit.
2016-05-11 21:18:30 -07:00
James Lu
366836b821 relay: burst topics from the main PyLink server
When a channel is being initialized, PyLink has no specific network to propagate topics from; they just get sent from whichever linked network we happened to iterate over first. This prevents misleading topic setters like 'randomnet.relay' from showing up.
2016-05-02 18:54:46 -07:00
James Lu
917b0de596 relay: log spawnlocks calls 2016-05-01 14:59:13 -07:00
James Lu
f6a9f0729a relay: don't error if the privmsg source on a remote network is missing
This can happen when someone speaks while a network is initializing, for example.
2016-05-01 14:59:13 -07:00
James Lu
bb8a548e74 relay: make handle_quit error-tolerant if the target is missing
In cases where multiple networks disconnect simultaneously, the relay user for a quitting client from the first dying network might have also disappeared while handle_disconnect was processing the disconnection of a second dying network. This should take into account those situations.
2016-05-01 14:59:13 -07:00
James Lu
54987fde4e relay: code cleanup, possibly fix clones for PyLink clients being spawned from rare race conditions 2016-05-01 14:59:13 -07:00
James Lu
ab5624343b relay: fix regression causing 'load relay' to freeze 2016-05-01 14:59:13 -07:00
James Lu
69cd3cfbf8 relay: fix race conditions when multiple networks disconnect simultaneously 2016-05-01 14:59:13 -07:00
James Lu
3bb1208e74 core: move toLower to Irc (#199) 2016-04-30 16:57:38 -07:00
James Lu
2fe2e9c8c4 core: move isOper, checkAuthenticated to Irc (#199) 2016-04-30 16:54:11 -07:00
James Lu
78f8a2fc8d core: move isManipulatableClient, getHostmask to Irc 2016-04-30 16:44:37 -07:00
James Lu
064cb9b6aa core: move reverseModes, joinModes into Irc 2016-04-30 16:33:46 -07:00
James Lu
42718ed323 relay: Allow IP sharing to be toggled per network
Via a new "relay_no_ips" option in server blocks. Closes #201.
2016-04-18 12:29:15 -07:00
James Lu
4c83bfc3ef relay: don't error if irc.pseudoclient hasn't been initialized yet 2016-04-18 11:52:01 -07:00
James Lu
9fde35fd77 relay: handle server name conflicts more correctly
1) Clear the relay servers cache
2) Disconnect
3) Raise a proper exception so other parts of relay don't carry on with undefined behaviour
2016-04-02 12:46:45 -07:00
James Lu
c01b449741 relay: treat network names case-sensitively 2016-04-02 12:15:53 -07:00
James Lu
fab404f8d6 Merge branches 'master' and 'wip/relay-fixes' into devel 2016-04-01 18:32:19 -07:00
James Lu
3a8b0aa123 relay: catch OSError too when loading DB 2016-04-01 18:31:53 -07:00
James Lu
9e33081bc9 relay: fix typo in comment 2016-03-30 21:22:18 -07:00
James Lu
d21344342d relay: experimental fix for #183 2016-03-30 18:33:44 -07:00
James Lu
4a0ee6f54c relay: be more thread-safe via dict.copy() 2016-03-26 18:19:08 -07:00
James Lu
08c3b99dfb relay: fix ambiguous logging in KICK blocking 2016-03-26 17:56:11 -07:00
James Lu
aedb05608e relay: actually, just kill handle_spawnmain
this is causing more problems than it is worth
2016-03-25 17:09:40 -07:00
James Lu
ce3d3cf697 relay: check to make sure network is ready before handling spawnmain 2016-03-25 16:59:27 -07:00
James Lu
9fe3373906 relay: get rid of kill/save protection 2016-03-25 16:39:06 -07:00
James Lu
75ec95b8d3 Merge branch 'master' into devel 2016-03-25 16:01:34 -07:00
James Lu
46922ce879 relay: remove dead networks' servers from the servers index unconditionally
For #183.
2016-03-25 15:59:37 -07:00
James Lu
c86a02e044 relay: use IrcChannel.getPrefixModes 2016-03-19 17:54:42 -07:00
James Lu
8135f3a735 core: Depluralize prefixmodes mappings (#168)
This is an API breaking change. I really don't know why I made these keys plural to start, since it only made things more complicated. Prefix modes are not pluralized in the list of supported modes of each IRCd.
2016-03-19 17:25:04 -07:00
James Lu
7f5bc52152 relay: fix errors in KILL handling when target isn't in any relay channels 2016-03-07 18:10:59 -08:00
James Lu
8ac5436152 relay: allow admins to destroy channels hosted on other networks
Closes #160.
2016-03-05 09:31:59 -08:00
James Lu
34ca973047 relay: cleanup, consistently include the function in log.debug calls 2016-02-27 18:37:40 -08:00
James Lu
a740163cbe relay: implement DB exporting using threading.Timer, similar to classes.Irc.schedulePing
Fixes #165 (exportDB threads not dying on unload)
2016-02-27 18:13:26 -08:00
James Lu
ae8f369f2e relay: only show networks that are actually connected in LINKED
Closes #163.
2016-02-21 20:04:53 -08:00
James Lu
de1a9a7995 relay: various cleanup 2016-02-20 19:29:52 -08:00
James Lu
f25c260937 relay: sort channel links in LINKED output 2016-01-20 07:14:49 -08:00
James Lu
3d0bf18001 protocols: rename topicClient -> topic; topicServer -> topicBurst
This is one of the few commands that I won't consolidate at this time, because there is actually a difference in how most IRCds handle topic bursts and normal topic changes
2016-01-16 17:09:52 -08:00
James Lu
5ccf204c75 protocols: consolidate modeClient and modeServer into mode() 2016-01-16 17:08:17 -08:00
James Lu
983edaf8d0 plugins, docs, test suite: update to use irc.proto.kick 2016-01-16 16:59:28 -08:00
James Lu
ee65ac60e1 protocols: rename sjoinServer(...) -> sjoin(...) 2016-01-16 16:53:46 -08:00
James Lu
9a61e64dfc protocols: squitServer(...) -> squit(...) 2016-01-16 16:53:06 -08:00
James Lu
5324475d18 protocols: quitClient(...) -> quit(...), partClient(...) -> part(...) 2016-01-16 16:51:54 -08:00
James Lu
7e5284969d protocols: rename nickClient(...) -> nick(...) 2016-01-16 16:51:04 -08:00
James Lu
3a53005d8c protocols: messageClient -> message, noticeClient -> notice 2016-01-16 16:44:23 -08:00
James Lu
20cb65e668 protocols: rename awayClient -> away 2016-01-16 16:40:36 -08:00
James Lu
b4e5c57a35 protocols: rename inviteClient(...) -> invite(...) 2016-01-16 16:38:27 -08:00
James Lu
acdd7dbb78 protocols: rename joinClient(...) -> join(...) 2016-01-16 16:36:45 -08:00
James Lu
f5a828c4af relay: store creation TS in DB, showing it in LINKED if exists
Closes #155.
2016-01-09 20:30:54 -08:00
James Lu
989f1f4f64 plugins: use irc.disconnect() to disconnect networks (#152) 2016-01-09 20:25:51 -08:00
James Lu
eac934c237 classes: sort code, move nickToUid, clientToServer, isInternalClient, isInternalServer into the Irc class
The following BREAKING changes are made:
utils.nickToUid(irc, nick) -> irc.nickToUid(nick)
utils.isInternalClient(irc, uid) -> irc.isInternalClient(uid)
utils.isInternalServer(irc, uid) -> irc.isInternalServer(uid)
utils.clientToServer(irc, uid) -> utils.getServer(uid)
2015-12-31 17:28:47 -08:00
James Lu
add409789a relay: fix incorrect logging in changing client fields 2015-12-30 15:53:05 -08:00
James Lu
d7fdeed19d relay: remove use of sched in exportDB
We were using sched and threading together? How inefficient...
2015-12-29 11:14:19 -08:00
James Lu
59c9b127a3 relay/world: remove need for world.schedulers 2015-12-26 17:06:28 -08:00
James Lu
bf7522697a Rename PYLINK_CLIENT_OPERED hook -> CLIENT_OPERED
To be consistent, any PYLINK_* hooks should internal hooks sent out by PyLink itself. CLIENT_OPERED, on the other hand, requires protocol modules to send it and thus, shouldn't be labeled as a PYLINK_* hook.
2015-12-26 15:41:22 -08:00
James Lu
04275d1dfa relay: only show creator in LINKED if the value exists 2015-12-26 15:24:06 -08:00
James Lu
349cff36e1 protocols: in TOPIC hooks, send the topic as keyword "text" instead of keyword "topic"
This is just to be more consistent, as other hooks usually use "text" for text fields.
2015-12-18 22:05:10 -08:00
James Lu
00337fa783 relay: delay ENDBURST in spawnServer by 3 seconds (Closes #128) 2015-12-17 21:18:16 -08:00
James Lu
a39f9bbddc relay: fix logging syntax 2015-12-06 17:40:06 -08:00
James Lu
561af2e037 utils/relay: add and use getDatabaseName to fetch an instance-specific DB name 2015-12-06 17:13:47 -08:00
James Lu
f16edf6efc relay: log (de)linked, created, and destroyed channels to INFO
Closes #125.
2015-11-28 21:18:30 -08:00
James Lu
e97810e5f7 relay: store creator hostname in CREATE, code readability...
Closes #135.
2015-11-28 21:09:44 -08:00
James Lu
3df0a24232 relay: catch PRIVMSG/NOTICE sent from servers, and relay them via the PyLink client instead of erroring 2015-11-26 22:51:19 -08:00
James Lu
a7f5068bd8 relay: squash another "dictionary changed size during iteration" bug 2015-11-26 22:50:20 -08:00
James Lu
adfa114c4b relay: remove cloak from whitelisted umodes, send modes to spawnClient as a set (prevents duplicates) 2015-11-22 13:08:31 -08:00
James Lu
5c0517ba40 unreal/ts6/relay: add some more user mode support
Cloaking is still a bit iffy on UnrealIRCd networks - Unreal insists on applying its own cloaking for +x users, but vHosts for non +x remote users don't apply at all (their real host is shown instead)
2015-11-21 23:57:24 -08:00
James Lu
a3e0159054 relay: normalize hostnames too (e.g. unreal doesn't allow / in vHosts) 2015-11-21 23:37:19 -08:00
James Lu
06539fc813 unreal: add missing SJOIN->JOIN hook map, and set irc.connected (relay will otherwise break) 2015-11-15 21:42:58 -08:00
James Lu
86d3cd3295 relay: only join the main pseudoclient once per channel 2015-10-25 10:39:56 -07:00
James Lu
2bf9568fbb relay: Home network lost connection. => Relay network lost connection. 2015-10-23 18:50:42 -07:00
James Lu
17a2dcd21f plugins: use irc.reply(...) instead of irc.msg(irc.called_by, ...) whereever possible 2015-10-23 18:29:10 -07:00
James Lu
5327de9317 relay: fix local kicks not quitting users on remote networks when the target doesn't share any channels as a result
Closes #120.
2015-10-18 10:27:54 -07:00
James Lu
d21ce9983d relay: don't spam subserver connects + instant disconnects for networks that are dead 2015-10-10 15:34:57 -07:00
James Lu
bde2f66b2a relay: don't send SQUIT for relay servers to networks that aren't connected 2015-10-10 15:27:57 -07:00
James Lu
e28c351792 relay: add missing return in getRemoteSid 2015-10-10 15:26:28 -07:00
James Lu
07694ae642 relay: restore checks for irc.connected/world.started to prevent server spawning from happening too quickly 2015-10-10 15:22:06 -07:00
James Lu
ffce69060c relay: fix RuntimeError in handle_disconnect (dict changed size during iteration) 2015-10-10 15:06:36 -07:00
James Lu
17cfdcab0a relay: fix 7d919e6 again
PyLink bots can send messages over the relay to channels, just not to remote users.
2015-10-02 23:40:20 -07:00
James Lu
f20e677577 relay: fix PMs across the relay (7d919e64 regression) 2015-10-01 16:40:58 -07:00
James Lu
9e07949730 relay: make spawning of subservers toggleable 2015-09-28 18:22:03 -07:00
James Lu
55b642ea30 Revert "relay: remove ENDBURST hook (is this needed anymore?)"
This reverts commit 4a9a29e095.
2015-09-28 18:15:56 -07:00
James Lu
4a9a29e095 relay: remove ENDBURST hook (is this needed anymore?) 2015-09-27 11:56:32 -07:00
James Lu
a14e8a7b8f relay: add (experimental) support for plugin reloading 2015-09-27 11:56:09 -07:00
James Lu
cc171eb79a relay: abort connection when spawning a server fails 2015-09-27 10:45:08 -07:00
James Lu
7d919e643a relay: forward messages from the main PyLink client too
This may or may not have nasty regressions - time will tell I guess.
2015-09-26 10:20:23 -07:00
James Lu
8e444c5dbe plugins: support FANTASY (where reasonable) by using irc.msg(irc.called_by, ...) instead of irc.msg(source, ...) 2015-09-26 10:20:23 -07:00
James Lu
7e12ec9e5e relay: don't prepend sender prefixes more than once (for servers and clients not on any relay networks) 2015-09-20 18:13:39 -07:00
James Lu
f2b6d1a3ad relay: use two locks (one for clients, one for servers) to prevent lock ups on start 2015-09-20 16:56:24 -07:00
James Lu
7b2d1d8129 relay: use the network's full name in spawning servers 2015-09-20 12:11:41 -07:00
James Lu
f38958995c Store opertypes with spaces instead of underscores, and only change them back when sending OPERTYPE
Another "Janus sucks" commit - it should be always using underscores when sending OPERTYPE, but it doesn't...
2015-09-20 11:25:45 -07:00
James Lu
0d207f7d08 relay: better description for 'showuser' 2015-09-19 10:39:56 -07:00
James Lu
2c23cbe01e relay: fix some logging peculiarities in handle_kick? 2015-09-19 10:32:45 -07:00
James Lu
6ee2ec8a2d relay: make oper status/IP hiding configurable
Closes #108.
2015-09-19 10:17:25 -07:00
James Lu
c3e8420aa0 relay/ts6_common: be more error tolerant with network (dis)connections 2015-09-18 22:11:27 -07:00
James Lu
504e2683fb relay: hide +s/+p channels in LINKED output (closes #110) 2015-09-18 22:05:51 -07:00
James Lu
4ad94ca4ea Merge branch 'master' into devel 2015-09-17 19:31:30 -07:00
James Lu
63189e9990 relay: look at the right prefix mode list when rejoining from KILL 2015-09-17 19:30:38 -07:00
James Lu
0371b21634 Merge branch 'master' into devel 2015-09-17 19:26:25 -07:00
James Lu
cb83db4c1c relay: don't allow creating a channel that's already part of a relay 2015-09-17 19:24:38 -07:00
James Lu
70227bf3e0 relay: use utils.checkAuthenticated() for checking oper status 2015-09-17 19:22:34 -07:00