1
0
mirror of https://github.com/anope/anope.git synced 2026-06-15 01:24:46 +02:00

Compare commits

..

71 Commits

Author SHA1 Message Date
Sadie Powell e9424b529c Release 2.1.2. 2024-02-17 18:14:10 +00:00
Sadie Powell a60c796cf6 Update the config changelog. 2024-02-17 18:13:30 +00:00
Sadie Powell fcf16ab20a Merge branch '2.0' into 2.1. 2024-02-11 21:35:31 +00:00
Sadie Powell 8e3be20387 Update the Windows dependencies. 2024-02-11 21:34:00 +00:00
Sadie Powell 689dd44d3b Add a GitHub security policy. 2024-02-11 21:32:23 +00:00
Sadie Powell a25d0aa60e Update the changelog. 2024-02-11 21:14:59 +00:00
Sadie Powell c50d1dc2b5 Remove some outdated development docs. 2024-02-11 21:08:17 +00:00
Sadie Powell 274bb19d03 Switch Thread to use the C++11 equivalent, remove win32/pthread. 2024-02-11 20:35:21 +00:00
Sadie Powell 2c5b84bd1d Replace Condition and Mutex with the C++11 standard equivalents. 2024-02-11 19:53:05 +00:00
Sadie Powell 5c50bcb9c7 Remove the time_t parameter from Tick and TickTimers.
Most uses of Tick do not use the parameter and even when it is used
it is always the same as CurTime.
2024-02-11 18:18:18 +00:00
Sadie Powell cef56abea4 Consistently use time_t for the timer duration. 2024-02-11 18:10:38 +00:00
Sadie Powell 30b9f12711 Remove the now parameter from the Timer class.
This was never actually changed from the default.
2024-02-11 17:56:35 +00:00
Sadie Powell c9e0245f23 Revert "Document ns_no_expire nick default".
This reverts commit 9c9df2ad1f.

Closes #350.
2024-02-11 16:22:01 +00:00
Robby 5337326cc9 Update the dutch language file. 2024-01-31 06:17:01 +01:00
Robby 73d8c85879 Update the dutch language file. 2024-01-31 06:17:00 +01:00
Robby 6237245ab7 Remove an extraneous space in cs_xop, part 2. 2024-01-31 03:20:35 +01:00
Robby 7ae20c2a6d Remove an extraneous space in cs_xop. 2024-01-31 03:08:54 +01:00
Robby ae1829e5a8 Fix a typo in the PASSWORD_TOO_SHORT text string. 2024-01-30 19:15:19 +01:00
Sadie Powell 026661c9a2 Fix irc2sql and webcpanel not being put into the modules folder. 2024-01-30 14:53:08 +00:00
Sadie Powell ec7223ace2 Convert map/multimap/hash_map to an alias template. 2024-01-30 14:29:17 +00:00
Sadie Powell 1f31621bbf Remove various references to old versions. 2024-01-30 14:01:07 +00:00
Sadie Powell dfd41b9b94 Fix Clang and GCC disagreeing about whether a move is needed. 2024-01-24 16:12:29 +00:00
Sadie Powell fdd4aade3b Add a CI workflow for Alpine. 2024-01-24 15:14:21 +00:00
Sadie Powell 0a53f4c26e Merge branch '2.0' into 2.1. 2024-01-24 14:48:53 +00:00
Sadie Powell d6a826a09c Backport CI changes from the 2.1 branch. 2024-01-24 14:45:57 +00:00
Sadie Powell 484160eb4e Shuffle modules around a bit. 2024-01-24 12:34:34 +00:00
Sadie Powell 7ac1fe5847 Rename several modules to remove the m_ prefix. 2024-01-24 12:22:51 +00:00
Sadie Powell 72acef4e15 Mark types that have no inheritors as final. 2024-01-23 16:53:06 +00:00
Sadie Powell a6a0f6c447 Improve the layout of types that inherit from another type. 2024-01-23 15:28:23 +00:00
Sadie Powell 398d674cf4 Fix some CoreExport types that should be DllExport. 2024-01-23 14:06:46 +00:00
Sadie Powell 1467de1c7e Mark all exception types as CoreExport.
From the GCC docs:

>Exception catching of a user defined type in a binary other than
>the one which threw the exception requires a typeinfo lookup.

Closes #335.
2024-01-22 20:06:57 +00:00
Sadie Powell c5023fdfa0 Update the Turkish translation for the changes in 2.1 git.
Co-authored-by: CaPa CuL <capacul@gmail.com>
2024-01-22 19:52:06 +00:00
Sadie Powell 97782248af Merge branch '2.0' into 2.1. 2024-01-22 18:35:12 +00:00
Sadie Powell 016761776b Add a new Turkish translation contributed by CaPa CuL.
Co-authored-by: CaPa CuL <capacul@gmail.com>
2024-01-22 16:29:20 +00:00
Victor Coss c2450eabab Fix typo 2024-01-22 00:38:23 +00:00
Sadie Powell d6ced86021 Fix some module names that were missed in commit 4056af00e3. 2024-01-11 17:13:14 +00:00
Sadie Powell 0d8d1675f7 Fix an oversight in build_subdir. 2024-01-10 17:49:02 +00:00
Sadie Powell 4056af00e3 Parse InspIRCd module names in a way which is 1206 compatible. 2024-01-10 17:47:27 +00:00
Sadie Powell 99b4305573 Add a wrapper for std::string::compare to Anope::string. 2024-01-10 17:07:17 +00:00
Sadie Powell 113301dbba Update the changelogs. 2024-01-09 21:25:44 +00:00
Sadie Powell 349ae043b6 Always build the stats modules.
These have no external dependencies so it makes no sense to not
always build them.
2024-01-09 21:25:44 +00:00
Sadie Powell 710e7dd3a2 Bump the minimum OpenSSL version to 1.1. 2024-01-09 21:25:44 +00:00
Sadie Powell 1e9c6d7931 Always disable SSLv3 support, allow disabling TLSv1.[012]. 2024-01-09 21:25:44 +00:00
Sadie Powell 5772b924cc Drop support for ancient versions of GnuTLS. 2024-01-09 21:25:44 +00:00
Sadie Powell fce5f4cc0f Update the default SSL filenames to use the Certbot names. 2024-01-09 21:25:44 +00:00
Sadie Powell fa7ad6b3df Use native file extensions on macOS and Windows. 2024-01-09 14:35:49 +00:00
Sadie Powell fc2df00cfc Put modules into their own folder on Windows. 2024-01-09 13:57:32 +00:00
Sadie Powell f92c5471c2 Add a string overload of Channel::Kick. 2024-01-08 14:37:50 +00:00
Sadie Powell 0439e3b21b Add a string overload of User::SetModes. 2024-01-08 14:14:57 +00:00
Sadie Powell 5b23fae8bf Add a string overload of Channel::SetModes. 2024-01-08 14:14:37 +00:00
Sadie Powell aac4b0f0a3 Bump the up to date languages for the recent format changes. 2024-01-08 13:47:39 +00:00
Sadie Powell f083795c79 Fix various format string issues. 2024-01-08 13:11:50 +00:00
Sadie Powell 5db79c1e24 Add a non-formatting overload of User::SetModesInternal. 2024-01-08 13:11:50 +00:00
Sadie Powell a4dddfd5f1 Mark format strings with the GNU printf attribute. 2024-01-08 13:11:50 +00:00
Valentin Lorentz 7ddc865cde fr_FR: Generalize gender-neutral grammar
'(e)' and 'le/la' were used in a few places, I generalized them to all
strings referring to people.

I also made role names gender-neutral using contraction (eg. "fondateur"
-> "fondateurice"), and adapted specifiers accordingly.
2024-01-06 23:22:10 +00:00
Sadie Powell 688ecf1c1d Fix an oversight in the mysql module. 2024-01-06 23:19:18 +00:00
Sadie Powell c0453cfec1 Fix a sign conversion issue in the mysql module. 2024-01-06 13:39:03 +00:00
Sadie Powell a9ab0c72a6 Use auto in places where the type is unambiguous. 2024-01-06 13:23:37 +00:00
Robert Scheck de918ef9cf Add missing whitespace in multi-line comment 2024-01-06 12:41:31 +00:00
Sadie Powell 0ee9874112 Update translations for the recent services case fix. 2024-01-05 21:44:08 +00:00
Val Lorentz 388858aee6 Fix inconsistent capitalization of 'services'. 2024-01-05 21:34:26 +00:00
Sadie Powell f22703df59 Fix a translation string and enable translations on CI. 2024-01-05 21:28:54 +00:00
Val Lorentz 4715b76dbe fr_FR: msgmerge + update fuzzy strings. 2024-01-05 21:21:43 +00:00
Sadie Powell 50bd385ccf Add an alias for chanserv/status for the name used by Atheme.
Closes #336.
2024-01-05 21:21:17 +00:00
Sadie Powell e738da9b11 Merge branch '2.0' into 2.1. 2024-01-05 19:52:56 +00:00
Val Lorentz 6e6e053384 fr_FR: Update fuzzy strings 2024-01-05 19:49:56 +00:00
Valentin Lorentz 5edf19d230 fr_FR: Fix trailing spaces 2024-01-05 19:00:19 +00:00
Sadie Powell 4573e1925d Use normal exit codes when exiting the process. 2024-01-05 12:00:28 +00:00
Sadie Powell a40f8e0b9d Update the copyright headers for 2024. 2024-01-04 22:25:48 +00:00
Sadie Powell 9db49ec790 Bump for 2.1.2-git. 2024-01-04 17:55:44 +00:00
Sadie Powell eb2aaf22ed Fix a copy/paste error in the default channel settings. 2024-01-01 17:32:37 +00:00
385 changed files with 8262 additions and 9348 deletions
+19
View File
@@ -0,0 +1,19 @@
# Security Policy
## Supported Versions
Currently the 2.0 (stable) branch is actively receiving security fixes.
The 2.1 (development) branch is still early in development and currently only receives security fixes when they are synced from the 2.0 branch.
Version | Supported
------- | ---------
2.1.x | :warning:
2.0.x | :white_check_mark:
1.8.x | :x:
## Reporting a Vulnerability
Please do not report security vulnerabilities on GitHub. Instead, email the details to team@anope.org or get the attention of a developer in our development IRC channel at irc.anope.org #anope-devel and PM them the details.
We will triage your issue as soon as possible and try to release a fixed version within a week of receiving your report.
+58
View File
@@ -0,0 +1,58 @@
name: Alpine CI
on:
pull_request:
push:
schedule:
- cron: '0 0 * * 0'
jobs:
build:
if: "!contains(github.event.head_commit.message, '[skip alpine ci]')"
container: alpine:edge
runs-on: ubuntu-latest
env:
CXX: ${{ matrix.compiler }}
CXXFLAGS: -Werror
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
apk update
apk add \
clang \
cmake \
g++ \
gettext \
git \
gnutls-dev \
mariadb-dev \
openldap-dev \
openssl-dev \
pcre2-dev \
samurai \
sqlite-dev \
tre-dev
- name: Enable extras
run: |
for MODULE in ldap ldap_authentication ldap_oper mysql regex_pcre2 regex_posix regex_tre sql_authentication sql_log sql_oper sqlite ssl_gnutls ssl_openssl
do
ln -s $PWD/modules/extra/$MODULE.cpp $PWD/modules
done
- name: Run CMake
run: |
mkdir build && cd build
cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=DEBUG -DINSTDIR:STRING=$(readlink -f ../run) ..
- name: Build Anope
run: |
ninja -C build install
strategy:
fail-fast: false
matrix:
compiler:
- clang++
- g++
+10 -3
View File
@@ -1,21 +1,24 @@
name: Linux CI
name: Ubuntu CI
on:
- pull_request
- push
jobs:
build:
if: "!contains(github.event.head_commit.message, '[skip ubuntu ci]')"
runs-on: ubuntu-20.04
env:
CXX: ${{ matrix.compiler }}
CXXFLAGS: -Werror
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update --assume-yes
sudo apt-get install --assume-yes --no-install-recommends \
clang \
g++ \
gettext \
git \
libgnutls28-dev \
libldap2-dev \
@@ -25,19 +28,23 @@ jobs:
libssl-dev \
libtre-dev \
ninja-build
- name: Enable extras
run: |
for MODULE in m_ldap.cpp m_ldap_authentication.cpp m_ldap_oper.cpp m_mysql.cpp m_regex_pcre2.cpp m_regex_posix.cpp m_regex_tre.cpp m_sql_authentication.cpp m_sql_log.cpp m_sql_oper.cpp m_sqlite.cpp m_ssl_gnutls.cpp m_ssl_openssl.cpp stats
for MODULE in ldap ldap_authentication ldap_oper mysql regex_pcre2 regex_posix regex_tre sql_authentication sql_log sql_oper sqlite ssl_gnutls ssl_openssl
do
ln -s ${{ github.workspace }}/modules/extra/$MODULE ${{ github.workspace }}/modules
ln -s ${{ github.workspace }}/modules/extra/$MODULE.cpp ${{ github.workspace }}/modules
done
- name: Run CMake
run: |
mkdir build && cd build
cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=DEBUG -DINSTDIR:STRING=${{ github.workspace }}/run ..
- name: Build Anope
run: |
ninja -C ${{ github.workspace }}/build install
strategy:
fail-fast: false
matrix:
+1
View File
@@ -6,6 +6,7 @@ on:
- cron: '0 0 * * 0'
jobs:
build:
if: "!contains(github.event.head_commit.message, '[skip windows ci]')"
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
+13 -14
View File
@@ -1,20 +1,19 @@
build/
config.cache
include/sysconf.h
modules/m_ldap.cpp
modules/m_ldap_authentication.cpp
modules/m_ldap_oper.cpp
modules/m_mysql.cpp
modules/m_regex_pcre.cpp
modules/m_regex_pcre2.cpp
modules/m_regex_posix.cpp
modules/m_regex_tre.cpp
modules/m_sql_authentication.cpp
modules/m_sql_log.cpp
modules/m_sql_oper.cpp
modules/m_sqlite.cpp
modules/m_ssl_gnutls.cpp
modules/m_ssl_openssl.cpp
modules/ldap.cpp
modules/ldap_authentication.cpp
modules/ldap_oper.cpp
modules/mysql.cpp
modules/regex_pcre2.cpp
modules/regex_posix.cpp
modules/regex_tre.cpp
modules/sql_authentication.cpp
modules/sql_log.cpp
modules/sql_oper.cpp
modules/sqlite.cpp
modules/ssl_gnutls.cpp
modules/ssl_openssl.cpp
modules/stats
run/
*.mo
+4 -1
View File
@@ -22,6 +22,9 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Put modules in their own folder
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# If we are using a GNU compiler (have to use CXX because it seems to fail on C), we will be able to determine it's default paths for libraries and includes
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
# First look for the compiler's default library directories
@@ -172,7 +175,7 @@ if(MSVC)
# Otherwise, we're not using Visual Studio
else()
# Set the compile flags to have all warnings on (including shadowed variables)
set(CXXFLAGS "${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wpedantic -Wno-unused-parameter ${CMAKE_CXX_FLAGS}")
set(CXXFLAGS "${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wformat=2 -Wmissing-format-attribute -Wpedantic -Wno-format-nonliteral -Wno-format-zero-length -Wno-unused-parameter ${CMAKE_CXX_FLAGS}")
endif()
# If CMake has found that the given system requires a special library for dl* calls, include it with the linker flags
+1 -1
View File
@@ -2,7 +2,7 @@
#
# Configuration script for Anope.
#
# Anope (C) 2003-2023 Anope Team
# Anope (C) 2003-2024 Anope Team
# Contact us at team@anope.org
#
# This program is free but copyrighted software; see the file COPYING for
+3 -3
View File
@@ -1199,7 +1199,7 @@ module
* db_redis.
*
* This module allows using Redis (https://redis.io/) as a database backend.
* This module requires that m_redis is loaded and configured properly.
* This module requires that redis is loaded and configured properly.
*
* Redis 2.8 supports keyspace notifications which allows Redis to push notifications
* to Anope about outside modifications to the database. This module supports this and
@@ -1211,7 +1211,7 @@ module
name = "db_redis"
/*
* Redis database to use. This must be configured with m_redis.
* Redis database to use. This must be configured with redis.
*/
engine = "redis/main"
}
@@ -1225,7 +1225,7 @@ module
*
* Without any encryption modules loaded users will not be able to authenticate unless
* there is another module loaded that provides authentication checking, such as
* m_ldap_authentication or m_sql_authentication.
* ldap_authentication or sql_authentication.
*
* With enc_none, passwords will be stored in plain text, allowing for passwords
* to be recovered later but it isn't secure and therefore is not recommended.
+1 -1
View File
@@ -249,7 +249,7 @@ command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
* botserv/kick/italics - Configures BotServ's italics kicker.
* botserv/kick/repeat - Configures BotServ's repeat kicker.
* botserv/kick/reverses - Configures BotServ's reverse kicker.
* botserv/kick/underlines - Configures BotServ's reverse kicker.
* botserv/kick/underlines - Configures BotServ's underline kicker.
* botserv/set/dontkickops - Used for preventing BotServ from kicking channel operators.
* botserv/set/dontkickvoices - Used for preventing BotServ from kicking voices.
*
+3 -2
View File
@@ -93,8 +93,8 @@ module
* to be a registered nick, otherwise the channel will be dropped.
* - none: No defaults
*
* This directive is optional, if left blank, the options will default to keeptopic, cs_secure, securefounder,
* and signkick. If you really want no defaults, use "none" by itself as the option.
* This directive is optional, if left blank, the options will default to keeptopic, peace, cs_secure,
* securefounder, and signkick. If you really want no defaults, use "none" by itself as the option.
*/
defaults = "keeptopic peace cs_secure securefounder signkick"
@@ -1261,6 +1261,7 @@ command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc
*/
module { name = "cs_status" }
command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
command { service = "ChanServ"; name = "WHY"; command = "chanserv/status"; hide = true; }
/*
* cs_suspend
+1 -1
View File
@@ -5,7 +5,7 @@
module
{
name = "m_chanstats"
name = "chanstats"
/*
* The name of this engine.
+76 -75
View File
@@ -19,14 +19,14 @@
module { name = "help" }
/*
* m_dns
* dns
*
* Adds support for the DNS protocol. By itself this module does nothing useful,
* but other modules such as m_dnsbl and os_dns require this.
* but other modules such as dnsbl and os_dns require this.
*/
#module
{
name = "m_dns"
name = "dns"
/*
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
@@ -80,7 +80,7 @@ module { name = "help" }
}
/*
* m_dnsbl
* dnsbl
*
* Allows configurable DNS blacklists to check connecting users against. If a user
* is found on the blacklist they will be immediately banned. This is a crucial module
@@ -88,7 +88,7 @@ module { name = "help" }
*/
#module
{
name = "m_dnsbl"
name = "dnsbl"
/*
* If set, Anope will check clients against the DNSBLs when services connect to its uplink.
@@ -179,19 +179,19 @@ module { name = "help" }
}
/*
* m_helpchan
* helpchan
*
* Gives users who are op in the specified help channel usermode +h (helpop).
*/
#module
{
name = "m_helpchan"
name = "helpchan"
helpchannel = "#help"
}
/*
* m_httpd
* httpd
*
* Allows services to serve web pages. By itself, this module does nothing useful.
*
@@ -200,7 +200,7 @@ module { name = "help" }
*/
#module
{
name = "m_httpd"
name = "httpd"
httpd
{
@@ -233,13 +233,13 @@ module { name = "help" }
}
/*
* m_ldap [EXTRA]
* ldap [EXTRA]
*
* This module allows other modules to use LDAP. By itself, this module does nothing useful.
*/
#module
{
name = "m_ldap"
name = "ldap"
ldap
{
@@ -254,14 +254,14 @@ module { name = "help" }
}
/*
* m_ldap_authentication [EXTRA]
* ldap_authentication [EXTRA]
*
* This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
* LDAP to authenticate users. Requires m_ldap.
* LDAP to authenticate users. Requires ldap.
*/
#module
{
name = "m_ldap_authentication"
name = "ldap_authentication"
/*
* The distinguished name used for searching for users's accounts.
@@ -314,16 +314,16 @@ module { name = "help" }
}
/*
* m_ldap_oper [EXTRA]
* ldap_oper [EXTRA]
*
* This module dynamically ties users to Anope opertypes when they identify
* via LDAP group membership. Requires m_ldap.
* via LDAP group membership. Requires ldap.
*
* Note that this doesn't give the user privileges on the IRCd, only in Anope.
*/
#module
{
name = "m_ldap_oper"
name = "ldap_oper"
/*
* An optional binddn to use when searching for groups.
@@ -355,13 +355,13 @@ module { name = "help" }
}
/*
* m_mysql [EXTRA]
* mysql [EXTRA]
*
* This module allows other modules to use MySQL.
*/
#module
{
name = "m_mysql"
name = "mysql"
mysql
{
@@ -376,13 +376,13 @@ module { name = "help" }
}
/*
* m_redis
* redis
*
* This module allows other modules to use Redis.
*/
#module
{
name = "m_redis"
name = "redis"
/* A redis database */
redis
@@ -401,29 +401,29 @@ module { name = "help" }
}
/*
* m_regex_pcre2 [EXTRA]
* regex_pcre2 [EXTRA]
*
* Provides the regex engine regex/pcre, which uses version 2 of the Perl Compatible Regular
* Expressions library.
*/
#module { name = "m_regex_pcre2" }
#module { name = "regex_pcre2" }
/*
* m_regex_posix [EXTRA]
* regex_posix [EXTRA]
*
* Provides the regex engine regex/posix, which uses the POSIX compliant regular expressions.
*/
#module { name = "m_regex_posix" }
#module { name = "regex_posix" }
/*
* m_regex_stdlib
* regex_stdlib
*
* Provides the regex engine regex/stdlib, which uses the regular expression library that is part of
* the C++ standard library.
*/
*/
module
{
name = "m_regex_stdlib"
name = "regex_stdlib"
/*
* The syntax scheme to use. Can be set to awk to use the regular expression grammar used by the
@@ -439,23 +439,23 @@ module
}
/*
* m_regex_tre [EXTRA]
* regex_tre [EXTRA]
*
* Provides the regex engine regex/tre, which uses the TRE regex library.
*/
#module { name = "m_regex_tre" }
#module { name = "regex_tre" }
/*
* m_rewrite
* rewrite
*
* Allows rewriting commands sent to/from clients.
*/
#module { name = "m_rewrite" }
#module { name = "rewrite" }
#command
{
service = "ChanServ"; name = "CLEAR"; command = "rewrite"
/* Enable m_rewrite. */
/* Enable rewrite. */
rewrite = true
/* Source message to match. A $ can be used to match anything. */
@@ -476,7 +476,7 @@ module
}
/*
* m_proxyscan
* proxyscan
*
* This module allows you to scan connecting clients for open proxies.
* Note that using this will allow users to get the IP of your services.
@@ -490,7 +490,7 @@ module
*/
#module
{
name = "m_proxyscan"
name = "proxyscan"
/*
* The target IP services tells the proxy to connect back to. This must be a publicly
@@ -558,38 +558,38 @@ module
}
/*
* m_sasl
* sasl
*
* Some IRCds allow "SASL" authentication to let users identify to services
* during the IRCd user registration process. If this module is loaded, Anope will allow
* authenticating users through this mechanism. Supported mechanisms are:
* PLAIN, EXTERNAL.
*/
module { name = "m_sasl" }
module { name = "sasl" }
/*
* m_ssl_gnutls [EXTRA]
* ssl_gnutls [EXTRA]
*
* This module provides SSL services to Anope using GnuTLS, for example to
* connect to the uplink server(s) via SSL.
*
* You may only load either m_ssl_gnutls or m_ssl_openssl, but not both.
* You may only load either ssl_gnutls or ssl_openssl, but not both.
*/
#module
{
name = "m_ssl_gnutls"
name = "ssl_gnutls"
/*
* An optional certificate and key for m_ssl_gnutls to give to the uplink.
* An optional certificate and key for ssl_gnutls to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
* certtool --generate-privkey --bits 2048 --outfile anope.key
* certtool --generate-self-signed --load-privkey anope.key --outfile anope.crt
* certtool --generate-privkey --bits 2048 --outfile privkey.pem
* certtool --generate-self-signed --load-privkey privkey.pem --outfile fullchain.pem
*
*/
cert = "data/anope.crt"
key = "data/anope.key"
cert = "data/fullchain.pem"
key = "data/privkey.pem"
/*
* Diffie-Hellman parameters to use when acting as a server. This is only
@@ -606,49 +606,50 @@ module { name = "m_sasl" }
}
/*
* m_ssl_openssl [EXTRA]
* ssl_openssl [EXTRA]
*
* This module provides SSL services to Anope using OpenSSL, for example to
* connect to the uplink server(s) via SSL.
*
* You may only load either m_ssl_openssl or m_ssl_gnutls, but not both.
* You may only load either ssl_openssl or ssl_gnutls, but not both.
*
*/
#module
{
name = "m_ssl_openssl"
name = "ssl_openssl"
/*
* An optional certificate and key for m_ssl_openssl to give to the uplink.
* An optional certificate and key for ssl_openssl to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
* openssl genrsa -out anope.key 2048
* openssl req -new -x509 -key anope.key -out anope.crt -days 1095
* openssl genrsa -out privkey.pem 2048
* openssl req -new -x509 -key privkey.pem -out fullchain.pem -days 1095
*/
cert = "data/anope.crt"
key = "data/anope.key"
cert = "data/fullchain.pem"
key = "data/privkey.pem"
/*
* As of 2014 SSL 3.0 is considered insecure, but it might be enabled
* on some systems by default for compatibility reasons.
* You can use the following option to enable or disable it explicitly.
* Leaving this option not set defaults to the default system behavior.
* If you wish to increase security you can disable support for older
* versions of TLS with no known vulnerabilities but that provide less
* security. For your security SSLv2 and SSLv3 are always disabled.
*/
#sslv3 = no
#tlsv10 = no
#tlsv11 = no
#tlsv12 = yes
}
/*
* m_sql_authentication [EXTRA]
* sql_authentication [EXTRA]
*
* This module allows authenticating users against an external SQL database using a custom
* query.
*/
#module
{
name = "m_sql_authentication"
name = "sql_authentication"
/* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
/* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
engine = "mysql/main"
/* Query to execute to authenticate. A non empty result from this query is considered a success,
@@ -690,7 +691,7 @@ module { name = "m_sasl" }
}
/*
* m_sql_log [EXTRA]
* sql_log [EXTRA]
*
* This module adds an additional target option to log{} blocks
* that allows logging Service's logs to SQL. To log to SQL, add
@@ -707,19 +708,19 @@ module { name = "m_sasl" }
* it if it doesn't exist. This module does not create any indexes (keys)
* on the table and it is recommended you add them yourself as necessary.
*/
#module { name = "m_sql_log" }
#module { name = "sql_log" }
/*
* m_sql_oper [EXTRA]
* sql_oper [EXTRA]
*
* This module allows granting users services operator privileges and possibly IRC Operator
* privileges based on an external SQL database using a custom query.
*/
#module
{
name = "m_sql_oper"
name = "sql_oper"
/* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
/* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
engine = "mysql/main"
/* Query to execute to determine if a user should have operator privileges.
@@ -736,13 +737,13 @@ module { name = "m_sasl" }
}
/*
* m_sqlite [EXTRA]
* sqlite [EXTRA]
*
* This module allows other modules to use SQLite.
*/
#module
{
name = "m_sqlite"
name = "sqlite"
/* A SQLite database */
sqlite
@@ -762,7 +763,7 @@ module { name = "m_sasl" }
* as they could over IRC. If you are using the default configuration you should be able to access
* this panel by visiting http://127.0.0.1:8080 in your web browser from the machine Anope is running on.
*
* This module requires m_httpd.
* This module requires httpd.
*/
#module
{
@@ -779,23 +780,23 @@ module { name = "m_sasl" }
}
/*
* m_xmlrpc
* xmlrpc
*
* Allows remote applications (websites) to execute queries in real time to retrieve data from Anope.
* By itself this module does nothing, but allows other modules (m_xmlrpc_main) to receive and send XMLRPC queries.
*/
#module
{
name = "m_xmlrpc"
name = "xmlrpc"
/* Web service to use. Requires m_httpd. */
/* Web service to use. Requires httpd. */
server = "httpd/main"
}
/*
* m_xmlrpc_main
* xmlrpc_main
*
* Adds the main XMLRPC core functions.
* Requires m_xmlrpc.
* Requires xmlrpc.
*/
#module { name = "m_xmlrpc_main" }
#module { name = "xmlrpc_main" }
-1
View File
@@ -111,7 +111,6 @@ module
* - msg: Messages will be sent as PRIVMSGs instead of NOTICEs, requires options:useprivmsg
* to be enabled as well
* - ns_keep_modes: Enables keepmodes, which retains user modes across sessions
* - ns_no_expire: Enables no expire. Unconfirmed expire overrules this.
*
* This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
* memo_receive. If you really want no defaults, use "none" by itself as the option.
+1 -1
View File
@@ -267,7 +267,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*
* Provides the command operserv/dns.
*
* This module requires that m_dns is loaded.
* This module requires that dns is loaded.
*
* This module allows controlling a DNS zone. This is useful for
* controlling what servers users are placed on for load balancing,
+2 -2
View File
@@ -483,13 +483,13 @@ log
/*
* [REQUIRED] MySQL Database configuration.
*
* m_mysql
* mysql
*
* This module allows other modules to use MySQL.
*/
module
{
name = "m_mysql"
name = "mysql"
mysql
{
-1
View File
@@ -1 +0,0 @@
astyle --style=java --indent=tab --brackets=break-closing --indent-switches --indent-cases --brackets=break
-1
View File
@@ -1 +0,0 @@
For all bug reports / updates please see https://github.com/anope/anope/issues
-111
View File
@@ -1,111 +0,0 @@
C++-style Casting
=================
In C, you can cast in one of two ways:
(type)var
type(var)
The problem with C-style casting is that it allows a programmer to get away
with too much, and is also not designed to handle C++ classes.
C++ has 4 types of casting in addition to allowing C-style casting. They are:
static_cast
const_cast
dynamic_cast
reinterpret_cast
The syntax is usually *_cast<type>(var).
static_cast
-----------
From my experience, this cast is closest to C-style casting for non-pointer
types as well as between some (but not all) pointer types. This type of cast,
like C-style casting, is performed at compile-time. static_cast can also do
a downcast of a derived class to a base class, but only if the base class is
not a virtual base class. Sometimes the result of this cast can become
undefined. static_cast is a bit more strict that C-style casting, though. It
disallows certain class conversions that would've been allowed with a C-style
cast. static_cast also doesn't allow you to cast to an incomplete type. In
these cases, I would try either dynamic_cast or reinterpret_cast.
const_cast
----------
This cast is mainly to add or remove const-ness or volatile-ness from a
variable. This is safer than using a C-style cast to change the const-ness
of a variable. In most cases if you try to use one of the other casts and it
complains about const-ness, you will want to either use this cast instead or
wrap the other cast around this cast. An example:
const int *a;
static_cast<void *>(a); <-- This will fail.
To remedy the above, you would might try this:
const int *a;
const_cast<void *>(a); <-- But this will still fail.
The real solution is this:
const int *a;
static_cast<void *>(const_cast<int *>(a));
It is not recommended to use const_cast on the this variable within a member
function of a class that is declared const. Instead you should use the mutable
keyword on the variable in the class's definition.
dynamic_cast
------------
This cast can only be used on pointers or references to classes. It can cast a
derived class to a base class, a derived class to another derived class
(provided that both are children of the same base class), or a base class to a
derived class. You can also use this to cast a class to void *. This cast is
done at run-time as opposed to the other casts, and relies on C++'s RTTI to be
enabled. It is meant to be used on polymorphic classes, so use static_cast on
non-polymorphic classes.
derived-to-base conversions are actually done statically, so you use either
dynamic_cast or static_cast on them, regardless of if the classes are
polymorphic or not.
derived-to-derived or base-to-derived conversions, however, rely on run-time
type information, and this cast is used on those classes that are polymorphic.
This is safer than C-style casting in that an invalid pointer conversion will
return a NULL pointer, and an invalid reference conversion will throw a
Bad_cast exception.
Note that in Anope we prefer if Anope::debug_cast is used.
This uses dynamic_cast (and checks for a NULL pointer return) on debug builds
and static_cast on release builds, to speed up the program because of dynamic_cast's
reliance on RTTI.
reinterpret_cast
----------------
This cast I would use only as a last resort if static_cast isn't allowed on a
conversion. It allows for conversions between two unrelated types, such as
going from char * to int *. It can also be used to convert a pointer to an
integral type and vica versa. The sites I've read mention how the result is
non-portable, which I assume means the resulting object code is non-portable,
so since the code is compiled on many systems anyways, I don't see this as
being a huge issue. It is recommended to only use this if necessary, though.
Links
=====
The following links are web sites I've used to get this information, and might
describe some of the above a bit better than I have. :P
https://www.acm.org/crossroads/xrds3-1/ovp3-1.html
http://www.cplusplus.com/doc/tutorial/typecasting.html
http://www.codeguru.com/forum/showthread.php?t=312456
https://web.archive.org/web/20170810222238/http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
https://www.microsoft.com/en-us/download/details.aspx?id=55984
https://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
https://web.archive.org/web/20160510114447/http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
-- CyberBotX, Nov 23, 2008
+1 -1
View File
@@ -7,7 +7,7 @@ if(WIN32)
# Add README.txt to list of files for CPack to ignore
add_to_cpack_ignored_files("README.txt$" TRUE)
endif()
set(DOCS Changes Changes.conf DEFCON FAQ INSTALL LANGUAGE MODULES NEWS ${CMAKE_CURRENT_BINARY_DIR}/README.txt WIN32.txt)
set(DOCS Changes Changes.conf DEFCON FAQ INSTALL LANGUAGE MODULES ${CMAKE_CURRENT_BINARY_DIR}/README.txt WIN32.txt)
install(FILES ${DOCS}
DESTINATION ${DOC_DIR}
)
-239
View File
@@ -1,239 +0,0 @@
Originally pulled from: https://wiki.inspircd.org/Coding_Guidelines
---
InspIRCd Coding Guidelines
The following are a set of guidelines for writing patches to InspIRCd, or for
creating modules for distribution with the official package. These guidelines
were written a time after InspIRCd development started, and so not all code
yet follows these. This will be rectified with time.
1. Comments
* Multi Line
Multiple line comments should follow the C-style comment, for example:
/*
* This is a multiple line comment, huzzah..
*/
* Single Line
Single line comments should also be in the C style, for example:
/* This is a boring one-line comment */
* Doxygen commenting
If you wish your comment to show in doxygen, the comment should be directly
above the item you are documenting (a class, function, enum, etc) and the
first line should be "/**". For example:
/** This is a doxygen multiline comment.
* Description of thingymebob here.
*/
The first line after the "**" is used as the short description of the item
(up to the full stop) and everything afterwards as the detailed description.
2. Indentation
Tabs. Tabs. ONLY TABS. Use a single tab for each level of indentation,
for example:
int main()
{
<tab>if (condition)
<tab>{
<tab><tab>code
<tab>}
}
3. Separation
Always put a space in between a keyword like if/while and the condition,
for example:
if (foo == bar)
NOT
if(foo == bar)
4. Braces
Always put braces opening and closing blocks on separate lines, see the
indentation example. For example, place braces like this:
if (apples == "green")
{
cout << "Apples are green" << endl;
}
and not:
if (apples == "green") {
cout << "Apples are green" << endl;
}
The one exception to this is if you are declaring a class method which is
only one line long, in that case the following is acceptable in most cases:
class foo : public bar
{
foo() { }
getrandomfoo() { return rand(); }
};
5. Templates
Where possible, use templates rather than #defines. Avoid use of RTTI.
6. Structs
Structs should be declared in the following fashion:
struct BodyPartBasket
{
int arms;
int legs;
int scrotalsacs;
};
and not like this:
typedef struct
{
int arms;
int legs;
int scrotalsacs;
} BodyPartBasket;
The second way is not required in C++ to be able to do this:
BodyPartBasket mybasket;
Plus, placing the name at the bottom of the declaration makes readability
more difficult (as you have to scroll down to the bottom of the struct to
find its name). (where possible, call them classes rather than structs.)
7. Variable naming
Class and struct names should be in camel case with a leading capital letter,
for example "MyBagOfBones" and not "my_bag_of_bones" or "mybagofbones".
Variable names can be in either camel case with a leading capital letter or
alternatively all lower case, so long as the same naming convention is
adhered to throughout the class. No classes or variables should be named in
capitals unless this makes sense for the name (for example "class DNS").
Constants and enum values should always be completely in CAPITALS and
underscores may be used, for example:
enum DecayState
{
DECAYED_MOULDY = 0,
DECAYED_SMELLY = 1,
DECAYED_MAGGOTS = 2
};
All value names in an enum should be started with the same text which should
be related in some way to the enum's use. For example "DNS_CNAME, DNS_A,
DNS_AAAA".
8. Use of references
Wherever possible, when dealing with any complex class, pass a const reference
rather than a copy of the class. For example:
MyThingy::MyThingy(const std::string &thingyvalue)
{
}
Of course, if you intended to change the string you can just omit the 'const'.
9. Use of char pointers
Whenever you use char pointers (char*, char**) try to use const equivalents.
This is much safer and avoids ugly and dangerous casts. For example:
MyThingy::Thingify(const char* const* wotsits)
{
}
If it is possible without performance loss, consider avoiding char pointers
altogether and using std::string instead.
10. Use of STL
For more information on use of STL in InspIRCd, please see the separate
STL FAQ.
11. Making copies of data
Never ever make a copy of a piece of data unless it is absolutely necessary.
For example, don't use strlcpy() to make a copy of the const char* string
returned by std::string::c_str(), if the change can be done to the std::string
itself. The same goes for unnecessary variable assignments, especially those
which assign large classes.
12. namespace std
Avoid the following:
using namespace std;
It might take a bit more typing, but things work better if you don't set
(then later assume) the namespace -- specify it explicitly when you want to
use it.
13. Linefeeds
Unix linefeeds only please. We do not like to see our screens covered in ^M.
14. Portability
Always make sure your code is portable to all supported operating systems,
remember of course that as of 1.1.8 this includes windows. Don't write code
that only works on windows, or only works on Linux. Test your code on all
platforms or ask for help from other developers who have the platforms you
want to test on.
* new() and delete(), malloc() and free()
Apart from the fact that using malloc() and free() is bad practice in C++
code, you must never use malloc() or free() in InspIRCd, within its modules
or within the core. This is because if you use malloc() or free() in windows,
the memory is claimed from the program's local heap.
In windows, each shared object (module, dll) has its own heap, which is
protected from other dlls and executables. To get around this issue and
allow more posix-like memory access from other dlls in the program (other
modules), InspIRCd overrides the operators new and delete to ensure that
memory allocated by them comes from the windows global heap. If you use
malloc() and free() for this, the ircd will segfault when another module
tries to access the memory you have allocated!
* strdup()
As with malloc(), above, strdup() should be avoided. Where strdup() is
absolutely necessary, use strnewdup() which is our strdup() implementation
that calls operator new instead of using malloc().
char arrays allocated by strnewdup() should be deleted with operator delete[].
* CoreExport and DllImport
Prefix all types you want to import or export to other modules with CoreExport
and DllImport macros. These do nothing in POSIX operating systems, however
in windows these are expanded to the instructions __declspec(dllimport) and
__declspec(dllexport) respectively depending on where they are used and how.
15. External Dependencies
If a module is compiled as standard, or the code is part of the core, you must
not use any dependencies that are not available as standard on all supported
operating systems beyond libstdc++, libc, and whatever else is currently
required to build the core. Modules which use nonstandard dependencies belong
in the modules/extra directory.
16. Profiling and Performance
It is one thing to assume that code performs bad, it is another thing to prove
that it actually is. A lot of experienced programmers talk about 'premature
optimisation', and here is what it means: if you have a piece of code called
once on startup that takes 10 seconds instead of one second to run, and a
piece of code that takes 0.05 seconds to run when it should take 0.01, and
it is called once per second, the second piece of code is the priority.
In other words, make sure that what you think is slow, and a performance
problem in Insp actually is.
To do this, use the callgrind tool from Valgrind (valgrind --tool=cachegrind
bin/inspircd -nofork -debug), and kcachegrind (or similar) to view the output
files.
+10
View File
@@ -1,3 +1,13 @@
Anope Version 2.1.2
-------------------
Bumped the minimum OpenSSL version to 1.1.0.
Bumped the minumum GnuTLS version to 3.0.0.
Disabled SSLv3 support in the m_ssl_openssl module.
Modernized mutex and thread code to use Modern C++.
Normalised the program exit codes.
Updated the Dutch translation.
Updated the French translation.
Anope Version 2.1.1
-------------------
Added the UNBANME privilege to allow users to unban themselves.
+9 -1
View File
@@ -1,3 +1,11 @@
Anope Version 2.1.2
-------------------
Added module:tlsv10 to m_ssl_openssl for configuring whether TLSv1.0 is usable (defaults to no).
Added module:tlsv11 to m_ssl_openssl for configuring whether TLSv1.0 is usable (defaults to yes).
Added module:tlsv12 to m_ssl_openssl for configuring whether TLSv1.0 is usable (defaults to yes)
Removed module:sslv3 from m_ssl_openssl.
Removed the m_ prefix from the names of the chanstats, dns, dnsbl, helpchan, httpd, ldap, ldap_oper, mysql, proxyscan, redis, regex_pcre2, regex_posix, regex_stdlib, regex_tre, rewrite, sasl, sql_log, sql_oper, sqlite, ssl_gnutls, ssl_openssl, xmlrpc, and xmlrpc_main modules.
Anope Version 2.1.1
-------------------
Added the m_regex_stdlib module.
@@ -5,7 +13,7 @@ Removed the m_regex_pcre module (use m_regex_pcre2 instead).
Anope Version 2.1.0
-------------------
Added nickserv:minpasslen for configuring the minimum password length.
Added nickserv:minpasslen for configuring the minimum password length (defaults to 8).
Removed nickserv:strictpasswords as it is obsolete now nickserv:minpasslen exists.
Removed the inspircd12 and inspircd20 modules (use inspircd instead).
Removed the ns_getpass module (no supported encryption modules).
+1 -1
View File
@@ -10,7 +10,7 @@ Anope DefCon
1) Introduction
Anope 1.6 onwards supports a unique protection mechanism based on the
Anope supports a unique protection mechanism based on the
military "Defense Readiness Condition" (DefCon) system. It is based on
5 levels of defense readiness defined as:
-31
View File
@@ -1,31 +0,0 @@
Anope Internal Events
---------------------
1) Intro
2) Using Events
1) Introduction to Internal Events
Internal Events are setup to give module developers more information
about what the core is doing at different times. This information can
be as complex as data we are feeding to the uplink, to simple triggered
events such as the databases being saved.
Additionally there is a module included with the core
which can provide some clue as to how to use the code in your modules.
The rest of this document assumes that you are used to writing modules.
2) Using Events
Each Event in Anope calls a function.
You must override these functions in your main modules class.
The full list of functions and parameters are in modules.h. In this
case, you would be overriding OnJoinChannel() and OnPartChannel() like so:
void OnJoinChannel(User *u, Channel *c) override { }
void OnPartChannel(User *u, Channel *c) override { }
Some of these event overrides can be used to prevent or allow things to
happen that would normally not be allowed or denied. You can also use
ModuleManager (not explained here) to set control which order the modules
are queried (when multiple modules hook to the same event).
+1 -1
View File
@@ -37,7 +37,7 @@ Note: You should also read the README and FAQ files!
Next, unpack the package in your home directory, and go into the created
directory.
If there are any extra modules you want to enable, such as m_mysql, run
If there are any extra modules you want to enable, such as mysql, run
the 'extras' script to enable them. If you do not know you can come back
later and enable them.
+1 -1
View File
@@ -37,7 +37,7 @@ Note : Vous devrez également lire les fichiers README et FAQ !
Ensuite, décompressez le package dans votre répertoire home, et allez
dans le répértoire qui vient d'être créé.
Si il y a des modules facultatifs que vous voulez activer comme m_mysql,
Si il y a des modules facultatifs que vous voulez activer comme mysql,
exécuter le script 'extras' pour les activer. Si vous ne savez pas, vous
pouvez les activer plus tard.
+1 -1
View File
@@ -12,7 +12,7 @@ Anope Modules
1) Introduction
Anope 1.6 onwards supports external modules. External modules are pieces
Anope supports external modules. External modules are pieces
of code that can be attached to a running Anope process dynamically. These
modules can serve several purposes, and perform all kind of operations to
enhance your network.
-6
View File
@@ -1,6 +0,0 @@
Highlighted News in Anope 1.9
=============================
* Added in live updating SQL and the ability to execute commands through SQL
* Re-designed configuration file
* Code refresh / rewrite into C++
+1 -1
View File
@@ -1,7 +1,7 @@
Anope -- a set of IRC services for IRC networks
-----------------------------------------------
Anope is 2003-2023 Anope Team <team@anope.org>.
Anope is 2003-2024 Anope Team <team@anope.org>.
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
+1 -1
View File
@@ -1,4 +1,4 @@
Starting in Anope 1.9.9, Anope has Redis database support (https://redis.io/).
Anope has Redis database support (https://redis.io/).
This document explains the data structure used by Anope, and explains how
keyspace notification works.
+1 -1
View File
@@ -70,7 +70,7 @@ Anope for Windows
If you cannot find whats causing the error, please visit our forums or
our IRC Support channel for assistance.
Some Anope modules require third party libraries, such as m_mysql and
Some Anope modules require third party libraries, such as mysql and
the SSL modules. If these libraries are installed in nonstandard
locations, cmake will probably not find them and should be told where
they are by passing their location to Config.
+2 -2
View File
@@ -1,7 +1,7 @@
Starting with Anope 1.9.4 XMLRPC using PHP's xmlrpc_encode_request and xmlrpc_decode functions is supported.
XMLRPC using PHP's xmlrpc_encode_request and xmlrpc_decode functions is supported.
This allows external applications, such as websites, to execute remote procedure calls to Anope in real time.
Currently there are 5 supported XMLRPC calls, provided by m_xmlrpc_main:
Currently there are 5 supported XMLRPC calls, provided by xmlrpc_main:
checkAuthentication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password
is correct for the account name, useful for making login pages on websites.
+1 -1
View File
@@ -3,7 +3,7 @@
/**
* XMLRPC Functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*/
+8 -6
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -27,7 +27,7 @@ enum
* backing each ChanAccess determines whether that ChanAccess has a given
* privilege.
*/
struct CoreExport Privilege
struct CoreExport Privilege final
{
Anope::string name;
Anope::string desc;
@@ -38,7 +38,7 @@ struct CoreExport Privilege
bool operator==(const Privilege &other) const;
};
class CoreExport PrivilegeManager
class CoreExport PrivilegeManager final
{
static std::vector<Privilege> Privileges;
public:
@@ -52,7 +52,8 @@ public:
/* A provider of access. Only used for creating ChanAccesses, as
* they contain pure virtual functions.
*/
class CoreExport AccessProvider : public Service
class CoreExport AccessProvider
: public Service
{
public:
AccessProvider(Module *owner, const Anope::string &name);
@@ -70,7 +71,8 @@ public:
};
/* Represents one entry of an access list on a channel. */
class CoreExport ChanAccess : public Serializable
class CoreExport ChanAccess
: public Serializable
{
Anope::string mask;
/* account this access entry is for, if any */
@@ -133,7 +135,7 @@ public:
/* A group of access entries. This is used commonly, for example with ChannelInfo::AccessFor,
* to show what access a user has on a channel because users can match multiple access entries.
*/
class CoreExport AccessGroup
class CoreExport AccessGroup final
{
public:
/* access entries + paths */
+7 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -28,7 +28,9 @@ extern CoreExport nickcoreid_map NickCoreIdList;
/* A registered nickname.
* It matters that Base is here before Extensible (it is inherited by Serializable)
*/
class CoreExport NickAlias : public Serializable, public Extensible
class CoreExport NickAlias final
: public Serializable
, public Extensible
{
Anope::string vhost_ident, vhost_host, vhost_creator;
time_t vhost_created;
@@ -104,7 +106,9 @@ public:
* account's display.
* It matters that Base is here before Extensible (it is inherited by Serializable)
*/
class CoreExport NickCore : public Serializable, public Extensible
class CoreExport NickCore final
: public Serializable
, public Extensible
{
/* Channels which reference this core in some way (this is on their access list, akick list, is founder, successor, etc) */
Serialize::Checker<std::map<ChannelInfo *, int> > chanaccess;
+29 -15
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -22,7 +22,7 @@ namespace Anope
* allow us to only require one type of string everywhere that can be converted
* at any time to a specific type of string.
*/
class CoreExport string
class CoreExport string final
{
private:
/**
@@ -210,6 +210,10 @@ namespace Anope
inline size_type find_last_not_of(const string &_str, size_type pos = npos) const { return this->_string.find_last_not_of(_str._string, pos); }
inline size_type find_last_not_of_ci(const string &_str, size_type pos = npos) const { return ci::string(this->_string.c_str()).find_last_not_of(ci::string(_str._string.c_str()), pos); }
inline int compare(size_t pos, size_t len, const string& str) const { return ci::string(this->_string.c_str()).compare(pos, len, ci::string(str.c_str())); }
inline int compare(size_t pos, size_t len, const string& str, size_t subpos, size_type sublen = npos) const { return ci::string(this->_string.c_str()).compare(pos, len, ci::string(str.c_str()), subpos, sublen); }
inline int compare(size_t pos, size_t len, const char* s, size_type n = npos) const { return ci::string(this->_string.c_str()).compare(pos, len, s, n); }
/**
* Determine if string consists of only numbers.
*/
@@ -308,7 +312,7 @@ namespace Anope
inline const string operator+(const char *_str, const string &str) { string tmp(_str); tmp += str; return tmp; }
inline const string operator+(const std::string &_str, const string &str) { string tmp(_str); tmp += str; return tmp; }
struct hash_ci
struct hash_ci final
{
inline size_t operator()(const string &s) const
{
@@ -316,7 +320,7 @@ namespace Anope
}
};
struct hash_cs
struct hash_cs final
{
inline size_t operator()(const string &s) const
{
@@ -324,7 +328,7 @@ namespace Anope
}
};
struct compare
struct compare final
{
inline bool operator()(const string &s1, const string &s2) const
{
@@ -332,9 +336,14 @@ namespace Anope
}
};
template<typename T> class map : public std::map<string, T, ci::less> { };
template<typename T> class multimap : public std::multimap<string, T, ci::less> { };
template<typename T> class hash_map : public std::unordered_map<string, T, hash_ci, compare> { };
template<typename T>
using map = std::map<string, T, ci::less>;
template<typename T>
using multimap = std::multimap<string, T, ci::less>;
template<typename T>
using hash_map = std::unordered_map<string, T, hash_ci, compare>;
#ifndef REPRODUCIBLE_BUILD
static const char *const compiled = __TIME__ " " __DATE__;
@@ -416,7 +425,7 @@ namespace Anope
* initializing language support, loading modules, and loading databases.
* @throws CoreException if something bad went wrong
*/
extern void Init(int ac, char **av);
extern bool Init(int ac, char **av);
/** Calls the save database event
*/
@@ -476,7 +485,7 @@ namespace Anope
* @param ... any number of parameters
* @return a Anope::string
*/
extern CoreExport string printf(const char *fmt, ...);
extern CoreExport string printf(const char *fmt, ...) ATTR_FORMAT(1, 2);
/** Return the last error code
* @return The error code
@@ -624,7 +633,8 @@ public:
/** A derived form of sepstream, which separates on commas
*/
class commasepstream : public sepstream
class commasepstream final
: public sepstream
{
public:
/** Initialize with comma separator
@@ -634,7 +644,8 @@ public:
/** A derived form of sepstream, which separates on spaces
*/
class spacesepstream : public sepstream
class spacesepstream final
: public sepstream
{
public:
/** Initialize with space separator
@@ -648,7 +659,8 @@ public:
* be loaded. If this happens, the error message returned by ModuleException::GetReason will be displayed to the user
* attempting to load the module, or dumped to the console if the ircd is currently loading for the first time.
*/
class CoreException : public std::exception
class CoreExport CoreException
: public std::exception
{
protected:
/** Holds the error message to be displayed
@@ -687,7 +699,8 @@ public:
}
};
class ModuleException : public CoreException
class CoreExport ModuleException
: public CoreException
{
public:
/** Default constructor, just uses the error message 'Module threw an exception'.
@@ -704,7 +717,8 @@ public:
virtual ~ModuleException() noexcept = default;
};
class ConvertException : public CoreException
class CoreExport ConvertException final
: public CoreException
{
public:
ConvertException(const Anope::string &reason = "") : CoreException(reason) { }
+3 -2
View File
@@ -1,7 +1,7 @@
/*
*
* (C) 2008-2011 Adam <Adam@anope.org>
* (C) 2008-2023 Anope Team <team@anope.org>
* (C) 2008-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -43,7 +43,8 @@ public:
* no longer be valid once the object it refers is destructed.
*/
template<typename T>
class Reference : public ReferenceBase
class Reference
: public ReferenceBase
{
protected:
T *ref = nullptr;
+4 -2
View File
@@ -1,7 +1,7 @@
/*
*
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* (C) 2008-2023 Anope Team <team@anope.org>
* (C) 2008-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -19,7 +19,9 @@ typedef Anope::map<BotInfo *> botinfo_map;
extern CoreExport Serialize::Checker<botinfo_map> BotListByNick, BotListByUID;
/* A service bot (NickServ, ChanServ, a BotServ bot, etc). */
class CoreExport BotInfo : public User, public Serializable
class CoreExport BotInfo final
: public User
, public Serializable
{
/* Channels this bot is assigned to */
Serialize::Checker<std::set<ChannelInfo *> > channels;
+10 -5
View File
@@ -1,6 +1,6 @@
/* Channel support
*
* (C) 2008-2023 Anope Team
* (C) 2008-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -18,7 +18,8 @@ typedef Anope::hash_map<Channel *> channel_map;
extern CoreExport channel_map ChannelList;
/* A user container, there is one of these per user per channel. */
struct ChanUserContainer : public Extensible
struct ChanUserContainer final
: public Extensible
{
User *user;
Channel *chan;
@@ -28,7 +29,9 @@ struct ChanUserContainer : public Extensible
ChanUserContainer(User *u, Channel *c) : user(u), chan(c) { }
};
class CoreExport Channel : public Base, public Extensible
class CoreExport Channel final
: public Base
, public Extensible
{
static std::vector<Channel *> deleting;
@@ -204,7 +207,8 @@ public:
* @param enforce_mlock Should mlock be enforced on this mode change
* @param cmodes The modes to set
*/
void SetModes(BotInfo *bi, bool enforce_mlock, const char *cmodes, ...);
void SetModes(BotInfo *bi, bool enforce_mlock, const char *cmodes, ...) ATTR_FORMAT(4, 5);
void SetModes(BotInfo *bi, bool enforce_mlock, const Anope::string &cmodes);
/** Set a string of modes internally on a channel
* @param source The setter
@@ -233,7 +237,8 @@ public:
* @param reason The reason for the kick
* @return true if the kick was successful, false if a module blocked the kick
*/
bool Kick(BotInfo *bi, User *u, const char *reason = NULL, ...);
bool Kick(BotInfo *bi, User *u, const char *reason = NULL, ...) ATTR_FORMAT(4, 5);
bool Kick(BotInfo *bi, User *u, const Anope::string &reason);
/** Get all modes set on this channel, excluding status modes.
* @return a map of modes and their optional parameters.
+7 -6
View File
@@ -1,6 +1,6 @@
/* Declarations for command data.
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -15,13 +15,13 @@
#include "anope.h"
#include "channels.h"
struct CommandGroup
struct CommandGroup final
{
Anope::string name, description;
};
/* Used in BotInfo::commands */
struct CommandInfo
struct CommandInfo final
{
typedef Anope::map<CommandInfo> map;
@@ -47,7 +47,7 @@ struct CoreExport CommandReply
};
/* The source for a command */
class CoreExport CommandSource
class CoreExport CommandSource final
{
/* The nick executing the command */
Anope::string nick;
@@ -77,7 +77,7 @@ public:
AccessGroup AccessFor(ChannelInfo *ci);
bool IsFounder(ChannelInfo *ci);
void Reply(const char *message, ...);
void Reply(const char *message, ...) ATTR_FORMAT(2, 3);
void Reply(const Anope::string &message);
bool HasCommand(const Anope::string &cmd);
@@ -88,7 +88,8 @@ public:
/** Every services command is a class, inheriting from Command.
*/
class CoreExport Command : public Service
class CoreExport Command
: public Service
{
Anope::string desc;
std::vector<Anope::string> syntax;
+7 -5
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -78,7 +78,7 @@ namespace Configuration
/** Represents a configuration file
*/
class File
class File final
{
Anope::string name;
bool executable;
@@ -98,7 +98,8 @@ namespace Configuration
struct Uplink;
struct CoreExport Conf : Block
struct CoreExport Conf final
: Block
{
/* options:readtimeout */
time_t ReadTimeout;
@@ -152,7 +153,7 @@ namespace Configuration
const Block *GetCommand(CommandSource &);
};
struct Uplink
struct Uplink final
{
Anope::string host;
unsigned port;
@@ -171,7 +172,8 @@ namespace Configuration
* be loaded. If this happens, the error message returned by ModuleException::GetReason will be displayed to the user
* attempting to load the module, or dumped to the console if the ircd is currently loading for the first time.
*/
class ConfigException : public CoreException
class CoreExport ConfigException final
: public CoreException
{
public:
/** Default constructor, just uses the error message 'Config threw an exception'.
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+13 -7
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -15,7 +15,8 @@
class Extensible;
class CoreExport ExtensibleBase : public Service
class CoreExport ExtensibleBase
: public Service
{
protected:
std::map<Extensible *, void *> items;
@@ -53,7 +54,8 @@ public:
};
template<typename T>
class BaseExtensibleItem : public ExtensibleBase
class BaseExtensibleItem
: public ExtensibleBase
{
protected:
virtual T *Create(Extensible *) = 0;
@@ -124,7 +126,8 @@ public:
};
template<typename T>
class ExtensibleItem : public BaseExtensibleItem<T>
class ExtensibleItem
: public BaseExtensibleItem<T>
{
protected:
T* Create(Extensible *obj) override
@@ -136,7 +139,8 @@ public:
};
template<typename T>
class PrimitiveExtensibleItem : public BaseExtensibleItem<T>
class PrimitiveExtensibleItem
: public BaseExtensibleItem<T>
{
protected:
T* Create(Extensible *obj) override
@@ -160,7 +164,8 @@ public:
};
template<typename T>
class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
class SerializableExtensibleItem
: public PrimitiveExtensibleItem<T>
{
public:
SerializableExtensibleItem(Module *m, const Anope::string &n) : PrimitiveExtensibleItem<T>(m, n) { }
@@ -204,7 +209,8 @@ public:
};
template<typename T>
struct ExtensibleRef : ServiceReference<BaseExtensibleItem<T> >
struct ExtensibleRef final
: ServiceReference<BaseExtensibleItem<T> >
{
ExtensibleRef(const Anope::string &n) : ServiceReference<BaseExtensibleItem<T> >("Extensible", n) { }
};
+8 -5
View File
@@ -1,7 +1,7 @@
/*
*
* (C) 2002-2011 InspIRCd Development Team
* (C) 2009-2023 Anope Team <team@anope.org>
* (C) 2009-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -27,7 +27,8 @@ namespace Anope
/* ASCII case insensitive ctype. */
template<typename char_type>
class ascii_ctype : public std::ctype<char_type>
class ascii_ctype
: public std::ctype<char_type>
{
public:
char_type do_toupper(char_type c) const override
@@ -49,7 +50,8 @@ namespace Anope
/* rfc1459 case insensitive ctype, { = [, } = ], and | = \ */
template<typename char_type>
class rfc1459_ctype : public ascii_ctype<char_type>
class rfc1459_ctype final
: public ascii_ctype<char_type>
{
public:
char_type do_toupper(char_type c) const override
@@ -78,7 +80,8 @@ namespace ci
* This class is used to implement ci::string, a case-insensitive, ASCII-
* comparing string class.
*/
struct CoreExport ci_char_traits : std::char_traits<char>
struct CoreExport ci_char_traits final
: std::char_traits<char>
{
/** Check if two chars match.
* @param c1st First character
@@ -123,7 +126,7 @@ namespace ci
*/
typedef std::basic_string<char, ci_char_traits, std::allocator<char> > string;
struct CoreExport less
struct CoreExport less final
{
/** Compare two Anope::strings as ci::strings and find which one is less
* @param s1 The first string
+4 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2008-2023 Anope Team
* (C) 2008-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -75,7 +75,7 @@ namespace Language
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should not be\n" \
"something that could be easily guessed (e.g. your real name or your nick) and\n" \
"cannot contain the space or tab characters.\n")
#define PASSWORD_TOO_SHORT _("Your password is too short. It must must be longer than %u characters.")
#define PASSWORD_TOO_SHORT _("Your password is too short. It must be longer than %u characters.")
#define PASSWORD_TOO_LONG _("Your password is too long. It must be shorter than %u characters.")
#define NICK_NOT_REGISTERED _("Your nick isn't registered.")
#define NICK_X_NOT_REGISTERED _("Nick \002%s\002 isn't registered.")
@@ -111,9 +111,9 @@ namespace Language
#define CHAN_INFO_HEADER _("Information for channel \002%s\002:")
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except has been removed.")
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s.\n" \
"Type \002%s%s READ %s %d\002 to read it.")
"Type \002%s%s READ %s %zu\002 to read it.")
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s.\n" \
"Type \002%s%s READ %d\002 to read it.")
"Type \002%s%s READ %zu\002 to read it.")
#define MEMO_HAVE_NO_MEMOS _("You have no memos.")
#define MEMO_X_HAS_NO_MEMOS _("%s has no memos.")
#define MEMO_SEND_DISABLED _("Sorry, memo sending is temporarily disabled.")
+3 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -60,7 +60,7 @@ public:
/** This class handles formatting LIST/VIEW replies.
*/
class CoreExport ListFormatter
class CoreExport ListFormatter final
{
public:
typedef std::map<Anope::string, Anope::string> ListEntry;
@@ -78,7 +78,7 @@ public:
/** This class handles formatting INFO replies
*/
class CoreExport InfoFormatter
class CoreExport InfoFormatter final
{
NickCore *nc;
std::vector<std::pair<Anope::string, Anope::string> > replies;
+4 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -37,7 +37,7 @@ enum LogType
LOG_DEBUG_4
};
struct LogFile
struct LogFile final
{
Anope::string filename;
std::ofstream stream;
@@ -48,7 +48,7 @@ struct LogFile
};
/* Represents a single log message */
class CoreExport Log
class CoreExport Log final
{
public:
/* Bot that should log this message */
@@ -109,7 +109,7 @@ public:
};
/* Configured in the configuration file, actually does the message logging */
class CoreExport LogInfo
class CoreExport LogInfo final
{
public:
BotInfo *bot = nullptr;
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -22,7 +22,8 @@ namespace Mail
extern CoreExport bool Validate(const Anope::string &email);
/* A email message being sent */
class Message : public Thread
class Message final
: public Thread
{
private:
Anope::string sendmail_path;
+4 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -14,7 +14,8 @@
#include "anope.h"
#include "serialize.h"
class CoreExport Memo : public Serializable
class CoreExport Memo final
: public Serializable
{
public:
MemoInfo *mi;
@@ -36,7 +37,7 @@ public:
/* Memo info structures. Since both nicknames and channels can have memos,
* we encapsulate memo data in a MemoInfo to make it easier to handle.
*/
struct CoreExport MemoInfo
struct CoreExport MemoInfo final
{
int16_t memomax = 0;
Serialize::Checker<std::vector<Memo *> > memos;
+41 -21
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -21,35 +21,40 @@
namespace Message
{
struct CoreExport Away : IRCDMessage
struct CoreExport Away
: IRCDMessage
{
Away(Module *creator, const Anope::string &mname = "AWAY") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Capab : IRCDMessage
struct CoreExport Capab
: IRCDMessage
{
Capab(Module *creator, const Anope::string &mname = "CAPAB") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Error : IRCDMessage
struct CoreExport Error
: IRCDMessage
{
Error(Module *creator, const Anope::string &mname = "ERROR") : IRCDMessage(creator, mname, 1) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Invite : IRCDMessage
struct CoreExport Invite
: IRCDMessage
{
Invite(Module *creator, const Anope::string &mname = "INVITE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Join : IRCDMessage
struct CoreExport Join
: IRCDMessage
{
Join(Module *creator, const Anope::string &mname = "JOIN") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
@@ -67,105 +72,120 @@ namespace Message
static void SJoin(MessageSource &source, const Anope::string &chan, time_t ts, const Anope::string &modes, const std::list<SJoinUser> &users);
};
struct CoreExport Kick : IRCDMessage
struct CoreExport Kick
: IRCDMessage
{
Kick(Module *creator, const Anope::string &mname = "KICK") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Kill : IRCDMessage
struct CoreExport Kill
: IRCDMessage
{
Kill(Module *creator, const Anope::string &mname = "KILL") : IRCDMessage(creator, mname, 2) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Mode : IRCDMessage
struct CoreExport Mode
: IRCDMessage
{
Mode(Module *creator, const Anope::string &mname = "MODE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport MOTD : IRCDMessage
struct CoreExport MOTD
: IRCDMessage
{
MOTD(Module *creator, const Anope::string &mname = "MOTD") : IRCDMessage(creator, mname, 1) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Notice : IRCDMessage
struct CoreExport Notice
: IRCDMessage
{
Notice(Module *creator, const Anope::string &mname = "NOTICE") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Part : IRCDMessage
struct CoreExport Part
: IRCDMessage
{
Part(Module *creator, const Anope::string &mname = "PART") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Ping : IRCDMessage
struct CoreExport Ping
: IRCDMessage
{
Ping(Module *creator, const Anope::string &mname = "PING") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Privmsg : IRCDMessage
struct CoreExport Privmsg
: IRCDMessage
{
Privmsg(Module *creator, const Anope::string &mname = "PRIVMSG") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Quit : IRCDMessage
struct CoreExport Quit
: IRCDMessage
{
Quit(Module *creator, const Anope::string &mname = "QUIT") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport SQuit : IRCDMessage
struct CoreExport SQuit
: IRCDMessage
{
SQuit(Module *creator, const Anope::string &mname = "SQUIT") : IRCDMessage(creator, mname, 2) { }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Stats : IRCDMessage
struct CoreExport Stats
: IRCDMessage
{
Stats(Module *creator, const Anope::string &mname = "STATS") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Time : IRCDMessage
struct CoreExport Time
: IRCDMessage
{
Time(Module *creator, const Anope::string &mname = "TIME") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Topic : IRCDMessage
struct CoreExport Topic
: IRCDMessage
{
Topic(Module *creator, const Anope::string &mname = "TOPIC") : IRCDMessage(creator, mname, 2) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Version : IRCDMessage
struct CoreExport Version
: IRCDMessage
{
Version(Module *creator, const Anope::string &mname = "VERSION") : IRCDMessage(creator, mname, 0) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override;
};
struct CoreExport Whois : IRCDMessage
struct CoreExport Whois
: IRCDMessage
{
Whois(Module *creator, const Anope::string &mname = "WHOIS") : IRCDMessage(creator, mname, 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
+30 -17
View File
@@ -1,7 +1,7 @@
/* Mode support
*
* (C) 2008-2011 Adam <Adam@anope.org>
* (C) 2008-2023 Anope Team <team@anope.org>
* (C) 2008-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -35,7 +35,8 @@ enum ModeClass
/** This class is the basis of all modes in Anope
*/
class CoreExport Mode : public Base
class CoreExport Mode
: public Base
{
public:
/* Mode name */
@@ -64,7 +65,8 @@ public:
/** This class is a user mode, all user modes use this/inherit from this
*/
class CoreExport UserMode : public Mode
class CoreExport UserMode
: public Mode
{
public:
/** constructor
@@ -74,7 +76,8 @@ public:
UserMode(const Anope::string &name, char mc);
};
class CoreExport UserModeParam : public UserMode
class CoreExport UserModeParam
: public UserMode
{
public:
/** constructor
@@ -92,7 +95,8 @@ public:
/** This class is a channel mode, all channel modes use this/inherit from this
*/
class CoreExport ChannelMode : public Mode
class CoreExport ChannelMode
: public Mode
{
public:
/* channel modes that can possibly unwrap this mode */
@@ -123,7 +127,8 @@ public:
/** This is a mode for lists, eg b/e/I. These modes should inherit from this
*/
class CoreExport ChannelModeList : public ChannelMode
class CoreExport ChannelModeList
: public ChannelMode
{
public:
/** constructor
@@ -161,7 +166,8 @@ public:
/** This is a mode with a parameter, eg +k/l. These modes should use/inherit from this
*/
class CoreExport ChannelModeParam : public ChannelMode
class CoreExport ChannelModeParam
: public ChannelMode
{
public:
/** constructor
@@ -183,7 +189,8 @@ public:
/** This is a mode that is a channel status, eg +v/h/o/a/q.
*/
class CoreExport ChannelModeStatus : public ChannelMode
class CoreExport ChannelModeStatus
: public ChannelMode
{
public:
/* The symbol, eg @ % + */
@@ -206,7 +213,8 @@ public:
* but we still have a representation for it.
*/
template<typename T>
class CoreExport ChannelModeVirtual : public T
class CoreExport ChannelModeVirtual
: public T
{
Anope::string base;
ChannelMode *basech;
@@ -224,7 +232,7 @@ public:
};
/* The status a user has on a channel (+v, +h, +o) etc */
class CoreExport ChannelStatus
class CoreExport ChannelStatus final
{
Anope::string modes;
public:
@@ -239,7 +247,8 @@ public:
Anope::string BuildModePrefixList() const;
};
class CoreExport UserModeOperOnly : public UserMode
class CoreExport UserModeOperOnly
: public UserMode
{
public:
UserModeOperOnly(const Anope::string &mname, char um) : UserMode(mname, um) { }
@@ -247,7 +256,8 @@ public:
bool CanSet(User *u) const override;
};
class CoreExport UserModeNoone : public UserMode
class CoreExport UserModeNoone
: public UserMode
{
public:
UserModeNoone(const Anope::string &mname, char um) : UserMode(mname, um) { }
@@ -257,7 +267,8 @@ public:
/** Channel mode +k (key)
*/
class CoreExport ChannelModeKey : public ChannelModeParam
class CoreExport ChannelModeKey
: public ChannelModeParam
{
public:
ChannelModeKey(char mc) : ChannelModeParam("KEY", mc) { }
@@ -267,7 +278,8 @@ public:
/** This class is used for oper only channel modes
*/
class CoreExport ChannelModeOperOnly : public ChannelMode
class CoreExport ChannelModeOperOnly
: public ChannelMode
{
public:
ChannelModeOperOnly(const Anope::string &mname, char mc) : ChannelMode(mname, mc) { }
@@ -278,7 +290,8 @@ public:
/** This class is used for channel modes only servers may set
*/
class CoreExport ChannelModeNoone : public ChannelMode
class CoreExport ChannelModeNoone
: public ChannelMode
{
public:
ChannelModeNoone(const Anope::string &mname, char mc) : ChannelMode(mname, mc) { }
@@ -292,7 +305,7 @@ public:
* This also contains a mode stacker that will combine multiple modes and set
* them on a channel or user at once
*/
class CoreExport ModeManager
class CoreExport ModeManager final
{
public:
@@ -388,7 +401,7 @@ public:
/** Represents a mask set on a channel (b/e/I)
*/
class CoreExport Entry
class CoreExport Entry final
{
Anope::string name;
Anope::string mask;
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+10 -6
View File
@@ -1,6 +1,6 @@
/* Modular support
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -162,7 +162,7 @@ enum
};
typedef unsigned short ModType;
struct ModuleVersionC
struct ModuleVersionC final
{
int version_major, version_minor, version_patch;
};
@@ -170,7 +170,7 @@ struct ModuleVersionC
/** Returned by Module::GetVersion, used to see what version of Anope
* a module is compiled against.
*/
class ModuleVersion
class ModuleVersion final
{
private:
int version_major;
@@ -196,11 +196,15 @@ public:
int GetPatch() const;
};
class NotImplementedException : public CoreException { };
class CoreExport NotImplementedException final
: public CoreException
{
};
/** Every module in Anope is actually a class.
*/
class CoreExport Module : public Extensible
class CoreExport Module
: public Extensible
{
private:
bool permanent;
@@ -1109,7 +1113,7 @@ enum Implementation
/** Used to manage modules.
*/
class CoreExport ModuleManager
class CoreExport ModuleManager final
{
public:
/** Event handler hooks.
+1 -1
View File
@@ -1,6 +1,6 @@
/* BotServ core functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+1 -1
View File
@@ -1,6 +1,6 @@
/* BotServ core functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -20,7 +20,8 @@ protected:
EntryMsg() = default;
};
struct EntryMessageList : Serialize::Checker<std::vector<EntryMsg *> >
struct EntryMessageList
: Serialize::Checker<std::vector<EntryMsg *> >
{
protected:
EntryMessageList() : Serialize::Checker<std::vector<EntryMsg *> >("EntryMsg") { }
+3 -2
View File
@@ -1,6 +1,6 @@
/* ChanServ core functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -29,7 +29,8 @@ protected:
LogSetting() = default;
};
struct LogSettings : Serialize::Checker<std::vector<LogSetting *> >
struct LogSettings
: Serialize::Checker<std::vector<LogSetting *> >
{
typedef std::vector<LogSetting *>::iterator iterator;
+1 -1
View File
@@ -1,6 +1,6 @@
/* ChanServ core functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+18 -8
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -79,7 +79,7 @@ namespace DNS
Question(const Anope::string &n, QueryType t, unsigned short c = 1) : name(n), type(t), qclass(c) { }
inline bool operator==(const Question & other) const { return name == other.name && type == other.type && qclass == other.qclass; }
struct hash
struct hash final
{
size_t operator()(const Question &q) const
{
@@ -88,7 +88,8 @@ namespace DNS
};
};
struct ResourceRecord : Question
struct ResourceRecord final
: Question
{
unsigned int ttl = 0;
Anope::string rdata;
@@ -113,7 +114,8 @@ namespace DNS
/** DNS manager
*/
class Manager : public Service
class Manager
: public Service
{
public:
Manager(Module *creator) : Service(creator, "DNS::Manager", "dns/manager") { }
@@ -131,7 +133,9 @@ namespace DNS
/** A DNS query.
*/
class Request : public Timer, public Question
class Request
: public Timer
, public Question
{
Manager *manager;
public:
@@ -142,8 +146,14 @@ namespace DNS
/* Creator of this request */
Module *creator;
Request(Manager *mgr, Module *c, const Anope::string &addr, QueryType qt, bool cache = false) : Timer(0), Question(addr, qt), manager(mgr),
use_cache(cache), creator(c) { }
Request(Manager *mgr, Module *c, const Anope::string &addr, QueryType qt, bool cache = false)
: Timer(0)
, Question(addr, qt)
, manager(mgr)
, use_cache(cache)
, creator(c)
{
}
virtual ~Request()
{
@@ -163,7 +173,7 @@ namespace DNS
/** Used to time out the query, xalls OnError and lets the TimerManager
* delete this request.
*/
void Tick(time_t) override
void Tick() override
{
Log(LOG_DEBUG_2) << "Resolver: timeout for query " << this->name;
Query rr(*this);
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -25,7 +25,8 @@ namespace Encryption
virtual Hash GetFinalizedHash() = 0;
};
class Provider : public Service
class Provider
: public Service
{
public:
Provider(Module *creator, const Anope::string &sname) : Service(creator, "Encryption::Provider", sname) { }
+13 -7
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2012-2023 Anope Team
* (C) 2012-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -18,7 +18,7 @@ enum HTTPError
};
/* A message to someone */
struct HTTPReply
struct HTTPReply final
{
HTTPError error = HTTP_ERROR_OK;
Anope::string content_type;
@@ -46,7 +46,7 @@ struct HTTPReply
out.clear();
}
struct Data
struct Data final
{
char *buf;
size_t len;
@@ -81,7 +81,7 @@ struct HTTPReply
};
/* A message from someone */
struct HTTPMessage
struct HTTPMessage final
{
std::map<Anope::string, Anope::string> headers;
std::map<Anope::string, Anope::string> cookies;
@@ -93,7 +93,8 @@ struct HTTPMessage
class HTTPClient;
class HTTPProvider;
class HTTPPage : public virtual Base
class HTTPPage
: public virtual Base
{
Anope::string url;
Anope::string content_type;
@@ -115,7 +116,10 @@ public:
virtual bool OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &) = 0;
};
class HTTPClient : public ClientSocket, public BinarySocket, public Base
class HTTPClient
: public ClientSocket
, public BinarySocket
, public Base
{
protected:
void WriteClient(const Anope::string &message)
@@ -135,7 +139,9 @@ public:
virtual void SendReply(HTTPReply *) = 0;
};
class HTTPProvider : public ListenSocket, public Service
class HTTPProvider
: public ListenSocket
, public Service
{
Anope::string ip;
unsigned short port;
+8 -6
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,7 @@
#pragma once
class LDAPException : public ModuleException
class DllExport LDAPException : public ModuleException
{
public:
LDAPException(const Anope::string &reason) : ModuleException(reason) { }
@@ -16,7 +16,7 @@ public:
virtual ~LDAPException() noexcept = default;
};
struct LDAPModification
struct LDAPModification final
{
enum LDAPOperation
{
@@ -31,7 +31,8 @@ struct LDAPModification
};
typedef std::vector<LDAPModification> LDAPMods;
struct LDAPAttributes : public std::map<Anope::string, std::vector<Anope::string> >
struct LDAPAttributes final
: public std::map<Anope::string, std::vector<Anope::string>>
{
size_t size(const Anope::string &attr) const
{
@@ -74,7 +75,7 @@ enum QueryType
QUERY_MODIFY
};
struct LDAPResult
struct LDAPResult final
{
std::vector<LDAPAttributes> messages;
Anope::string error;
@@ -122,7 +123,8 @@ public:
virtual void OnDelete() { }
};
class LDAPProvider : public Service
class LDAPProvider
: public Service
{
public:
LDAPProvider(Module *c, const Anope::string &n) : Service(c, "LDAPProvider", n) { }
+3 -2
View File
@@ -1,6 +1,6 @@
/* NickServ core functions
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -63,7 +63,8 @@ public:
virtual void Check() = 0;
};
class CertService : public Service
class CertService
: public Service
{
public:
CertService(Module *c) : Service(c, "CertService", "certs") { }
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -31,7 +31,8 @@ protected:
ForbidData() = default;
};
class ForbidService : public Service
class ForbidService
: public Service
{
public:
ForbidService(Module *m) : Service(m, "ForbidService", "forbid") { }
+3 -2
View File
@@ -1,6 +1,6 @@
/* OperServ ignore interface
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -23,7 +23,8 @@ protected:
IgnoreData() = default;
};
class IgnoreService : public Service
class IgnoreService
: public Service
{
protected:
IgnoreService(Module *c) : Service(c, "IgnoreService", "ignore") { }
+6 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -15,14 +15,15 @@ enum NewsType
NEWS_OPER
};
struct NewsMessages
struct NewsMessages final
{
NewsType type;
Anope::string name;
const char *msgs[10];
};
struct NewsItem : Serializable
struct NewsItem
: Serializable
{
NewsType type;
Anope::string text;
@@ -32,7 +33,8 @@ struct NewsItem : Serializable
NewsItem() : Serializable("NewsItem") { }
};
class NewsService : public Service
class NewsService
: public Service
{
public:
NewsService(Module *m) : Service(m, "NewsService", "news") { }
+6 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,7 @@
#pragma once
struct Session
struct Session final
{
cidr addr; /* A cidr (sockaddrs + len) representing this session */
unsigned count = 1; /* Number of clients with this host */
@@ -17,7 +17,8 @@ struct Session
Session(const sockaddrs &ip, int len) : addr(ip, len) { }
};
struct Exception : Serializable
struct Exception final
: Serializable
{
Anope::string mask; /* Hosts to which this exception applies */
unsigned limit; /* Session limit for exception */
@@ -31,7 +32,8 @@ struct Exception : Serializable
static Serializable* Unserialize(Serializable *obj, Serialize::Data &data);
};
class SessionService : public Service
class SessionService
: public Service
{
public:
typedef std::unordered_map<cidr, Session *, cidr::hash> SessionMap;
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,8 @@
#pragma once
class ChanServService : public Service
class ChanServService
: public Service
{
public:
ChanServService(Module *m) : Service(m, "ChanServService", "ChanServ")
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,8 @@
#pragma once
class GlobalService : public Service
class GlobalService
: public Service
{
public:
GlobalService(Module *m) : Service(m, "GlobalService", "Global")
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,8 @@
#pragma once
class MemoServService : public Service
class MemoServService
: public Service
{
public:
enum MemoResult
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2011-2023 Anope Team
* (C) 2011-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,8 @@
#pragma once
class NickServService : public Service
class NickServService
: public Service
{
public:
NickServService(Module *m) : Service(m, "NickServService", "NickServ")
+4 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -10,7 +10,7 @@
namespace Redis
{
struct Reply
struct Reply final
{
enum Type
{
@@ -55,7 +55,8 @@ namespace Redis
virtual void OnError(const Anope::string &error) { Log(owner) << error; }
};
class Provider : public Service
class Provider
: public Service
{
public:
Provider(Module *c, const Anope::string &n) : Service(c, "Redis::Provider", n) { }
+8 -5
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2014-2023 Anope Team
* (C) 2014-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -10,7 +10,7 @@
namespace SASL
{
struct Message
struct Message final
{
Anope::string source;
Anope::string target;
@@ -22,7 +22,8 @@ namespace SASL
class Mechanism;
struct Session;
class Service : public ::Service
class Service
: public ::Service
{
public:
Service(Module *o) : ::Service(o, "SASL::Service", "sasl") { }
@@ -60,7 +61,8 @@ namespace SASL
};
/* PLAIN, EXTERNAL, etc */
class Mechanism : public ::Service
class Mechanism
: public ::Service
{
public:
Mechanism(Module *o, const Anope::string &sname) : Service(o, "SASL::Mechanism", sname) { }
@@ -76,7 +78,8 @@ namespace SASL
}
};
class IdentifyRequest : public ::IdentifyRequest
class IdentifyRequest
: public ::IdentifyRequest
{
Anope::string uid;
Anope::string hostname, ip;
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+8 -6
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -11,7 +11,8 @@
namespace SQL
{
class Data : public Serialize::Data
class Data final
: public Serialize::Data
{
public:
typedef std::map<Anope::string, std::stringstream *> Map;
@@ -81,7 +82,7 @@ namespace SQL
/** A SQL exception, can be thrown at various points
*/
class Exception : public ModuleException
class DllExport Exception : public ModuleException
{
public:
Exception(const Anope::string &reason) : ModuleException(reason) { }
@@ -92,13 +93,13 @@ namespace SQL
/** A SQL query
*/
struct QueryData
struct QueryData final
{
Anope::string data;
bool escape;
};
struct Query
struct Query final
{
Anope::string query;
std::map<Anope::string, QueryData> parameters;
@@ -199,7 +200,8 @@ namespace SQL
/** Class providing the SQL service, modules call this to execute queries
*/
class Provider : public Service
class Provider
: public Service
{
public:
Provider(Module *c, const Anope::string &n) : Service(c, "SQL::Provider", n) { }
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2010-2023 Anope Team
* (C) 2010-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -8,7 +8,8 @@
#pragma once
class SSLService : public Service
class SSLService
: public Service
{
public:
SSLService(Module *o, const Anope::string &n) : Service(o, "SSLService", n) { }
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+4 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2010-2023 Anope Team
* (C) 2010-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -10,7 +10,7 @@
#include "httpd.h"
class XMLRPCRequest
class XMLRPCRequest final
{
std::map<Anope::string, Anope::string> replies;
@@ -34,7 +34,8 @@ public:
virtual bool Run(XMLRPCServiceInterface *iface, HTTPClient *client, XMLRPCRequest &request) = 0;
};
class XMLRPCServiceInterface : public Service
class XMLRPCServiceInterface
: public Service
{
public:
XMLRPCServiceInterface(Module *creator, const Anope::string &sname) : Service(creator, "XMLRPCServiceInterface", sname) { }
+2 -2
View File
@@ -1,7 +1,7 @@
/*
*
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* (C) 2008-2023 Anope Team <team@anope.org>
* (C) 2008-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*/
@@ -40,7 +40,7 @@ struct CoreExport Oper
static Oper *Find(const Anope::string &name);
};
class CoreExport OperType
class CoreExport OperType final
{
private:
/** The name of this opertype, e.g. "sra".
+19 -17
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -17,7 +17,8 @@
#include "modes.h"
/* Encapsulates the IRCd protocol we are speaking. */
class CoreExport IRCDProto : public Service
class CoreExport IRCDProto
: public Service
{
Anope::string proto_name;
@@ -128,27 +129,27 @@ public:
* @param user The user to be killed
* @param fmt Kill reason
*/
virtual void SendSVSKill(const MessageSource &source, User *user, const char *fmt, ...);
virtual void SendSVSKill(const MessageSource &source, User *user, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendMode(const MessageSource &source, const Channel *dest, const char *fmt, ...);
virtual void SendMode(const MessageSource &source, User *u, const char *fmt, ...);
virtual void SendMode(const MessageSource &source, const Channel *dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendMode(const MessageSource &source, User *u, const char *fmt, ...) ATTR_FORMAT(4, 5);
/** Introduces a client to the rest of the network
* @param u The client to introduce
*/
virtual void SendClientIntroduction(User *u) = 0;
virtual void SendKick(const MessageSource &source, const Channel *chan, User *user, const char *fmt, ...);
virtual void SendKick(const MessageSource &source, const Channel *chan, User *user, const char *fmt, ...) ATTR_FORMAT(5, 6);
virtual void SendNotice(const MessageSource &source, const Anope::string &dest, const char *fmt, ...);
virtual void SendPrivmsg(const MessageSource &source, const Anope::string &dest, const char *fmt, ...);
virtual void SendAction(const MessageSource &source, const Anope::string &dest, const char *fmt, ...);
virtual void SendCTCP(const MessageSource &source, const Anope::string &dest, const char *fmt, ...);
virtual void SendNotice(const MessageSource &source, const Anope::string &dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendPrivmsg(const MessageSource &source, const Anope::string &dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendAction(const MessageSource &source, const Anope::string &dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendCTCP(const MessageSource &source, const Anope::string &dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendGlobalNotice(BotInfo *bi, const Server *dest, const Anope::string &msg) = 0;
virtual void SendGlobalPrivmsg(BotInfo *bi, const Server *desc, const Anope::string &msg) = 0;
virtual void SendQuit(User *u, const char *fmt, ...);
virtual void SendQuit(User *u, const char *fmt, ...) ATTR_FORMAT(3, 4);
virtual void SendPing(const Anope::string &servname, const Anope::string &who);
virtual void SendPong(const Anope::string &servname, const Anope::string &who);
@@ -160,7 +161,7 @@ public:
* stacker to be set "soon".
*/
virtual void SendJoin(User *u, Channel *c, const ChannelStatus *status) = 0;
virtual void SendPart(User *u, const Channel *chan, const char *fmt, ...);
virtual void SendPart(User *u, const Channel *chan, const char *fmt, ...) ATTR_FORMAT(4, 5);
/** Force joins a user that isn't ours to a channel.
* @param bi The source of the message
@@ -179,7 +180,7 @@ public:
virtual void SendSVSPart(const MessageSource &source, User *u, const Anope::string &chan, const Anope::string &param) { }
virtual void SendInvite(const MessageSource &source, const Channel *c, User *u);
virtual void SendGlobops(const MessageSource &source, const char *fmt, ...);
virtual void SendGlobops(const MessageSource &source, const char *fmt, ...) ATTR_FORMAT(3, 4);
/** Sends a nick change of one of our clients.
*/
@@ -210,7 +211,7 @@ public:
virtual void SendServer(const Server *) = 0;
virtual void SendSquit(Server *, const Anope::string &message);
virtual void SendNumeric(int numeric, const Anope::string &dest, const char *fmt, ...);
virtual void SendNumeric(int numeric, const Anope::string &dest, const char *fmt, ...) ATTR_FORMAT(4, 5);
virtual void SendLogin(User *u, NickAlias *na) = 0;
virtual void SendLogout(User *u) = 0;
@@ -244,7 +245,7 @@ public:
virtual Anope::string NormalizeMask(const Anope::string &mask);
};
class CoreExport MessageSource
class CoreExport MessageSource final
{
Anope::string source;
User *u = nullptr;
@@ -268,7 +269,8 @@ enum IRCDMessageFlag
IRCDMESSAGE_REQUIRE_USER
};
class CoreExport IRCDMessage : public Service
class CoreExport IRCDMessage
: public Service
{
Anope::string name;
unsigned param_count;
@@ -283,7 +285,7 @@ public:
};
/** MessageTokenizer allows tokens in the IRC wire format to be read from a string */
class CoreExport MessageTokenizer
class CoreExport MessageTokenizer final
{
private:
/** The message we are parsing tokens from. */
+6 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2008-2023 Anope Team
* (C) 2008-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -21,7 +21,8 @@ typedef Anope::hash_map<ChannelInfo *> registered_channel_map;
extern CoreExport Serialize::Checker<registered_channel_map> RegisteredChannelList;
/* AutoKick data. */
class CoreExport AutoKick : public Serializable
class CoreExport AutoKick final
: public Serializable
{
public:
/* Channel this autokick is on */
@@ -43,7 +44,9 @@ public:
/* It matters that Base is here before Extensible (it is inherited by Serializable)
*/
class CoreExport ChannelInfo : public Serializable, public Extensible
class CoreExport ChannelInfo final
: public Serializable
, public Extensible
{
/* channels who reference this one */
Anope::map<int> references;
+5 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -15,7 +15,8 @@
#include "anope.h"
#include "service.h"
class RegexException : public CoreException
class CoreExport RegexException final
: public CoreException
{
public:
RegexException(const Anope::string &reason = "") : CoreException(reason) { }
@@ -34,7 +35,8 @@ public:
virtual bool Matches(const Anope::string &str) = 0;
};
class CoreExport RegexProvider : public Service
class CoreExport RegexProvider
: public Service
{
public:
RegexProvider(Module *o, const Anope::string &n) : Service(o, "Regex", n) { }
+7 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -49,7 +49,8 @@ namespace Serialize
* abstract data types (Serialize::Data), and then reconstructed or
* updated later at any time.
*/
class CoreExport Serializable : public virtual Base
class CoreExport Serializable
: public virtual Base
{
private:
/* A list of every serializable item in Anope.
@@ -107,7 +108,8 @@ public:
* of class that inherits from Serializable. Used for unserializing objects
* of this type, as it requires a function pointer to a static member function.
*/
class CoreExport Serialize::Type : public Base
class CoreExport Serialize::Type final
: public Base
{
typedef Serializable* (*unserialize_func)(Serializable *obj, Serialize::Data &);
@@ -240,7 +242,8 @@ public:
* destructed.
*/
template<typename T>
class Serialize::Reference : public ReferenceBase
class Serialize::Reference final
: public ReferenceBase
{
protected:
T *ref = nullptr;
+3 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -37,7 +37,8 @@ namespace Servers
/** Class representing a server
*/
class CoreExport Server : public Extensible
class CoreExport Server final
: public Extensible
{
private:
/* Server name */
+6 -4
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -20,7 +20,8 @@
* such as commands, use this. This is also used for modules
* that publish a service (m_ssl_openssl, etc).
*/
class CoreExport Service : public virtual Base
class CoreExport Service
: public virtual Base
{
static std::map<Anope::string, std::map<Anope::string, Service *> > Services;
static std::map<Anope::string, std::map<Anope::string, Anope::string> > Aliases;
@@ -115,7 +116,8 @@ public:
/** Like Reference, but used to refer to a Service.
*/
template<typename T>
class ServiceReference : public Reference<T>
class ServiceReference
: public Reference<T>
{
Anope::string type;
Anope::string name;
@@ -158,7 +160,7 @@ public:
}
};
class ServiceAlias
class ServiceAlias final
{
Anope::string t, f;
public:
+1 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
+2 -2
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -14,7 +14,7 @@
#include "services.h"
#include "sockets.h"
class CoreExport SocketEngine
class CoreExport SocketEngine final
{
static const int DefaultSize = 2; // Uplink, mode stacker
public:
+20 -13
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -103,7 +103,7 @@ union CoreExport sockaddrs
void ntop(int type, const void *src);
};
class CoreExport cidr
class CoreExport cidr final
{
sockaddrs addr;
Anope::string cidr_ip;
@@ -120,13 +120,14 @@ public:
bool operator==(const cidr &other) const;
bool operator!=(const cidr &other) const;
struct CoreExport hash
struct CoreExport hash final
{
size_t operator()(const cidr &s) const;
};
};
class SocketException : public CoreException
class CoreExport SocketException final
: public CoreException
{
public:
/** Constructor for socket exceptions
@@ -286,7 +287,8 @@ public:
virtual void ProcessError();
};
class CoreExport BufferedSocket : public virtual Socket
class CoreExport BufferedSocket
: public virtual Socket
{
protected:
/* Things read from the socket */
@@ -319,7 +321,7 @@ public:
protected:
virtual void Write(const char *buffer, size_t l);
public:
void Write(const char *message, ...);
void Write(const char *message, ...) ATTR_FORMAT(2, 3);
void Write(const Anope::string &message);
/** Get the length of the read buffer
@@ -333,10 +335,11 @@ public:
int WriteBufferLen() const;
};
class CoreExport BinarySocket : public virtual Socket
class CoreExport BinarySocket
: public virtual Socket
{
protected:
struct DataBlock
struct DataBlock final
{
char *orig;
char *buf;
@@ -367,7 +370,7 @@ public:
* @param l The length of the data; if 0 then this function returns without doing anything
*/
virtual void Write(const char *buffer, size_t l);
void Write(const char *message, ...);
void Write(const char *message, ...) ATTR_FORMAT(2, 3);
void Write(const Anope::string &message);
/** Called with data from the socket
@@ -378,7 +381,8 @@ public:
virtual bool Read(const char *buffer, size_t l);
};
class CoreExport ListenSocket : public virtual Socket
class CoreExport ListenSocket
: public virtual Socket
{
public:
/** Constructor
@@ -402,7 +406,8 @@ public:
virtual ClientSocket *OnAccept(int fd, const sockaddrs &addr) = 0;
};
class CoreExport ConnectionSocket : public virtual Socket
class CoreExport ConnectionSocket
: public virtual Socket
{
public:
/* Sockaddrs for connection ip/port */
@@ -435,7 +440,8 @@ public:
virtual void OnError(const Anope::string &error);
};
class CoreExport ClientSocket : public virtual Socket
class CoreExport ClientSocket
: public virtual Socket
{
public:
/* Listen socket this connection came from */
@@ -469,7 +475,8 @@ public:
virtual void OnError(const Anope::string &error);
};
class CoreExport Pipe : public Socket
class CoreExport Pipe
: public Socket
{
public:
/** The FD of the write pipe
+10 -1
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -14,6 +14,9 @@
// The default umask to use for files.
#cmakedefine DEFUMASK @DEFUMASK@
// The extension used for module file extensions.
#define DLL_EXT "@CMAKE_SHARED_LIBRARY_SUFFIX@"
// Whether Anope was built in debug mode.
#cmakedefine01 DEBUG_BUILD
@@ -31,3 +34,9 @@
# endif
# define sleep(x) Sleep(x * 1000)
#endif
#if defined __GNUC__
# define ATTR_FORMAT(STRINGPOS, FIRSTPOS) __attribute__((format(printf, STRINGPOS, FIRSTPOS)))
#else
# define ATTR_FORMAT(STRINGPOS, FIRSTPOS)
#endif
+7 -57
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -14,7 +14,11 @@
#include "sockets.h"
#include "extensible.h"
class CoreExport Thread : public Pipe, public Extensible
#include <thread>
class CoreExport Thread
: public Pipe
, public Extensible
{
private:
/* Set to true to tell the thread to finish and we are waiting for it */
@@ -22,7 +26,7 @@ private:
public:
/* Handle for this thread */
pthread_t handle;
std::thread *handle = nullptr;
/** Threads destructor
*/
@@ -57,57 +61,3 @@ public:
*/
virtual void Run() = 0;
};
class CoreExport Mutex
{
protected:
/* A mutex, used to keep threads in sync */
pthread_mutex_t mutex;
public:
/** Constructor
*/
Mutex();
/** Destructor
*/
~Mutex();
/** Attempt to lock the mutex, will hang until a lock can be achieved
*/
void Lock();
/** Unlock the mutex, it must be locked first
*/
void Unlock();
/** Attempt to lock the mutex, will return true on success and false on fail
* Does not block
* @return true or false
*/
bool TryLock();
};
class CoreExport Condition : public Mutex
{
private:
/* A condition */
pthread_cond_t cond;
public:
/** Constructor
*/
Condition();
/** Destructor
*/
~Condition();
/** Called to wakeup the waiter
*/
void Wakeup();
/** Called to wait for a Wakeup() call
*/
void Wait();
};
+8 -19
View File
@@ -1,6 +1,6 @@
/* Timer include stuff.
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -20,17 +20,13 @@ private:
*/
Module *owner;
/** The time this was created
*/
time_t settime;
/** The triggering time
*/
time_t trigger;
/** Numer of seconds between triggers
/** Number of seconds between triggers
*/
long secs;
time_t secs;
/** True if this is a repeating timer
*/
@@ -39,18 +35,16 @@ private:
public:
/** Constructor, initializes the triggering time
* @param time_from_now The number of seconds from now to trigger the timer
* @param now The time now
* @param repeating Repeat this timer every time_from_now if this is true
*/
Timer(long time_from_now, time_t now = Anope::CurTime, bool repeating = false);
Timer(time_t time_from_now, bool repeating = false);
/** Constructor, initializes the triggering time
* @param creator The creator of the timer
* @param time_from_now The number of seconds from now to trigger the timer
* @param now The time now
* @param repeating Repeat this timer every time_from_now if this is true
*/
Timer(Module *creator, long time_from_now, time_t now = Anope::CurTime, bool repeating = false);
Timer(Module *creator, time_t time_from_now, bool repeating = false);
/** Destructor, removes the timer from the list
*/
@@ -81,11 +75,6 @@ public:
*/
long GetSecs() const;
/** Returns the time this timer was created
* @return The time this timer was created
*/
time_t GetSetTime() const;
/** Returns the owner of this timer, if any
* @return The owner of the timer
*/
@@ -94,14 +83,14 @@ public:
/** Called when the timer ticks
* This should be overridden with something useful
*/
virtual void Tick(time_t ctime) = 0;
virtual void Tick() = 0;
};
/** This class manages sets of Timers, and triggers them at their defined times.
* This will ensure timers are not missed, as well as removing timers that have
* expired and allowing the addition of new ones.
*/
class CoreExport TimerManager
class CoreExport TimerManager final
{
/** A list of timers
*/
@@ -120,7 +109,7 @@ public:
/** Tick all pending timers
* @param ctime The current time
*/
static void TickTimers(time_t ctime = Anope::CurTime);
static void TickTimers();
/** Deletes all timers owned by the given module
*/
+5 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -20,7 +20,9 @@ namespace Uplink
}
/* This is the socket to our uplink */
class UplinkSocket : public ConnectionSocket, public BufferedSocket
class UplinkSocket final
: public ConnectionSocket
, public BufferedSocket
{
public:
bool error;
@@ -31,7 +33,7 @@ public:
void OnError(const Anope::string &) override;
/* A message sent over the uplink socket */
class CoreExport Message
class CoreExport Message final
{
MessageSource source;
std::stringstream buffer;
+10 -5
View File
@@ -1,7 +1,7 @@
/*
*
* (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
* (C) 2003-2023 Anope Team <team@anope.org>
* (C) 2003-2024 Anope Team <team@anope.org>
*
* Please read COPYING and README for further details.
*
@@ -28,7 +28,10 @@ extern CoreExport unsigned MaxUserCount;
extern CoreExport time_t MaxUserTime;
/* Online user and channel data. */
class CoreExport User : public virtual Base, public Extensible, public CommandReply
class CoreExport User
: public virtual Base
, public Extensible
, public CommandReply
{
/* true if the user was quit or killed */
bool quit;
@@ -188,7 +191,7 @@ public:
* @param fmt Format of the Message
* @param ... any number of parameters
*/
void SendMessage(BotInfo *source, const char *fmt, ...);
void SendMessage(BotInfo *source, const char *fmt, ...) ATTR_FORMAT(3, 4);
void SendMessage(BotInfo *source, const Anope::string &msg) override;
/** Identify the user to a nick.
@@ -302,13 +305,15 @@ public:
* @param bi The client setting the modes
* @param umodes The modes
*/
void SetModes(BotInfo *bi, const char *umodes, ...);
void SetModes(BotInfo *bi, const char *umodes, ...) ATTR_FORMAT(3, 4);
void SetModes(BotInfo *bi, const Anope::string &umodes);
/** Set a string of modes on a user internally
* @param setter who/what is setting the mode
* @param umodes The modes
*/
void SetModesInternal(const MessageSource &source, const char *umodes, ...);
void SetModesInternal(const MessageSource &source, const char *umodes, ...) ATTR_FORMAT(3, 4);
void SetModesInternal(const MessageSource &source, const Anope::string &umodes);
/** Get modes set for this user.
* @return A string of modes set on the user
+6 -6
View File
@@ -1,6 +1,6 @@
/* Build bumper
*
* (C) 2003-2023 Anope Team
* (C) 2003-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -172,19 +172,19 @@ int main(int argc, char *argv[])
std::map<std::string, std::string> versions, old_versions;
if (!read_version_sh(version_sh, versions))
return -1;
return EXIT_FAILURE;
std::string git_version = get_git_hash(git_dir);
if (!write_build_h(buildh, git_version))
return -1;
return EXIT_FAILURE;
read_version_h(versionh, old_versions);
if (versions == old_versions)
return 0;
return EXIT_SUCCESS;
if (!write_version_h(versionh, versions))
return -1;
return EXIT_FAILURE;
return 0;
return EXIT_SUCCESS;
}
+5 -3
View File
@@ -1,6 +1,6 @@
/*
*
* (C) 2008-2023 Anope Team
* (C) 2008-2024 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -13,7 +13,8 @@
#include "sockets.h"
/* An Xline, eg, anything added with operserv/akill, or any of the operserv/sxline commands */
class CoreExport XLine : public Serializable
class CoreExport XLine final
: public Serializable
{
void Init();
Anope::string nick, user, host, real;
@@ -48,7 +49,8 @@ public:
};
/* Managers XLines. There is one XLineManager per type of XLine. */
class CoreExport XLineManager : public Service
class CoreExport XLineManager
: public Service
{
char type;
/* List of XLines in this XLineManager */
+1 -1
View File
@@ -2760,7 +2760,7 @@ msgstr ""
msgid ""
"Alternative methods of modifying channel access lists are\n"
"available. "
"available."
msgstr ""
#, fuzzy
+1 -1
View File
@@ -2540,7 +2540,7 @@ msgstr ""
msgid ""
"Alternative methods of modifying channel access lists are\n"
"available. "
"available."
msgstr "Alternative Methoden zum Bearbeiten der Kanalzugangsliste sind verfügbar."
msgid "Approve the requested vHost of a user"
+1 -1
View File
@@ -2651,7 +2651,7 @@ msgstr ""
msgid ""
"Alternative methods of modifying channel access lists are\n"
"available. "
"available."
msgstr ""
#
+98 -94
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Anope\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-22 15:42+0000\n"
"PO-Revision-Date: 2023-12-22 15:44+0000\n"
"POT-Creation-Date: 2024-01-08 13:20+0000\n"
"PO-Revision-Date: 2024-01-08 13:26+0000\n"
"Last-Translator: Sadie Powell <sadie@witchery.services>\n"
"Language-Team: English\n"
"Language: en_US\n"
@@ -840,12 +840,12 @@ msgid ""
" \n"
"Accounts that are not used anymore are subject to\n"
"the automatic expiration, i.e. they will be deleted\n"
"after %d days if not used."
"after %lu days if not used."
msgstr ""
" \n"
"Accounts that are not used anymore are subject to\n"
"the automatic expiration, i.e. they will be deleted\n"
"after %d days if not used."
"after %lu days if not used."
msgid ""
" \n"
@@ -941,12 +941,12 @@ msgstr ""
#, c-format
msgid ""
" \n"
"Note that any channel which is not used for %d days\n"
"Note that any channel which is not used for %lu days\n"
"(i.e. which no user on the channel's access list enters\n"
"for that period of time) will be automatically dropped."
msgstr ""
" \n"
"Note that any channel which is not used for %d days\n"
"Note that any channel which is not used for %lu days\n"
"(i.e. which no user on the channel's access list enters\n"
"for that period of time) will be automatically dropped."
@@ -1267,8 +1267,8 @@ msgid "%-8s %s"
msgstr "%-8s %s"
#, c-format
msgid "%2lu %-16s letters: %s, words: %s, lines: %s, smileys: %s, actions: %s"
msgstr "%2lu %-16s letters: %s, words: %s, lines: %s, smileys: %s, actions: %s"
msgid "%2d %-16s letters: %s, words: %s, lines: %s, smileys: %s, actions: %s"
msgstr "%2d %-16s letters: %s, words: %s, lines: %s, smileys: %s, actions: %s"
msgid "%b %d %Y %H:%M:%S %Z"
msgstr "%b %d %Y %H:%M:%S %Z"
@@ -1297,10 +1297,6 @@ msgstr "%d bots available."
msgid "%d modules loaded."
msgstr "%d modules loaded."
#, c-format
msgid "%d nickname(s) in the group."
msgstr "%d nickname(s) in the group."
#, c-format
msgid "%lu nicks are stored in the database, using %.2Lf kB of memory."
msgstr "%lu nicks are stored in the database, using %.2Lf kB of memory."
@@ -1418,20 +1414,20 @@ msgid "%s coverage is too wide; Please use a more specific mask."
msgstr "%s coverage is too wide; Please use a more specific mask."
#, c-format
msgid "%s currently has %d memos, of which %d are unread."
msgstr "%s currently has %d memos, of which %d are unread."
msgid "%s currently has %zu memos, of which %zu are unread."
msgstr "%s currently has %zu memos, of which %zu are unread."
#, c-format
msgid "%s currently has %d memos, of which 1 is unread."
msgstr "%s currently has %d memos, of which 1 is unread."
msgid "%s currently has %zu memos, of which 1 is unread."
msgstr "%s currently has %zu memos, of which 1 is unread."
#, c-format
msgid "%s currently has %d memos."
msgstr "%s currently has %d memos."
msgid "%s currently has %zu memos."
msgstr "%s currently has %zu memos."
#, c-format
msgid "%s currently has %d memos; all of them are unread."
msgstr "%s currently has %d memos; all of them are unread."
msgid "%s currently has %zu memos; all of them are unread."
msgstr "%s currently has %zu memos; all of them are unread."
#, c-format
msgid "%s currently has 1 memo, and it has not yet been read."
@@ -1633,6 +1629,10 @@ msgstr "%s's memo limit is %d, and may not be changed."
msgid "%s's memo limit is %d."
msgstr "%s's memo limit is %d."
#, c-format
msgid "%zu nickname(s) in the group."
msgstr "%zu nickname(s) in the group."
#, c-format
msgid "(%s ago)"
msgstr "(%s ago)"
@@ -2142,7 +2142,7 @@ msgstr ""
msgid ""
"Allows Services Operators to manipulate the AKILL list. If\n"
"a user matching an AKILL mask attempts to connect, Services\n"
"a user matching an AKILL mask attempts to connect, services\n"
"will issue a KILL for that user and, on supported server\n"
"types, will instruct all servers to add a ban for the mask\n"
"which the user matched.\n"
@@ -2163,7 +2163,7 @@ msgid ""
"STATS AKILL command."
msgstr ""
"Allows Services Operators to manipulate the AKILL list. If\n"
"a user matching an AKILL mask attempts to connect, Services\n"
"a user matching an AKILL mask attempts to connect, services\n"
"will issue a KILL for that user and, on supported server\n"
"types, will instruct all servers to add a ban for the mask\n"
"which the user matched.\n"
@@ -2844,17 +2844,17 @@ msgstr "Changed usermodes of %s to %s."
msgid ""
"Changes the display used to refer to the nickname group in\n"
"Services. The new display MUST be a nick of the group."
"services. The new display MUST be a nick of the group."
msgstr ""
"Changes the display used to refer to the nickname group in\n"
"Services. The new display MUST be a nick of the group."
"services. The new display MUST be a nick of the group."
msgid ""
"Changes the display used to refer to your nickname group in\n"
"Services. The new display MUST be a nick of your group."
"services. The new display MUST be a nick of your group."
msgstr ""
"Changes the display used to refer to your nickname group in\n"
"Services. The new display MUST be a nick of your group."
"services. The new display MUST be a nick of your group."
msgid ""
"Changes the founder of a channel. The new nickname must\n"
@@ -3016,8 +3016,8 @@ msgid "Channels that %s has access on:"
msgstr "Channels that %s has access on:"
#, c-format
msgid "Channels: %lu entries, %lu buckets, longest chain is %d"
msgstr "Channels: %lu entries, %lu buckets, longest chain is %d"
msgid "Channels: %zu entries, %zu buckets, longest chain is %zu"
msgstr "Channels: %zu entries, %zu buckets, longest chain is %zu"
msgid "Chanstats"
msgstr "Chanstats"
@@ -3168,20 +3168,20 @@ msgid "Current module list:"
msgstr "Current module list:"
#, c-format
msgid "Current number of AKILLs: %d"
msgstr "Current number of AKILLs: %d"
msgid "Current number of AKILLs: %zu"
msgstr "Current number of AKILLs: %zu"
#, c-format
msgid "Current number of SNLINEs: %d"
msgstr "Current number of SNLINEs: %d"
msgid "Current number of SNLINEs: %zu"
msgstr "Current number of SNLINEs: %zu"
#, c-format
msgid "Current number of SQLINEs: %d"
msgstr "Current number of SQLINEs: %d"
msgid "Current number of SQLINEs: %zu"
msgstr "Current number of SQLINEs: %zu"
#, c-format
msgid "Current users: %d (%d ops)"
msgstr "Current users: %d (%d ops)"
msgid "Current users: %zu (%d ops)"
msgstr "Current users: %zu (%d ops)"
msgid "DEL oper"
msgstr "DEL oper"
@@ -3833,8 +3833,8 @@ msgid "End of entry message list."
msgstr "End of entry message list."
#, c-format
msgid "End of forbid list - %d/%d entries shown."
msgstr "End of forbid list - %d/%d entries shown."
msgid "End of forbid list - %zu/%zu entries shown."
msgstr "End of forbid list - %zu/%zu entries shown."
msgid "End of forbid list."
msgstr "End of forbid list."
@@ -4250,8 +4250,8 @@ msgid "LIMIT enforced by "
msgstr "LIMIT enforced by "
#, c-format
msgid "LIMIT enforced on %s, %d users removed."
msgstr "LIMIT enforced on %s, %d users removed."
msgid "LIMIT enforced on %s, %zu users removed."
msgstr "LIMIT enforced on %s, %zu users removed."
msgid "LIST threshold"
msgstr "LIST threshold"
@@ -4868,6 +4868,10 @@ msgstr "Memo %d from %s (%s)."
msgid "Memo %d has been deleted."
msgstr "Memo %d has been deleted."
#, c-format
msgid "Memo %zu has been deleted."
msgstr "Memo %zu has been deleted."
msgid "Memo ignore list is empty."
msgstr "Memo ignore list is empty."
@@ -5103,8 +5107,8 @@ msgid "Nick %s isn't registered."
msgstr "Nick %s isn't registered."
#, c-format
msgid "Nick %s was truncated to %d characters."
msgstr "Nick %s was truncated to %d characters."
msgid "Nick %s was truncated to %u characters."
msgstr "Nick %s was truncated to %u characters."
#, c-format
msgid "Nick %s will expire."
@@ -5414,24 +5418,24 @@ msgid "Please use the symbol of # when attempting to register."
msgstr "Please use the symbol of # when attempting to register."
#, c-format
msgid "Please wait %d seconds and retry."
msgstr "Please wait %d seconds and retry."
msgid "Please wait %lu seconds and retry."
msgstr "Please wait %lu seconds and retry."
#, c-format
msgid "Please wait %d seconds before requesting a new vHost."
msgstr "Please wait %d seconds before requesting a new vHost."
msgid "Please wait %lu seconds before requesting a new vHost."
msgstr "Please wait %lu seconds before requesting a new vHost."
#, c-format
msgid "Please wait %d seconds before using the %s command again."
msgstr "Please wait %d seconds before using the %s command again."
msgid "Please wait %lu seconds before using the %s command again."
msgstr "Please wait %lu seconds before using the %s command again."
#, c-format
msgid "Please wait %d seconds before using the GROUP command again."
msgstr "Please wait %d seconds before using the GROUP command again."
msgid "Please wait %lu seconds before using the GROUP command again."
msgstr "Please wait %lu seconds before using the GROUP command again."
#, c-format
msgid "Please wait %d seconds before using the REGISTER command again."
msgstr "Please wait %d seconds before using the REGISTER command again."
msgid "Please wait %lu seconds before using the REGISTER command again."
msgstr "Please wait %lu seconds before using the REGISTER command again."
#, c-format
msgid "Pooled %s."
@@ -5619,16 +5623,16 @@ msgid "Registered"
msgstr "Registered"
#, c-format
msgid "Registered channels: %lu entries, %lu buckets, longest chain is %d"
msgstr "Registered channels: %lu entries, %lu buckets, longest chain is %d"
msgid "Registered channels: %zu entries, %zu buckets, longest chain is %zu"
msgstr "Registered channels: %zu entries, %zu buckets, longest chain is %zu"
#, c-format
msgid "Registered nick groups: %lu entries, %lu buckets, longest chain is %d"
msgstr "Registered nick groups: %lu entries, %lu buckets, longest chain is %d"
msgid "Registered nick groups: %zu entries, %zu buckets, longest chain is %zu"
msgstr "Registered nick groups: %zu entries, %zu buckets, longest chain is %zu"
#, c-format
msgid "Registered nicknames: %lu entries, %lu buckets, longest chain is %d"
msgstr "Registered nicknames: %lu entries, %lu buckets, longest chain is %d"
msgid "Registered nicknames: %zu entries, %zu buckets, longest chain is %zu"
msgstr "Registered nicknames: %zu entries, %zu buckets, longest chain is %zu"
#, c-format
msgid "Registered only enforced on %s."
@@ -5893,8 +5897,8 @@ msgstr "SSL only enforced on %s."
msgid "SSLONLY enforced by "
msgstr "SSLONLY enforced by "
msgid "Save databases and restart Services"
msgstr "Save databases and restart Services"
msgid "Save databases and restart services"
msgstr "Save databases and restart services"
msgid "Searches logs for a matching pattern"
msgstr "Searches logs for a matching pattern"
@@ -6189,8 +6193,8 @@ msgid "Session limiting is disabled."
msgstr "Session limiting is disabled."
#, c-format
msgid "Sessions: %lu entries, %lu buckets, longest chain is %d"
msgstr "Sessions: %lu entries, %lu buckets, longest chain is %d"
msgid "Sessions: %zu entries, %zu buckets, longest chain is %zu"
msgstr "Sessions: %zu entries, %zu buckets, longest chain is %zu"
msgid "Set SET-options on another nickname"
msgstr "Set SET-options on another nickname"
@@ -6213,8 +6217,8 @@ msgstr "Set the channel as permanent"
msgid "Set the channel description"
msgstr "Set the channel description"
msgid "Set the display of your group in Services"
msgstr "Set the display of your group in Services"
msgid "Set the display of your group in services"
msgstr "Set the display of your group in services"
msgid "Set the founder of a channel"
msgstr "Set the founder of a channel"
@@ -6589,8 +6593,8 @@ msgid "Show status of services and network"
msgstr "Show status of services and network"
#, c-format
msgid "Showed %d/%d matches for %s."
msgstr "Showed %d/%d matches for %s."
msgid "Showed %zu/%zu matches for %s."
msgstr "Showed %zu/%zu matches for %s."
msgid "Sign kicks that are done with the KICK command"
msgstr "Sign kicks that are done with the KICK command"
@@ -7500,8 +7504,8 @@ msgstr ""
"to release services's hold on your nick."
#, c-format
msgid "There are %d memos on channel %s."
msgstr "There are %d memos on channel %s."
msgid "There are %zu memos on channel %s."
msgstr "There are %zu memos on channel %s."
msgid ""
"There are no bots available at this time.\n"
@@ -7525,16 +7529,16 @@ msgid "There currently are no logging configurations for %s."
msgstr "There currently are no logging configurations for %s."
#, c-format
msgid "There is %d memo on channel %s."
msgstr "There is %d memo on channel %s."
msgid "There is %zu memo on channel %s."
msgstr "There is %zu memo on channel %s."
#, c-format
msgid ""
"There is a new memo on channel %s.\n"
"Type %s%s READ %s %d to read it."
"Type %s%s READ %s %zu to read it."
msgstr ""
"There is a new memo on channel %s.\n"
"Type %s%s READ %s %d to read it."
"Type %s%s READ %s %zu to read it."
#, c-format
msgid "There is no bot assigned to %s anymore."
@@ -8222,12 +8226,12 @@ msgid "Users"
msgstr "Users"
#, c-format
msgid "Users (nick): %lu entries, %lu buckets, longest chain is %d"
msgstr "Users (nick): %lu entries, %lu buckets, longest chain is %d"
msgid "Users (nick): %lu entries, %lu buckets, longest chain is %zu"
msgstr "Users (nick): %lu entries, %lu buckets, longest chain is %zu"
#, c-format
msgid "Users (uid): %lu entries, %lu buckets, longest chain is %d"
msgstr "Users (uid): %lu entries, %lu buckets, longest chain is %d"
msgid "Users (uid): %lu entries, %lu buckets, longest chain is %zu"
msgstr "Users (uid): %lu entries, %lu buckets, longest chain is %zu"
msgid "Users list:"
msgstr "Users list:"
@@ -8417,8 +8421,8 @@ msgstr "You are now in the group of %s."
msgid "You are over your maximum number of memos (%d). You will be unable to receive any new memos until you delete some of your current ones."
msgstr "You are over your maximum number of memos (%d). You will be unable to receive any new memos until you delete some of your current ones."
msgid "You can not NOOP Services."
msgstr "You can not NOOP Services."
msgid "You can not NOOP services."
msgstr "You can not NOOP services."
msgid "You can not disable the founder privilege because it would be impossible to re-enable it at a later time."
msgstr "You can not disable the founder privilege because it would be impossible to re-enable it at a later time."
@@ -8426,8 +8430,8 @@ msgstr "You can not disable the founder privilege because it would be impossible
msgid "You can not jupe an already juped server."
msgstr "You can not jupe an already juped server."
msgid "You can not jupe your Services' pseudoserver or your uplink server."
msgstr "You can not jupe your Services' pseudoserver or your uplink server."
msgid "You can not jupe your services' pseudoserver or your uplink server."
msgstr "You can not jupe your services' pseudoserver or your uplink server."
#, c-format
msgid "You can not reload this module directly, instead reload %s."
@@ -8473,20 +8477,20 @@ msgid "You cannot use this command."
msgstr "You cannot use this command."
#, c-format
msgid "You currently have %d memos, of which %d are unread."
msgstr "You currently have %d memos, of which %d are unread."
msgid "You currently have %zu memos, of which %zu are unread."
msgstr "You currently have %zu memos, of which %zu are unread."
#, c-format
msgid "You currently have %d memos, of which 1 is unread."
msgstr "You currently have %d memos, of which 1 is unread."
msgid "You currently have %zu memos, of which 1 is unread."
msgstr "You currently have %zu memos, of which 1 is unread."
#, c-format
msgid "You currently have %d memos."
msgstr "You currently have %d memos."
msgid "You currently have %zu memos."
msgstr "You currently have %zu memos."
#, c-format
msgid "You currently have %d memos; all of them are unread."
msgstr "You currently have %d memos; all of them are unread."
msgid "You currently have %zu memos; all of them are unread."
msgstr "You currently have %zu memos; all of them are unread."
msgid "You currently have 1 memo, and it has not yet been read."
msgstr "You currently have 1 memo, and it has not yet been read."
@@ -8519,10 +8523,10 @@ msgstr "You have 1 new memo."
#, c-format
msgid ""
"You have a new memo from %s.\n"
"Type %s%s READ %d to read it."
"Type %s%s READ %zu to read it."
msgstr ""
"You have a new memo from %s.\n"
"Type %s%s READ %d to read it."
"Type %s%s READ %zu to read it."
#, c-format
msgid "You have been invited to %s by %s."
@@ -8623,8 +8627,8 @@ msgid "You must enter the channel name twice as a confirmation that you wish to
msgstr "You must enter the channel name twice as a confirmation that you wish to drop %s."
#, c-format
msgid "You must have been using this nick for at least %d seconds to register."
msgstr "You must have been using this nick for at least %d seconds to register."
msgid "You must have been using this nick for at least %lu seconds to register."
msgstr "You must have been using this nick for at least %lu seconds to register."
#, c-format
msgid "You must have the %s(ME) privilege on the channel to use this command."
@@ -8766,8 +8770,8 @@ msgid "Your password is too long. It must be shorter than %u characters."
msgstr "Your password is too long. It must be shorter than %u characters."
#, c-format
msgid "Your password is too short. It must must be longer than %u characters."
msgstr "Your password is too short. It must must be longer than %u characters."
msgid "Your password is too short. It must be longer than %u characters."
msgstr "Your password is too short. It must be longer than %u characters."
msgid "Your password reset request has expired."
msgstr "Your password reset request has expired."
+1 -1
View File
@@ -2475,7 +2475,7 @@ msgstr ""
msgid ""
"Alternative methods of modifying channel access lists are\n"
"available. "
"available."
msgstr ""
"Están disponibles métodos alternativos de modificar las listas\n"
"de acceso."

Some files were not shown because too many files have changed in this diff Show More