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
James Lu
8ea62c31de
tests for spawnServer and SQUIT, make server name case-insensitive
2015-07-04 11:57:21 -07:00
James Lu
942f97352d
test kick/nickClient; make kickClient update channel userlist...
2015-07-03 23:48:28 -07:00
James Lu
18528c9cab
add tests for spawn/quit/join/partClient
2015-07-03 23:32:41 -07:00
James Lu
d6341109be
inspircd: bug fixes found by testing
...
- Lowercase all channel names consistently, to prevent duplicates
- Store uidgen as an attribute of Irc, so each Irc instance gets its own set of UID generators
- Raise an error in handle_part of the user doesn't exist in the channel.
2015-07-03 23:31:57 -07:00
James Lu
0bfe2b2a21
test_proto_inspircd: fix 'python3 -m unittest' compat
2015-07-03 18:26:13 -07:00
James Lu
8ad68023d6
Add tests for pr/inspircd, a common FakeIRC class, and tests for that too
2015-07-03 18:07:47 -07:00
James Lu
fed107b12b
main.py: don't assign self.socket twice
2015-07-03 18:07:32 -07:00
James Lu
0c8a30323a
proto/inspircd: raise ProtocolError instead of calling sys.exit on errors
2015-07-03 18:07:01 -07:00
James Lu
0f4d3df757
inspircd.py: spawnServer tweaks
...
- Send ENDBURST from the server, not its uplink
- Check to make sure SID is 3 characters long...
2015-07-03 17:10:32 -07:00
James Lu
991e86a8cb
unittests! wow!
2015-07-03 17:05:44 -07:00
James Lu
072cc72602
defaultdict for channels, fix user tracking in {join|part}Client, isInternal* to utils
...
- collections.defaultdict for simpler channel handling
- proto/inspircd: fix join/partClient not updating the channel's user list
- move isInternal* to utils
2015-06-23 19:29:53 -07:00
James Lu
6370ad492f
Add basic command hooks (ref #18 )
2015-06-23 19:08:43 -07:00
James Lu
28e7b52ef4
utils.TS6UIDGenerator: initialize SID variable once per instance
2015-06-22 16:51:42 -07:00
James Lu
f37af68e3f
utils: tweak TS6UIDGenerator again
...
Only increment the UID table after we fetch the UID, so that the initial value (AAAAAA) gets used too.
2015-06-21 18:11:17 -07:00
James Lu
6a69ed0459
proto/inspircd: handle RSQUIT for removing PyLink leaves
2015-06-21 17:07:31 -07:00
James Lu
ab1a946364
proto/inspircd: fix ping reply syntax
...
Although InspIRCd doesn't seem to care, the correct PONG syntax is:
-> :<our sid> PONG <our sid> <their sid>,
and not
-> :<our sid> PONG <our sid>,
which was used prior to this commit.
2015-06-21 15:04:19 -07:00
James Lu
c686523a6e
Add pseudoserver spawning, adapting _sendFromServer and spawnClient accordingly.
...
Now you can spawn multiple servers for a multi-server botnet!
Also, create proto.isInternalServer() / utils.isServerName() checkers.
Closes #22 .
2015-06-21 15:03:58 -07:00