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
James Lu
4a964b1595
Merge branch 'master' into devel
2015-08-31 10:58:47 -07:00
James Lu
9f0f4cb124
relay: burst the right set of modes
...
It's moments like this where I wonder what I'm even doing with my life...
2015-08-31 09:28:14 -07:00