James Lu
a5b3011ea4
networks: clear the 'remote command used' state and break if overriding account/reply target fails
2017-05-12 19:58:03 -07:00
James Lu
084f58b499
automode: remove extraneous +'s from mode lists
...
Closes #447 .
2017-05-12 19:41:55 -07:00
James Lu
04f88df385
Actually use 'irc' in main() and die() as a keyword argument (per docs)
2017-05-12 19:19:52 -07:00
James Lu
24b5fd92ef
relay: don't error if the pylink service is gone (e.g. during shutdown)
2017-05-07 13:58:11 -07:00
James Lu
5c7752a203
relay: stop execution if spawn lock acquire fails
...
Also, make the lock timeout a consistent, global variable.
(partial merge of commit e24bc54bbcefc40bf73a197de2dc24f7cd42cf79)
2017-05-04 21:18:02 -07:00
James Lu
d51c399351
Revert "relay: add locks in db read/writes (thread safety)"
...
Unfortunately, this made relay prone to freezing the entire PyLink server.
This reverts commit 2b4943a780
.
2017-05-04 18:53:07 -07:00
James Lu
79e2d20d9d
commands: remove extraneous private=True from showchan
2017-04-27 07:28:26 -07:00
James Lu
0e6d33a668
networks.remote: suppress errors if restoring remoteirc.pseudoclient.account
...
This should rarely happen, but can be purposely caused by causing the remote network to disconnect through 'remote'.
2017-04-09 15:21:19 -07:00
James Lu
709b1d2ead
commands: show TS on networks without has-ts as well
2017-04-09 14:54:16 -07:00
James Lu
bf1d7812e2
clientbot: track channel modes and TS on join
...
Closes #345 .
2017-04-09 14:49:19 -07:00
James Lu
ad4fe1924b
networks: show an error instead of silently failing if the command is empty
2017-03-31 17:13:04 -07:00
James Lu
0749a42ef6
networks.remote: add recursion checks to prevent bad queries from crashing the server
...
For example, 'remote net1 remote net2 echo hi' was problematic if the source network was 'net1'.
It's a good thing this command is restricted by default...
2017-03-31 16:40:26 -07:00
James Lu
9d9b01839c
Split Irc.reply() into _reply() to make 'networks.remote' actually thread-safe
...
Previously, the Irc.reply_lock check was in the reply() function itself: replacing it with another function checking for the same lock would delay execution,
but then run the wrong reply() code if another module used irc.reply() while 'remote' was executing.
2017-03-31 16:25:28 -07:00
James Lu
4cd71d12ef
fantasy: don't trigger when the fantasy prefix is followed by a space
...
This prevents false positives such as "& that", "@ person", etc.
2017-03-28 22:00:41 -07:00
James Lu
d425cb9d47
relay: fix case sensitivity in channel TS check
2017-03-28 08:08:39 -07:00
James Lu
ff0eda1fba
networks: flip **kwargs position to fix Python 3.4 support
...
Reported by @koaxirc.
2017-03-27 15:00:01 -07:00
James Lu
ce0c84266e
fantasy: make responding to nick a per-service configuration option ( #343 )
...
This also renames the "respondtonick" option to "respond_to_nick", deprecating the former name.
2017-03-26 14:03:31 -07:00
James Lu
af3b350498
networks.remote: fix "unknown service" error format
2017-03-24 01:10:56 -07:00
James Lu
6c4e042307
networks.remote: break if the target network is the same as the source ( #437 )
...
_remote_reply() otherwise gets sent into a loop when remoteirc and irc is the same here.
2017-03-24 01:08:01 -07:00
James Lu
490f21ff9f
networks.remote: override remoteirc.reply() to send replies back to the caller
...
Closes #437 .
2017-03-24 00:59:48 -07:00
James Lu
0f472c8959
networks.remote: add an optional --service option to call commands for other services.
2017-03-24 00:25:19 -07:00
James Lu
90d3ac3cf6
relay: skip message prefixing when forwarding a message for a service client ( #403 )
2017-03-23 23:53:48 -07:00
James Lu
f188b29911
plugins: migrate to server capabilities
2017-03-23 23:37:24 -07:00
James Lu
ad00fdfa53
relay: migrate normalizeHost, normalizeNick to protocol capabilities
2017-03-23 23:12:59 -07:00
James Lu
21670a5d51
relay: migrate most protocol checks to protocol capabilities
...
Some things I left out include modesync and op status checking on LINK, since these are pretty specific to Clientbot IRC.
2017-03-23 22:52:11 -07:00
James Lu
3ffbbe60ff
global: configurable output format
2017-03-13 13:39:30 -07:00
James Lu
cfe72e2cd0
global: set loopback=False on messages to prevent duplicating them via relay
2017-03-13 13:29:04 -07:00
James Lu
0a57c084bb
global: only send to connected networks
2017-03-13 13:23:22 -07:00
James Lu
a3dff204d3
global: remove extraneous metadata
...
Core plugins do not need to track authors and version, because git does that for us.
2017-03-13 13:21:11 -07:00
Ken Spencer
7e6ad089c0
plugins: add global notice plugin
2017-03-13 12:30:06 -04:00
James Lu
716ac681b6
exec: add 'pieval' and 'peval' to evaluate expressions pretty-printed
2017-03-11 22:47:30 -08:00
James Lu
bf42109d81
Split fantasy prefix definitions into service-specific blocks
...
Closes #426 .
This makes the pylink::prefix (aka bot::prefix) option only affect the main PyLink bot, and deprecates the pylink::prefixes::<...> options.
As the bot: config block is no longer checked, this commit depends on commit 45ed5b962e215763f7659631d1b98a5031dbab92 (ref #343 ) to alias it to conf::pylink.
2017-03-10 23:47:07 -08:00
James Lu
b09565a723
bots, opercmds: add a "Done" reply to most commands as they finish
2017-03-09 20:50:14 -08:00
James Lu
ebd5b77576
relay: normalize channel case in 'link'
...
(regression from commit 93c9b6289c
)
Reported by @koaxirc.
2017-03-09 20:42:38 -08:00
James Lu
e8bf1d08bc
handlers, fantasy: migrate away from irc.botdata ( #273 )
2017-03-05 00:10:33 -08:00
James Lu
733d7d7c87
exec: add ieval command using the isolated local scope
2017-03-04 22:05:03 -08:00
James Lu
42ba1775d7
exec: add irc, source, and args to isolated locals scopes
...
This allows basic things like irc.reply() to work in 'iexec'.
2017-03-04 21:59:42 -08:00
James Lu
4df8567fa6
Irc: move PYLINK_DISCONNECT firing and connected.clear() into disconnect() ( #421 )
...
This may prevent extra irc.connected.clear() calls from messing with the was_connected state.
2017-02-25 22:06:43 -08:00
James Lu
cd65da75c6
relay: only announce disconnects if the last connection was successful
2017-02-24 21:42:58 -08:00
James Lu
cd3d795296
relay: implement optional network disconnect announcements
...
Closes #421 .
2017-02-24 21:15:40 -08:00
James Lu
c03f2d772c
relay: allow dropping messages from user-less clients
...
This adds two new options, both defaulting to True:
- relay:accept_weird_senders (global)
- servers:<name>:relay_weird_senders (per-server)
Closes #404 .
2017-02-24 19:16:01 -08:00
James Lu
f432f6f082
relay: don't allow linking to channels when the home network is down
...
This check can be overridden via --force, and should stop unreliable TS checks from appearing instead
Closes #419 .
2017-02-21 21:58:32 -08:00
James Lu
93c9b6289c
relay: switch to IRCParser in 'link' and add a --force option to skip TS checks
...
Closes #416 .
2017-02-21 21:52:22 -08:00
James Lu
bf702575be
servprotect: fix a syntax error
2017-02-21 21:49:41 -08:00
James Lu
02faa3fcb6
relay: more verbosity in TS-related link errors
2017-02-21 21:14:03 -08:00
Ken Spencer
a8fe353ba4
servprotect: make length and age configurable ( #417 )
...
Fixes #395
2017-02-21 17:02:26 -08:00
James Lu
0c88602d1f
fantasy: check for nick prefix case insensitively
2017-02-18 21:21:32 -08:00
James Lu
a9d2a2c4bc
relay, handlers: rewrite oper WHOIS replies to show the target's home network
2017-02-18 13:51:45 -08:00
James Lu
3c98ef172e
relay: use the new Irc.getFullNetworkName() where applicable
2017-02-18 13:33:35 -08:00
James Lu
902b246f96
bots: allow specifying channel prefixes (e.g. @+) in 'join'
...
This functionality should really be merged with what ServiceBot does, but whatever...
2017-02-13 17:01:09 -08:00
James Lu
0b0efbaf9f
relay: less ambiguous error if a relay channel doesn't exist on the caller network
2017-02-05 21:47:11 -08:00
James Lu
6e94375ed9
relay: clarify/revise help text for 'claim'
2017-02-05 21:43:53 -08:00
James Lu
18826ad5c6
exec: add 'iexec' to run code in an isolated, persistent local scope
2017-02-05 20:26:40 -08:00
James Lu
a3a5569156
exec: print a "Done" after executing code
2017-02-05 20:14:30 -08:00
James Lu
dcacfb0c10
relay: catch RuntimeError in spawnRelayServer as well
...
This is raised when a network runs out of SIDs, for example.
2017-02-03 18:06:49 -08:00
James Lu
b5cf2e8a4e
stats: add an --all option to 'uptime', and check for disconnected networks
2017-01-30 00:18:50 -08:00
James Lu
efded33f4a
stats: oops, use the right Irc object
2017-01-30 00:08:40 -08:00
James Lu
de99be720e
stats: prettier formatting for the uptime command
...
Closes #381 .
2017-01-30 00:06:42 -08:00
James Lu
1c19d82f53
Merge branch 'wip/stats' into devel
2017-01-29 23:31:43 -08:00
James Lu
8901ed72ee
relay: s/spawnIfMissing/spawn_if_missing/g
2017-01-29 22:18:05 -08:00
James Lu
fa30d3c732
relay: rework fallback message routing to be less annoying ( #384 )
...
- PRIVMSGs from users not spawned on a network are sent via the main PyLink client in the format "<$orignick/$network> <$text>"
- <PyLink> <user/net> blah blah
- NOTICEs from users use the same format above, and are routed from the relay subserver representing the network that the message originated from
- Notice(somenet.relay): <user/net> blah blah
- PRIVMSGs from servers are blocked, because they aren't valid on all IRCds and are fairly obscure anyways (suggestsions/improvements welcome)
- NOTICEs from servers are forwarded as raw text, from the relay subserver representing the origin network
- Notice(somenet.relay): some server announcement
2017-01-29 20:21:45 -08:00
James Lu
e936b9cfd2
relay: add a spawn_if_missing option to get_remote_sid()
2017-01-29 20:20:39 -08:00
James Lu
d6a6d069bc
Move 'mkpasswd' to the commands plugin
2017-01-22 16:42:46 -08:00
James Lu
c20c144222
automode, relay: remove unused imports
2017-01-21 12:01:41 -08:00
James Lu
170738ee10
Revert "automode: bandaid fix for "service already registered" errors on first load"
...
This reverts commit e2a853c98e
.
2017-01-21 11:59:43 -08:00
James Lu
3dd35ba5a1
Add an example services plugin
...
Closes #399 .
2017-01-21 11:59:43 -08:00
James Lu
1fe64cca04
example.py: update to reflect 1.1.x docstring changes ( #307 )
2017-01-21 11:59:43 -08:00
James Lu
d749fbb2ab
ctcp: -that
2017-01-20 22:32:32 -08:00
James Lu
b7470c3c42
ctcp: remove puns
2017-01-20 22:31:46 -08:00
James Lu
b1918f5392
Initial pass at a Stats plugin ( #121 , #381 )
2017-01-11 23:35:35 -08:00
James Lu
a2e7a35998
relay: remove incorrect network name in logging for blocked kicks
2017-01-06 22:51:50 -08:00
James Lu
e0bda6b850
relay: also filter out low TS values in burst relaying
2017-01-06 22:48:11 -08:00
James Lu
3e706366bd
relay: on Clientbot networks, don't relay prefix mode changes for the relayer bot
...
Closes #366 .
2017-01-06 16:45:48 -08:00
James Lu
605d242677
automode: remove repeated "Error:" in error messages
2017-01-02 10:11:55 -08:00
James Lu
a340ab15e1
relay: local channel in 'link' is optional
...
Thanks to Digerati for noticing this.
2016-12-29 08:47:35 -08:00
James Lu
614c029538
relay: add missing 'relay.linked' permissions check
2016-12-25 00:31:38 -08:00
James Lu
ec13bae7e6
opercmds: remove pointless source argument from 'kick' and 'kill'
2016-12-24 10:58:03 -08:00
James Lu
77dd8224ae
relay: use built-in hash() for colorizing text
...
This is way faster than md5.
2016-12-21 23:48:40 -08:00
James Lu
c09fce344d
relay: whitelist _ on InspIRCd, UnrealIRCd, Nefarious, clientbot
2016-12-19 00:00:24 -08:00
James Lu
ef8ec03e41
relay: re-add / in hosts for networks that support it
2016-12-18 23:56:47 -08:00
James Lu
3339bf0fe6
relay: rewrite normalizeHost() to whitelist characters instead
2016-12-17 23:47:26 -08:00
James Lu
f9adaa85ca
commands: implement 'logout'
...
Closes #370 .
2016-12-16 19:05:08 -08:00
James Lu
045abfa9c1
commands: add permissions checks to echo, showuser, showchan, and status
2016-12-16 18:31:19 -08:00
James Lu
2de36caea0
commands: fix previous commit
2016-12-09 22:13:32 -08:00
IotaSpencer
b0296933a1
plugins/commands.py: change over to permissions API
2016-12-09 22:13:32 -08:00
IotaSpencer
9199186309
plugins/opercmds.py: change over to permissions API
2016-12-09 22:13:32 -08:00
IotaSpencer
69083cfcfd
plugins/bots.py: change over to permissions API
2016-12-09 22:13:32 -08:00
James Lu
12a8509299
changehost: limit 'applyhosts' to those with the changehost.applyhosts perm
2016-12-09 22:13:32 -08:00
James Lu
60ca5af813
networks: port to the permissions API ( #367 )
2016-12-09 21:55:47 -08:00
James Lu
fb463e3b26
networks.remote: override the login to a valid user, so that permissions can match it
2016-12-09 21:53:54 -08:00
James Lu
34ad79744a
networks: update help for 'disconnect'
...
The 'disconnect' command has been changed to disable autoconnect, but this text was never updated.
2016-12-09 21:51:57 -08:00
James Lu
01f2a4ca20
servermaps: fix wrong permission name
2016-12-09 21:43:58 -08:00
James Lu
3d4cb02ce2
exec: rewrap docstirngs
2016-12-09 21:43:58 -08:00
James Lu
9e2598612a
exec: port to permissions API ( #367 )
2016-12-09 21:43:58 -08:00
James Lu
b5f244009a
relay: rename camel case functions to lowercase with underscores
...
The exception is isRelayClient(), which is aliased only to is_relay_client() to be consistent with isXYZ() functions elsewhere in the framework
Also, getRemoteChan() was renamed to get_remote_channel()
2016-12-09 18:02:30 -08:00
James Lu
2b4943a780
relay: add locks in db read/writes (thread safety)
2016-12-09 17:44:11 -08:00
James Lu
e40b2f6529
relay: add 'purge' command to remove all relays involving a network
...
Closes #356 .
2016-12-09 17:34:51 -08:00
James Lu
8855ef2a41
relay: don't break in removeChannel if irc.pseudoclient isn't set
2016-12-09 17:34:34 -08:00
James Lu
638b9dc84a
relay: rewrap help for LINKACL
...
More formatting changes to come.
2016-12-05 23:33:42 -08:00
James Lu
a57f194123
changehost: add options to match users by IP and realhost
2016-11-20 12:34:11 -08:00
James Lu
476f84a181
changehost: implement enforce exceptions
2016-11-20 12:33:58 -08:00
James Lu
d90f44c510
changehost: explicitly ignore PyLink internal clients
2016-11-20 12:04:30 -08:00
James Lu
501647805c
changehost: add optional vHost enforcement
2016-11-20 11:53:55 -08:00
James Lu
c77ad6faa9
bots: PseudoClient->client in help text & error messages
2016-11-18 23:13:56 -08:00
Ken Spencer
d467d27ecd
plugins: change remaining plugins over irc.error() use
2016-11-18 23:11:44 -08:00
Ken Spencer
289ab78052
plugins/bots: change over to irc.error() use
2016-11-18 23:10:45 -08:00
Ken Spencer
940430b075
plugins/automode: change errors over to irc.error() based use
2016-11-18 23:10:45 -08:00
James Lu
8ff292bd1f
automode: support remote channel manipulation in the form netname#channel
...
Closes #352 .
2016-11-12 12:20:25 -08:00
James Lu
691a8178b2
relay: implement 'showchan' with links info
...
Closes #353 .
2016-11-12 10:43:55 -08:00
James Lu
b94e11930e
structures: directly retrieve DB save delay in DataStore ( #303 )
2016-11-09 22:53:13 -08:00
James Lu
b0636b40ab
Finish the plugin migration to DataStore
...
Closes #303 .
2016-11-09 22:47:22 -08:00
James Lu
377df413ed
Irc: s/isServiceBot/getServiceBot/g ( #355 )
...
This function is renamed to better reflect its return value (ServiceBot object instead of boolean True).
2016-11-09 19:09:59 -08:00
James Lu
b0bd5d47ae
relay: fix logging format in spawnRelayUser error
2016-11-07 22:04:34 -08:00
James Lu
44743d860e
relay: don't break autoconnect anymore when there's a server conflict
...
This reverts most of commits 5c7524b
and f2a5e1d
.
2016-11-07 21:53:52 -08:00
James Lu
4246a3d113
relay: work on sane fallbacks when a network's SID goes missing ( #354 )
2016-11-07 21:47:53 -08:00
James Lu
b79e693808
exec: Drop 'raw' text logging to DEBUG for security purposes
...
Closes #347 .
2016-11-07 21:25:57 -08:00
James Lu
2d20256ed8
Relay: rework to use the permission system
...
This defines the following permissions:
Granted to opers by default:
- relay.create
- relay.destroy
- relay.claim
- relay.link
- relay.delink
- relay.linkacl.view
- relay.linkacl
Granted to all users by default:
- relay.linked
And the following which is not explicitly granted:
- relay.savedb
Closes #325 .
2016-11-07 21:22:52 -08:00
James Lu
e977c95520
Merge branch 'master' into devel
...
Conflicts:
VERSION
example-conf.yml
2016-11-02 22:28:39 -07:00
James Lu
9f43c0fe17
automode: fix typo in DB error message
2016-11-02 22:27:01 -07:00
James Lu
9f4c68f114
relay: skip channel TS check for Clientbot
...
(cherry picked from commit d230af1d5e
)
2016-10-22 20:59:34 -07:00
James Lu
d230af1d5e
relay: skip channel TS check for Clientbot
2016-10-22 20:45:43 -07:00
James Lu
a5d97c15e7
relay: disable nick collide messages to debug
2016-10-20 20:13:17 -07:00
James Lu
2ed8b68c44
relay: allow configuring custom relay server suffixes
...
Closes #333 .
(cherry picked from commit 3900833458
)
2016-10-20 19:10:47 -07:00
James Lu
386c71475a
servermaps: removing leading - from entries
2016-10-07 18:51:31 -07:00
James Lu
57b566286d
relay: make clientbot modesync more configurable ( #287 )
2016-09-25 20:07:16 -07:00
James Lu
4222cc30a8
relay, clientbot: implement clientbot mode sync
...
Closes #287 .
2016-09-25 20:07:16 -07:00
James Lu
13a42c17b2
servermaps: skip clientbot networks (servers aren't properly tracked)
2016-09-24 16:36:28 -07:00
James Lu
438838f81d
ServiceBot: handle autojoin additions even if bots haven't spawned yet
2016-09-24 12:33:57 -07:00
James Lu
7d20b70d33
relay_cb: fix UnboundLocalError when kicking a service bot
2016-09-24 12:20:18 -07:00
James Lu
b9d8ec5039
relay: listen to PYLINK_SERVICE_JOIN from services_support
2016-09-24 12:13:33 -07:00
James Lu
dfa75f6606
servermaps: simplify output format
...
Drawing all the |'s and `'s is a rather complex process, so just replace this with bullet-point output.
2016-09-24 12:02:43 -07:00
James Lu
60b595ea6f
servermaps: fix help for 'localmap'
2016-09-24 11:58:28 -07:00
James Lu
595bceda2e
servermaps: implement network maps over relay!
...
Local-only map is available too using the 'localmap' command.
2016-09-24 11:56:37 -07:00
James Lu
68c247f764
New servermaps plugin: displays network /map's from the PyLink server's perspective
2016-09-24 11:19:33 -07:00
James Lu
d59732f6dd
automode: simplify join routines to use ServiceBot.join() ( #326 )
2016-09-23 23:43:27 -07:00
James Lu
a040c3c7d2
ServiceBot: modularize join() for explicit channel joining ( #326 )
2016-09-23 23:43:07 -07:00
James Lu
3900833458
relay: allow configuring custom relay server suffixes
...
Closes #333 .
2016-09-23 22:49:04 -07:00
James Lu
d05917222d
relay: clobber colour codes in hosts
...
(cherry picked from commit b467da13b1
)
2016-09-20 07:01:16 -07:00
James Lu
df50b7b137
bots: allow JOIN/NICK/QUIT on ServiceBot clients
...
(cherry picked from commit 1c86f32003
)
2016-09-20 07:01:16 -07:00
James Lu
b467da13b1
relay: clobber colour codes in hosts
2016-09-20 06:58:04 -07:00
James Lu
e0f56a157d
relay_cb: remove dark gray from colours index
...
It's too hard to read on a dark background.
2016-09-19 21:56:12 -07:00
James Lu
1c86f32003
bots: allow JOIN/NICK/QUIT on ServiceBot clients
2016-09-19 18:23:11 -07:00
James Lu
c62dd272d6
relay_clientbot: display the remote channel in join/kick/etc relay, not the local channel
2016-09-19 17:40:50 -07:00
James Lu
e60c020634
relay_clientbot: redo color hashing to be more unique
2016-09-19 17:40:33 -07:00
James Lu
eaa09d68ce
Automode: limit 'list' permissions on all channels to opers
2016-09-12 11:26:31 -07:00
James Lu
838ea6bfc4
relay: skip iterating over modetype definitions during reverse mode lookup
...
This fixes a bug when setting +l on UnrealIRCd, where the type C mode definition is coincidentally also equal to 'l'. Reported by kevin via IRC.
2016-09-07 20:37:57 -07:00
James Lu
bbdffc797d
relay_clientbot: Implement relaying of text sent from service bots
2016-09-06 20:11:08 -07:00
James Lu
dd083b9b8d
relay: remove extraneous comment
2016-09-06 20:11:08 -07:00
James Lu
aacc3149ce
fantasy: don't error when bots are removed while processing (e.g. on shutdown)
2016-09-06 18:06:29 -07:00
James Lu
c5c77eeb97
protocols: chandata->channeldata for MODE and JOIN hooks
2016-09-02 17:52:19 -07:00