3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 17:29:21 +01:00
Commit Graph

1075 Commits

Author SHA1 Message Date
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
James Lu
9b38ca7d68 automode: join modebot client on setacc
Reported by kevin via IRC.
2016-08-31 22:23:55 -07:00
James Lu
e85cc684a1 relay_cb: respect allow_clientbot_pms in 'rpm' (#292) 2016-08-31 19:51:52 -07:00
James Lu
7eb5e59842 relay_cb: implement outgoing PMs from clientbot networks via an 'rpm' command
Closes #292.
2016-08-31 19:48:17 -07:00
James Lu
7817898c14 relay_cb: distinguish between PM and private notice, switch to irc.msg() 2016-08-31 18:30:51 -07:00
James Lu
663d03ed2c relay/clientbot: begin work on outgoing PMs to clientbot users (#318)
This still needs to implement PMs going the other way around, and should eventually distinguish between PMs and private notices.
2016-08-31 14:08:28 -07:00
James Lu
7bae4062b1 automode: log successful sync/add/remove/clear events
Closes #320.
2016-08-31 13:32:50 -07:00
James Lu
1c4cb94a13 relay: block /OJOIN in claim 2016-08-27 19:09:02 -07:00
James Lu
3c7b201f57 protocols: rename 'oldchan' in MODE payloads to 'chandata' 2016-08-27 17:46:35 -07:00
James Lu
f890ddac1b permissions, automode: work on default permissions & add example permissions config (#190)
- Fix possible type errors in add/removeDefaultPermissions by converting permlist values to sets.
- Fix wrong permission string being checked in automode.<command>.#channel
- automode: register and unregister default permissions on load/unload.
- permissions: add an 'also_show' argument to checkPermissions(), to display alternative permissions that weren't directly checked.
2016-08-25 11:45:57 -07:00
James Lu
03a780f397 automode: reorder functions in a way that makes more sense 2016-08-25 11:10:55 -07:00
James Lu
104c0cef4b automode: switch from irc.checkAuthenticated to new-style permissions 2016-08-25 00:58:19 -07:00
James Lu
09c98f66ff relay: fix overzealous host normalization due to variable replacement during iteration 2016-08-21 18:06:53 -07:00
James Lu
5444b808b1 Revert "relay_clientbot: lowercase network name (stylistic choice)"
This reverts commit 42da216f5d.
2016-08-21 17:28:33 -07:00
James Lu
b572c58223 relay: {} are valid nick chars too... 2016-08-20 17:36:24 -07:00
James Lu
e1fab8c153 relay: fix a typo in comment 2016-08-13 11:40:01 -07:00
James Lu
1c83f59baa relay: rewrap some poorly placed comments 2016-08-13 11:03:58 -07:00
James Lu
63f40c9565 relay: delay RELAY_JOIN hooks to a second loop. Closes #311. 2016-08-12 18:47:12 -07:00
James Lu
e75c0d075f relay: on clientbot, explain _why_ calling LINK twice is needed 2016-08-11 12:51:08 -07:00
James Lu
bdadb27466 relay: reverse getPrefixModes() output so the right mode order is passed to sjoin()
This prevents users from bursted as "+@~UID" instead of "~@+UID", for example.
2016-08-09 18:39:13 -07:00
James Lu
1660705658 exec: repr() eval output for proper formatting
This ensures that results that are an empty string, for example, are properly formatted as ''.
2016-08-09 10:57:31 -07:00
James Lu
c09ff6a706 relay_clientbot: fix config key name 2016-08-08 22:23:42 -07:00
James Lu
1b747bf09d relay_clientbot: skip relaying non-PRIVMSGs for X seconds after connect
This can be configured via the option relay::clientbot_startup_delay, and defaults to 5 seconds.
2016-08-08 22:20:31 -07:00
James Lu
3878ae9e0d relay_clientbot: skip to next channel for SQUIT payloads if no nicks are affected 2016-08-08 21:05:55 -07:00
James Lu
8636280b91 relay_clientbot: use channel specific user lists when relaying SQUIT
Closes #312.
2016-08-08 20:59:15 -07:00
James Lu
b096c7a2e3 relay_clientbot: fix wrong key for clientbot_styles 2016-08-08 18:50:36 -07:00
James Lu
990f24938b relay: convert / to . in hostnames on hybrid
Also, switch this check to a whitelist instead of a blacklist for better compatibility.
2016-08-07 15:16:37 -07:00
James Lu
81ffa93bad relay: block attempts to LINK if local TS is lower than remote
Closes #301.
2016-08-04 13:04:32 -07:00
James Lu
acd0c673cb relay_cb: use safe_substitute, rename some fields, add SQUIT/SJOIN support
Closes #294. Closes #304. This renames the "nick" field to "sender", and "identhost" to "sender_identhost", to be less ambiguous when a message sender is a server.
2016-08-04 12:50:38 -07:00
James Lu
72da00d23c relay: block clientbot networks from hosting relays 2016-08-04 10:55:00 -07:00
James Lu
7a0fd1caa3 relay: rework "target in channel" requirements for clientbot links
Closes #305.
2016-08-04 10:47:06 -07:00
James Lu
66067c272f relay: limit hosts to 63 chars, not 64 2016-08-03 00:21:30 -07:00
James Lu
197d9fc14a commands: show topic only if it exists, disable TS output on clientbot 2016-08-02 23:57:18 -07:00
James Lu
a6258dd973 changehost: more friendly error when an expansion field is unavailable 2016-08-02 23:04:46 -07:00
James Lu
1cda5023c8 changehost: copy args before cloning, make $host expansion optional 2016-08-02 22:56:59 -07:00
James Lu
02b5f0b7e6 changehost: explicitly forbid $host from being expanded
This will cause recursion whenever applyhost is ran and a user matches a mask based on real host or IP, which haven't changed. Any suffix or prefix applied to $host will be reapplied, often leading to invalid hosts that are too long.
2016-08-02 22:17:23 -07:00
James Lu
eb032eb7f9 commands: explicitly sort mode lists in 'showuser' and 'showchan' 2016-07-31 21:46:33 -07:00
James Lu
f2a5e1dc78 relay: catch errors on remove_network() and ignore them 2016-07-31 20:36:27 -07:00
James Lu
1ef89560e2 core: rename IrcUser.identified attribute to IrcUser.account 2016-07-29 20:16:05 -07:00
James Lu
accd5b70b3 relay: show reasons when clientbot is force parted or kicked 2016-07-29 01:08:14 -07:00
James Lu
6bc3191077 relay: only block cmodes from relaying on clientbot (#289) 2016-07-29 00:54:29 -07:00
James Lu
8047186c58 plugins, coremods: remove usage of irc.conf (#273) 2016-07-27 17:02:04 -07:00
James Lu
42da216f5d relay_clientbot: lowercase network name (stylistic choice) 2016-07-26 16:41:15 -07:00
James Lu
fa1ce45bf3 relay: add configurable list of nick globs to always tag
Closes #276.
2016-07-26 16:01:42 -07:00
James Lu
af027e2288 networks: support protocol module reloading
Closes #177.
2016-07-25 11:00:56 -07:00
James Lu
d008814de9 opercmds: make 'kick' treat channels case insensitively 2016-07-24 16:40:31 -07:00
James Lu
a2c5b11194 opercmds: make 'jupe' admin only 2016-07-24 16:40:23 -07:00
James Lu
a905f74800 relay/clientbot: rework KICK handling to send the right thing at the right times
Some of the logic was inverted so that the Clientbot would try to kick invalid things like GLolol/ovd, and send clientbot KICK payloads when it's supposed to forward an actual kick.

This also fixes KICKs from servers not being relayed by clientbot.
2016-07-24 11:55:46 -07:00
James Lu
bcf5f612cc exec: make pylinkirc and importlib accessible 2016-07-24 11:51:44 -07:00
James Lu
832f22e7f0 relay: remove unnecessary "Relay plugin unloaded" quits 2016-07-24 11:13:51 -07:00
James Lu
dc364b3e9e relay: explicitly don't sync modes originating from clientbot 2016-07-24 11:11:54 -07:00
James Lu
62f78a60a9 commands: refactor showchan to use IrcChannel.getPrefixModes() 2016-07-24 11:03:23 -07:00
James Lu
04e37ebd04 commands: mention the VCS version as well 2016-07-24 10:59:25 -07:00
James Lu
8dd0a904d2 relay_cb: use the full network name in prefixes 2016-07-23 22:30:25 -07:00
James Lu
05a5ec7e19 relay: don't show "real server" for clientbot users, it's not accurately tracked 2016-07-23 22:30:10 -07:00
James Lu
e2a853c98e automode: bandaid fix for "service already registered" errors on first load 2016-07-23 21:46:55 -07:00
James Lu
38793654ea relay: error when someone attempts to PM a clientbot user
PMs aren't routed through Clientbot yet.
2016-07-23 21:09:25 -07:00
James Lu
cadf0a336c relay: limit auto-rejoin-on-part to relay channels 2016-07-23 19:06:35 -07:00
James Lu
08525e8eba relay: treat forced parts to clientbot as clearchan 2016-07-23 19:03:07 -07:00
James Lu
0db9d4e69e relay/clientbot: support relaying KICK, QUIT, NICK, CTCP ACTION, and NOTICE 2016-07-23 18:48:27 -07:00
James Lu
3e91118644 relay/clientbot: implement kick, join, part relaying 2016-07-23 12:25:52 -07:00
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
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
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