3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-27 05:03:07 +01:00
Commit Graph

402 Commits

Author SHA1 Message Date
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
James Lu
8faf86aa8f relay: rejoin killed users to the RIGHT channels 2015-09-17 19:15:51 -07:00
James Lu
7011aa3b36 relay: send kick rejoins from CLAIM from the main relay server 2015-09-16 21:23:09 -07:00
James Lu
f92c2f731c relay: CLAIM command! Closes #51. 2015-09-16 20:59:32 -07:00
James Lu
04ca322154 relay: skip claim checks when claim list is empty for a channel 2015-09-16 20:59:08 -07:00
James Lu
78080bde6b relay: don't fail if oldchan is not given in MODE 2015-09-14 17:36:41 -07:00
James Lu
81628f9a6d relay: rename some internal functions to make more sense
getLocalUser => getOrigUser
findRemoteChan => getRemoteChan
findRelay => getRelay
2015-09-14 17:29:37 -07:00
James Lu
75de9c6be6 relay: sort code and document most internal functions 2015-09-14 17:25:17 -07:00
James Lu
1e6c5a231e relay.handle_topic: don't fail if we're bursting and no old topic exists 2015-09-13 17:58:39 -07:00
James Lu
4a4c9395d6 relay: remove broken logging line 2015-09-13 17:50:59 -07:00
James Lu
19530107d7 relay: enforce CLAIM checks in TOPIC too. 2015-09-13 14:23:27 -07:00
James Lu
9a139212dd relay/utils: make mode reversals work with mode changes that affect op statuses. 2015-09-13 13:48:14 -07:00
James Lu
fa4583c272 relay: basic CLAIM checking when setting modes (#51)
There's still some desyncs with checking op statuses, because hooks are only called AFTER the internal state updates. Fix for this will come soon.
2015-09-12 23:36:52 -07:00
James Lu
945306af34 relay: make CLAIM checking a shared function 2015-09-12 22:50:53 -07:00
James Lu
b3902c7711 relay: KILL war protection (#23)
TODO: possibly integrate this into core?
2015-09-12 17:41:49 -07:00
James Lu
1fcacd0d7c relay: more compact "showuser" output 2015-09-12 16:03:59 -07:00
James Lu
1c97927b5d relay: monitor SAVE floods by network, not by target nick 2015-09-12 16:03:47 -07:00
James Lu
95b70f3ebf relay: spawn a server for every linked network (Closes #105) 2015-09-12 12:08:02 -07:00
James Lu
7f526267ec relay: minor typo in error message 2015-09-09 20:53:04 -07:00
James Lu
9e73af050c relay: unpluralize "relayWhoisHandlers"
There's only one handler, why did I make it plural?
2015-09-06 22:39:40 -07:00
James Lu
62e7cc4fca move utils.msg() => classes.Irc.msg()
New function gets an extra (optional) "source" argument for specifying a sender UID. It's also shorter since no IRC object has to be passed to utils.
2015-09-06 22:23:44 -07:00
James Lu
57da0aa3b3 Classify all our protocol modules - why didn't I do this earlier 2015-09-05 18:00:57 -07:00
James Lu
320de2079a relay: add INVITE support (Closes #94) 2015-09-02 21:30:31 -07:00
James Lu
60dc3fe026 relay: use "Channel delinked." part message when delinking channels 2015-09-02 20:46:21 -07:00
James Lu
9a47ff87af Merge branch 'master' into devel 2015-09-02 20:44:03 -07:00
James Lu
043fccf447 Fix previous commit (Closes #100) 2015-09-02 18:56:53 -07:00
James Lu
ace0ddf28c relay: use JOIN instead of SJOIN for non-burst joins
Closes #96.
2015-09-02 18:33:04 -07:00
James Lu
c2ee9ef808 Merge branch 'master' into devel 2015-09-02 18:15:34 -07:00
James Lu
708d949164 relay: join remote users before sending ours
This fixes race conditions where modes can be set on our joining users (e.g. auto-op by ChanServ), but are promptly erased as relay joins remote users and resets the channel TS.

Also, move relayModes() calls back into relayJoins(), with an optional "burst" argument.

Closes #102.
2015-09-02 18:08:39 -07:00
James Lu
19fa31d012 relay: fix incorrect logging in getSupportedUmodes() 2015-09-01 22:14:25 -07:00
James Lu
2f760c8c92 relay: Don't send empty user mode changes 2015-09-01 22:13:29 -07:00
James Lu
4f40faeaf0 relay: in logs, be a bit more specific why we're blocking KILLs and KICKs 2015-09-01 22:02:34 -07:00
James Lu
0b590d6ab3 relay/protocols: use utils.toLower() for channel names, respecting IRCd casemappings
Closes #102.
2015-09-01 22:01:22 -07:00
James Lu
8d44830d5c relay.handle_kill: prevent yet another RuntimeError
(cherry picked from commit 4525b8117e)

Conflicts:
	plugins/relay.py
2015-09-01 19:42:12 -07:00
James Lu
6d6606900e relay: coerse "/" to "|" in nicks if "/" isn't present in the separator
a.k.a. make J*anus* happy :)
2015-09-01 09:56:28 -07:00
James Lu
4525b8117e relay.handle_kill: prevent yet another RuntimeError 2015-08-31 15:04:06 -07:00
James Lu
26e102f01a Show oper types on WHOIS 2015-08-31 14:52:56 -07:00
James Lu
8d19057118 relay: set umode +H (hideoper) on all remote opered clients 2015-08-31 14:23:42 -07:00
James Lu
f9b4457ced Decorate relay clients, etc. with custom OPERTYPEs
New PyLink internal hook: PYLINK_CLIENT_OPERED, called (supposedly) when a client opers up.
2015-08-31 13:31:20 -07:00