Releases: PyLink/PyLink
PyLink 0.4.6-dev
PyLink 0.4.5-dev
The "fancy stuff!" release.
New features including in-place config reloading (rehashing) (#89), FANTASY support (#111), and plugin (re/un)loading without a restart.
Full diff since 0.4.0-dev: 0.4.0-dev...0.4.5-dev
4883186 validateConf: allow autojoin channels to be empty; nothing wrong with that
54414f3 commands: new REHASH command (Closes #89)
e84a2d1 Modularize our import hacks, make Irc() take a conf object again
9e07949 relay: make spawning of subservers toggleable
55b642e Revert "relay: remove ENDBURST hook (is this needed anymore?)"
630aa83 core: add some rudimentary config file validation
0d3a7a5 exec: import world, for easier access to it
5aeaac0 commands: only allow loading plugins that aren't already loaded
38a350a Revert "pylink: use sys.path instead of imp library hacks"
4a9a29e relay: remove ENDBURST hook (is this needed anymore?)
a14e8a7 relay: add (experimental) support for plugin reloading
07fe720 commands: add plugin loading/unloading/reloading support
bbedd38 world: rename command_hooks=>hooks, bot_commands=>commands
cc171eb relay: abort connection when spawning a server fails
cf2ba4b pylink: use sys.path instead of imp library hacks
a903f97 Make world.plugins a dict instead of a list
a37d4b6 fantasy: only work when the main PyLink client is in the channel
7470efc commands: add an echo command
7d919e6 relay: forward messages from the main PyLink client too
97a135a classes: add special PYLINK_SELF(PRIVMSG/NOTICE) hooks for command loopback
034731a core: log which plugin is being called when calling hooks
0378fcc fantasy: don't allow internal clients to trigger
8e444c5 plugins: support FANTASY (where reasonable) by using irc.msg(irc.called_by, ...) instead of irc.msg(source, ...)
f55d227 example conf: add fantasy.py to list and plugin descriptions
4509e07 FANTASY support plugin (Closes #111)
822544e core: keep track of where last command was called & make command calling a shared function
5afa621 utils.parseModes: add missing string formatting
da3251c utils.parseModes: check to make sure target channel/user exists
aaeeeda start-cpulimit: pass command line options to ./pylink
f884d71 docs/pmodule-spec.md: formatting again
86495db docs/pmodule-spec: formatting
f015fe5 Documentation updates, finish off pmodule-spec.md (#113)
3351aaf inspircd: fix wrong arguments in numericServer() stub
c77d170 Move parseArgs and removeClient into the base Protocol class
PyLink 0.3.50-dev
Many updates to core, preparing for an (eventual) 0.4.x release. Commits:
63189e9 relay: look at the right prefix mode list when rejoining from KILL
cb83db4 relay: don't allow creating a channel that's already part of a relay
8faf86a relay: rejoin killed users to the RIGHT channels
2e0a5e5 utils.parseModes: fix IndexError on empty query
1f95774 inspircd: add proper fallback value for OPERTYPE?
d6cb9d4 Merge commit '320de2079a78202e99c7b6aeb53c28c13f43ba47'
320de20 relay: add INVITE support (Closes #94)
60dc3fe relay: use "Channel delinked." part message when delinking channels
9a47ff8 Merge branch 'master' into devel
ace0ddf relay: use JOIN instead of SJOIN for non-burst joins
c2ee9ef Merge branch 'master' into devel
19fa31d relay: fix incorrect logging in getSupportedUmodes()
2f760c8 relay: Don't send empty user mode changes
4f40fae relay: in logs, be a bit more specific why we're blocking KILLs and KICKs
0b590d6 relay/protocols: use utils.toLower() for channel names, respecting IRCd casemappings
4525b81 relay.handle_kill: prevent yet another RuntimeError
26e102f Show oper types on WHOIS
8d19057 relay: set umode +H (hideoper) on all remote opered clients
5480ae1 classes: Remove "opertype" IrcUser() argument
531ebbb Merge branch 'master' into devel
f9b4457 Decorate relay clients, etc. with custom OPERTYPEs
4a964b1 Merge branch 'master' into devel
1062e47 classes.IrcChannel: default modes to +nt on join
d270a18 Remove unused imports
94f83eb relay.showuser: show home network/nick, and relay nicks regardless of oper status
5503477 commands: distinguish commands with multiple binds in 'list'
8976322 Replace admin.showuser with prettier whois-style cmds in 'commands' and 'relay'
e1e31f6 Allow multiple plugins to bind to one command name!
afd6d8c Refactor conf loading; skip the file-loading parts entirely for tests (#56)
cda54c7 main: Fix b71e508.
a58bee7 Modularize tests using common classes, add our custom test runner (#56)
549a1d1 classes: IrcServer.users is now a set()
adb9ef1 classes: fixes for the test API
973aba6 Move utils' global variables to world.py
b71e508 classes.Irc no longer needs a conf argument; tweak tests again
ad5fc97 Many fixes to test API, utils.reverseModes stub
ab4cb4d Merge branch 'master' into devel
2fe9b62 Consistently capitalize errors and other messages
bc7765b Let's use consistent "Unknown command" errors, right?
d059bd4 Move 'exec' command into its separate plugin
3d621b0 Move checkAuthenticated() to utils, and give it and isOper() toggles for allowing oper/PyLink logins
090fa85 Move Irc() from main.py to classes.py
PyLink 0.3.1-dev
Bugfix release + LINKACL support for relay. Commits since 0.3.0-dev:
043fccf Fix previous commit (Closes #100)
708d949 relay: join remote users before sending ours
8d44830 relay.handle_kill: prevent yet another RuntimeError
6d66069 relay: coerse "/" to "|" in nicks if "/" isn't present in the separator
c8e7b72 protocols: lowercase channel names in PRIVMSG handling
37eecd7 pr/inspircd: use OPERTYPE to oper up clients correctly, and handle the metadata accordingly 9f0f4cb relay: burst the right set of modes
7620cd7 pr/inspircd: fix compatibility with channel mode +q (~)
3523f8f LINKACL support
51389b9 relay: LINKACL command (Closes #88)
PyLink 0.2.5-dev
See the diff for this development build: 0.2.3-dev...0.2.5-dev
PyLink 0.2.3-dev
The "prevent PyLink from wrecking my server's CPU" release.
Mostly bug fixes here, with a couple of scripts added (start-cpulimit.sh and kill.sh) added to assist running PyLink under the protection of CPUlimit. :)
New features
- relay: Block most duplicate modes from being relayed (#71)
- main: write a PID file to
pylink.pid(f85fbd9) - ts6: support
+AOScharybdis extension modes, warning if the IRCd doesn't support them (146ab5e)
Fixes
- relay: quit users who aren't on any shared channels after KICK (71a3464)
- Use RFC1459 for case mapping on InspIRCd (01220b3)
- relay: Fix handling of local
SAVE(e4da670) andKILL(a4da9b5) commands - relay: fix nick collision loop on
SAVE+ when both tagged (i.e. _42XAAAAAA) and untagged (42XAAAAAA) versions of a UID nick exist (e354ada) - relay: Fix command arguments of
DELINKon home networks (c07cfb1) - relay:
SJOINusers once, and only once (#71, b681a67) - main.Irc: catch
OSError(bad file descriptor) errors and disconnect - ts6: add QS as a required capability (69e16e5)
- ts6: fix
JOINhandling andparse_askey handling in hooks (ddefd38) - relay: only wait for
irc.connectedonce per network (4d7d7ce)
Full diff: 0.2.2-dev...0.2.3-dev
PyLink 0.2.2-dev
The "please don't break again :( " release.
- Added
WHOIShandling support for TS6 IRCds. - ts6: fix handling of
SID,CHGHOST, andSQUITcommands. - Support noctcp (mode
+C) on charybdis, and wallops (+w) in relay. - Raised fallback ping frequency to 30
...And of course, lots and lots of bug fixes; I won't bother to list them all.
Full diff: 0.2.0-dev...0.2.2-dev
PyLink 0.2.0-dev
Many changes in this development release, including:
- New
ts6protocol module, for charybdis 3.x. - relay: add nick collision handling via
SAVE(#61). - relay: trivial tasks like
TOPIC,MODE,KICKandPARTno longer spawn new clients for their senders, and are routed through the pseudoserver when applicable instead (e76d31d c0f8259). - Irc: be safer against
UnicodeDecodeErrorcaused bysocket.recv()cutoff, by decoding each individual line instead (06d17d5). - relay: make the
nick/netseparator a per-network config option. (ad34f6c). - relay: Use a whitelist when it comes to relaying modes (#54), and strip out bans that don't match
nick!user@hostsyntax (#55). - relay: Handle user mode changes (#64).
- Support different case mappings for nicknames (RFC1459 vs ASCII) (#75).
- inspircd: remove
RSQUITcommand handler (3494d4f).
And of course, many, many bug fixes! (relay should now work properly with more than 2 networks, for example...)
Full diff: 0.1.6-dev...0.2.0-dev
PyLink 0.1.6-dev
Bug fixes and improvements from 0.1.5-dev
- Irc.send: catch
AttributeErrorwhenself.socketdoesn't exist; i.e. when initial connection fails (b627513) - Log output to
log/pylink.log, along with console (#52, 61804b1 fbc2fbf) - main/coreplugin: use
log.exception()instead oftraceback.print_exc(), so logs aren't only printed to screen (536366d) - relay: don't relay messages sent to the PyLink client (688675d)
- relay: add a
savecommand, and make rescheduling optional inexportDB()(c00da49) - utils: add
getHostmask()(1b09a00) - various: Log command usage,
execusage, successful logins, and access denied errors inadmin.py's commands (57e9bf6)
Full diff: 0.1.5-dev...0.1.6-dev
PyLink 0.1.5-dev
New features
- Hooks for
CHGHOST,CHGIDENT, andCHGNAME(f9d8215 35f1c88) - IrcUser: Implement user channel tracking via an
IrcUser.channelsattribute (d97fce8) - Send PING to our uplink periodically, and quit if we don't get a response (#42, #57)
- New server
pingfreqoption is introduced to set the time between PINGs.
- New server
- relay: Only spawn clients if they share a channel, and quit them when they leave all shared channels (cf32461)
- Support autoreconnecting to networks! A new
autoconnectserver setting is added to set autoconnect delay. - New
PYLINK_DISCONNECThook to keep track of network disconnections (3f6f78b) - relay: add a
LINKEDcommand (#65, bbcd70b) - commands: add a
HELPcommand (#8, 6508cb3 4553eda)
Bug fixes
- relay: don't spawn tagged clones for the internal PyLink client (40fd9e3)
- relay: don't send empty
MODEcommands if there are no supported modes left after filtering (2a586a6) - protocol/inspircd: don't raise KeyError when removing channel from user fails (73c625a)
- relay: only join PyLink to channels & set topics if there's actually a relay on the network (49943a7)
- relay: fix the wrong modes being propagated to the wrong channels on
LINK(#53, ccf7596) - relay: fix "RuntimeError: dictionary changed size during iteration" in
handle_part(d30890c) - relay: Only allow messaging users in common channels / channels that you're in (#62, 024ac16)
Misc. changes
- Move client/server spawning, hook calling, command handling, and KILL/KICK detection outside the protocol module (0aa2f98 fdea348)
- Fix fakeirc and tests for relay (#56, a51cfcb)
Removed features
- commands: remove
debugcommand; it's useless now thatexec,showchan, andshowuserexist (50665ec) - admin:
tellcommand has been removed. Rationale: limited usefulness; doesn't wrap long messages properly. (4553eda)
You can view the full diff here: 0.1.0-dev...0.1.5-dev