James Lu
fdaed4f700
relay_clientbot: configurable formatting, with defaults 1000x prettier than janus
2016-07-23 12:05:22 -07:00
James Lu
a9be5d0dc7
relay: treat kicks to the service bot on clientbot networks as clear channel
...
This is so if the bot is kickbanned from a channel, it will remove all users to prevent ghosts on the channel.
* cbot.relay has kicked ChanServ/cbot from #test ((xdxdxd.xdxdxd/cbot) Clientbot was kicked from channel.)
2016-07-23 11:20:52 -07:00
James Lu
88e510b4cf
clientbot: begin work on special hooks & move event relaying to a separate plugin
2016-07-23 01:16:26 -07:00
James Lu
eb24e01619
relay: allow slashes for clientbot
2016-07-20 23:55:34 -07:00
James Lu
47a0a7f8c6
Make plugins/ and protocols/ namespaces
2016-07-20 23:55:26 -07:00
James Lu
8169a2b751
automode: fix typo in loadDB()
2016-07-17 15:19:48 -07:00
James Lu
40197e5f57
automode: fix help syntax
2016-07-17 10:54:46 -07:00
James Lu
d7538bee1b
automode: remove mentions to "setacc #channel mask -"
2016-07-17 10:50:18 -07:00
James Lu
94f2422a1e
relay: show secret channels in LINKED to those in the channel
...
Closes #278 .
2016-07-16 21:07:08 -07:00
James Lu
b7852b1d01
relay: hint at JUPE being a reason why server spawning might fail
2016-07-13 18:56:55 -07:00
James Lu
5c7524bcf3
relay: use the "official" method of removing bad networks
2016-07-13 18:49:51 -07:00
James Lu
31bf984996
Revert "relay: don't try to force network disconnects"
...
This reverts commit 77edd9870c
.
2016-07-13 18:43:22 -07:00
James Lu
ad5cd51189
automode: fix wrong indent in modebot_uid check
2016-07-12 22:16:24 -07:00
James Lu
6598d56400
automode: fix join handler, make match() take multiple users instead of one
2016-07-12 21:58:08 -07:00
James Lu
76554dccd1
automode: refactor to send only one MODE per channel ( #275 )
2016-07-12 21:58:08 -07:00
James Lu
256801c0b4
automode: send one MODE per user (first part of #275 )
...
If a user matches multiple DB entries, only one is sent now. However, this still needs to be changed so if multiple people are being checked for entries at once, one MODE command is sent for the entire channel.
2016-07-12 00:08:11 -07:00
James Lu
92466e4a00
relay: make tag_nicks default to True
2016-07-11 23:35:16 -07:00
James Lu
59f6c861e0
relay: treat SVSNICK as a cue to tag nicks
...
Closes #116 .
2016-07-11 23:23:26 -07:00
James Lu
bc369bf6a6
relay: force tags when a nick collision happens
2016-07-11 21:54:48 -07:00
James Lu
95ff33876c
relay: handle KILLs to untagged clients as a cue to tag them ( #116 )
2016-07-11 21:43:43 -07:00
James Lu
5bfba0a411
relay: make default nick tagging and separator global options ( #116 )
2016-07-11 21:43:43 -07:00
James Lu
1b0829f401
ctcp: totally not an easter egg update
2016-07-11 16:59:44 -07:00
James Lu
6904ba9606
commands: remove reference to 'signon time'
2016-07-11 16:49:08 -07:00
James Lu
77edd9870c
relay: don't try to force network disconnects
...
This doesn't work, and seems to cause PyLink to freeze instead.
2016-07-11 16:35:35 -07:00
James Lu
a6d9016464
automode: add clearacc, syncacc commands
...
Closes #262 . Closes #263 .
2016-07-11 16:29:17 -07:00
James Lu
cb7e7abec5
automode: treat channels case insensitively in 'delacc'
2016-07-11 16:29:02 -07:00
James Lu
9c2bec7a3d
relay: don't create relay clones with the user's original TS
...
There's no point of doing this. Relay should purposely lose nick collisions anyways because it can simply switch to the next one.
2016-07-10 22:25:01 -07:00
James Lu
b88b9614f6
automode: join channels where automode is enabled ( #264 )
...
Still a WIP: when automode is killed, it won't join any relay leaf channels. Perhaps Relay needs to learn how to queue channels for services bots when they join a remote channel, and then remove them when that channel is delinked, etc.
2016-07-08 13:01:56 -07:00
James Lu
de7533a46e
automode: more explicit check for the modebot UID being available
2016-07-07 22:57:31 -07:00
James Lu
f97f2d2fda
automode: call unregisterService() on unload
2016-07-07 22:41:51 -07:00
James Lu
df41dabb71
relay: drop prefix modes if the target doesn't have a relay clone yet
...
This fixes modes like ('+v', None) from being accidentally sent by Relay, when Automode happens to set modes before all relay clients are spawned.
2016-07-07 22:16:34 -07:00
James Lu
00766041f3
plugins: make DB save delay configurable
2016-07-07 22:16:21 -07:00
James Lu
db3517b43a
automode: only those with admin login can change access entries
2016-07-07 21:57:36 -07:00
James Lu
4999ecd11f
Integrate services_support and automode
...
New hook: PYLINK_SERVICE_JOIN
2016-07-07 21:54:59 -07:00
James Lu
b3310eaf78
relay: also send internal hook for services login, for integration with automode
2016-07-07 21:43:25 -07:00
James Lu
0d502095c5
relay: integrate with automode by sending relay JOINs as a hook
2016-07-07 21:38:12 -07:00
James Lu
2be4811673
automode: separate matching into a separate function & listen for services login changes
2016-07-07 21:31:36 -07:00
James Lu
552070132d
automode: implement JOIN handler for a new working ACL system!
...
Closes #170 .
2016-07-07 21:23:06 -07:00
James Lu
d365f04199
Automode plugin stub ( #204 )
...
This supports adding/removing/listing entries and saving them to a DB, but no modes are set yet.
2016-07-07 21:06:28 -07:00
James Lu
ae2eefc73e
opercmds: actually make 'checkban' oper-only
2016-07-07 11:18:06 -07:00
James Lu
2b88c8d630
opercmds/changehost: actually commit changes mentioned in last commit
2016-07-06 23:47:31 -07:00
James Lu
37e1c7d538
opercmds: fix typo in help.
2016-07-06 22:36:29 -07:00
James Lu
ec0f2714e2
opercmds: format KILL reasons properly in kill()
2016-07-06 22:36:06 -07:00
James Lu
81fca49738
relay: hide disconnected networks from LINKED output
...
Closes #258 .
2016-07-03 12:40:23 -07:00
James Lu
72c48502c6
Generate __init__.py with package version on runtime
...
Closes #259 . This removes world.version and replaces it with pylinkirc.__version__ where the former was used.
2016-07-03 00:26:03 -07:00
James Lu
7c6daa839c
relay: don't error if servers for current net were already removed
2016-07-01 22:20:10 -07:00
James Lu
e3170cda83
relay: remove another _ in opertype handling
2016-07-01 21:07:07 -07:00
James Lu
847a98755f
core: use a shared function for disconnecting + removing networks
2016-07-01 20:14:31 -07:00
James Lu
013891bebc
networks: drop 'connect' command, it's useless
2016-07-01 19:54:37 -07:00
James Lu
da4da91ef9
networks: unconditionally remove disconnected IRC objects
2016-07-01 19:54:19 -07:00
James Lu
1a0983b8e9
relay: prefix nicks starting with - (this is invalid)
2016-07-01 19:19:11 -07:00
James Lu
c9b6695f90
relay: make sure normalized nicks have no invalid characters
...
This affects the separator option too: if someone puts something invalid in that field, this will coerse bad chars to | instead of letting the IRCd deal with it.
2016-07-01 19:16:47 -07:00
James Lu
042a173d87
relay: use a 5 second timeout when acquiring all threading locks
2016-07-01 18:54:35 -07:00
James Lu
06ee35dcfc
relay: catch various errors if a relay client is killed while commands are called from it
2016-07-01 18:54:07 -07:00
James Lu
4cd49296e5
Merge remote-tracking branch 'origin/master' into devel
2016-06-30 19:00:39 -07:00
James Lu
91a663d5c7
commands, relay: use irc.reply() with private=True instead of irc.msg()
...
This is more flexible, etc.
2016-06-30 18:43:56 -07:00
James Lu
02405c36b5
core, fantasy: redo handling of noticed and/or private replies
...
New behaviour for command responses in general: FANTASY commands reply in channel as PRIVMSG, while all commands sent in PM reply as private notices.
- The old irc.called_by is now irc.called_in (PLACE last command was called)
- irc.called_by is now used to store the CALLER of the last command
- notice=True/False toggle is dropped from ServiceBot.call_cmd()
- New private=True/False option added to ServiceBot.reply() and irc.reply(), which controls whether replies should be sent privately or not.
2016-06-30 18:22:45 -07:00
James Lu
14f569fd7c
relay: improve command help, add featured command definitions
2016-06-30 18:05:27 -07:00
James Lu
b2b4f33fe8
games: add service description & featured commands
2016-06-30 17:45:05 -07:00
James Lu
5f2da1c8c3
relay: cap waiting time for irc.connected to 5 seconds
2016-06-29 18:12:50 -07:00
James Lu
8b39635fa8
relay: don't expect that serverdata['channels'] is always present
2016-06-27 23:00:39 -07:00
James Lu
8af4b0c06d
relay: use extra_channels to persistently join the PyLink bot to relay channels
...
Closes #247 .
2016-06-25 14:21:18 -07:00
James Lu
1ce6102ae8
relay: allow toggling netsplit hiding
2016-06-25 13:47:59 -07:00
James Lu
1a6bb714ac
relay: drop spawn_servers toggle, remove "Relay network lost connection" quits
...
Relay server spawning is now always on - there's no real reason why it shouldn't work.
Closes #237 .
2016-06-25 13:27:24 -07:00
James Lu
2b0dd0f746
ctcp: allow PING with multiple arguments
2016-06-25 12:18:50 -07:00
James Lu
3461216d20
ctcp: add PING, easter egg
2016-06-25 12:11:04 -07:00
James Lu
f009a739bc
Merge remote-tracking branch 'origin/master' into devel
2016-06-25 11:36:55 -07:00
James Lu
f445f7baef
relay: be more tolerant to users sending messages to channels they're not in
...
This extends the routing of messages from servers across the relay via the main PyLink client to users too.
This allows atheme's GameServ, various commit announcers, etc. to work over relay regardless of whether +n is set.
2016-06-25 11:31:04 -07:00
James Lu
e966fe7e56
relay: typo in comment
2016-06-25 10:43:07 -07:00
James Lu
504a9be7d6
relay: attempt to eliminate freezing when networks are down
2016-06-24 18:41:13 -07:00
James Lu
90ee20ee8b
relay: revert changes to mode handling that only bursts modes from the owning network on connect
2016-06-22 21:41:04 -07:00
James Lu
6fc5fa3130
relay: split relayModes() into getSupportedCmodes() for better reusability
...
First part of #248 .
2016-06-22 19:49:49 -07:00
James Lu
8969cfb74e
Merge branch 'master' into devel
...
Conflicts:
plugins/networks.py
2016-06-22 19:10:59 -07:00
James Lu
1ad8b2e539
networks: reintroduce networks properly in 'connect'
...
Closes #245 .
2016-06-22 10:39:22 -07:00
James Lu
cfa2cda885
relay: only reverse modes for CLAIM if there are any to reverse
2016-06-21 20:29:48 -07:00
James Lu
481d70eff8
New import paths for properly installed pylinkirc
2016-06-20 18:18:54 -07:00
James Lu
0b9691c3c6
Merge branch 'master' into devel
2016-06-20 16:38:33 -07:00
James Lu
87cbbc9c57
relay: clearer error message when DESTROY'ing a channel you didn't create
2016-06-19 12:32:27 -07:00
James Lu
d3e207d653
relay: axe unused variable
2016-06-19 12:32:12 -07:00
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
db56513ac7
relay: default DB to {} so it doesn't flip out on 'load relay'
2016-06-16 21:55:50 -07:00
James Lu
11bbbfba19
Ctcp plugin: handles basic VERSION requests
...
Closes #236 .
2016-06-15 11:31:40 -07:00
James Lu
9952f08c8f
opercmds: switch to irc.parseModes()
2016-06-08 16:40:00 -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
a0d20df899
docs: tweak writing-plugins & TOC, move plugin_example to plugins
...
Closes #226 .
2016-05-22 10:59:57 -07:00
James Lu
ed34c43b6c
games: remove explicit random.seed()
...
AFAIK, random already defaults the seed to the system time, and random.seed() without any arguments thus sets it to something that is already set.
2016-05-22 10:28:56 -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
e498a0cace
games: implement fml ( #122 )
2016-05-20 21:33:50 -07:00
James Lu
9cae7682a8
games: implement eightball ( #122 )
2016-05-20 21:13:39 -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
a2a009cac4
games: mark servicebot as manipulatable for now
2016-05-15 11:58:45 -07:00
James Lu
e4d42bf551
fantasy: fixes to respondtonick, allow configuring custom per-bot prefixes
2016-05-15 11:45:32 -07:00
James Lu
96cefb5be0
fantasy: rework to support service bots ( #216 )
2016-05-15 11:27:51 -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
5d4765b30d
games: call help() with the right arguments
2016-05-14 16:19:29 -07:00
James Lu
28f992d3cb
relay: don't spawn clones for service bots
2016-05-14 16:17:20 -07:00
James Lu
523ef714a0
games: rewrite everything using the new ServiceBot API
2016-05-14 14:53:19 -07:00
James Lu
522b7b8b33
Move DataStore to structures (untested)
2016-05-14 14:53:19 -07:00
Daniel Oaks
c5242d1590
games: Fix help prefix stripper
2016-05-14 14:53:19 -07:00
Daniel Oaks
f1b0981f87
games: Write .help handler
2016-05-14 14:53:19 -07:00
Daniel Oaks
c2e3ce5bdf
games: request/remove commands
2016-05-14 14:53:19 -07:00
Daniel Oaks
45651858e4
games: Use db adapted from DataStore I wrote for mammon. May not seem too useful right now, but I have plans(tm)(c)
2016-05-14 14:53:19 -07:00
Daniel Oaks
cbb2eb318f
games: Only handle self messages if enabled
2016-05-14 14:53:19 -07:00
Daniel Oaks
c3e4cfa2de
games: Create BotClient class, use bot_clients instead of games_user
2016-05-14 14:53:19 -07:00
Daniel Oaks
f6854ab673
games: Add example dice command from my bot
2016-05-14 14:53:19 -07:00
Daniel Oaks
ed15af72ec
games: Simplify/betterise handlers, create example dice handler
2016-05-14 14:53:19 -07:00
Daniel Oaks
4054276ac0
games: Clean up CommandHandler
2016-05-14 14:53:19 -07:00
Daniel Oaks
967dafaf0d
games: Very initial barebones command handler
2016-05-14 14:53:19 -07:00
Daniel Oaks
f5efc36bf2
games: Initial plugin. Does NOTHING
2016-05-14 14:53:19 -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
32bc5f120b
core: migrate the main client to ServiceBot ( #216 )
...
- irc.spawnMain is dropped. Clients are now spawned in the endburst loop, after protocol negotiation completes. This allows PyLink to spawn clients with hideoper, etc., closing #194 .
- utils.add_cmd and irc.callCommand are now just wrappers around world.services['pylink'].add_cmd and call_cmd respectively.
- coreplugin registers the main client while it is loaded up, before any commands are added.
2016-05-14 13:29:23 -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
7b2319b7c5
changehost: migrate to irc.getHostmask
2016-05-01 15:05:30 -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
4bd4c23a08
networks: also remove coreplugin call
2016-04-30 16:50:04 -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
a069ce8cb4
Unbrick loglevel changing ( Closes #208 )
2016-04-23 11:06:08 -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
8f32727a3f
Move rehash into core ( Closes #178 )
2016-04-09 09:54:04 -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
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