James Lu
5eee8000dd
Irc: catch OSError (bad file descriptor) errors; they usually mean we're disconnected
2015-07-25 22:51:00 -07:00
James Lu
a38fe1ab90
Fix #74 for real?
2015-07-25 22:11:41 -07:00
James Lu
ddefd38591
ts6: fix the broken mess of a JOIN handler, and 'parse_as' handling in irc.callHooks...
2015-07-25 20:43:26 -07:00
James Lu
1ab8db8069
start-cpulimit: default limit to 20%
2015-07-25 18:27:30 -07:00
James Lu
69e16e536b
ts6: add QS as a required capability
2015-07-25 18:27:30 -07:00
James Lu
e354ada838
relay: fix nick collision loop on SAVE + when both tagged UID and untagged UID exist on one net
...
This fixes a clash when for example: both 42XAAAAAA and _42XAAAAAA exist on a network, and PyLink tries to relay both nicks as _42XAAAAAA/network.
Also, this adds an oldnick argument to the SAVE protocol handler, which is then used by relay.normalizeNick to check whether the original pre-SAVE nick is also in use, in the event of nick collisions.
2015-07-25 18:27:30 -07:00
James Lu
5ab7b507be
Add wrapper scripts (start-cpulimit.sh, kill.sh) to assist running PyLink under cpulimit
...
Again, we're trying to prevent the software from frying people's CPUs...
2015-07-25 16:58:11 -07:00
James Lu
f85fbd934b
main: write a PID file to pylink.pid
2015-07-25 16:57:21 -07:00
James Lu
c07cfb13df
relay: fix checks of DELINK must having a network parameter on a relay's home network
2015-07-25 16:56:48 -07:00
James Lu
3804e5e4f8
main: shut down immediately when handle_events errors
...
This is to prevent accidents from frying a server's CPU. For example, a nick collision loop due to a desync!
2015-07-25 16:11:41 -07:00
James Lu
6de30722b9
Revert "README: mark TS6 support as experimental"
...
This reverts commit a5d71ffb56
.
Then again, most of PyLink is experimental at this stage... :)
2015-07-25 11:08:04 -07:00
James Lu
b681a675eb
relay: only join users once, returning if there are no queued users at all
...
Closes #71 , prevents op floods on multiple SJOIN being sent. Also, this squashes AssertionErrors raised by protocol modules in sjoinServer, when we try to join zero users to a channel!
2015-07-25 11:03:27 -07:00
James Lu
7daa595a7b
relay: fix opmodes not actually being coersed properly
...
Modepair is set before the coersing phase and never updates; whoops!
2015-07-25 10:43:47 -07:00
James Lu
25da086a6b
Merge branch 'master' into wip/relay-no-duplicate-modes
2015-07-25 10:18:08 -07:00
James Lu
ee1267f06e
relay: fix use of incorrect variable in logging
2015-07-24 21:12:33 -07:00
James Lu
146ab5e444
ts6: support +AOS charybdis extension modes, warning if the IRCd doesn't support them
...
Also, add 'adminonly' (+A) to relay's whitelist.
2015-07-24 20:55:48 -07:00
James Lu
e4da670ae0
relay: propagate SAVE as NICK changes for non-relay users!
2015-07-24 18:29:59 -07:00
James Lu
a4da9b5324
protocol/relay: fix handling of KILLs sent to non-relay users
2015-07-24 18:26:31 -07:00
James Lu
3b67ddfee6
coreplugin: use a more standard "End of WHOIS" message
...
"End of /WHOIS list" seems relatively standard: it's used by InspIRCd, charybdis, and UnrealIRCd.
2015-07-24 11:13:53 -07:00
James Lu
007a1d9389
Merge branch 'master' into devel
2015-07-24 11:09:53 -07:00
James Lu
01220b3024
correction: InspIRCd uses RFC1459 case mapping by default
2015-07-24 10:59:04 -07:00
James Lu
a5d71ffb56
README: mark TS6 support as experimental
...
Currently, #71 makes this near unusable because of mode flooding whenever anything happens on a slightly large network.
2015-07-24 10:56:23 -07:00
James Lu
71a3464e8a
relay: also quit users who aren't on any shared channels after KICK
2015-07-24 10:51:16 -07:00
James Lu
5c3466bf82
relay: briefly workaround #74 by reordering our user checks
2015-07-24 10:50:39 -07:00
James Lu
868b4503e6
protocols: Fix #81 - that was easy!
...
Split data by only one space at a time, not as many spaces as possible. Thanks to @nathan0.
2015-07-23 19:09:19 -07:00
James Lu
254797dcfd
relay: remove servprotect from umode whitelist for now..
2015-07-23 18:05:13 -07:00
James Lu
57c3a04cda
ts6: call SQUIT hooks upon receving it...
2015-07-23 15:05:10 -07:00
James Lu
0977268070
utils.parseModes: don't error if prefix isn't given, assume +
2015-07-23 15:04:57 -07:00
James Lu
dc7edf542a
relay: fix error on handle_part if remote network has no link
2015-07-23 14:34:56 -07:00
James Lu
d213429559
Revert "relay: when filtering modes, ignore internal mode-type lists (modenames starting with *)"
...
This reverts commit 4ce377944c
.
2015-07-23 14:30:48 -07:00
James Lu
024cf9d878
main: better INFO logging...
2015-07-23 14:19:12 -07:00
James Lu
a77427ded9
ts6: fix SQUIT handling
...
These come in a different syntax? Strange.
2015-07-23 13:45:55 -07:00
James Lu
0575de1fac
Support noctcp (+C) on charybdis, and wallops (+w) in relay
2015-07-23 13:45:38 -07:00
James Lu
4ce377944c
relay: when filtering modes, ignore internal mode-type lists (modenames starting with *)
2015-07-23 13:36:40 -07:00
James Lu
a8b16d9724
utils.parseModes: fix handling of mode "-k *" on TS6
...
Charybdis allows unsetting +k without actually knowing the key by faking the argument when unsetting as a single "*". We'd need to know the real argument of the +k being removed, in order to remove the mode pair from the mode list.
2015-07-23 13:24:18 -07:00
James Lu
254ccea0a3
remove some debugging cruft and unused imports
2015-07-23 11:46:45 -07:00
James Lu
83494482a2
relay: don't ever quit the main client or part it from autojoin channels
2015-07-23 11:44:38 -07:00
James Lu
cbe7fa539f
relay: remove more spurious "you must be in channel" messages
2015-07-23 11:41:33 -07:00
James Lu
42593ae431
ts6: add missing handler for SID
2015-07-23 11:17:57 -07:00
James Lu
58a8d7134c
Fix handling of inbound CHG*
2015-07-23 11:02:32 -07:00
James Lu
1efc9018f3
main: raise fallback ping frequency to 30
2015-07-23 10:28:28 -07:00
James Lu
2e34d9e85d
ts6: Use EUID in spawnClient, and error on attempts to use plain UID
...
The latter isn't handled and thus would lead to pretty bad desyncs. Closes #79 .
2015-07-23 10:22:55 -07:00
James Lu
8799e1ccc8
spawnClient: add ts as opt. argument; relay: spawn pseudoclients w/ TS of original user
2015-07-23 00:11:24 -07:00
James Lu
44e07b0c2f
relay: don't error if the WHOIS target isn't a relay user... oops
2015-07-23 00:10:54 -07:00
James Lu
88c85c8475
coreplugin/whois: only show user modes to opers
2015-07-23 00:05:05 -07:00
James Lu
a7f977aa3b
Add whois handlers for channel lists, user modes, and signon time, and relay user information
...
New API: utils.whois_handlers allows one to add functions taking (irc, target) and returning (irc numeric, reply text)
Closes #72 .
2015-07-23 00:01:51 -07:00
James Lu
d52fba37b8
add numericServer for sending raw numerics from servers, and WHOIS handling in coreplugin
...
Basic WHOIS handling (user information, server information, IRCop access) are sent. #72
TODO: send channel lists, an extra note for relay clients, user modes, and idle time
2015-07-22 21:15:34 -07:00
James Lu
8a1f965303
Consistently use applyModes in spawnClient, so user modes are stored like ('o', None) instead of ('+o', None)
...
Drop the 'modes' argument in IrcUser, for this is incorrect.
2015-07-22 21:14:22 -07:00
James Lu
686467ffa6
Remove endburst toggling in spawnServer, has_bursted IrcServer flag
...
Neither are being used at all; they're essentially dead code.
2015-07-22 20:39:38 -07:00
James Lu
35cdfbf7e6
Declare IRCd casemapping in protocol modules, and respect these in utils.nickToUid
...
This adds a new utils.toLower(irc, text) function which returns the lowercased version of <text> based on <irc>'s declared case mapping.
Closes #75 .
2015-07-22 20:31:45 -07:00