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
44b102ffce
networks: allow all opers to run 'autoconnect'
2016-04-02 09:48:49 -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
b100f30cfe
fantasy: break if IRC object isn't ready
2016-03-27 21:46:10 -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
0bb54d88e0
New servprotect plugin (anti-KILL/SAVE flood)
2016-03-25 16:51:02 -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
a8303d0110
commands: sort channel list in 'showuser' output
2016-03-14 14:35:09 -07:00
James Lu
359bfcd9da
bots: map 'msg' command to 'say' too
2016-03-07 21:37:08 -08: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
9b0db81068
changehost: modularize, add a command to apply cloaks now, match IPs too
...
Closes #167 .
2016-03-05 10:11:47 -08:00
James Lu
5fed4629a6
networks: remove networks with autoconnect off in 'disconnect'
...
Closes #162 .
2016-03-05 09:42:51 -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
1ce2725f1e
bots: update help for 'msg' command (reflect changes made for #161 )
2016-02-27 19:07:03 -08:00
James Lu
54dc51aed4
bots: make source client names optional ( Closes #161 )
2016-02-27 19:05:06 -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
d531201850
Merge branch 'master' into devel
2016-02-27 17:47:55 -08:00
James Lu
393466498e
opercmds: fix wrong help message for KILL
2016-02-26 07:16:39 -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
df23b79780
commands: reformat 'showuser' output, and show services login info ( #25 )
2016-02-20 18:24:29 -08:00
James Lu
cf15bed58d
classes: add services_account field in IrcUser ( #25 ), default 'identified' attribute to empty string instead of None
2016-02-07 18:11:09 -08:00
James Lu
0d4655c381
core: support multiple channel loggers with DIFFERENT log levels & fix example conf ( #83 )
2016-01-30 23:35:51 -08:00
James Lu
cf1de08457
commands: support rehashing channel loggers
2016-01-23 13:52:37 -08:00
James Lu
2503bd3ee5
commands: In rehash, use irc.disconnect() to disconnect networks removed from conf
2016-01-23 13:52:37 -08:00
James Lu
f25c260937
relay: sort channel links in LINKED output
2016-01-20 07:14:49 -08:00
James Lu
8f5073d111
opercmds: simplify code for KILL and KICK
2016-01-16 17:29:18 -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
cb467bcfdb
plugins, docs: update to use irc.proto.kill
2016-01-16 17:03:58 -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
27673aba0e
opercmds: add KILL command ( #90 )
2016-01-09 18:34:57 -08:00
James Lu
b0a405c6e0
opercmds: add 'checkban' command - ircmatch frontend for checking bans
2016-01-03 21:05:30 -08:00
James Lu
a3a27a9031
Merge chancmds plugin into opercmds
2016-01-03 19:59:48 -08:00
James Lu
43404c26dc
opercmds: add JUPE command ( #90 )
2016-01-03 11:45:01 -08:00
James Lu
9ac9bc1137
changehost: check users' real hosts instead of their displayed vHosts
2015-12-31 18:46:09 -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
8fb76f96ff
changehost: whoops, numbers are allowed in hostnames too
2015-12-30 17:08:38 -08:00
James Lu
0c6a658317
New Changehost plugin, with flexible on-connect vHost settings using hostmask matches and substitution
2015-12-30 16:53:53 -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
cc79871eaf
exec: add some more default imports for convenience
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
d958f65f7e
networks: call coreplugin and loaded plugins' main() functions on connect
...
I haven't really tested this very well, but it *should* not break anything......
2015-12-24 18:14:05 -08:00
James Lu
9a81a2ba1f
Rename utils.getProtoModule => utils.getProtocolModule
2015-12-24 17:33:49 -08:00
James Lu
2391918deb
networks: add "remote" command, for running commands on remote networks
2015-12-22 10:58:58 -08:00
James Lu
4e7396b1ac
exec: add 'inject' and raw' commands ( Closes #148 )
2015-12-22 10:47:02 -08:00
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