James Lu
375dbe8427
exec: accept newlines and other backslash escapes (in only "exec")
...
This way, more complex code can be entered using newlines: e.g. "for x in range(3):\n irc.reply('hello world')"
2015-12-22 10:41:42 -08:00
James Lu
6330be8758
chancmds: add TOPIC command, fix help text of KICK (it is admin-only, not oper-only)
...
For #90 .
2015-12-18 22:08:52 -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
775933420a
Move MODE from bots.py into a new plugin, opercmds.py
2015-12-18 21:43:37 -08:00
James Lu
1f2b99ca26
Move "KICK" from bots.py to a new plugin, chancmds
...
Also, add more sanity checks to make sure the things we're kicking are actually valid.
2015-12-18 21:43:37 -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
0d402af17e
fantasy: support nick triggers ( close #134 )
2015-11-28 20:46:53 -08:00
James Lu
7705d48425
commands: update irc.botdata in REHASH too
2015-11-26 22:57:52 -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
5027feb553
Don't crash when REHASH loads a config file that's invalid
...
This was actually several bugs in one:
- The sys.exit() call in loadConf should be... toggleable
- loadConf printed errors but forgot to re-raise the actual exception it caught
- The error reply in the REHASH command was passing the wrong arguments to irc.reply(), which would cause an error within an error when it ran
2015-11-11 18:55:51 -08:00
James Lu
5715835bbb
fantasy: fix error handling if prefix isn't set
2015-11-01 20:55:01 -08:00
James Lu
86d3cd3295
relay: only join the main pseudoclient once per channel
2015-10-25 10:39:56 -07:00
James Lu
9a1eab3b82
commands: add command to set log level ( Closes #124 )
2015-10-25 10:18:51 -07:00
James Lu
2bf9568fbb
relay: Home network lost connection. => Relay network lost connection.
2015-10-23 18:50:42 -07:00
James Lu
cecb7f3800
plugins: chmod -x
2015-10-23 18:31:48 -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
d14cf3c7cf
Move (un|re)?load, identify commands to coreplugin
...
This is so the commands plugin, which includes other generic (but not essential) commands, can be more easily reloaded.
2015-10-23 18:22:29 -07:00
James Lu
1b8f1ff95e
commands: s/public channel/channel/
2015-10-18 12:49:13 -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
6034333682
commands: actually break when identify is sent in a channel
2015-10-18 10:27:27 -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
7e57798f4d
core: refresh various serverdata attributes on REHASH
2015-10-02 23:17:55 -07:00
James Lu
f20e677577
relay: fix PMs across the relay ( 7d919e64
regression)
2015-10-01 16:40:58 -07:00
James Lu
54414f307e
commands: new REHASH command ( Closes #89 )
...
This command reloads the config and automatically add/removes networks that are in the new conf but not currently connected.
2015-09-28 19:13:08 -07:00
James Lu
e84a2d1025
Modularize our import hacks, make Irc() take a conf object again
2015-09-28 19:12:45 -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
0d3a7a5ce0
exec: import world, for easier access to it
2015-09-27 12:15:10 -07:00
James Lu
5aeaac0394
commands: only allow loading plugins that aren't already loaded
2015-09-27 12:12:58 -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
07fe7202aa
commands: add plugin loading/unloading/reloading support
...
Closes #5 .
2015-09-27 11:54:06 -07:00
James Lu
bbedd38703
world: rename command_hooks=>hooks, bot_commands=>commands
2015-09-27 10:53:25 -07:00
James Lu
cc171eb79a
relay: abort connection when spawning a server fails
2015-09-27 10:45:08 -07:00
James Lu
a37d4b6f3c
fantasy: only work when the main PyLink client is in the channel
2015-09-26 10:20:23 -07:00
James Lu
7470efc461
commands: add an echo command
2015-09-26 10:20:23 -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
0378fcca1d
fantasy: don't allow internal clients to trigger
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
4509e0757d
FANTASY support plugin ( Closes #111 )
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
0f26848b16
Add a useful "version" command
2015-09-19 11:51:56 -07:00
James Lu
0d207f7d08
relay: better description for 'showuser'
2015-09-19 10:39:56 -07:00
James Lu
dfe09263b9
plugins/exec: add 'eval' command too
2015-09-19 10:39:05 -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
10f3cd1fb8
bots: limit most commands to non-protected internal PyLink clients
2015-09-17 19:07:16 -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
b531a180dc
commands: add a "showchan" command
2015-09-14 18:43:19 -07:00
James Lu
7ced47e9b3
bots: don't allow setting umode +o on InspIRCd users (forbidden and causes desync)
2015-09-14 18:09:39 -07:00
James Lu
b8d6e1e2ef
bots: still allow setting modes on internal clients
2015-09-14 18:03:39 -07:00
James Lu
c5b6658200
bots: more validation in "MODE" to prevent bad things from happening
...
This adds a new "allow_forceset_usermodes" attribute to protocol modules, which determines whether the IRCd allows us to force usermode changes on other servers' clients.
Also, make sure our target is a valid nick/UID/channel, and that the parsed modes are not empty!
2015-09-14 17:46:20 -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
9dc836d921
Merge remote-tracking branch 'origin/wip/document-everything' into devel
2015-09-06 22:31:41 -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
2777b88d33
commands: Add a shutdown command ( #82 )
...
Sometimes exiting takes a little time, possibly from waiting for sockets to close?
2015-09-02 23:46:59 -07:00
James Lu
0404801b18
plugins/admin.py -> plugins/bots.py
...
- admin: Drop "showchan" command. It's not very useful, and doesn't handle long output strings at all.
- All the remaining commands are dedicated to spawning bots and playing with them anyways, so this new name fits better.
2015-09-02 23:24:58 -07:00
James Lu
c0f5bedbd3
Add new "networks" plugin, for controlling connections to networks
...
Daemonized threads are lovely; when all connections are closed, PyLink just exits :)
Closes #82 .
2015-09-02 23:08:04 -07:00