3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-26 12:43:09 +01:00
Commit Graph

515 Commits

Author SHA1 Message Date
James Lu
ffc734d8e2 relay: only send RAW_MODES payloads to networks without can-spawn-clients 2017-08-18 15:51:14 -07:00
James Lu
15be760b19 relay: send RELAY_RAW_MODE payloads to the *remote* channel name 2017-08-18 13:30:17 -07:00
James Lu
8563556850 relay: fix relaying between channels not matching their lowercase (DB) name
This rewrites get_relay() to be case insensitive by taking the IRC object instead of a string name.
This fixes a regression introduced by 32249ac (case-insensitive channel state)
2017-08-18 12:42:47 -07:00
James Lu
d679859d7d relay: explain/comment the code for extban handling 2017-08-12 17:12:56 -07:00
James Lu
d2466dd33c relay: support relaying channel mode changes as text
Closes #389.

This adds a new internal hook RELAY_RAW_MODE, which is called once on every relayed network but with the mode list from the source network.
2017-08-11 19:22:14 -07:00
James Lu
e17837cbb1 relay: add nickflood (inspircd +F) to whitelisted cmodes 2017-08-11 13:32:04 -07:00
James Lu
5250e41a94 relay: reformat whitelisted mode lists 2017-08-11 13:29:45 -07:00
James Lu
4a6f94f8fc relay: add workarounds for u-lined servers
- Allow ulines to join with modes (this status gets forwarded as part of relay_joins()), but *ignore* this status when checking for claim
    - For U-lined clients to set modes properly and kick, they be on the claim list
- Allow ulines to set modes on ulined clients including itself. These changes are ignored: not forwarded, not bounced, but just left there.
- Ignore uline attempts to set non-list modes - this is mostly for compatibility with Anope's DEFCON, as it would otherwise lead to a mode flood.

This requires commit 9113b34b46, i.e. the get_server() update.
2017-08-11 13:15:03 -07:00
James Lu
b456966dd3 relay: move ban-style and whitelist checks to earlier in get_supported_cmodes 2017-08-05 22:03:58 -07:00
James Lu
ffde2c6b32 relay: add in muteban relaying on InspIRCd and UnrealIRCd 2017-08-05 22:03:51 -07:00
James Lu
b9a58670ef relay: cleanup code flow in handle_mode 2017-08-05 21:13:39 -07:00
James Lu
4379ef68ef Migrate coremods.permissions to snake case 2017-08-02 22:24:23 +08:00
James Lu
1d6b692e14 relay: allow overriding tag_nicks per network
Closes #494.
2017-08-02 21:57:48 +08:00
Mitchell Cooper
c92bb1e33b relay: add server-specific server_suffix (closes #462) (#484) 2017-07-12 14:10:36 -07:00
James Lu
654df0889d relay: rename checkSendKey -> _check_send_key 2017-07-12 07:51:34 -07:00
James Lu
508253af7e relay: switch to Channel.is_op_plus() 2017-07-11 02:23:13 -07:00
James Lu
f203abdeb0 relay: move iteration over all networks into a wrapper function
First part of #471.
2017-07-10 23:09:00 -07:00
James Lu
a43076e815 relay: rename isRelayClient to is_relay_client 2017-07-10 22:38:25 -07:00
James Lu
2f87aa63e9 relay: remove double iteration when firing the PYLINK_RELAY_JOIN hook 2017-07-10 22:36:43 -07:00
James Lu
f7dfc38688 relay: only initialize channels that are relevant to the called network in initialize_all()
Previously, this would quite often hit channel names that simply don't exist on the target network.
2017-07-07 14:20:24 -07:00
James Lu
3b091f9e20 relay: remove a useless logging line 2017-07-07 13:43:30 -07:00
James Lu
d2d76baad8 relay: more detailed logging when the spawn_* condition times out 2017-07-07 13:32:04 -07:00
James Lu
62669c085d relay: re-add 'CLAIM #channel -'
This was mistakenly removed in d51c399351 due to a merge conflict, oops...
2017-07-02 22:06:50 -07:00
James Lu
f800c9f7c2 Merge branch 'wip/irc-explosion-2' into devel (#475)
This brings in a major refactor of the IRC/protocol stack, to start off 2.0-dev.
2017-07-02 21:16:06 -07:00
James Lu
f2b644e2bb relay: be more verbose in 'grabbing spawnlocks' messages 2017-07-02 12:36:33 -07:00
James Lu
7d68c03101 various: convert sortPrefixes/getPrefixModes calls to snake case 2017-06-30 21:40:05 -07:00
James Lu
61ed209abb coremods, plugins: migrate to snake case for protocol communication 2017-06-30 21:30:20 -07:00
James Lu
0c7fb861f1 classes, relay, ircs2s_c: tweak/remove various debug statements 2017-06-29 23:19:21 -07:00
James Lu
10bca676fc coremods, plugins: migrate to snake case 2017-06-29 23:01:39 -07:00
James Lu
4696519bad plugins: migrate irc.proto calls to irc 2017-06-25 02:09:59 -07:00
James Lu
89f9b46ec0 relay: demote "PM from server" warnings to debug
InspIRCd's m_chanlog.so sends these on purpose, so it's best not to warn about this "feature" endlessly...
2017-05-15 21:32:41 -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
bf1d7812e2 clientbot: track channel modes and TS on join
Closes #345.
2017-04-09 14:49:19 -07:00
James Lu
2e5cccc381 relay: fix incrementing changes to modedelta 2017-04-01 12:50:32 -07:00
James Lu
13be8ff6d0 relay: apply modedelta rules on SJOIN as well 2017-04-01 12:50:32 -07:00
James Lu
4312983ca5 relay: initial modedelta implementation 2017-04-01 12:50:32 -07:00
James Lu
d425cb9d47 relay: fix case sensitivity in channel TS check 2017-03-28 08:08:39 -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
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
ebd5b77576 relay: normalize channel case in 'link'
(regression from commit 93c9b6289c)

Reported by @koaxirc.
2017-03-09 20:42:38 -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
02faa3fcb6 relay: more verbosity in TS-related link errors 2017-02-21 21:14:03 -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
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
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
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
c20c144222 automode, relay: remove unused imports 2017-01-21 12:01:41 -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
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
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
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
Ken Spencer
d467d27ecd plugins: change remaining plugins over irc.error() use 2016-11-18 23:11:44 -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
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
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
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
b9d8ec5039 relay: listen to PYLINK_SERVICE_JOIN from services_support 2016-09-24 12:13:33 -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
b467da13b1 relay: clobber colour codes in hosts 2016-09-20 06:58:04 -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
dd083b9b8d relay: remove extraneous comment 2016-09-06 20:11:08 -07:00
James Lu
c5c77eeb97 protocols: chandata->channeldata for MODE and JOIN hooks 2016-09-02 17:52:19 -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
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
09c98f66ff relay: fix overzealous host normalization due to variable replacement during iteration 2016-08-21 18:06:53 -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