Releases: anope/anope
Anope 2.1.21
Breaking Changes
-
{fantasy}:fantasycharacterhas been replaced with{fantasy}:prefixwhich allows multiple-character fantasy prefixes. If you have multiple custom fantasy characters set you should separate them with a space when upgrading your config. -
The db_json module will now terminate the process if it fails to write the database. This replicates the behaviour previously used by the db_flatfile module.
-
When adding an unregistered user to an access list you must now explicitly specify their hostmask. This prevents accidentally adding a hostmask which is too wide.
Changes
-
Added cleaning up of hostmasks when adding them to an access list and
{chanserv}:disallow_malformed_hostmaskto allow rejecting them instead. -
Changed access commands to add the account of a user who is logged in to an account but not using a nickname belonging to that account.
-
Fixed a crash when clearing channel entry messages.
-
Fixed a memory leak when cloning akicks.
-
Fixed cleaning up ban masks.
-
Fixed confirming accounts using the webcpanel.
-
Fixed importing the time a nickname was used from Atheme.
-
Fixed limiting the number of accounts per email address.
-
Fixed locking modes that take a parameter when they are added.
-
Fixed the
chanserv/enforcecommand erroneously enforcing against channel founders. -
Fixed the syntax of the
chanserv/suspendcommand. -
Fixed the syntax of the
nickserv/suspendcommand. -
Improved password rehash detection in the enc_argon2 module.
-
Various minor improvements to how services work internally.
Anope 2.0.19
Changes
- Added a Doxygen config file.
- Backported various minor config changes from 2.1.
- Fixed chanserv/enforce enforcing against founders.
- Fixed creating channel entries in irc2sql.
- Fixed not respecting the mode state when removing a mode lock.
- Fixed reading the settings in m_dns.
- Fixed resetpass confirming accounts when not using email confirmation.
- Fixed trying to write to a buffered socket when there's no data.
- Fixed various minor spelling issues.
- Updated some messages for the language used by modern BIND versions.
Anope 2.1.20
Breaking Changes
-
Changed the registration of database types added by modules to be delayed until after the module constructor has been called. This might affect any custom modules you are using.
-
Moved akicks out of the core into cs_akick. Modules which depend on akicks now require the cs_akick module to be loaded.
Changes
-
Added
{db_json}:preserve_unknown_datato configure whether unknown database types are kept in the JSON database. By default unknown database types from unloaded modules will be preserved in the database to allow reloading later. This setting can be used to disable this and prune the database. -
Added support for forbidding passwords. This is intended to be used with file forbids (see below).
/OPERSERV FORBID ADD PASSWORD +30d hunter2 This password is insecure -OperServ- Added a forbid on hunter2 of type password to expire on Mon 29 Dec 2025 11:51:13 AM UTC (30 days from now). -
Added support for loading forbids from a file.
file { type = "email" file = "temp-emails.txt" reason = "Temporary email" } -
Added support for the UnrealIRCd
+Fflood profile mode. -
Added the
anope-mkpasswdscript to help generate passwords for use in the config.$ ./anope-mkpasswd argon2id hunter2 For use in the database: argon2id:$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw$iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo For use in an oper: password = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw$iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo" password_hash = "argon2id" For use in an jsonrpc/xmlrpc token: token = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw$iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo" token_hash = "argon2id" Make sure you have the enc_argon2 module loaded! -
Added the DISPLAY flag to
nickserv/listto only show account display nicknames./NICKSERV LIST * -NickServ- List of entries matching *: -NickServ- nick1 (last mask: [email protected]) -NickServ- nick1|afk (last mask: [email protected]) -NickServ- nick2 (last mask: [email protected]) -NickServ- End of list - 3/3 matches shown. /NICKSERV LIST * DISPLAY -NickServ- List of entries matching *: -NickServ- nick1 (last mask: [email protected]) -NickServ- nick2 (last mask: [email protected]) -NickServ- End of list - 2/2 matches shown. -
Added the hs_offer module which allows offering templated vhosts to users (based on a
modsite module by @genius3000 on GitHub)./HOSTSERV OFFER ADD {account}.users.example.com /HOSTSERV OFFERLIST -HostServ- Current host offer list: -HostServ- 2: {account}.users.example.com / FooBar.users.example.com -- does not expire -HostServ- End of host offer list. -
Changed chanserv/mode lock messages to stack the responses into one message per type instead of sending one message per mode.
/CHANSERV MODE #stest LOCK ADD +bb foo!foo@foo bar!bar@bar -ChanServ- +bb foo!foo@foo bar!bar@bar has been locked on #stest. -
Changed database objects to rehook to their type when it becomes available again.
-
Changed the
nickserv/set/languageandnickserv/set/timezonecommands to allow setting back to the default value by omitting the last parameter./NICKSERV SET LANGUAGE 12:23 -NickServ- Language changed to English. /NICKSERV SET TIMEZONE 12:24 -NickServ- Timezone changed to UTC. -
Changed the default install directory from
~/anopeto~/anope-2.1. -
Changed the enc_sha1 module to use a vendored SHA-1 implementation.
-
Expanded password obscurity checks and added an event hook to allow modules to reject passwords.
-
Fixed the rpc_user module sending the "invalid account" and "invalid password" error codes inverted.
-
Fixed unintentionally reloading the core database when reloading a module that provides a database type.
-
Removed a bunch of obsolete build system cruft.
Anope 2.1.19
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Breaking Changes
-
pkg-configis now required to find dependencies for the following modules on UNIX systems:- enc_argon2
- ldap
- mysql
- regex_pcre2
- regex_tre
-
Support for InspIRCd v3 has been dropped ahead of it going EOL in two months. Please migrate to InspIRCd v4 to keep using Anope 2.1 with InspIRCd.
Changes
-
Added a Romanian translation (contributed by @KidProtect on GitHub).
-
Added support for associating a timezone with an account to allow users to receive timestamps in their local timezone.
/NICKSERV SET TIMEZONE Europe/London -NickServ- Timezone changed to Europe/Berlin. /NICKSERV INFO test -NickServ- Account registered: Thu 09 Oct 2025 15:22:45 CEST (45 seconds ago)NOTE: This requires a compiler with C++20 timezone support.
-
Added support for IRCv3 message tags when using Solanum git.
-
Added support for language-specific time formats.
/NICKSERV SET LANGUAGE tr_TR.UTF-8 -NickServ- Dil Türkçe olarak değiştirildi. /NICKSERV INFO test -NickServ- Hesap kaydedildi: Prş 09 Eki 2025 15:22:45 (6 dakika, 16 saniye önce) -
Channel entry messages are now tagged with an IRCv3 time tag for the time they were created on supporting IRCds. This defaults to on but can be disabled using
{cs_entrymsg}:timestamp. -
Reordered the information in the
nickserv/infocommand output to show the registration dates before the seen information. -
Updated the Turkish translation (contributed by @CaPaCuL on GitHub).
-
Updated the vendored libraries.
Anope 2.1.18
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Changes
- Added a check that a non-deprecated database module is loaded.
- Added support for flexible and monospace layouts to make text easier to read on clients that use a variable-width font.
- Added support for logging about deprecated modules on boot.
- Added support for per-IRCd hints when a link fails.
- Added support for self-service validation of vhosts using DNS TXT records.
- Added support for separate bad password limits for pre-connection SASL authentication.
- Added support for SRV and TXT records to the dns module.
- Added the --nodb option to disable database and encrytption module checks.
- Added the hostserv/validate command.
- Added the nickname registration date to the nickserv/glist output.
- Added the nickserv/saset/layout command.
- Added the nickserv/set/layout command.
- Added the ns_sasl_anonymous module.
- Added the ns_sasl_external module.
- Added the ns_sasl_plain module.
- Added the ns_set_layout module.
- Added the ns_set_op module.
- Added {hs_request}:validationcooldown (defaults to 5 minutes).
- Added {hs_request}:validationrecord (defaults to "anope-dns-validation").
- Added {ns_sasl}:badpasslimit (defaults to options:badpasslimit).
- Added {ns_sasl}:badpasstimeout (defaults to options:badpasstimeout).
- Changed db_flatfile to be import-only (migrate to db_json).
- Changed the default registration confirmation type to code validation.
- Changed the fantasy !help command to not require the FANTASY privilege by default.
- Changed various length measurement code to be UTF-8 aware.
- Disabled the nickname registration delay by default.
- Fixed reporting the MySQL version that the mysql module was built against.
- Improved the layout of the nickserv/info command.
- Modularised the ns_sasl module to make it easier to pick SASL mechanisms.
- Moved duration rounding logic from Anope::Expires to Anope::Duration.
- Moved nickserv/set/autoop and nickserv/saset/autoop to the ns_set_op module.
- Moved nickserv/set/display and nickserv/saset/display to the ns_set_group module.
- Moved nickserv/set/neverop and nickserv/saset/neverop to the ns_set_op module.
- Removed support for importing old databases from 1.8.
- Removed support for verifying "old MD5" passwords from 1.7.
- Removed the db_old module.
- Removed the enc_old module.
- Removed {db_flatfile}:fork (module is now import-only).
- Removed {db_flatfile}:keepbackups (module is now import-only).
- Removed {db_flatfile}:nobackupokay (module is now import-only).
- Reworked how memory is allocated when formatting messages.
Anope 2.1.17
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Changes
- Added the nickserv/resend oper privilege.
- Allowed opers to resend passwords for users in nickserv/resend.
- Fixed HostServ using a different valid username character set to the protocol module.
- Fixed losing the channel and nickname registration time when upgrading from an earlier 2.1 release.
- Improved the messages sent when a user is forced off a protected nickname.
- Simplified copying modules to the runtime directory on Windows.
Anope 2.1.16
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Changes
- Added fantasy:require_privilege (defaults to yes).
- Added support for on-IRC code confirmation.
- Added the ability for fantasy commands to be executable without the FANTASY privilege.
- Added the ability to prepend to topics as well as appending to them.
- Added the nickserv/confirm/email command.
- Added the nickserv/confirm/email oper privilege.
- Added the nickserv/confirm/register command.
- Added the ns_confirm module.
- Added {ns_email}:changeexpire (defaults to 1 day).
- Added {ns_resetpass}:resetexpire (defaults to 1 day).
- Changed various fields to serialize to the database as a string not an integer.
- Disabled db_flatfile by default in preparation for becoming import-only.
- Fixed a memory leak in the db_json module.
- Fixed building on OpenSSL 1.1.1 (for now).
- Fixed removed and later re-added temporary bans being removed automatically.
- Fixed sometimes sending malformed LMODE messages on InspIRCd.
- Fixed the "did you mean" message suggesting unloaded commands.
- Fixed various issues with the example config files.
- Marked db_json as the recommended database module.
- Moved the BAN, UNBAN, and KICK commands to the chanserv/management group.
- Removed support for the 1.8-style seen command.
- Removed the irc2sql module (migrate to JSON-RPC instead).
- Removed {ns_seen}:simple (1.8-style seen has been removed).
- Renamed the nickserv/confirm oper privilege to nickserv/confirm/register.
- Reworked confirmation to allow confirmation of multiple account actions.
- When dropping a display nickname the new display will now be the oldest in the group.
Anope 2.1.15
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Known Issues
There is a memory leak in the db_json module. This issue has been resolved in 2.1 git. It is recommended you temporarily use db_flatfile instead.
Changes
- Added a workaround to the jsonrpc module for JavaScript truncating big integers.
- Added an example Ruby library for accessing the RPC interface.
- Added away state and tls usage to the anope.user RPC event.
- Added support for looking up accounts by identifier in the anope.account RPC event.
- Added support for storing the setter and set time and setter of list modes and restoring them on InspIRCd and Solanum.
- Added support for token authentication to the RPC modules.
- Added the anope.checkCredentials, anope.identify, anope.listCommands, and anope.command RPC events to the new rpc_user module.
- Added the ns_email module.
- Added the rpc_user module.
- Added {jsonrpc}:integer_bits (defaults to 64).
- Added {jsonrpc}:token.
- Added {nickserv}:enforcerreal (defaults to "Services Enforcer").
- Added {xmlrpc}:token.
- Bumped the minimum supported version of ircd-hybrid to 8.2.34.
- Deprecated irc2sql in favour of rpc_data.
- Dropped support for Bahamut as it has no known users.
- Fixed creating duplicate Stats rows on some servers.
- Fixed loading databases in db_json.
- Fixed restoring cloaked hosts on InspIRCd when the cloak module is not loaded.
- Fixed some variable shadowing that potentially caused issues with the SQL database backends.
- Fixed sometimes writing accounts to the database without a unique identifier.
- Fixed various documentation issues with the example JavaScript JSON-RPC client.
- Improved CTCP handling and added support for more CTCP types.
- Moved nickserv/set/email and nickserv/saset/email to the ns_email module.
- Removed the bahamut module.
- Removed the ns_getemail module (load ns_email instead).
- Removed the ns_maxemail module (load ns_email instead).
- Removed the rpc_main module (migrate to the other RPC modules).
- Removed {chanstats}:cs_def_chanstats (add CS_STATS to {chanserv}:defaults instead).
- Removed {chanstats}:ns_def_chanstats (add NS_STATS to {nickserv}:defaults instead).
- Renamed service:gecos to service:real.
Anope 2.0.18
Changes
- Backported better sendmail error messages from 2.1.
- Backported the Windows CI fom 2.1.
- Fixed a CMake error when it encounters a hard to parse header file.
- Fixed being able to group guest nicknames.
- Fixed building Anope with CMake 4.
- Fixed compatibility with MariaDB.
- Fixed counting email addresses in ns_maxemail.
- Fixed importing user ICQ and URL data from 1.8.
- Fixed operserv/ignore not being prioritised first.
- Fixed resetting the stats with operserv/stats.
- Updated the Dutch translation.
Anope 2.1.14
IMPORTANT — This is an development release. You probably want to use a 2.0 stable release instead.
Changes
- Added a detail specifier to the anope.list{Channels,Opers,Servers,Users} RPC methods.
- Added a matcher for the InspIRCd oper extban.
- Added oper:password_hash.
- Added options:codelength (defaults to 15).
- Added support for hashed operator passwords.
- Added support for hiding the date news was added in os_news.
- Added support for local password comparison to the sql_authentication module.
- Added support for monthly backups to db_json.
- Added support for unbanning virtual modes using cs_unban.
- Added the !unmute fantasy command.
- Added the anope.account and anope.listAccounts RPC methods to the rpc_data module.
- Added the protection time to the INFO output.
- Added {os_news}:showdate (defaults to yes).
- Added {sql_authentication}:password_field (defaults to "password").
- Added {sql_authentication}:password_hash.
- Allowed unprivileged channel successors to remove themselves from succession.
- Bumped the minimum required CMake version to 3.20.
- Changed deletion callbacks to specify the mask that was deleted if only one was.
- Changed nickserv/alist to show all permissions not just the highest ranked one.
- Changed the default value for options:linelength to "100".
- Changed the default value for {enc_sha2}:algorithm to "sha512".
- Changed the default value for {ns_seen}:purgetime to "90d".
- Changed the syntax for template variables in mail:emailchange_message, mail:emailchange_subject, mail:memo_message, mail:memo_subject, mail:registration_message, mail:registration_subject, mail:reset_message, mail:reset_subject, {chanserv}:signkickformat, {dnsbl}:blacklist:reason, {ldap_authentication}:search_filter, {ldap_oper}:binddn, {ldap_oper}:filter, {nickserv}:unregistered_notice, {os_session}:sessionlimitexceeded, {proxyscan}:proxyscan:reason.
- Fixed NEVEROP not being respected in chanserv/set/founder and chanserv/set/successor.
- Fixed stripping IRC formatting codes from messages.
- Messages are now automatically line wrapped to options:linelength.
- Redocumented the ns_sasl module.
- Removed hardcoded command names from several messages.
- Updated the Windows CI to Windows Server 2025 and Visual Studio 2022.