James Lu
72be5ca79c
inspircd: make handle_part return a list of channels, not just one
...
Some IRCds, like TS6, allow sending multiple channels (as a comma-separated list) in PART.
Update relay accordingly.
2015-07-20 19:52:52 -07:00
James Lu
ef3aab69f2
relay: make '/' support in nicks explicit instead of implicit
2015-07-20 16:50:18 -07:00
James Lu
65ef27fd4b
relay: initial nick collision handling via SAVE ( Closes #61 )
2015-07-20 14:37:04 -07:00
James Lu
ad34f6c4f9
relay: make separator a per-network config option
2015-07-20 14:36:47 -07:00
James Lu
2bc0a65128
relay: hack to support sending to @#channel, etc.
2015-07-20 13:45:15 -07:00
James Lu
b1e409ff3e
relay: unbreak topic handling ( closes #68 )
...
Introducing a new .topicset attributing in IrcChannel denoting whether we've received a TOPIC for this channel from the uplink yet.
2015-07-20 13:18:04 -07:00
James Lu
e76d31d14e
relay: fixes to KICK handling, don't allow spawning new pseudoclients for trivial tasks like TOPIC or PART
...
This introduces a new spawnIfMissing option in getRemoteUser, which defaults to True and toggles spawning new pseudoclients if one is not found for a certain network.
In the case of TOPIC or PART being sent, we'll want this turned off because we can either 1) route these through our PyLink server SID, or 2) ignore these entirely.
For KICK handling, this commit fixes kicks sent from servers or clients that don't have a pseudoclient on the target network, by tagging them in the message and routing them through our main PyLink SID.
Normal kicks still behave as usual:
* You have been kicked from #endlessvoid by GLo|o|/ovd (test)
* You have been kicked from #endlessvoid by pylink-devel.overdrive.pw ((ChanServ/ovd) (GLo|o| (GLolol)) test)
* You have been kicked from #endlessvoid by pylink-devel.overdrive.pw ((some.server.name/ovd) No reason given)
2015-07-19 23:49:50 -07:00
James Lu
fd736b383f
relay: add user mode handling based on a whitelist of modes
...
Closes #64 .
2015-07-19 22:43:26 -07:00
James Lu
4078cef3e4
relay: base mode relaying off a whitelist ( closes #54 )
...
Modes that aren't standard/safe (e.g. ojoin +Y, permchan +P, various anti-flood modes) are simply ignored.
2015-07-19 16:53:51 -07:00
James Lu
0540e10d50
relay: don't add bans that don't match nick!user@host
...
Closes #55 .
2015-07-19 16:53:51 -07:00
James Lu
57e9bf601e
Log command usage, 'exec' usage, successful logins, and access denied to commands in admin.py
...
Closes #66 .
2015-07-19 15:01:49 -07:00
James Lu
c00da49477
relay: add 'save' command, make rescheduling optional in exportDB()
2015-07-19 15:01:49 -07:00
James Lu
688675d484
relay: don't relay messages sent to the PyLink client
2015-07-19 11:27:57 -07:00
James Lu
024ac165a8
relay: Only allow messaging users in common channels / channels that you're in
...
The old behavior, which iterated over the pseudoclients representing the sender, dropped messages to clients without a common channel without any warning. Now, the sender will get a lovely notice from the PyLink client.
Trying to send to a '-n' channel without being in it:
-PyLink-devel- Error: You must be in '#channel' in order to send messages.
Trying to message a user without sharing a common channel:
-PyLink-devel- Error: You must be in a common channel with 'GLolol/testnet' in order to send messages.
Closes #62 .
2015-07-18 12:24:12 -07:00
James Lu
d30890c5cd
relay: fix "RuntimeError: dictionary changed size during iteration" in handle_part
2015-07-18 12:21:46 -07:00
James Lu
ccf759679b
relay: fix the wrong modes being propagated to the wrong channels
...
tl;dr, this was two bugs in one! Closes #53 .
2015-07-18 12:06:58 -07:00
James Lu
4553eda6ec
plugins/admin & relay: Add help for commands
2015-07-17 22:35:34 -07:00
James Lu
50665ec601
commands: remove 'debug', it's useless now that 'exec', 'showchan', and 'showuser' exist
2015-07-17 22:21:57 -07:00
James Lu
6508cb3c38
commands: add a 'help' command ( closes #8 )
...
Fetch the docstring of the command function if it exists, and format appropriately.
2015-07-17 22:21:16 -07:00
James Lu
bbcd70b175
relay: add 'linked' command ( closes #65 )
2015-07-17 22:00:25 -07:00
James Lu
49943a7992
relay: only join PyLink to channels & set topics if there's actually a relay on the network
2015-07-17 21:51:30 -07:00
James Lu
3f6f78be9a
relay + Irc: keep track of network disconnects
...
This introduces a new PYLINK_DISCONNECT meta-hook that is called when a network disconnects. Also, reset the state variables (i.e. servers, users, etc.) on disconnect! (this was missed before)
Closes #60 .
2015-07-17 16:57:08 -07:00
James Lu
bc9863d9e0
Make reconnecting a bit less... broken
2015-07-17 16:20:41 -07:00
James Lu
df595c65a1
fix SQUIT not respecting autoconnect delay
2015-07-17 16:01:51 -07:00
James Lu
f41e1a2eb5
Fixes for connection handling?
...
XXX: using SQUIT on the PyLink server doesn't respect autoconnect delays; why?
2015-07-17 15:08:24 -07:00
James Lu
836d0e9701
Irc: wrap (re)connecting in a while loop instead of calling it recursively
...
Also, remove unnecessary comments / ENDBURST hook from relay.
Ping handling seems to work fine now! Closes #57 . Closes #42 .
2015-07-17 14:37:07 -07:00
James Lu
9bef93c341
More stuff for PINGing uplink and autoreconnect ( #42 #59 #57 )
...
Doesn't quite work yet; still blocks everything on disconnect for some reason...
2015-07-17 13:41:14 -07:00
James Lu
2a586a6dba
relay: don't send empty MODE commands if there are no supported modes left after filtering
2015-07-16 16:27:17 -07:00
James Lu
cf32461d8e
relay: Only spawn clients if they share a channel, and quit them when they leave all shared channels
...
Closes #50 .
2015-07-16 12:25:42 -07:00
James Lu
40fd9e37a0
relay: don't spawn tagged clones for the internal PyLink client
2015-07-16 12:25:33 -07:00
James Lu
35f1c88a4e
relay: add hooks for CHGHOST / CHGIDENT / CHGNAME
...
Closes #49 .
2015-07-16 11:53:40 -07:00
James Lu
2f38b2b38d
relay: handle squit, quitting the relevant relay pseudoclients with a fake netsplit message
...
This is hardcoded to *.net *.split, but it may change to show the split servers in the future...
2015-07-15 19:09:10 -07:00
James Lu
cd244ee89b
relay: block until irc.maxnicklen is set, and remove check for "nick already in use" for internal clients
...
Closes #48 . This fixes the edge case where, if a person with a long, cut-off nick changes to another long nick, and the resulting normalized nick is the same,
normalizeNick will start incrementing the separator anyway. The correct behavior is to NOT send any nick changes if the old (normalized) nick and the new nick
match.
2015-07-15 13:53:14 -07:00
James Lu
bbe71e22ab
relay: fixes for NICK and TOPIC propogation
2015-07-15 11:48:26 -07:00
James Lu
e3e643de54
relay: don't try to spawn clients on disconnected networks (those raise errors)
2015-07-15 11:48:03 -07:00
James Lu
4c77ad93d7
relay: fix over-reaching behavior of delink #chan <remotenet> when you're the host
2015-07-15 11:47:06 -07:00
James Lu
0918b2f958
relay: missing line in initializeChannel
2015-07-14 23:29:03 -07:00
James Lu
3a9df57c39
relay: remove unused relay() function; what was that about?
2015-07-14 23:26:56 -07:00
James Lu
5999eedd98
relay: block kills, respawning their targets transparently
...
Closes #47 .
2015-07-14 23:26:52 -07:00
James Lu
13e4cadf2b
relay: add TOPIC support (experimental)
...
Closes #46 .
2015-07-14 23:26:39 -07:00
James Lu
46e1538bd2
relay: fix #45 - cases when MODE/KICK is sent by a server, not a client
2015-07-14 22:37:50 -07:00
James Lu
7de8f1509d
relay: factorize getLocalUser, introduce MODE (experimental) and PRIVMSG handler
2015-07-14 19:39:49 -07:00
James Lu
f74e704733
relay: whoops, check for claim properly
2015-07-14 18:27:26 -07:00
James Lu
28f1d4ba19
relay: add a working KICK handler
...
This should block kicks from non-opped remote users, and handle kicks across the relay properly by mapping our pseudoclients to the real targets.
2015-07-14 18:23:19 -07:00
James Lu
876cf34825
relay: Remove spawning a sub-server for each relay network
...
It introduced bugs, and made the relay code more complicated than it has to be :(
2015-07-14 17:42:17 -07:00
James Lu
a1299676f1
relay: factorize fetching of remote users/SIDs, spawning them if they don't exist
2015-07-14 12:04:05 -07:00
James Lu
59295f921b
relay: part users on DELINK/DESTROY
2015-07-13 23:29:20 -07:00
James Lu
310a9201e2
relay: fix bugs with removing nonexistant channels in DELINK, and linking a channel multiple times in LINK
2015-07-13 22:54:51 -07:00
James Lu
1cbcec1001
relay: sync modes on initializeChannel as well
2015-07-13 22:42:50 -07:00
James Lu
c5298e3931
relay: fix joining users on initializeChannel
2015-07-13 21:46:05 -07:00