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

2267 Commits

Author SHA1 Message Date
James Lu
1c7f2f6a83 utils.applyModes: fix logging output; only remove delete modes with args if new args are different
Previously, you'd get interesting messages where in sequential FJOINs, PyLink would remove param-modes like ('f', '6:5') and then add it right back, thinking that it was a duplicate.
2015-07-08 23:13:23 -07:00
James Lu
b27fcc7f8f utils.applyModes: operate on a copy of the original modelist
This prevents bugs where mode changes are applied to the wrong users (possibly due to the scope not clearing).
2015-07-08 23:11:44 -07:00
James Lu
27bb6af7f6 plugins/admin.py: add 'mode' and 'showchan' commands 2015-07-08 23:01:09 -07:00
James Lu
f01269287e pr/insp: remove checks for valid nick/channel; they're done in plugins now 2015-07-08 23:00:50 -07:00
James Lu
edfcacfdd1 plugins/admin.py: remove -client suffixes from commands, and fix argument checking 2015-07-08 22:50:19 -07:00
James Lu
35f8a0e25f utils.parseModes: be a bit more fault-tolerant
- Log "mode requires an argument but none was found" errors to warning, and skip the mode instead of failing completely.
- Assign a fallback value for 'prefix', checking to make sure it exists and raising ValueError (not UnboundLocalError) when it doesn't.
2015-07-08 22:42:04 -07:00
James Lu
20772e5429 inspircd.nickClient: allow nick 0 to equal the target user's UID 2015-07-08 21:17:34 -07:00
James Lu
049b7f5049 pr/insp: add modeServer, modeClient commands
Closes #32.
2015-07-08 18:23:32 -07:00
James Lu
cbfabb2ba1 pr/insp: add OPERTYPE command handler
This is sent by InspIRCd for oper ups; there is no MODE command for it.
2015-07-08 18:03:08 -07:00
James Lu
7a37f50a1a utils.joinModes: support joining modes with prefixes 2015-07-08 16:58:59 -07:00
James Lu
b92a9ce950 pr/insp: fix handle_mode setting modes on the wrong client 2015-07-08 15:10:09 -07:00
James Lu
5989f11ec0 pr/insp: tests for SERVER, SAVE, NICK, and INVITE 2015-07-08 13:56:28 -07:00
James Lu
8576778ddc Make the 'bot' conf block available in Irc() as irc.botdata
Protocol modules shouldn't read conf directly, so that we can override the config in testing.
2015-07-08 13:56:17 -07:00
James Lu
2d4d8dd247 tests and stuff 2015-07-08 13:35:20 -07:00
James Lu
85e6a1aea2 pr/insp: more tests for hooks, etc 2015-07-07 20:59:35 -07:00
James Lu
0f03a2398b Updates to test_proto_inspircd.py
New tests: testFjoinResetsTS, testHandleTopic, and testHandleFTopic
2015-07-07 18:30:42 -07:00
James Lu
8f75c5363c Move all the FakeIRC stuff to classes.py, update FakeIRC with the ability to get hook data 2015-07-07 18:07:20 -07:00
James Lu
a177a58ae7 pr/insp: fix some bugs in spawnClient 2015-07-07 17:46:56 -07:00
James Lu
7fb60c1ffa pr/inspircd: finish off handlers (add KNOCK, INVITE, NOTICE)
Closes #18.
Closes #31.
2015-07-07 15:31:12 -07:00
James Lu
098b29ae2d Correction: it is legal for a server name to end with '.', but it can't start with it 2015-07-07 14:31:47 -07:00
James Lu
cfc840ebb3 Actually implement 'nick', 'ident', and 'loglevel' config options 2015-07-07 12:14:55 -07:00
James Lu
087a4e7e5c Drop "prefix" config entry, it's not being used
Closes #26. Plugins can implement their own fantasy-style triggers via message hooks, so I'm not sure this really needs a place in the core.
2015-07-07 12:03:30 -07:00
James Lu
7f6c8b0e52 pr/inspircd: enforce minimum protocol version of 1202
We're using InspIRCd 2.0+ specific features (SAVE, CAPAB CHAN/USERMODES), so this is required.
Source: https://wiki.inspircd.org/List_of_protocol_changes_between_versions#Version_1202
2015-07-07 10:55:14 -07:00
James Lu
4cc7781f0d pr/insp: send oldnick in handle_nick hook
Since hooks are only called after processing is done by the protocol module, plugins would have no way of knowing what the old nick of the user was.
2015-07-06 19:44:55 -07:00
James Lu
d833be5f4b pr/insp: smarter spawnClient() with kwargs; implement conf['bot']['prefix']
Red #26.
2015-07-06 19:42:09 -07:00
James Lu
33d23893f8 pr/inspircd: update channel TS when receiving remote FJOIN with lower TS 2015-07-06 19:00:20 -07:00
James Lu
8bed47e7bb pr/inspircd: handlers for FTOPIC and TOPIC (ref #31); make handle_nick return 'newnick' instead of 'target' as arg 2015-07-06 15:33:23 -07:00
James Lu
fe1f90bcd1 FakeIRC: swap arrows in debug output
This is for more consistency with the real protocol debug output:

-> is protocol OUTBOUND - irc.send()
<- is protocol INBOUND - irc.run()
2015-07-06 12:54:30 -07:00
James Lu
b3f369aa81 tests for utils.joinModes so I don't break it in the future 2015-07-06 12:38:45 -07:00
James Lu
74339d1038 Fix joinModes, and use it in protocol/inspircd's joinClient
In short, PyLink should be sending FJOINs to channels with the modes that it already has (or what we believe it has). This prevents clearing mode lists when PyLink's channel TS is slightly earlier than the IRCd's.
2015-07-06 12:28:10 -07:00
James Lu
170620c410 applyModes: remove old modepairs when setting non-list modes that require params
Closes #30.
2015-07-05 23:15:17 -07:00
James Lu
48c3b4b2e9 applyModes: chop off the +/- part of each mode tuple when storing mode lists
Also update these tests accordingly.
2015-07-05 23:00:14 -07:00
James Lu
f1e26b6c55 Fix tests for FakeIRC and update comment style 2015-07-05 22:59:55 -07:00
James Lu
2cbd6fd851 Tests for FMODE/FJOIN, and bugfixes 2015-07-05 19:19:49 -07:00
James Lu
87781abc82 Logging format tweaks 2015-07-05 16:46:57 -07:00
James Lu
211decd2aa everything: Improve logging 2015-07-05 13:44:48 -07:00
James Lu
54dff7a15a Convert print() calls to log calls, Round 1 2015-07-05 13:29:18 -07:00
James Lu
f06bcc7928 Merge commit 'bd755e137ffa034007a77d75fbd00d21e759163e' into wip/logger-module
Conflicts:
	proto.py
2015-07-05 13:22:17 -07:00
James Lu
bd755e137f pr/inspircd: fix a typo in removeClient 2015-07-05 13:07:18 -07:00
James Lu
bd03e00c74 applyModes: ignore unsupported prefix modes (e.g. InspIRCd's +yY) 2015-07-05 12:53:53 -07:00
James Lu
b22f674785 Support prefix modes (+qaohv); refactor applyModes to apply in place; add removeuser() to IrcChannel
Closes #16.
2015-07-05 12:48:39 -07:00
James Lu
d62a413c50 fix last commit 2015-07-05 12:40:34 -07:00
James Lu
2ecaab1586 pr/inspircd: catch KeyError only in the function lookup, not the function call!
This suppressed KeyErrors in execution... BAD
2015-07-05 12:38:55 -07:00
James Lu
dafeff6324 Add channel mode handling (more testing needed)
Closes #28.
2015-07-05 00:20:45 -07:00
James Lu
8b93b78d13 Support modes with arguments in our modestring parsers
Closes #27.
2015-07-04 23:49:28 -07:00
James Lu
3749e642f2 pr/inspircd: fix typo in handle_mode 2015-07-04 23:47:27 -07:00
James Lu
3e86cbdd33 Better protocol capability negotiation
Respect our uplink's supported c/umodes, NICKLEN, and max channel name lengths.
2015-07-04 23:12:00 -07:00
James Lu
35346d7990 pr/inspircd: part messages are optional... 2015-07-04 19:08:58 -07:00
James Lu
d23d34e316 Refactor hooks to send parsed arguments instead of raw args
ref #18.

- Command handlers that support hooks will now return parsed args, which are then sent to the hooks
- Hook commands are now stored in uppercase letters, consistent with the IRC spec
2015-07-04 19:00:29 -07:00
James Lu
b6f489fa9c add tests for KILL, KICK, UID, and SERVER handlers
todo: rewrite the MODE handling so it doesn't suck, and test those too
2015-07-04 12:34:33 -07:00