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

818 Commits

Author SHA1 Message Date
James Lu
3f6f78be9a relay + Irc: keep track of network disconnects
This introduces a new PYLINK_DISCONNECT meta-hook that is called when a network disconnects. Also, reset the state variables (i.e. servers, users, etc.) on disconnect! (this was missed before)

Closes #60.
2015-07-17 16:57:08 -07:00
James Lu
bc9863d9e0 Make reconnecting a bit less... broken 2015-07-17 16:20:41 -07:00
James Lu
df595c65a1 fix SQUIT not respecting autoconnect delay 2015-07-17 16:01:51 -07:00
James Lu
f41e1a2eb5 Fixes for connection handling?
XXX: using SQUIT on the PyLink server doesn't respect autoconnect delays; why?
2015-07-17 15:08:24 -07:00
James Lu
836d0e9701 Irc: wrap (re)connecting in a while loop instead of calling it recursively
Also, remove unnecessary comments / ENDBURST hook from relay.

Ping handling seems to work fine now! Closes #57. Closes #42.
2015-07-17 14:37:07 -07:00
James Lu
9bef93c341 More stuff for PINGing uplink and autoreconnect (#42 #59 #57)
Doesn't quite work yet; still blocks everything on disconnect for some reason...
2015-07-17 13:41:14 -07:00
James Lu
2a586a6dba relay: don't send empty MODE commands if there are no supported modes left after filtering 2015-07-16 16:27:17 -07:00
James Lu
cf32461d8e relay: Only spawn clients if they share a channel, and quit them when they leave all shared channels
Closes #50.
2015-07-16 12:25:42 -07:00
James Lu
40fd9e37a0 relay: don't spawn tagged clones for the internal PyLink client 2015-07-16 12:25:33 -07:00
James Lu
35f1c88a4e relay: add hooks for CHGHOST / CHGIDENT / CHGNAME
Closes #49.
2015-07-16 11:53:40 -07:00
James Lu
2f38b2b38d relay: handle squit, quitting the relevant relay pseudoclients with a fake netsplit message
This is hardcoded to *.net *.split, but it may change to show the split servers in the future...
2015-07-15 19:09:10 -07:00
James Lu
cd244ee89b relay: block until irc.maxnicklen is set, and remove check for "nick already in use" for internal clients
Closes #48. This fixes the edge case where, if a person with a long, cut-off nick changes to another long nick, and the resulting normalized nick is the same,
normalizeNick will start incrementing the separator anyway. The correct behavior is to NOT send any nick changes if the old (normalized) nick and the new nick
match.
2015-07-15 13:53:14 -07:00
James Lu
bbe71e22ab relay: fixes for NICK and TOPIC propogation 2015-07-15 11:48:26 -07:00
James Lu
e3e643de54 relay: don't try to spawn clients on disconnected networks (those raise errors) 2015-07-15 11:48:03 -07:00
James Lu
4c77ad93d7 relay: fix over-reaching behavior of delink #chan <remotenet> when you're the host 2015-07-15 11:47:06 -07:00
James Lu
0918b2f958 relay: missing line in initializeChannel 2015-07-14 23:29:03 -07:00
James Lu
3a9df57c39 relay: remove unused relay() function; what was that about? 2015-07-14 23:26:56 -07:00
James Lu
5999eedd98 relay: block kills, respawning their targets transparently
Closes #47.
2015-07-14 23:26:52 -07:00
James Lu
13e4cadf2b relay: add TOPIC support (experimental)
Closes #46.
2015-07-14 23:26:39 -07:00
James Lu
46e1538bd2 relay: fix #45 - cases when MODE/KICK is sent by a server, not a client 2015-07-14 22:37:50 -07:00
James Lu
7de8f1509d relay: factorize getLocalUser, introduce MODE (experimental) and PRIVMSG handler 2015-07-14 19:39:49 -07:00
James Lu
f74e704733 relay: whoops, check for claim properly 2015-07-14 18:27:26 -07:00
James Lu
28f1d4ba19 relay: add a working KICK handler
This should block kicks from non-opped remote users, and handle kicks across the relay properly by mapping our pseudoclients to the real targets.
2015-07-14 18:23:19 -07:00
James Lu
876cf34825 relay: Remove spawning a sub-server for each relay network
It introduced bugs, and made the relay code more complicated than it has to be :(
2015-07-14 17:42:17 -07:00
James Lu
a1299676f1 relay: factorize fetching of remote users/SIDs, spawning them if they don't exist 2015-07-14 12:04:05 -07:00
James Lu
59295f921b relay: part users on DELINK/DESTROY 2015-07-13 23:29:20 -07:00
James Lu
310a9201e2 relay: fix bugs with removing nonexistant channels in DELINK, and linking a channel multiple times in LINK 2015-07-13 22:54:51 -07:00
James Lu
1cbcec1001 relay: sync modes on initializeChannel as well 2015-07-13 22:42:50 -07:00
James Lu
c5298e3931 relay: fix joining users on initializeChannel 2015-07-13 21:46:05 -07:00
James Lu
235f169e54 relay: add quit, part, and nick handlers 2015-07-13 19:53:57 -07:00
James Lu
9bc8a35c25 relay: fix cases where a remote linked channel has different name 2015-07-13 19:46:24 -07:00
James Lu
a5e2beb566 relay: propogate prefix modes in relayJoins, if the remote net supports them 2015-07-13 18:23:58 -07:00
James Lu
d8cb3f1973 relay: spawn users on the right pseudoservers, and use SJOIN to introduce them if possible 2015-07-13 16:09:22 -07:00
James Lu
67f5bbba4b add a utils.started threaded trigger, so plugins can ACTUALLY wait until all Irc objects have been initialized to do their work 2015-07-13 16:07:55 -07:00
James Lu
b3528a2b04 relay: better channel initialization 2015-07-13 00:01:04 -07:00
James Lu
b3206822d2 relay: fix users being cloned on every JOIN 2015-07-12 23:31:26 -07:00
James Lu
6b9ec694b7 relay: basic JOIN handling 2015-07-12 23:28:54 -07:00
James Lu
3c2d0dbe3f relay: (de)initialize channels using shared initialize/removechannel() 2015-07-12 19:03:18 -07:00
James Lu
0dc0770d6d relay: add LINK and DELINK commands; many fixes to checkers (WIP) 2015-07-12 17:59:09 -07:00
James Lu
6870e041bc relay: catch nicks that start with digits and add tests 2015-07-12 16:59:49 -07:00
James Lu
b538037e22 relay: add normalizeNick stub 2015-07-12 14:02:17 -07:00
James Lu
450584b963 relay: hack in utils.schedulers so that exportDB only gets queued once globally
Previously, exportDB would be queued once by every IRC object, which was the wrong behavior!
2015-07-12 13:09:35 -07:00
James Lu
e073f21417 relay: spawn servers, raise exportDB interval to 60; use main(irc) 2015-07-11 20:21:10 -07:00
James Lu
8d4a06b60e Initial PyLink-Relay stub, with CREATE and DESTROY commands using a pickle database.
ref #37.
2015-07-10 20:26:46 -07:00
James Lu
3156d83ec3 plugins/admin: rename quitclient -> quit 2015-07-10 16:43:16 -07:00
James Lu
070bba77cb admin.py: check to see if queried channels exist; sort output fields 2015-07-09 17:05:23 -07:00
James Lu
e7922be9fb plugins/commands.py: warn on failed login attempts 2015-07-08 23:21:01 -07:00
James Lu
27bb6af7f6 plugins/admin.py: add 'mode' and 'showchan' commands 2015-07-08 23:01:09 -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
211decd2aa everything: Improve logging 2015-07-05 13:44:48 -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
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
6370ad492f Add basic command hooks (ref #18) 2015-06-23 19:08:43 -07:00
James Lu
0db5c4c209 plugins/admin.py: add 'showuser' command 2015-06-19 13:00:23 -07:00
James Lu
d8b562865d plugins/admin.py: this is an exec command, not eval 2015-06-19 10:44:25 -07:00
James Lu
f40cb7954a Allow dynamic protocol loading again, and make proto an attribute of Irc()
This should remove the need for plugins, etc. to import proto directly,
which wouldn't work because of dynamic naming.
2015-06-16 20:05:41 -07:00
James Lu
4d763288e5 rename utils._nicktoUid to utils.nickToUid
Consistency in function capitalization is a good thing!!
2015-06-07 19:36:21 -07:00
James Lu
43a46d3d99 Many fixes
- Move _nicktoUid to utils.py
- Make _sendFromUser arguments more consistent (irc, sendfrom, message) instead of (irc, message, sendfrom=None)
- Add admin only kickclient, partclient, and nickclient commands
- proto.joinClient: take UIDs instead of an IrcUser object, in order to be more consistent

Closes #4, Closes #12.
2015-06-07 19:31:56 -07:00
James Lu
86c7fd0db1 WIP admin commands 2015-06-07 13:40:18 -07:00
James Lu
6680942424 More code and broken shenanigans
- plugins/commands.py: add admin-only eval command
- add IrcChannel class and basic channel (FJOIN/QUIT) handling
- Move SQUIT/QUIT handling code to a shared removeClient function
    - Unfortunately, this causes a regression where the users and channels indexes aren't purged on a netsplit :(
2015-06-06 23:06:33 -07:00
James Lu
0ed1e13115 Remove plugins/hello.py
This was solely a testing module for the plugin/commands system, and serves no purpose anymore. commands.py provides basic commands that are both simple and actually useful.
2015-06-03 16:09:53 -07:00
James Lu
d9db7e1b9e It's almost June! Updates:
- Move config handling into separate module
- Implement identify and status commands, currently only supporting the admin account defined in the config. Closes #1.
- Move proto.add_cmd to utils.py, rename _msg() to msg()
- Allow sending the command name as an optional argument in add_cmd
- Add catch-all exception handling in plugins to prevent them from crashing the program!
2015-05-31 12:20:09 -07:00
James Lu
0fcf5ead04 utils.py: Make _msg a shared function (Closes #3) 2015-05-30 23:00:39 -07:00
James Lu
17fc05cc9a WIP: use a proper logging module 2015-05-30 22:35:00 -07:00
James Lu
d158143cea This month's code dump... featuring:
- Server enumeration, with handlers for BURST (introduction to uplink), SERVER (introduction of uplink's other leaf servers), NICK, and SQUIT (closes #2)
- Store UIDs instead of nicks in the user database - this makes the protocol a lot easier to work with.
2015-05-30 22:15:19 -07:00
James Lu
f2fdaf55a1 commands: add a command to print debug info to console 2015-04-24 23:04:33 -07:00
James Lu
6b79793336 cleanup, add commands.py plugin (incomplete) 2015-04-24 23:00:01 -07:00
James Lu
9b4fb50f25 Today's code dump, featuring:
- PLUGIN SUPPORT and COMMAND HANDLING, wow!!!!!!!
- Restructuring of files so that there's only one protocol module (anything else is too much to maintain for now)
- Split protocol things into utils.py
- Bugfixes: don't go into an endless loop of text spamming when the remote host closes the connection!
2015-04-24 22:37:07 -07:00