mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-24 03:29:28 +01:00
RELNOTES: first pass at summarizing all of 2.0's changes (compared to 1.3.x)
[skip ci]
This commit is contained in:
parent
bf1f8210bd
commit
584b7e3712
74
RELNOTES.md
74
RELNOTES.md
@ -1,5 +1,79 @@
|
|||||||
# PyLink 2.0-rc1 (unreleased)
|
# PyLink 2.0-rc1 (unreleased)
|
||||||
|
|
||||||
|
PyLink 2.0 comes with a ton of new features, refinements, and optimizations. Here is a summary of the most interesting changes - for detailed changelogs, consult the release notes for individual snapshots below.
|
||||||
|
|
||||||
|
This release does *not* preserve compatibility with third-party plugins written for PyLink 1.x!
|
||||||
|
|
||||||
|
#### New features
|
||||||
|
- **Added support for ngIRCd, ChatIRCd, and beware-ircd** (via protocol modules `ngircd`, `ts6`, and `p10` respectively)
|
||||||
|
- **Add support for extbans** on UnrealIRCd, Charybdis (and derivatives), InspIRCd, and Nefarious.
|
||||||
|
- **U-lined services servers can now be configured for use with Relay**:
|
||||||
|
- `CLAIM` restrictions are relaxed for service bots, which may now join with ops and set simple modes. This prevents mode floods when features such as `DEFCON` are enabled, and when a channel is accidentally registered on a network not on the CLAIM list.
|
||||||
|
- `DEFCON` modes set by services are ignored by Relay instead of bounced, and do not forward onto other networks unless the setting network is also in the channel's `CLAIM` list.
|
||||||
|
- To keep the spirit of `CLAIM`, opped services not in a channel's `CLAIM` list are still not allowed to kick remote users, set prefix modes (e.g. op) on others, or modify list modes such as bans.
|
||||||
|
- **New Antispam plugin, with the ability to kill / kick / block mass-highlight spam and configured "spam" strings.**
|
||||||
|
- **Added TLS certificate verification, which is enabled by default on Clientbot networks**. [issue#592](https://github.com/jlu5/PyLink/issues/592)
|
||||||
|
- This adds the options `ssl_validate_hostname` and `ssl_accept_invalid_certs` options which have defaults as follows:
|
||||||
|
- | Server type | `ssl_validate_hostname` | `ssl_accept_invalid_certs` |
|
||||||
|
|--------------------------|-----------------------------------------------------|----------------------------|
|
||||||
|
| Full links (S2S) | false (implied by `ssl_accept_invalid_certs: true`) | true |
|
||||||
|
| Clientbot networks (C2S) | true | false |
|
||||||
|
- `ssl_validate_hostname` determines whether a network's TLS certificate will be checked for a matching hostname.
|
||||||
|
- `ssl_accept_invalid_certs` disables certificate checking entirely when enabled, and also turns off `ssl_validate_hostname`.
|
||||||
|
- The existing TLS certificate fingerprint options are unchanged and can be turned on and off regardless of these new options.
|
||||||
|
- New Relay features:
|
||||||
|
- LINKACL now supports whitelisting networks in addition to the original blacklist implementation (see `help LINKACL`). [issue#394](https://github.com/jlu5/PyLink/issues/394)
|
||||||
|
- Relay IP sharing now uses a pool-based configuration scheme (`relay::ip_share_pools`), deprecating the `relay::show_ips` and `relay_no_ips` options.
|
||||||
|
- IPs and real hosts are shared bidirectionally between all networks in an ipshare pool, and masked as `0.0.0.0` when sending to a network not in a pool and when receiving those networks' users.
|
||||||
|
- KILL handling received a major rework ([issue#520](https://github.com/jlu5/PyLink/issues/520):
|
||||||
|
- Instead of always bouncing, kills to a relay client can now be forwarded between networks in a killshare pool (`relay::kill_share_pools`).
|
||||||
|
- If the sender and target's networks are not in a killshare pool, the kill is forwarded as a kick to all shared channels that the sender
|
||||||
|
has CLAIM access on (e.g. when they are the home network, whitelisted in `CLAIM`, and/or an op).
|
||||||
|
- `relay_clientbot` now supports setting clientbot styles by network. [issue#455](https://github.com/jlu5/PyLink/issues/455)
|
||||||
|
- The defaults for CLAIM (on or off) and LINKACL (whitelist or blacklist mode) can now be pre-configured for new channels. [issue#581](https://github.com/jlu5/PyLink/issues/581)
|
||||||
|
- New `relay::allow_free_oper_links` option allows disabling oper access to `CREATE/LINK/DELINK/DESTROY/CLAIM` by default
|
||||||
|
- relay_clientbot: add support for showing prefix modes in relay text, via a new `$mode_prefix` expansion. [issue#540](https://github.com/jlu5/PyLink/issues/540)
|
||||||
|
- Clientbot is now more featureful:
|
||||||
|
- Added support for IRCv3 caps `account-notify`, `account-tag`, `away-notify`, `chghost`, `extended-join`, and `userhost-in-names`
|
||||||
|
- Clientbot now supports expansions such as `$nick` in autoperform.
|
||||||
|
- Configurable alternate / fallback nicks are now supported: look for the `pylink_altnicks` option in the example config.
|
||||||
|
- Added support for WHOX.
|
||||||
|
- Clientbot can now optionally sync ban lists when it joins a channel, allowing Relay modesync to unset bans properly. See the `fetch_ban_lists` option in the example config.
|
||||||
|
- Failed attempts to join channels are now logged to warning. [issue#533](https://github.com/jlu5/PyLink/issues/533)
|
||||||
|
- New commands for the opercmds plugin, including:
|
||||||
|
- `chghost`, `chgident`, and `chgname`, for IRCds that don't expose them as commands.
|
||||||
|
- `massban`, `masskill`, `massbanre`, and `masskillre`, which allow setting mass bans/kills/G/KLINEs on users matching a `nick!user@host` mask, exttarget, or regular expression. The hope is that these tools can help opers actively fight botnets as they are connected, similar to atheme's `clearchan` and Anope's `chankill` commands.
|
||||||
|
- `checkban` and `checkbanre`, which return the users matching a target
|
||||||
|
- Messages sent by most commands are now transparently word-wrapped to prevent cutoff. [issue#153](https://github.com/jlu5/PyLink/issues/153)
|
||||||
|
- PyLink accounts are now implicitly matched: i.e. `user1` is now equivalent to `$pylinkacc:user1`.
|
||||||
|
- PyLink now responds to remote `/STATS` requests (`/stats c`, `u`, and `o`) if the `stats` plugin is loaded.
|
||||||
|
- The PyLink service client no longer needs to be in channels to log to them.
|
||||||
|
|
||||||
|
#### Feature changes
|
||||||
|
|
||||||
|
- **The ratbox protocol module has been merged into ts6**, with a new `ircd: ratbox` option introduced to declare Ratbox as the target IRCd. [issue#543](https://github.com/jlu5/PyLink/issues/543)
|
||||||
|
- The `raw` command has been split into a new plugin (`plugins/raw.py`) with two permissions: `raw.raw` for Clientbot networks, and `raw.raw.unsupported_network` for other protocols. Using raw commands outside Clientbot is not supported. [issue#565](https://github.com/jlu5/PyLink/issues/565)
|
||||||
|
- Some options were deprecated and renamed:
|
||||||
|
- The `p10_ircd` option for P10 servers is now named `ircd`, though the old option will still be read from.
|
||||||
|
- The `use_elemental_modes` setting on ts6 networks has been deprecated and replaced with an `ircd` option targeting charybdis, elemental-ircd, or chatircd. Supported values for `ircd` include `charybdis`, `elemental`, and `chatircd`.
|
||||||
|
- The `fml` command in the `games` plugin was removed.
|
||||||
|
|
||||||
|
#### Bug fixes
|
||||||
|
- clientbot: fix errors when connecting to networks with mixed-case server names (e.g. AfterNET)
|
||||||
|
- Fix `irc.parse_modes()` incorrectly mangling modes changes like `+b-b *!*@test.host *!*@test.host` into `+b *!*@test.host`. [issue#573](https://github.com/jlu5/PyLink/issues/573)
|
||||||
|
- clientbot: fixed sending duplicate JOIN hooks and AWAY status updates. [issue#551](https://github.com/jlu5/PyLink/issues/551)
|
||||||
|
|
||||||
|
#### Internal improvements
|
||||||
|
- Reading from sockets now uses a select-based backend instead of one thread per network.
|
||||||
|
- Major optimizations to to user tracking that lets PyLink handle Relay networks of 500+ users.
|
||||||
|
- Service bot handling was completely redone to minimize desyncs when mixing Relay and services. [issue#265](https://github.com/jlu5/PyLink/issues/265)
|
||||||
|
- This is done via a new `UserMapping` class in `pylinkirc.classes`, which stores User objects by UID and provides a `bynick` attribute mapping case-normalized nicks to lists of UIDs.
|
||||||
|
- `classes.User.nick` is now a property, where the setter implicitly updates the `bynick` index with a pre-computed case-normalized version of the nick (also stored to `User.lower_nick`)
|
||||||
|
|
||||||
|
### Changes in this RC build
|
||||||
|
|
||||||
|
From 2.0-beta1:
|
||||||
|
|
||||||
#### Bug fixes
|
#### Bug fixes
|
||||||
- relay: CHANDESC permissions are now given to opers if the `relay::allow_free_oper_links` option is true.
|
- relay: CHANDESC permissions are now given to opers if the `relay::allow_free_oper_links` option is true.
|
||||||
- Relay no longer forwards kills from servers, preventing extraneous kills for nick collisions and the like.
|
- Relay no longer forwards kills from servers, preventing extraneous kills for nick collisions and the like.
|
||||||
|
Loading…
Reference in New Issue
Block a user