Compare commits

..

No commits in common. "rawhide" and "f32" have entirely different histories.

18 changed files with 506 additions and 989 deletions

View file

@ -1,54 +0,0 @@
From 87a8af0ad71a11c248ba94c9ba20668dcb0fe831 Mon Sep 17 00:00:00 2001
From: Sadie Powell <sadie@witchery.services>
Date: Tue, 2 Apr 2024 16:41:26 +0100
Subject: [PATCH] Use the paths from the build system instead of hardcoding
them.
---
include/sysconf.h.cmake | 15 +++++++++++++++
src/init.cpp | 6 +++++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/include/sysconf.h.cmake b/include/sysconf.h.cmake
index 927c759107..5605976f9d 100644
--- a/include/sysconf.h.cmake
+++ b/include/sysconf.h.cmake
@@ -20,6 +20,21 @@
// Whether Anope was built in debug mode.
#cmakedefine01 DEBUG_BUILD
+// The default config directory.
+#define DEFAULT_CONF_DIR "@CONF_DIR@"
+
+// The default data directory.
+#define DEFAULT_DATA_DIR "@DB_DIR@"
+
+// The default locale directory.
+#define DEFAULT_LOCALE_DIR "@LOCALE_DIR@"
+
+// The default log directory.
+#define DEFAULT_LOG_DIR "@LOGS_DIR@"
+
+// The default module directory.
+#define DEFAULT_MODULE_DIR "@LIB_DIR@"
+
// Whether the clock_gettime() function is available.
#cmakedefine01 HAVE_CLOCK_GETTIME
diff --git a/src/init.cpp b/src/init.cpp
index df53ee908b..7c760d1af2 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -30,7 +30,11 @@
#endif
#include <thread>
-Anope::string Anope::ConfigDir = "conf", Anope::DataDir = "data", Anope::ModuleDir = "lib", Anope::LocaleDir = "locale", Anope::LogDir = "logs";
+Anope::string Anope::ConfigDir = DEFAULT_CONF_DIR;
+Anope::string Anope::DataDir = DEFAULT_DATA_DIR;
+Anope::string Anope::LocaleDir = DEFAULT_LOCALE_DIR;
+Anope::string Anope::LogDir = DEFAULT_LOG_DIR;
+Anope::string Anope::ModuleDir = DEFAULT_MODULE_DIR;
/* Vector of pairs of command line arguments and their params */
static std::vector<std::pair<Anope::string, Anope::string> > CommandLineArguments;

View file

@ -1,156 +0,0 @@
From c08aaa86d1ada72ad6e185837f9c179693b60c22 Mon Sep 17 00:00:00 2001
From: Sadie Powell <sadie@witchery.services>
Date: Tue, 2 Apr 2024 16:50:24 +0100
Subject: [PATCH] Sync the build system directory names with the core.
---
CMakeLists.txt | 24 ++++++++++++------------
include/sysconf.h.cmake | 6 +++---
modules/CMakeLists.txt | 4 ++--
modules/webcpanel/CMakeLists.txt | 2 +-
src/modulemanager.cpp | 4 ++--
5 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 52f983079c..0b22650cf7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -256,8 +256,8 @@ endif()
if(NOT BIN_DIR)
set(BIN_DIR "bin")
endif()
-if(NOT DB_DIR)
- set(DB_DIR "data")
+if(NOT DATA_DIR)
+ set(DATA_DIR "data")
endif()
if(NOT DOC_DIR)
set(DOC_DIR "doc")
@@ -265,14 +265,14 @@ endif()
if(NOT CONF_DIR)
set(CONF_DIR "conf")
endif()
-if(NOT LIB_DIR)
- set(LIB_DIR "lib")
+if(NOT MODULE_DIR)
+ set(MODULE_DIR "modules")
endif()
if(NOT LOCALE_DIR)
set(LOCALE_DIR "locale")
endif()
-if(NOT LOGS_DIR)
- set(LOGS_DIR "logs")
+if(NOT LOG_DIR)
+ set(LOG_DIR "logs")
endif()
# Version number processing
@@ -350,15 +350,15 @@ set(SERVICES_BINARY "$<TARGET_FILE:${PROGRAM_NAME}>")
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
# At install time, create the following additional directories
-install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/backups\")")
-install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LOGS_DIR}\")")
+install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/backups\")")
+install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LOG_DIR}\")")
if(WIN32)
- install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DB_DIR}/runtime\")")
+ install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/runtime\")")
endif()
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
if(NOT WIN32 AND RUNGROUP)
- install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${DB_DIR}/backups\")")
- install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${LOGS_DIR}\")")
+ install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${DATA_DIR}/backups\")")
+ install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${LOG_DIR}\")")
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\")")
endif()
# On Windows platforms, install extra files
@@ -368,7 +368,7 @@ if(WIN32)
)
endif()
-install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/modules\")")
+install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${MODULE_DIR}\")")
# Only process the CPack section if we have CPack
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
diff --git a/include/sysconf.h.cmake b/include/sysconf.h.cmake
index 5605976f9d..2b981c7af7 100644
--- a/include/sysconf.h.cmake
+++ b/include/sysconf.h.cmake
@@ -24,16 +24,16 @@
#define DEFAULT_CONF_DIR "@CONF_DIR@"
// The default data directory.
-#define DEFAULT_DATA_DIR "@DB_DIR@"
+#define DEFAULT_DATA_DIR "@DATA_DIR@"
// The default locale directory.
#define DEFAULT_LOCALE_DIR "@LOCALE_DIR@"
// The default log directory.
-#define DEFAULT_LOG_DIR "@LOGS_DIR@"
+#define DEFAULT_LOG_DIR "@LOG_DIR@"
// The default module directory.
-#define DEFAULT_MODULE_DIR "@LIB_DIR@"
+#define DEFAULT_MODULE_DIR "@MODULE_DIR@"
// Whether the clock_gettime() function is available.
#cmakedefine01 HAVE_CLOCK_GETTIME
diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index c6a98df7f9..aa9e963c44 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -94,7 +94,7 @@ macro(build_modules SRC)
target_link_libraries(${SO} ${PROGRAM_NAME})
endif()
# Set the module to be installed to the module directory under the data directory
- install(TARGETS ${SO} DESTINATION ${LIB_DIR}/modules)
+ install(TARGETS ${SO} DESTINATION ${MODULE_DIR})
endif()
endif()
endforeach()
@@ -168,7 +168,7 @@ macro(build_subdir)
endif()
# Set the module to be installed to the module directory under the data directory
- install(TARGETS ${SO} DESTINATION ${LIB_DIR}/modules)
+ install(TARGETS ${SO} DESTINATION ${MODULE_DIR})
endmacro()
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/modules/webcpanel/CMakeLists.txt b/modules/webcpanel/CMakeLists.txt
index 0770fddb7b..ab19f12b51 100644
--- a/modules/webcpanel/CMakeLists.txt
+++ b/modules/webcpanel/CMakeLists.txt
@@ -1,5 +1,5 @@
build_subdir(${CMAKE_CURRENT_SOURCE_DIR})
install(DIRECTORY "templates/"
- DESTINATION "${DB_DIR}/webcpanel/templates/default"
+ DESTINATION "${DATA_DIR}/webcpanel/templates/default"
)
diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
index 4ceae6417b..af7b1f811d 100644
--- a/src/modulemanager.cpp
+++ b/src/modulemanager.cpp
@@ -55,7 +55,7 @@ void ModuleManager::CleanupRuntimeDirectory()
*/
static ModuleReturn moduleCopyFile(const Anope::string &name, Anope::string &output)
{
- const auto input = Anope::ExpandModule("modules/" + name + DLL_EXT);
+ const auto input = Anope::ExpandModule(name + DLL_EXT);
struct stat s;
if (stat(input.c_str(), &s) == -1)
@@ -146,7 +146,7 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
return ret;
}
#else
- const auto pbuf = Anope::ExpandModule("modules/" + modname + DLL_EXT);
+ const auto pbuf = Anope::ExpandModule(modname + DLL_EXT);
#endif
dlerror();

View file

@ -1,46 +0,0 @@
From 5fdc6373275de9c0844c6507509c153ce69fa0c1 Mon Sep 17 00:00:00 2001
From: Sadie Powell <sadie@witchery.services>
Date: Sun, 14 Apr 2024 11:54:18 +0100
Subject: [PATCH] Expand relative paths when installing.
---
CMakeLists.txt | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b22650cf7..40cd3521e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -350,15 +350,17 @@ set(SERVICES_BINARY "$<TARGET_FILE:${PROGRAM_NAME}>")
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
# At install time, create the following additional directories
-install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/backups\")")
-install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LOG_DIR}\")")
+get_filename_component(ABSOLUTE_DATA_DIR ${DATA_DIR} REALPATH BASE_DIR ${CMAKE_INSTALL_PREFIX})
+get_filename_component(ABSOLUTE_LOG_DIR ${LOG_DIR} REALPATH BASE_DIR ${CMAKE_INSTALL_PREFIX})
+install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ABSOLUTE_DATA_DIR}/backups\")")
+install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ABSOLUTE_LOG_DIR}\")")
if(WIN32)
- install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/runtime\")")
+ install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${ABSOLUTE_DATA_DIR}/runtime\")")
endif()
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
if(NOT WIN32 AND RUNGROUP)
- install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${DATA_DIR}/backups\")")
- install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${LOG_DIR}\")")
+ install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}${ABSOLUTE_DATA_DIR}/backups\")")
+ install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\$ENV{DESTDIR}${ABSOLUTE_LOG_DIR}\")")
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\")")
endif()
# On Windows platforms, install extra files
@@ -368,7 +370,8 @@ if(WIN32)
)
endif()
-install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${MODULE_DIR}\")")
+get_filename_component(ABSOLUTE_MODULE_DIR ${MODULE_DIR} REALPATH BASE_DIR ${CMAKE_INSTALL_PREFIX})
+install(CODE "file(REMOVE_RECURSE \"$ENV{DESTDIR}${ABSOLUTE_MODULE_DIR}\")")
# Only process the CPack section if we have CPack
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")

View file

@ -183,7 +183,7 @@ module
/*
* The maximum number of entries a single bad words list can have.
*/
badwordsmax = 50
badwordsmax = 32
/*
* If set, BotServ will use case sensitive checking for badwords.
@ -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 underline kicker.
* botserv/kick/underlines - Configures BotServ's reverse kicker.
* botserv/set/dontkickops - Used for preventing BotServ from kicking channel operators.
* botserv/set/dontkickvoices - Used for preventing BotServ from kicking voices.
*
@ -323,7 +323,6 @@ command { service = "NickServ"; name = "SASET GREET"; command = "nickserv/saset/
privilege
{
name = "GREET"
desc = _("Greet message displayed on join")
rank = 40
level = 5
flag = "g"

View file

@ -76,6 +76,8 @@ module
* access level or superior
* - cs_private: Hide the channel from ChanServ's LIST command
* - restricted: Kick/ban users who are restricted from the channel
* - cs_secure: Enable channel security, requiring the user to be identified with NickServ in
* order to be considered for being on the access list of the channel
* - secureops: Only allow operator status to be given if the user is on the access list
* - securefounder: Only allow the real founder of the channel to drop the channel, change its
* password, or change the founder or successor
@ -87,14 +89,12 @@ module
* - noautoop: Disables autoop on the channel
* - cs_keep_modes: Enables keep modes on the channel, which retains modes when the channel is
* not in use.
* - cs_no_expire: Enables no expire. Needs founder, successor (if set) or anyone in the access list
* 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, peace,
* 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, cs_secure, securefounder,
* and signkick. If you really want no defaults, use "none" by itself as the option.
*/
defaults = "keeptopic peace securefounder signkick"
defaults = "keeptopic peace cs_secure securefounder signkick"
/*
* The maximum number of channels which may be registered to a single nickname.
@ -108,21 +108,21 @@ module
* The length of time before a channel registration expires.
*
* This directive is optional, but recommended.
* If not set, the default is 30 days.
* If not set, the default is 14 days.
*/
expire = 30d
expire = 14d
/*
* The maximum number of entries on a channel's access list.
* If not set, the default is 1000. This can be set to 0 for unlimited.
* If not set, the default is 1024. This can be set to 0 for unlimited.
*/
accessmax = 1000
accessmax = 1024
/*
* The length of time ChanServ stays in a channel after kicking a user from a channel they are not
* permitted to be in. This only occurs when the user is the only one in the channel.
*/
inhabit = 1m
inhabit = 15s
/*
* Allow only IRC Operators to use ChanServ.
@ -214,7 +214,6 @@ module
privilege
{
name = "ACCESS_CHANGE"
desc = _("Allowed to modify the access list")
rank = 0
level = 10
flag = "f"
@ -231,7 +230,6 @@ privilege
privilege
{
name = "ACCESS_LIST"
desc = _("Allowed to view the access list")
rank = 10
level = 3
flag = "f"
@ -248,7 +246,6 @@ privilege
privilege
{
name = "AKICK"
desc = _("Allowed to use the AKICK command")
rank = 250
level = 10
flag = "K"
@ -265,7 +262,6 @@ privilege
privilege
{
name = "ASSIGN"
desc = _("Allowed to assign/unassign a bot")
rank = 270
level = "founder"
flag = "s"
@ -282,7 +278,6 @@ privilege
privilege
{
name = "AUTOHALFOP"
desc = _("Automatic halfop upon join")
rank = 100
level = 4
flag = "H"
@ -299,7 +294,6 @@ privilege
privilege
{
name = "AUTOOP"
desc = _("Automatic channel operator status upon join")
rank = 210
level = 5
flag = "O"
@ -316,7 +310,6 @@ privilege
privilege
{
name = "AUTOOWNER"
desc = _("Automatic owner upon join")
rank = 330
level = 9999
flag = "Q"
@ -333,7 +326,6 @@ privilege
privilege
{
name = "AUTOPROTECT"
desc = _("Automatic protect upon join")
rank = 240
level = 10
flag = "A"
@ -350,7 +342,6 @@ privilege
privilege
{
name = "AUTOVOICE"
desc = _("Automatic voice on join")
rank = 50
level = 3
flag = "V"
@ -367,7 +358,6 @@ privilege
privilege
{
name = "BADWORDS"
desc = _("Allowed to modify channel badwords list")
rank = 260
level = 10
flag = "K"
@ -384,7 +374,6 @@ privilege
privilege
{
name = "BAN"
desc = _("Allowed to ban users")
rank = 150
level = 4
flag = "b"
@ -401,7 +390,6 @@ privilege
privilege
{
name = "FANTASIA"
desc = _("Allowed to use fantasy commands")
rank = 30
level = 3
flag = "c"
@ -421,7 +409,6 @@ privilege
privilege
{
name = "FOUNDER"
desc = _("Allowed to issue commands restricted to channel founders")
rank = 360
level = 10000
flag = "F"
@ -439,7 +426,6 @@ privilege
privilege
{
name = "GETKEY"
desc = _("Allowed to use GETKEY command")
rank = 180
level = 5
flag = "G"
@ -457,7 +443,6 @@ privilege
privilege
{
name = "HALFOP"
desc = _("Allowed to (de)halfop users")
rank = 120
level = 5
flag = "h"
@ -475,7 +460,6 @@ privilege
privilege
{
name = "HALFOPME"
desc = _("Allowed to (de)halfop themself")
rank = 110
level = 4
flag = "h"
@ -493,7 +477,6 @@ privilege
privilege
{
name = "INFO"
desc = _("Allowed to get full INFO output")
rank = 80
level = 9999
flag = "I"
@ -511,7 +494,6 @@ privilege
privilege
{
name = "INVITE"
desc = _("Allowed to use the INVITE command")
rank = 190
level = 5
flag = "i"
@ -528,7 +510,6 @@ privilege
privilege
{
name = "KICK"
desc = _("Allowed to use the KICK command")
rank = 130
level = 4
flag = "k"
@ -546,7 +527,6 @@ privilege
privilege
{
name = "MEMO"
desc = _("Allowed to read channel memos")
rank = 280
level = 10
flag = "m"
@ -564,7 +544,6 @@ privilege
privilege
{
name = "MODE"
desc = _("Allowed to use the MODE command")
rank = 170
level = 9999
flag = "s"
@ -581,7 +560,6 @@ privilege
privilege
{
name = "NOKICK"
desc = _("Prevents users being kicked by services")
rank = 20
level = 1
flag = "N"
@ -599,7 +577,6 @@ privilege
privilege
{
name = "OP"
desc = _("Allowed to (de)op users")
rank = 230
level = 5
flag = "o"
@ -617,7 +594,6 @@ privilege
privilege
{
name = "OPME"
desc = _("Allowed to (de)op themself")
rank = 220
level = 5
flag = "o"
@ -635,7 +611,6 @@ privilege
privilege
{
name = "OWNER"
desc = _("Allowed to (de)owner users")
rank = 350
level = "founder"
flag = "q"
@ -653,7 +628,6 @@ privilege
privilege
{
name = "OWNERME"
desc = _("Allowed to (de)owner themself")
rank = 340
level = 9999
flag = "q"
@ -671,7 +645,6 @@ privilege
privilege
{
name = "PROTECT"
desc = _("Allowed to (de)protect users")
rank = 310
level = 9999
flag = "a"
@ -689,7 +662,6 @@ privilege
privilege
{
name = "PROTECTME"
desc = _("Allowed to (de)protect themself")
rank = 300
level = 10
flag = "a"
@ -707,7 +679,6 @@ privilege
privilege
{
name = "SAY"
desc = _("Allowed to use SAY and ACT commands")
rank = 90
level = 5
flag = "B"
@ -727,7 +698,6 @@ privilege
privilege
{
name = "SET"
desc = _("Allowed to set channel settings")
rank = 320
level = 9999
flag = "s"
@ -745,7 +715,6 @@ privilege
privilege
{
name = "SIGNKICK"
desc = _("No signed kick when SIGNKICK LEVEL is used")
rank = 140
level = 9999
flag = "K"
@ -762,7 +731,6 @@ privilege
privilege
{
name = "TOPIC"
desc = _("Allowed to change channel topics")
rank = 160
level = 5
flag = "t"
@ -779,30 +747,12 @@ privilege
privilege
{
name = "UNBAN"
desc = _("Allowed to unban users")
rank = 200
level = 4
flag = "u"
xop = "HOP"
}
/*
* UNBANME privilege.
*
* Used by chanserv/unban.
*
* Users with this permission can unban themself through ChanServ.
*/
privilege
{
name = "UNBANME"
desc = _("Allowed to unban themself")
rank = 200
level = 4
flag = "U"
xop = "HOP"
}
/*
* VOICE privilege.
*
@ -814,7 +764,6 @@ privilege
privilege
{
name = "VOICE"
desc = _("Allowed to (de)voice users")
rank = 70
level = 4
flag = "v"
@ -832,7 +781,6 @@ privilege
privilege
{
name = "VOICEME"
desc = _("Allowed to (de)voice themself")
rank = 60
level = 3
flag = "v"
@ -913,7 +861,7 @@ module
/*
* The maximum number of entries on a channel's autokick list.
*/
autokickmax = 50
autokickmax = 32
/*
* The default reason for an autokick if none is given.
@ -1126,7 +1074,7 @@ module
*
* This directive is optional.
*/
max = 50
max = 32
}
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
@ -1247,7 +1195,7 @@ command { service = "ChanServ"; name = "SET NOEXPIRE"; command = "chanserv/saset
*/
module { name = "cs_set_misc" }
command { service = "ChanServ"; name = "SET URL"; command = "chanserv/set/misc"; misc_description = _("Associate a URL with the channel"); }
command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an email address with the channel"); }
command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an E-mail address with the channel"); }
/*
* cs_status
@ -1259,7 +1207,6 @@ 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

View file

@ -5,7 +5,7 @@
module
{
name = "chanstats"
name = "m_chanstats"
/*
* The name of this engine.

View file

@ -66,15 +66,15 @@ module
client = "Global"
/*
* This is the global message that will be sent when Anope is being
* This is the global message that will be sent when Services are being
* shutdown/restarted.
*
* This directive is optional.
*/
#globaloncycledown = "Services are restarting, they will be back shortly - please be good while they're gone"
#globaloncycledown = "Services are restarting, they will be back shortly - please be good while we're gone"
/*
* This is the global message that will be sent when Anope (re)joins the
* This is the global message that will be sent when Services (re)join the
* network.
*
* This directive is optional.
@ -82,7 +82,7 @@ module
#globaloncycleup = "Services are now back online - have a nice day"
/*
* If set, Anope will hide the IRC Operator's nick in a global
* If set, Services will hide the IRC Operator's nick in a global
* message/notice.
*
* This directive is optional.
@ -113,29 +113,3 @@ command { service = "Global"; name = "HELP"; command = "generic/help"; }
*/
module { name = "gl_global" }
command { service = "Global"; name = "GLOBAL"; command = "global/global"; permission = "global/global"; }
/*
* gl_queue
*
* Provides the command global/queue.
*
* Used for queuing messages to send to every online user.
*/
module
{
name = "gl_queue"
/* The maximum number of messages in a message queue. Defaults to 10. */
maxqueue = 10
}
command { service = "Global"; name = "QUEUE"; command = "global/queue"; permission = "global/queue"; }
/*
* gl_server
*
* Provides the command global/server.
*
* Used for sending a message to every online user on a server.
*/
module { name = "gl_server" }
command { service = "Global"; name = "SERVER"; command = "global/server"; permission = "global/server"; }

View file

@ -110,12 +110,12 @@ module
/*
* Upon nickserv/group, this option syncs the nick's main vHost to the grouped nick.
*/
syncongroup = true
syncongroup = false
/*
* This makes vhosts act as if they are per account.
*/
synconset = true
synconset = false
}
command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
@ -161,13 +161,13 @@ module
name = "hs_request"
/*
* If set, Anope will send a memo to the user requesting a vHost when it's been
* If set, Services will send a memo to the user requesting a vHost when it's been
* approved or rejected.
*/
#memouser = yes
/*
* If set, Anope will send a memo to all services staff when a new vHost is requested.
* If set, Services will send a memo to all Services staff when a new vHost is requested.
*/
#memooper = yes
}

View file

@ -83,7 +83,7 @@ module
*
* This directive is optional, but recommended.
*/
senddelay = 30s
senddelay = 3s
}
/*
@ -146,7 +146,7 @@ module
*
* This directive is optional.
*/
max = 50
max = 32
}
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }

View file

@ -3,7 +3,7 @@
*
* The following blocks are used to load all non-core modules, including 3rd-party modules.
* Modules can be prevented from loading by commenting out the line, other modules can be added by
* adding a module block. These modules will be loaded prior to Anope connecting to your network.
* adding a module block. These modules will be loaded prior to Services connecting to your network.
*
* Note that some of these modules are labeled EXTRA, and must be enabled prior to compiling by
* running the 'extras' script on Linux and UNIX.
@ -19,14 +19,14 @@
module { name = "help" }
/*
* dns
* m_dns
*
* Adds support for the DNS protocol. By itself this module does nothing useful,
* but other modules such as dnsbl and os_dns require this.
* but other modules such as m_dnsbl and os_dns require this.
*/
#module
{
name = "dns"
name = "m_dns"
/*
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
@ -59,7 +59,7 @@ module { name = "help" }
* SOA record information.
*/
/* Email address of the DNS administrator. */
/* E-mail address of the DNS administrator. */
admin = "admin@example.com"
/* This should be the names of the public facing nameservers serving the records. */
@ -80,7 +80,7 @@ module { name = "help" }
}
/*
* dnsbl
* m_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,17 +88,17 @@ module { name = "help" }
*/
#module
{
name = "dnsbl"
name = "m_dnsbl"
/*
* If set, Anope will check clients against the DNSBLs when services connect to its uplink.
* If set, Services will check clients against the DNSBLs when services connect to its uplink.
* This is not recommended, and on large networks will open a very large amount of DNS queries.
* Whilst services are not drastically affected by this, your nameserver/DNSBL might care.
*/
check_on_connect = no
/*
* If set, Anope will check clients when coming back from a netsplit. This can cause a large number
* If set, Services will check clients when coming back from a netsplit. This can cause a large number
* of DNS queries open at once. Whilst services are not drastically affected by this, your nameserver/DNSBL
* might care.
*/
@ -179,19 +179,19 @@ module { name = "help" }
}
/*
* helpchan
* m_helpchan
*
* Gives users who are op in the specified help channel usermode +h (helpop).
*/
#module
{
name = "helpchan"
name = "m_helpchan"
helpchannel = "#help"
}
/*
* httpd
* m_httpd
*
* Allows services to serve web pages. By itself, this module does nothing useful.
*
@ -200,7 +200,7 @@ module { name = "help" }
*/
#module
{
name = "httpd"
name = "m_httpd"
httpd
{
@ -233,13 +233,13 @@ module { name = "help" }
}
/*
* ldap [EXTRA]
* m_ldap [EXTRA]
*
* This module allows other modules to use LDAP. By itself, this module does nothing useful.
*/
#module
{
name = "ldap"
name = "m_ldap"
ldap
{
@ -254,14 +254,14 @@ module { name = "help" }
}
/*
* ldap_authentication
* m_ldap_authentication [EXTRA]
*
* This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
* LDAP to authenticate users. Requires ldap.
* LDAP to authenticate users. Requires m_ldap.
*/
#module
{
name = "ldap_authentication"
name = "m_ldap_authentication"
/*
* The distinguished name used for searching for users's accounts.
@ -314,16 +314,16 @@ module { name = "help" }
}
/*
* ldap_oper
* m_ldap_oper [EXTRA]
*
* This module dynamically ties users to Anope opertypes when they identify
* via LDAP group membership. Requires ldap.
* via LDAP group membership. Requires m_ldap.
*
* Note that this doesn't give the user privileges on the IRCd, only in Anope.
* Note that this doesn't give the user privileges on the IRCd, only in Services.
*/
#module
{
name = "ldap_oper"
name = "m_ldap_oper"
/*
* An optional binddn to use when searching for groups.
@ -355,13 +355,13 @@ module { name = "help" }
}
/*
* mysql [EXTRA]
* m_mysql [EXTRA]
*
* This module allows other modules to use MySQL.
*/
#module
{
name = "mysql"
name = "m_mysql"
mysql
{
@ -376,13 +376,13 @@ module { name = "help" }
}
/*
* redis
* m_redis
*
* This module allows other modules to use Redis.
*/
#module
{
name = "redis"
name = "m_redis"
/* A redis database */
redis
@ -401,61 +401,38 @@ module { name = "help" }
}
/*
* regex_pcre2 [EXTRA]
* m_regex_pcre [EXTRA]
*
* Provides the regex engine regex/pcre, which uses version 2 of the Perl Compatible Regular
* Expressions library.
* Provides the regex engine regex/pcre, which uses the Perl Compatible Regular Expressions library.
*/
#module { name = "regex_pcre2" }
#module { name = "m_regex_pcre" }
/*
* regex_posix [EXTRA]
* m_regex_posix [EXTRA]
*
* Provides the regex engine regex/posix, which uses the POSIX compliant regular expressions.
* This is likely the only regex module you will not need extra libraries for.
*/
#module { name = "regex_posix" }
#module { name = "m_regex_posix" }
/*
* regex_stdlib
*
* Provides the regex engine regex/stdlib, which uses the regular expression library that is part of
* the C++ standard library.
*/
module
{
name = "regex_stdlib"
/*
* The syntax scheme to use. Can be set to awk to use the regular expression grammar used by the
* awk utility in POSIX, basic to use the basic POSIX regular expression grammar, ecmascript to
* use the modified ECMAScript regular expression grammar, egrep to use the regular expression
* grammar used by the grep utility with the -E option in POSIX, extended to use the extended
* POSIX regular expression grammar, or grep to use the regular expression grammar used by the
* grep utility in POSIX.
*
* See https://en.cppreference.com/w/cpp/regex/syntax_option_type for more information.
*/
syntax = "ecmascript"
}
/*
* regex_tre [EXTRA]
* m_regex_tre [EXTRA]
*
* Provides the regex engine regex/tre, which uses the TRE regex library.
*/
#module { name = "regex_tre" }
#module { name = "m_regex_tre" }
/*
* rewrite
* m_rewrite
*
* Allows rewriting commands sent to/from clients.
*/
#module { name = "rewrite" }
#module { name = "m_rewrite" }
#command
{
service = "ChanServ"; name = "CLEAR"; command = "rewrite"
/* Enable rewrite. */
/* Enable m_rewrite. */
rewrite = true
/* Source message to match. A $ can be used to match anything. */
@ -476,7 +453,7 @@ module
}
/*
* proxyscan
* m_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 +467,7 @@ module
*/
#module
{
name = "proxyscan"
name = "m_proxyscan"
/*
* The target IP services tells the proxy to connect back to. This must be a publicly
@ -558,39 +535,38 @@ module
}
/*
* sasl
* m_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
* Some IRCds allow "SASL" authentication to let users identify to Services
* during the IRCd user registration process. If this module is loaded, Services will allow
* authenticating users through this mechanism. Supported mechanisms are:
* PLAIN, EXTERNAL.
*/
module { name = "sasl" }
module { name = "m_sasl" }
/*
* ssl_gnutls [EXTRA]
* m_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 ssl_gnutls or ssl_openssl, but not both.
* You may only load either m_ssl_gnutls or m_ssl_openssl, but not both.
*/
#module
{
name = "ssl_gnutls"
name = "m_ssl_gnutls"
/*
* An optional certificate and key for ssl_gnutls to give to the uplink. All
* paths are relative to the config directory.
* An optional certificate and key for m_ssl_gnutls to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
* certtool --generate-privkey --bits 2048 --outfile privkey.pem
* certtool --generate-self-signed --load-privkey privkey.pem --outfile fullchain.pem
* certtool --generate-privkey --bits 2048 --outfile anope.key
* certtool --generate-self-signed --load-privkey anope.key --outfile anope.crt
*
*/
cert = "fullchain.pem"
key = "privkey.pem"
cert = "data/anope.crt"
key = "data/anope.key"
/*
* Diffie-Hellman parameters to use when acting as a server. This is only
@ -603,55 +579,53 @@ module { name = "sasl" }
* certtool --generate-dh-params --bits 2048 --outfile dhparams.pem
*
*/
#dhparams = "dhparams.pem"
# dhparams = "data/dhparams.pem"
}
/*
* ssl_openssl [EXTRA]
* m_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 ssl_openssl or ssl_gnutls, but not both.
* You may only load either m_ssl_openssl or m_ssl_gnutls, but not both.
*
*/
#module
{
name = "ssl_openssl"
name = "m_ssl_openssl"
/*
* An optional certificate and key for ssl_openssl to give to the uplink.
* All paths are relative to the config directory.
* An optional certificate and key for m_ssl_openssl to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
* openssl genrsa -out privkey.pem 2048
* openssl req -new -x509 -key privkey.pem -out fullchain.pem -days 1095
* openssl genrsa -out anope.key 2048
* openssl req -new -x509 -key anope.key -out anope.crt -days 1095
*/
cert = "fullchain.pem"
key = "privkey.pem"
cert = "data/anope.crt"
key = "data/anope.key"
/*
* 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.
* 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.
*/
#tlsv10 = no
#tlsv11 = no
#tlsv12 = yes
#sslv3 = no
}
/*
* sql_authentication
* m_sql_authentication [EXTRA]
*
* This module allows authenticating users against an external SQL database using a custom
* query.
*/
#module
{
name = "sql_authentication"
name = "m_sql_authentication"
/* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
/* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
engine = "mysql/main"
/* Query to execute to authenticate. A non empty result from this query is considered a success,
@ -693,7 +667,7 @@ module { name = "sasl" }
}
/*
* sql_log
* m_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
@ -710,24 +684,24 @@ module { name = "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 = "sql_log" }
#module { name = "m_sql_log" }
/*
* sql_oper
* m_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 = "sql_oper"
name = "m_sql_oper"
/* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
/* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
engine = "mysql/main"
/* Query to execute to determine if a user should have operator privileges.
* A field named opertype must be returned in order to link the user to their oper type.
* The oper types must be configured earlier in anope.conf.
* The oper types must be configured earlier in services.conf.
*
* If a field named modes is returned from this query then those modes are set on the user.
* Without this, only a simple +o is sent.
@ -739,13 +713,13 @@ module { name = "sasl" }
}
/*
* sqlite [EXTRA]
* m_sqlite [EXTRA]
*
* This module allows other modules to use SQLite.
*/
#module
{
name = "sqlite"
name = "m_sqlite"
/* A SQLite database */
sqlite
@ -759,23 +733,23 @@ module { name = "sasl" }
}
/*
* xmlrpc
* m_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 (xmlrpc_main) to receive and send XMLRPC queries.
* By itself this module does nothing, but allows other modules (m_xmlrpc_main) to receive and send XMLRPC queries.
*/
#module
{
name = "xmlrpc"
name = "m_xmlrpc"
/* Web service to use. Requires httpd. */
/* Web service to use. Requires m_httpd. */
server = "httpd/main"
}
/*
* xmlrpc_main
* m_xmlrpc_main
*
* Adds the main XMLRPC core functions.
* Requires xmlrpc.
* Requires m_xmlrpc.
*/
#module { name = "xmlrpc_main" }
#module { name = "m_xmlrpc_main" }

View file

@ -66,9 +66,9 @@ module
client = "NickServ"
/*
* Requires users to give an email address when they register a nick.
* Force users to give an e-mail address when they register a nick.
*
* This directive defaults to "yes" and is recommended to be enabled.
* This directive defaults to "yes" and is recommended to be enabled. This is required if e-mail registration is enabled.
*/
forceemail = yes
@ -92,12 +92,12 @@ module
*
* The options are:
* - killprotect: Kill nick if not identified within 60 seconds
* - kill_quick: Kill nick if not identified within 20 seconds, this one overrides the killprotect
* option and the killprotect option must be specified with this one
* - kill_immed: Kill nick immediately if not identified, this one overrides both the killprotect
* and kill_quick options and the killprotect option must be specified with this one
* - kill_quick: Kill nick if not identified within 20 seconds, this one overrides the above
* option and the above must be specified with this one
* - ns_secure: Enable nickname security, requiring the nick's password before any operations
* can be done on it
* - ns_private: Hide the nick from NickServ's LIST command
* - hide_email: Hide the nick's email address from NickServ's INFO command
* - hide_email: Hide the nick's e-mail address from NickServ's INFO command
* - hide_mask: Hide the nick's last or current user@host from NickServ's INFO command
* - hide_status: Hide the nick's services operator access status from NickServ's INFO command
* - hide_quit: Hide the nick's last quit message from NickServ's INFO command
@ -105,39 +105,39 @@ module
* - memo_receive: Notify user if they have a new memo as soon as it's received
* - memo_mail: Notify user if they have a new memo by mail
* - autoop: User will be automatically opped in channels they enter and have access to
* - neverop: User can not be added to access lists
* - msg: Messages will be sent as PRIVMSGs instead of NOTICEs, requires options:useprivmsg
* to be enabled as well
* - msg: Services 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 memo_signon, and
* 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.
*/
defaults = "killprotect ns_private hide_email hide_mask memo_signon memo_receive autoop"
defaults = "ns_secure ns_private hide_email hide_mask memo_signon memo_receive autoop"
/*
* The minimum length of time between consecutive uses of NickServ's REGISTER command. This
* directive is optional, but recommended. If not set, this restriction will be disabled.
*/
regdelay = 5m
regdelay = 30s
/*
* The length of time before a nick's registration expires.
*
* This directive is optional, but recommended. If not set, the default is 90 days.
* This directive is optional, but recommended. If not set, the default is 21 days.
*/
expire = 90d
expire = 21d
/*
* Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND
* and SET PASSWORD commands by services operators on other services operators.
* Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND,
* GETPASS and SET PASSWORD commands by services operators on other services operators.
*
* This directive is optional, but recommended.
*/
secureadmins = yes
/*
* If set, Anope will set the channel modes a user has access to upon identifying, assuming
* If set, Services will set the channel modes a user has access to upon identifying, assuming
* they are not already set.
*
* This directive is optional.
@ -145,14 +145,14 @@ module
modeonid = yes
/*
* If set, Anope will set these user modes on any user who identifies.
* If set, Services will set these user modes on any user who identifies.
*
* This directive is optional.
*/
#modesonid = "+R"
/*
* If set, Anope will not show netsplits in the last quit message field
* If set, Services will not show netsplits in the last quit message field
* of NickServ's INFO command.
*/
hidenetsplitquit = no
@ -166,7 +166,7 @@ module
/*
* If set, forbids the registration of nicks that contain an existing
* nick with services access. For example, if Tester is a Services Oper,
* nick with Services access. For example, if Tester is a Services Oper,
* you can't register NewTester or Tester123 unless you are an IRC
* Operator.
*
@ -179,14 +179,14 @@ module
#restrictopernicks = yes
/*
* The username, and possibly hostname, used for fake users created when Anope needs to
* The username, and possibly hostname, used for fake users created when Services needs to
* hold a nickname.
*/
enforceruser = "enforcer"
enforcerhost = "services.host"
/*
* The length of time Anope should hold nicknames for.
* The length of time Services hold nicknames.
*
* This directive is optional, but recommended. If not set it defaults to 1 minute.
*/
@ -202,23 +202,16 @@ module
guestnickprefix = "Guest"
/*
* If set, Anope does not allow ownership of nick names, only ownership of accounts.
* If set, Services do not allow ownership of nick names, only ownership of accounts.
*/
nonicknameownership = no
/*
* The minimum length of passwords
*
* This directive is optional. If not set it defaults to 10.
*/
minpasslen = 10
/*
* The maximum length of passwords
*
* This directive is optional. If not set it defaults to 50.
* This directive is optional. If not set it defaults to 32.
*/
maxpasslen = 50
passlen = 32
}
/*
@ -246,6 +239,33 @@ command_group
/* Give it a help command. */
command { service = "NickServ"; name = "HELP"; command = "generic/help"; }
/*
* ns_access
*
* Provides the command nickserv/access.
*
* Used for configuring what hosts have access to your account.
*/
module
{
name = "ns_access"
/*
* The maximum number of entries allowed on a nickname's access list.
* If not set, the default is 32. This number cannot be set to 0.
*/
accessmax = 32
/*
* If set, Services will add the usermask of registering users to the access list of their
* newly created account. If not set, users will always have to identify to NickServ before
* being recognized, unless they manually add an address to the access list of their account.
* This directive is optional.
*/
addaccessonreg = no
}
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
/*
* ns_ajoin
*
@ -273,7 +293,6 @@ command { service = "NickServ"; name = "AJOIN"; command = "nickserv/ajoin"; }
*/
module { name = "ns_alist" }
command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; }
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/alist"; hide = true; }
/*
* ns_cert
@ -314,6 +333,18 @@ command { service = "NickServ"; name = "DROP"; command = "nickserv/drop"; }
module { name = "ns_getemail" }
command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
/*
* ns_getpass
*
* Provides the command nickserv/getpass.
*
* Used for getting users passwords.
*
* Requires no encryption is being used.
*/
#module { name = "ns_getpass" }
#command { service = "NickServ"; name = "GETPASS"; command = "nickserv/getpass"; permission = "nickserv/getpass"; }
/*
* ns_group
*
@ -330,7 +361,7 @@ module
*
* This directive is optional, but recommended. If not set or set to 0, no limits will be applied.
*/
maxaliases = 10
maxaliases = 16
/*
* If set, the NickServ GROUP command won't allow any group changes. This is recommended to
@ -424,7 +455,7 @@ module
name = "ns_recover"
/*
* If set, Anope will svsnick and svsjoin users who use the recover
* If set, Services will svsnick and svsjoin users who use the recover
* command on an identified user to the nick and channels of the recovered user.
*
* This directive is optional.
@ -432,10 +463,9 @@ module
restoreonrecover = yes
}
command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover"; }
# For compatibility with Anope 1.8 and Atheme.
command { service = "NickServ"; name = "GHOST"; command = "nickserv/recover"; hide = true; }
command { service = "NickServ"; name = "RELEASE"; command = "nickserv/recover"; hide = true; }
# Uncomment below to emulate 1.8's behavior of ghost and release.
#command { service = "NickServ"; name = "GHOST"; command = "nickserv/recover"; }
#command { service = "NickServ"; name = "RELEASE"; command = "nickserv/recover"; }
/*
* ns_register
@ -468,7 +498,7 @@ module
*
* This directive is optional.
*/
nickregdelay = 15s
#nickregdelay = 30s
/*
* The length of time a user using an unconfirmed account has
@ -502,9 +532,9 @@ command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpas
* nickserv/set/kill, nickserv/saset/kill - Used for configuring nickname protection.
* nickserv/set/language, nickserv/saset/language - Used for configuring what language services use.
* nickserv/set/message, nickserv/saset/message - Used to configure how services send messages to you.
* nickserv/set/neverop, nickserv/saset/neverop - Used to configure whether a user can be added to access lists
* nickserv/saset/noexpire - Used for configuring noexpire, which prevents nicks from expiring.
* nickserv/set/password, nickserv/saset/password - Used for changing a users password.
* nickserv/set/secure, nickserv/saset/secure - Used for configuring whether a user can identify by simply being recognized by nickserv/access.
* nickserv/saset/noexpire - Used for configuring noexpire, which prevents nicks from expiring.
*/
module
{
@ -545,8 +575,8 @@ command { service = "NickServ"; name = "SASET MESSAGE"; command = "nickserv/sase
command { service = "NickServ"; name = "SET PASSWORD"; command = "nickserv/set/password"; }
command { service = "NickServ"; name = "SASET PASSWORD"; command = "nickserv/saset/password"; permission = "nickserv/saset/password"; }
command { service = "NickServ"; name = "SET NEVEROP"; command = "nickserv/set/neverop"; }
command { service = "NickServ"; name = "SASET NEVEROP"; command = "nickserv/saset/neverop"; permission = "nickserv/saset/neverop"; }
command { service = "NickServ"; name = "SET SECURE"; command = "nickserv/set/secure"; }
command { service = "NickServ"; name = "SASET SECURE"; command = "nickserv/saset/secure"; permission = "nickserv/saset/secure"; }
command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; permission = "nickserv/saset/noexpire"; }
@ -562,12 +592,22 @@ command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/sas
module { name = "ns_set_misc" }
command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET DISCORD"; command = "nickserv/set/misc"; misc_description = _("Associate a Discord account with your account"); }
#command { service = "NickServ"; name = "SASET DISCORD"; command = "nickserv/saset/misc"; misc_description = _("Associate a Discord account with this account"); permission = "nickserv/saset/discord"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET ICQ"; command = "nickserv/set/misc"; misc_description = _("Associate an ICQ account with your account"); }
#command { service = "NickServ"; name = "SASET ICQ"; command = "nickserv/saset/misc"; misc_description = _("Associate an ICQ account with this account"); permission = "nickserv/saset/icq"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET TWITTER"; command = "nickserv/set/misc"; misc_description = _("Associate a Twitter account with your account"); }
#command { service = "NickServ"; name = "SASET TWITTER"; command = "nickserv/saset/misc"; misc_description = _("Associate a Twitter account with this account"); permission = "nickserv/saset/twitter"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET FACEBOOK"; command = "nickserv/set/misc"; misc_description = _("Associate a Facebook URL with your account"); }
#command { service = "NickServ"; name = "SASET FACEBOOK"; command = "nickserv/saset/misc"; misc_description = _("Associate a Facebook URL with this account"); permission = "nickserv/saset/facebook"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET MASTODON"; command = "nickserv/set/misc"; misc_description = _("Associate a Mastodon account with your account"); }
#command { service = "NickServ"; name = "SASET MASTODON"; command = "nickserv/saset/misc"; misc_description = _("Associate a Mastodon account with this account"); permission = "nickserv/saset/mastodon"; group = "nickserv/admin"; }
/*
* ns_status
*
* Provides the nickserv/status command.
*
* Used to determine if a user is recognized or identified by services.
*/
module { name = "ns_status" }
command { service = "NickServ"; name = "STATUS"; command = "nickserv/status"; }
/*
* ns_suspend
@ -623,7 +663,7 @@ command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
name = "ns_maxemail"
/*
* The limit to how many registered nicks can use the same email address. If set to 0 or left
* The limit to how many registered nicks can use the same e-mail address. If set to 0 or left
* commented, there will be no limit enforced when registering new accounts or using
* /msg NickServ SET EMAIL.
*/

View file

@ -75,7 +75,7 @@ module
sqlineexpiry = 30d
/*
* If set, this option will make Anope send an AKILL command immediately after it has been
* If set, this option will make Services send an AKILL command immediately after it has been
* added with AKILL ADD. This eliminates the need for killing the user after the AKILL has
* been added.
*
@ -84,7 +84,7 @@ module
akillonadd = yes
/*
* If set, this option will make Anope send an (SVS)KILL command immediately after SNLINE ADD.
* If set, this option will make Services send an (SVS)KILL command immediately after SNLINE ADD.
* This eliminates the need for killing the user after the SNLINE has been added.
*
* This directive is optional.
@ -92,7 +92,7 @@ module
killonsnline = yes
/*
* If set, this option will make Anope send an (SVS)KILL command immediately after SQLINE ADD.
* If set, this option will make Services send an (SVS)KILL command immediately after SQLINE ADD.
* This eliminates the need for killing the user after the SQLINE has been added.
*
* This directive is optional.
@ -167,7 +167,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
name = "os_defcon"
/*
* Default DefCon level (1-5) to use when starting Anope up. Level 5 constitutes normal operation
* Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
* while level 1 constitutes the most restrictive operation. If this setting is left out or set to
* 0, DefCon will be disabled and the rest of this block will be ignored.
*/
@ -184,8 +184,8 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
* - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
* - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
* - nonewclients: KILL any new clients trying to connect
* - operonly: Ignore all non-IRCops
* - silentoperonly: Silently ignore all non-IRCops
* - operonly: Services will ignore all non-IRCops
* - silentoperonly: Services will silently ignore all non-IRCops
* - akillnewclients: AKILL any new clients trying to connect
* - nonewmemos: No new memos will be sent to block MemoServ attacks
*/
@ -209,7 +209,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
* The channel modes to set on all channels when the DefCon channel mode system is in use.
*
* Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
* the mode setting selected, Anope will set the reverse on all channels, e.g. if this setting
* the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
* is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
* channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
* is removed, all channels are set -k, removing the key from previously keyed channels.
@ -227,14 +227,14 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
#timeout = 15m
/*
* If set, Anope will send a global message on DefCon level changes.
* If set, Services will send a global message on DefCon level changes.
*
* This directive is optional.
*/
#globalondefcon = yes
/*
* If set, Anope will send the global message defined in the message directive on DefCon level
* If set, Services will send the global message defined in the message directive on DefCon level
* changes.
*
* This directive is optional.
@ -267,7 +267,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*
* Provides the command operserv/dns.
*
* This module requires that dns is loaded.
* This module requires that m_dns is loaded.
*
* This module allows controlling a DNS zone. This is useful for
* controlling what servers users are placed on for load balancing,
@ -348,7 +348,7 @@ command { service = "OperServ"; name = "FORBID"; command = "operserv/forbid"; pe
*
* Provides the command operserv/ignore.
*
* Used to make Anope ignore users.
* Used to make Services ignore users.
*/
module { name = "os_ignore" }
command { service = "OperServ"; name = "IGNORE"; command = "operserv/ignore"; permission = "operserv/ignore"; }
@ -506,6 +506,17 @@ command { service = "OperServ"; name = "RANDOMNEWS"; command = "operserv/randomn
module { name = "os_noop" }
command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permission = "operserv/noop"; }
/*
* os_oline
*
* Provides the command operserv/oline.
*
* Used to set oper flags on users, and is specific to UnrealIRCd 3.2.
* See /helpop ?svso on your IRCd for more information.
*/
#module { name = "os_oline" }
#command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
/*
* os_oper
*
@ -521,7 +532,7 @@ command { service = "OperServ"; name = "OPER"; command = "operserv/oper"; permis
*
* Provides the command operserv/reload.
*
* Used to reload the anope.conf configuration file.
* Used to reload the services.conf configuration file.
*/
module { name = "os_reload" }
command { service = "OperServ"; name = "RELOAD"; command = "operserv/reload"; permission = "operserv/reload"; }
@ -548,7 +559,7 @@ module
*
* This directive is required if os_session is loaded.
*/
defaultsessionlimit = 5
defaultsessionlimit = 3
/*
* The maximum session limit that may be set for a host in an exception.
@ -584,7 +595,7 @@ module
#sessionlimitdetailsloc = "Please visit https://your.website.url/ for more information about session limits."
/*
* If set and is not 0, this directive tells Anope to add an AKILL if the number of subsequent kills
* If set and is not 0, this directive tells Services to add an AKILL if the number of subsequent kills
* for the same host exceeds this value, preventing the network from experiencing KILL floods.
*
* This directive is optional.

View file

@ -1,8 +1,8 @@
/*
* Example configuration file for Anope. After making the appropriate
* changes to this file, place it in the Anope conf directory (as
* specified in the "Config" script, default /home/username/anope/conf)
* under the name "anope.conf".
* Example configuration file for Services. After making the appropriate
* changes to this file, place it in the Services conf directory (as
* specified in the "configure" script, default /home/username/services/conf)
* under the name "services.conf".
*
* The format of this file is fairly simple: three types of comments are supported:
* - All text after a '#' on a line is ignored, as in shell scripting
@ -53,7 +53,7 @@
* included to indicate whether an option is required:
*
* [REQUIRED]
* Indicates a directive which must be given. Without it, Anope will
* Indicates a directive which must be given. Without it, Services will
* not start.
*
* [RECOMMENDED]
@ -71,7 +71,7 @@
*
* [DEPRECATED]
* Indicates a directive which will disappear in a future version of
* Anope, usually because its functionality has been either
* Services, usually because its functionality has been either
* superseded by that of other directives or incorporated into the main
* program.
*/
@ -90,7 +90,7 @@
define
{
name = "services.host"
value = "services.example.com"
value = "services.localhost.net"
}
/*
@ -110,7 +110,7 @@ define
#include
{
type = "executable"
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/anope.conf"
name = "/usr/bin/wget -q -O - https://some.misconfigured.network.com/services.conf"
}
/*
@ -120,23 +120,20 @@ define
* This section can be included multiple times, and Anope will attempt to
* connect to each server until it finally connects.
*
* Each uplink IRCd should have a corresponding configuration to allow Anope
* Each uplink IRCd should have a corresponding configuration to allow Services
* to link to it.
*
* An example configuration for InspIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
*
* # This goes in inspircd.conf, *NOT* your Anope config!
* <module name="hidechans">
* <module name="services_account">
* <module name="spanningtree">
* <bind address="127.0.0.1" port="7000" type="servers">
* <link name="services.example.com"
* <link name="services.localhost.net"
* ipaddr="127.0.0.1"
* port="7000"
* sendpass="mypassword"
* recvpass="mypassword">
* <uline server="services.example.com" silent="yes">
* <uline server="services.localhost.net" silent="yes">
* <bind address="127.0.0.1" port="7000" type="servers">
*
* An example configuration for UnrealIRCd that is compatible with the below uplink
* and serverinfo configuration would look like:
@ -149,34 +146,32 @@ define
* serversonly;
* };
* };
* link services.example.com {
* link services.localhost.net {
* incoming {
* mask *@127.0.0.1;
* };
* password "mypassword";
* class servers;
* };
* ulines { services.example.com; };
* ulines { services.localhost.net; };
*/
uplink
{
/*
* The IP address, hostname, or UNIX socket path of the IRC server you wish
* to connect Anope to.
* Usually, you will want to connect over 127.0.0.1 (aka localhost).
* The IP or hostname of the IRC server you wish to connect Services to.
* Usually, you will want to connect Services over 127.0.0.1 (aka localhost).
*
* NOTE: On some shell providers, this will not be an option.
*/
host = "127.0.0.1"
/*
* The protocol that Anope should use when connecting to the uplink. Can
* be set to "ipv4" (the default), "ipv6", or "unix".
* Enable if Services should connect using IPv6.
*/
protocol = "ipv4"
ipv6 = no
/*
* Enable if Anope should connect using SSL.
* Enable if Services should connect using SSL.
* You must have an SSL module loaded for this to work.
*/
ssl = no
@ -202,26 +197,26 @@ uplink
/*
* [REQUIRED] Server Information
*
* This section contains information about the services server.
* This section contains information about the Services server.
*/
serverinfo
{
/*
* The hostname that Anope will be seen as, it must have no conflicts with any
* The hostname that Services will be seen as, it must have no conflicts with any
* other server names on the rest of your IRC network. Note that it does not have
* to be an existing hostname, just one that isn't on your network already.
*/
name = "services.example.com"
name = "services.localhost.net"
/*
* The text which should appear as the server's information in /WHOIS and similar
* queries.
*/
description = "Anope IRC Services"
description = "Services for IRC Networks"
/*
* The local address that Anope will bind to before connecting to the remote
* server. This may be useful for multihomed hosts. If omitted, Anope will let
* The local address that Services will bind to before connecting to the remote
* server. This may be useful for multihomed hosts. If omitted, Services will let
* the Operating System choose the local address. This directive is optional.
*
* If you don't know what this means or don't need to use it, just leave this
@ -237,16 +232,16 @@ serverinfo
#id = "00A"
/*
* The filename containing the Anope process ID. The path is relative to the
* data directory.
* The filename containing the Services process ID. The path is relative to the
* services root directory.
*/
pid = "/run/anope/anope.pid"
pid = "/run/anope/services.pid"
/*
* The filename containing the Message of the Day. The path is relative to the
* config directory.
* services root directory.
*/
motd = "motd"
motd = "/etc/anope/services.motd"
}
/*
@ -257,17 +252,20 @@ serverinfo
*
* Supported:
* - bahamut
* - charybdis
* - hybrid
* - inspircd
* - inspircd12
* - inspircd20
* - inspircd3
* - ngircd
* - plexus
* - ratbox
* - solanum
* - unrealircd
* - unreal (for 3.2.x)
* - unreal4 (for 4.x or later)
*/
module
{
name = "inspircd"
name = "inspircd20"
/*
* Some protocol modules can enforce mode locks server-side. This reduces the spam caused by
@ -289,49 +287,48 @@ module
/*
* [REQUIRED] Network Information
*
* This section contains information about the IRC network that Anope will be
* This section contains information about the IRC network that Services will be
* connecting to.
*/
networkinfo
{
/*
* This is the name of the network that Anope will be running on.
* This is the name of the network that Services will be running on.
*/
networkname = "LocalNet"
/*
* Set this to the maximum allowed nick length on your network.
* Be sure to set this correctly, as setting this wrong can result in
* Anope being disconnected from the network. Defaults to 31.
* Services being disconnected from the network.
*/
#nicklen = 31
nicklen = 31
/* Set this to the maximum allowed ident length on your network.
* Be sure to set this correctly, as setting this wrong can result in
* Anope being disconnected from the network. Defaults to 10.
* Services being disconnected from the network.
*/
#userlen = 10
userlen = 10
/* Set this to the maximum allowed hostname length on your network.
* Be sure to set this correctly, as setting this wrong can result in
* Anope being disconnected from the network. Defaults to 64.
* Services being disconnected from the network.
*/
#hostlen = 64
hostlen = 64
/* Set this to the maximum allowed channel length on your network.
* Defaults to 32.
*/
#chanlen = 32
chanlen = 32
/* The maximum number of list modes settable on a channel (such as b, e, I).
* Set to 0 to disable. Defaults to 100.
* Comment out or set to 0 to disable.
*/
#modelistsize = 100
modelistsize = 100
/*
* Characters allowed in nicknames. This always includes the characters described
* in RFC1459, and so does not need to be set for normal behavior. Changing this to
* include characters your IRCd doesn't support will cause your IRCd and/or Anope
* include characters your IRCd doesn't support will cause your IRCd and/or Services
* to break. Multibyte characters are not supported, nor are escape sequences.
*
* It is recommended you DON'T change this.
@ -343,7 +340,7 @@ networkinfo
* to services, such as BotServ bot hostnames and user vhosts. Changing this is not
* recommended unless you know for sure your IRCd supports whatever characters you are
* wanting to use. Telling services to set a vHost containing characters your IRCd
* disallows could potentially break the IRCd and/or Anope.
* disallows could potentially break the IRCd and/or Services.
*
* It is recommended you DON'T change this.
*/
@ -368,22 +365,22 @@ networkinfo
}
/*
* [REQUIRED] Anope Options
* [REQUIRED] Services Options
*
* This section contains various options which determine how Anope will operate.
* This section contains various options which determine how Services will operate.
*/
options
{
/*
* On Linux/UNIX systems Anope can setuid and setgid to this user and group
* after starting up. This is useful if Anope has to bind to privileged ports.
* after starting up. This is useful if Anope has to bind to privileged ports
*/
#user = "anope"
#group = "anope"
/*
* The case mapping used by services. This must be set to a valid locale name
* installed on your machine. Anope uses this case map to compare, with
* installed on your machine. Services use this case map to compare, with
* case insensitivity, things such as nick names, channel names, etc.
*
* We provide two special casemaps shipped with Anope, ascii and rfc1459.
@ -396,11 +393,36 @@ options
casemap = "ascii"
/*
* Sets the number of invalid password tries before services removes a user
* This key is used to initiate the random number generator. This number
* MUST be random as you want your passcodes to be random. Don't give this
* key to anyone! Keep it private!
*
* NOTE: If you don't uncomment this or keep the default values, any talented
* programmer would be able to easily "guess" random strings used to mask
* information. Be safe, and come up with a 7-digit number.
*
* This directive is optional, but highly recommended.
*/
#seed = 9866235
/*
* If set, Services will perform more stringent checks on passwords. If this
* isn't set, Services will only disallow a password if it is the same as the
* entity (nickname name) with which it is associated. When set, however,
* Services will also check that the password is at least five
* characters long, and in the future will probably check other things
* as well.
*
* This directive is optional, but recommended.
*/
strictpasswords = yes
/*
* Sets the number of invalid password tries before Services removes a user
* from the network. If a user enters a number of invalid passwords equal to
* the given amount for any services function or combination of functions
* during a single IRC session (subject to badpasstimeout, below), services
* will issues a /KILL for the user. If not given, services will ignore
* the given amount for any Services function or combination of functions
* during a single IRC session (subject to badpasstimeout, below), Services
* will issues a /KILL for the user. If not given, Services will ignore
* failed password attempts (though they will be logged in any case).
*
* This directive is optional, but recommended.
@ -442,7 +464,7 @@ options
/*
* Sets the (maximum) frequency at which the timeout list is checked. This,
* combined with readtimeout above, determines how accurately timed events,
* such as nick kills, occur; it also determines how much CPU time services
* such as nick kills, occur; it also determines how much CPU time Services
* will use doing this. Higher values will cause less accurate timing but
* less CPU usage.
*
@ -455,7 +477,7 @@ options
timeoutcheck = 3s
/*
* If set, this will allow users to let services send PRIVMSGs to them
* If set, this will allow users to let Services send PRIVMSGs to them
* instead of NOTICEs. Also see the "msg" option of nickserv:defaults,
* which also toggles the default communication (PRIVMSG or NOTICE) to
* use for unregistered users.
@ -468,8 +490,8 @@ options
#useprivmsg = yes
/*
* If set, will force services to only respond to PRIVMSGs addresses to
* Nick@ServerName - e.g. NickServ@example.com. This should be used in
* If set, will force Services to only respond to PRIVMSGs addresses to
* Nick@ServerName - e.g. NickServ@localhost.net. This should be used in
* conjunction with IRCd aliases. This directive is optional.
*
* This option will have no effect on some IRCds, such as TS6 IRCds.
@ -477,14 +499,14 @@ options
#usestrictprivmsg = yes
/*
* If set, Anope will only show /stats o to IRC Operators. This directive
* If set, Services will only show /stats o to IRC Operators. This directive
* is optional.
*/
#hidestatso = yes
/*
* A space-separated list of U-lined servers on your network, it is assumed that
* the servers in this list are allowed to set channel modes and Anope will
* the servers in this list are allowed to set channel modes and Services will
* not attempt to reverse their mode changes.
*
* WARNING: Do NOT put your normal IRC user servers in this directive.
@ -499,29 +521,23 @@ options
retrywait = 60s
/*
* If set, services will hide commands that users don't have the privilege to execute
* If set, Services will hide commands that users don't have the privilege to execute
* from HELP output.
*/
hideprivilegedcommands = yes
/*
* If set, services will hide commands that users can't execute because they are not
* If set, Services will hide commands that users can't execute because they are not
* logged in from HELP output.
*/
hideregisteredcommands = yes
/*
* If set, the maximum difference between an invalid and valid command name to allow
* as a suggestion. Defaults to 4.
*/
didyoumeandifference = 4
/* The regex engine to use, as provided by the regex modules.
* Leave commented to disable regex matching.
*
* Note for this to work the regex module providing the regex engine must be loaded.
*/
#regexengine = "regex/stdlib"
#regexengine = "regex/pcre"
/*
* A list of languages to load on startup that will be available in /NICKSERV SET LANGUAGE.
@ -644,8 +660,7 @@ log
* - a channel name
* - a filename
* - globops
*
* If you specify a filename the current date in the format ".YYYYMMDD" will be appended to the path.
* At Fedora and RHEL/CentOS, the path is relative to the /var/log/anope directory.
*/
target = "services.log"
@ -696,7 +711,7 @@ log
* means "* ~operserv/*" would log everything because * matches everything.
*
* Valid admin, override, and command options are:
* pseudo-serv/commandname (e.g. operserv/akill, chanserv/set)
* pesudo-serv/commandname (e.g. operserv/akill, chanserv/set)
*
* Valid server options are:
* connect, quit, sync, squit
@ -729,7 +744,7 @@ log
{
bot = "Global"
target = "globops"
admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
servers = "squit"
users = "oper"
other = "expire/* bados akill/*"
@ -742,6 +757,7 @@ log
* You may define groups of commands and privileges, as well as who may use them.
*
* This block is recommended, as without it you will be unable to access most oper commands.
* It replaces the old ServicesRoot directive amongst others.
*
* The command names below are defaults and are configured in the *serv.conf's. If you configure
* additional commands with permissions, such as commands from third party modules, the permissions
@ -759,15 +775,15 @@ log
* memoserv/info - Can see any information with /MEMOSERV INFO
* memoserv/set-limit - Can set the limit of max stored memos on any user and channel
* memoserv/no-limit - Can send memos through limits and throttles
* nickserv/access - Can modify other users access and certificate lists
* nickserv/alist - Can see the channel access list of other users
* nickserv/auspex - Can see any information with /NICKSERV INFO
* nickserv/cert - Can modify other users certificate lists
* nickserv/confirm - Can confirm other users nicknames
* nickserv/drop - Can drop other users nicks
* nickserv/recover - Can recover other users nicks
* operserv/config - Can modify services's configuration
* operserv/oper/modify - Can add and remove operators with at most the same privileges
* protected - Can not be kicked from channels by services
* protected - Can not be kicked from channels by Services
*
* Available commands:
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/set/private
@ -780,16 +796,17 @@ log
*
* memoserv/sendall memoserv/staff
*
* nickserv/getemail nickserv/suspend nickserv/ajoin nickserv/list
* nickserv/getpass nickserv/getemail nickserv/suspend nickserv/ajoin
* nickserv/list
*
* nickserv/saset/autoop nickserv/saset/display nickserv/saset/email nickserv/saset/greet
* nickserv/saset/kill nickserv/saset/keepmodes nickserv/saset/language nickserv/saset/message
* nickserv/saset/neverop nickserv/saset/noexpire nickserv/saset/password nickserv/saset/private
* nickserv/saset/url
* nickserv/saset/autoop nickserv/saset/email nickserv/saset/greet nickserv/saset/password
* nickserv/saset/display nickserv/saset/kill nickserv/saset/language nickserv/saset/message
* nickserv/saset/private nickserv/saset/secure nickserv/saset/url nickserv/saset/noexpire
* nickserv/saset/keepmodes
*
* hostserv/set hostserv/del hostserv/list
*
* global/global global/queue global/server
* global/global
*
* operserv/news operserv/stats operserv/kick operserv/exception operserv/seen
* operserv/mode operserv/session operserv/modinfo operserv/ignore operserv/chanlist
@ -797,7 +814,7 @@ log
* operserv/oper operserv/config operserv/umode operserv/logsearch
* operserv/modload operserv/jupe operserv/set operserv/noop
* operserv/quit operserv/update operserv/reload operserv/restart
* operserv/shutdown operserv/svs operserv/kill
* operserv/shutdown operserv/svs operserv/oline operserv/kill
*
* Firstly, we define 'opertypes' which are named whatever we want ('Network Administrator', etc).
* These can contain commands for oper-only strings (see above) which grants access to that specific command,
@ -851,7 +868,7 @@ opertype
inherits = "Services Operator"
commands = "botserv/* chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/noop operserv/forbid global/*"
commands = "botserv/* chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*"
privs = "*"
}
@ -869,10 +886,10 @@ opertype
* After defining different types of operators in the above opertype section, we now define who is in these groups
* through 'oper' blocks, similar to ircd access.
*
* The default is to comment these out (so NOBODY will have access).
* The default is to comment these out (so NOBODY will have Services access).
* You probably want to add yourself and a few other people at minimum.
*
* As with all permissions, make sure to only give trustworthy people access.
* As with all permissions, make sure to only give trustworthy people access to Services.
*/
#oper
@ -883,7 +900,7 @@ opertype
/* The opertype this person will have */
type = "Services Root"
/* If set, the user must be an oper on the IRCd to gain their
/* If set, the user must be an oper on the IRCd to gain their Services
* oper privileges.
*/
require_oper = yes
@ -918,7 +935,7 @@ opertype
/*
* [OPTIONAL] Mail Config
*
* This section contains settings related to the use of email from services.
* This section contains settings related to the use of e-mail from Services.
* If the usemail directive is set to yes, unless specified otherwise, all other
* directives are required.
*
@ -929,7 +946,7 @@ opertype
mail
{
/*
* If set, this option enables the mail commands in Anope. You may choose
* If set, this option enables the mail commands in Services. You may choose
* to disable it if you have no Sendmail-compatible mailer installed. Whilst
* this directive (and entire block) is optional, it is required if
* nickserv:registration is set to yes.
@ -938,7 +955,7 @@ mail
/*
* This is the command-line that will be used to call the mailer to send an
* email. It must be called with all the parameters needed to make it
* e-mail. It must be called with all the parameters needed to make it
* scan the mail input to find the mail recipient; consult your mailer
* documentation.
*
@ -947,20 +964,20 @@ mail
* sendmail applications (or replacements of it) require the -t option
* to be used.
*/
#sendmailpath = "/usr/sbin/sendmail -it"
sendmailpath = "/usr/sbin/sendmail -t"
/*
* This is the email address from which all the emails are to be sent from.
* This is the e-mail address from which all the e-mails are to be sent from.
* It should really exist.
*/
sendfrom = "services@example.com"
sendfrom = "services@localhost.net"
/*
* This controls the minimum amount of time a user must wait before sending
* another email after they have sent one. It also controls the minimum time
* a user must wait before they can receive another email.
* another e-mail after they have sent one. It also controls the minimum time
* a user must wait before they can receive another e-mail.
*
* This feature prevents users from being mail bombed using services and
* This feature prevents users from being mail bombed using Services and
* it is highly recommended that it be used.
*
* This directive is optional, but highly recommended.
@ -968,22 +985,14 @@ mail
delay = 5m
/*
* If set, Anope will not put quotes around the TO: fields
* in emails.
* If set, Services will not attempt to put quotes around the TO: fields
* in e-mails.
*
* This directive is optional, and as far as we know, it's only needed
* if you are using ESMTP or QMail to send out emails.
* if you are using ESMTP or QMail to send out e-mails.
*/
#dontquoteaddresses = yes
/*
* The content type to use when sending emails.
*
* This directive is optional, and is generally only needed if you want to
* use HTML or non UTF-8 text in your services emails.
*/
#content_type = "text/plain; charset=UTF-8"
/*
* The subject and message of emails sent to users when they register accounts.
*
@ -1089,22 +1098,6 @@ mail
#hash = "md5"
}
/*
* db_atheme
*
* This allows importing databases from Atheme. You should load another database module as
* well as this as it can only read Atheme databases not write them.
*/
#module
{
name = "db_atheme"
/*
* The database name db_atheme should use.
*/
database = "atheme.db"
}
/*
* [RECOMMENDED] db_flatfile
*
@ -1121,18 +1114,18 @@ module
/*
* Sets the number of days backups of databases are kept. If you don't give it,
* or if you set it to 0, Anope won't backup the databases.
* or if you set it to 0, Services won't backup the databases.
*
* NOTE: Anope must run 24 hours a day for this feature to work.
* NOTE: Services must run 24 hours a day for this feature to work.
*
* This directive is optional, but recommended.
*/
keepbackups = 3
/*
* Allows Anope to continue file write operations (i.e. database saving)
* Allows Services to continue file write operations (i.e. database saving)
* even if the original file cannot be backed up. Enabling this option may
* allow Anope to continue operation under conditions where it might
* allow Services to continue operation under conditions where it might
* otherwise fail, such as a nearly-full disk.
*
* NOTE: Enabling this option can cause irrecoverable data loss under some
@ -1205,7 +1198,7 @@ module
* db_redis.
*
* This module allows using Redis (https://redis.io/) as a database backend.
* This module requires that redis is loaded and configured properly.
* This module requires that m_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
@ -1217,7 +1210,7 @@ module
name = "db_redis"
/*
* Redis database to use. This must be configured with redis.
* Redis database to use. This must be configured with m_redis.
*/
engine = "redis/main"
}
@ -1225,121 +1218,50 @@ module
/*
* [RECOMMENDED] Encryption modules.
*
* The encryption modules are used when dealing with passwords. This determines
* how the passwords are stored in the databases.
* The encryption modules are used when dealing with passwords. This determines how
* the passwords are stored in the databases, and does not add any security as
* far as transmitting passwords over the network goes.
*
* 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.
*
* 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.
*
* The other encryption modules use one-way encryption, so the passwords can not
* be recovered later if those are used.
*
* The first encryption module loaded is the primary encryption module. All new passwords are
* encrypted by this module. Old passwords stored in another encryption method are
* automatically re-encrypted by the primary encryption module on next identify.
*
* enc_md5, enc_sha1, and enc_old are deprecated, and are provided for users
* to upgrade to a newer encryption module. Do not use them as the primary
* encryption module. They will be removed in a future release.
*
* The first encryption module loaded is the primary encryption module. All new
* passwords are encrypted by this module. Old passwords encrypted with another
* encryption method are automatically re-encrypted with the primary encryption
* module the next time the user identifies.
*/
#module { name = "enc_bcrypt" }
module { name = "enc_sha256" }
/*
* enc_sha2
*
* Provides support for encrypting passwords using the HMAC-SHA-2 algorithm. See
* https://en.wikipedia.org/wiki/SHA-2 and https://en.wikipedia.org/wiki/HMAC
* for more information.
* When using enc_none, passwords will be stored without encryption. This isn't secure
* therefore it is not recommended.
*/
module
{
name = "enc_sha2"
/** The sub-algorithm to use. Can be set to sha224 for SHA-224, sha256 for
* SHA-256, sha284 for SHA-384 or sha512 to SHA-512. Defaults to sha256.
*/
#algorithm = "sha256"
}
/*
* [EXTRA] enc_argon2
*
* Provides support for encrypting passwords using the Argon2 algorithm. See
* https://en.wikipedia.org/wiki/Argon2 for more information.
*/
#module
{
name = "enc_argon2"
/** The sub-algorithm to use. Can be set to argon2d for Argon2d, argon2i for
* Argon2i, or argon2id for Argon2id. Defaults to argon2id.
*/
#algorithm = "argon2id"
/** The memory hardness in kibibytes of the Argon2 algorithm. Defaults to
* 128 mebibytes.
*/
#memory_cost = 121072
/** The time hardness (iterations) of the Argon2 algorithm. Defaults to 3.
*/
#time_cost = 3
/** The amount of parallel threads to use when encrypting passwords.
* Defaults to 1.
*/
#parallelism = 1
/** The length in bytes of an Argon2 hash. Defaults to 32. */
#hash_length = 32
/** The length in bytes of an Argon2 salt. Defaults to 32. */
#salt_length = 32
}
/*
* enc_bcrypt
*
* Provides support for encrypting passwords using the Bcrypt algorithm. See
* https://en.wikipedia.org/wiki/Bcrypt for more information.
*/
#module
{
name = "enc_bcrypt"
/** The number of Bcrypt rounds to perform on passwords. Can be set to any
* number between 10 and 32 but higher numbers are more CPU intensive and
* may impact performance.
*/
#rounds = 10
}
/*
* [EXTRA] enc_posix
*
* Provides verify-only support for passwords encrypted using the POSIX crypt()
* function. Load this if you are migratign from another services packages such
* as Atheme. See https://en.wikipedia.org/wiki/Crypt_(C) for more information.
*
* You must load another encryption method before this to re-encrypt passwords
* with when a user logs in.
*/
#module { name = "enc_posix" }
/*
* [DEPRECATED] enc_md5, enc_none, enc_old, enc_sha1, enc_sha256
*
* Provides verify-only support for passwords encrypted using encryption methods
* from older versions of Anope. These methods are no longer considered secure
* and will be removed in a future version of Anope. Only load them if you are
* upgrading from a previous version of Anope that used them.
*
* enc_md5: Verifies passwords encrypted with the MD5 algorithm
* enc_none: Verifies passwords that are not encrypted
* enc_sha1: Verifies passwords encrypted with the SHA1 algorithm
* enc_old: Verifies passwords encrypted with the broken MD5 algorithm used
* before 1.7.17.
* enc_sha256: Verifies passwords encrypted with the SHA256 algorithm using a
* custom initialisation vector as a salt.
*
* You must load another encryption method before this to re-encrypt passwords
* with when a user logs in.
*/
#module { name = "enc_md5" }
#module { name = "enc_none" }
#module { name = "enc_old" }
/* Deprecated encryption modules */
#module { name = "enc_md5" }
#module { name = "enc_sha1" }
#module { name = "enc_sha256" }
/*
* enc_old is Anope's previous (broken) MD5 implementation used from 1.4.x to 1.7.16.
* If your databases were made using that module, load it here to allow conversion to the primary
* encryption method.
*/
#module { name = "enc_old" }
/* Extra (optional) modules. */
include

View file

@ -6,8 +6,9 @@ After=network.target
User=anope
Group=anope
Type=forking
PIDFile=/run/anope/anope.pid
PIDFile=/run/anope/services.pid
EnvironmentFile=-/etc/sysconfig/anope
#ExecStart=/usr/sbin/anope --confdir=/etc/anope --dbdir=/var/lib/anope --logdir=/var/log/anope --modulesdir=/usr/lib64/anope --localedir=/usr/share/locale $OPTIONS
ExecStart=/usr/sbin/anope $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

View file

@ -2,7 +2,7 @@
%bcond_without ldap
%bcond_without mysql
%bcond_without pcre2
%bcond_without pcre
%bcond_without tre
%bcond_without sqlite
%bcond_without gnutls
@ -10,57 +10,50 @@
Summary: IRC services designed for flexibility and ease of use
Name: anope
Version: 2.1.4
Release: 5%{?dist}
# Anope itself is GPL-2.0-only but uses other source codes, breakdown:
# BSD-3-Clause: include/pstdint.h and modules/encryption/enc_sha256.cpp
Version: 2.0.9
Release: 2%{?dist}
# Anope itself is GPLv2 but uses other source codes, breakdown:
# BSD: include/pstdint.h and modules/encryption/enc_sha256.cpp
# MIT: src/siphash.cpp
# LicenseRef-Fedora-Public-Domain: modules/encryption/enc_bcrypt.cpp
# LicenseRef-RSA: modules/encryption/enc_md5.cpp
License: GPL-2.0-only AND BSD-3-Clause AND MIT AND LicenseRef-Fedora-Public-Domain AND LicenseRef-RSA
# Public Domain: modules/encryption/enc_bcrypt.cpp
# RSA: modules/encryption/enc_md5.cpp
License: GPLv2 and BSD and MIT and Public Domain and RSA
URL: https://www.anope.org/
Source0: https://github.com/anope/anope/archive/%{version}/%{name}-%{version}.tar.gz
Source1: anope.service
Source2: anope.tmpfilesd
Source3: anope.sysusersd
Source10: anope.conf
Source11: anope.motd
Source12: anope-botserv.conf
Source13: anope-chanserv.conf
Source14: anope-chanstats.conf
Source15: anope-global.conf
Source16: anope-hostserv.conf
Source17: anope-irc2sql.conf
Source18: anope-memoserv.conf
Source19: anope-modules.conf
Source20: anope-nickserv.conf
Source21: anope-operserv.conf
Patch0: https://github.com/anope/anope/commit/87a8af0ad71a11c248ba94c9ba20668dcb0fe831.patch#/anope-2.1.4-paths1.patch
Patch1: https://github.com/anope/anope/commit/c08aaa86d1ada72ad6e185837f9c179693b60c22.patch#/anope-2.1.4-paths2.patch
Patch2: https://github.com/anope/anope/commit/5fdc6373275de9c0844c6507509c153ce69fa0c1.patch#/anope-2.1.4-paths3.patch
BuildRequires: cmake
Source10: anope-botserv.conf
Source11: anope-chanserv.conf
Source12: anope-chanstats.conf
Source13: anope-global.conf
Source14: anope-hostserv.conf
Source15: anope-irc2sql.conf
Source16: anope-memoserv.conf
Source17: anope-modules.conf
Source18: anope-nickserv.conf
Source19: anope-operserv.conf
Source20: anope-services.motd
Source21: anope-services.conf
BuildRequires: cmake >= 2.4
%if 0%{?rhel} && 0%{?rhel} < 8
BuildRequires: cmake3
# Compiler with C++17 language, filesystem headers and linking support
BuildRequires: devtoolset-12-toolchain
%endif
%if 0%{?rhel} == 8
# Compiler with C++17 filesystem headers and linking support
BuildRequires: gcc-toolset-12
%endif
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: gcc >= 4.2
BuildRequires: gcc-c++ >= 4.2
BuildRequires: gettext
%if 0%{?fedora} || (0%{?rhel} && 0%{?rhel} > 7)
BuildRequires: systemd-rpm-macros
%if 0%{?fedora} || 0%{?rhel} > 7
%else
BuildRequires: systemd
%endif
Requires(pre): shadow-utils
%if 0%{?fedora} || (0%{?rhel} && 0%{?rhel} > 7)
Recommends: %{_sbindir}/sendmail
%else
Requires: %{_sbindir}/sendmail
%endif
Provides: %{name}-redis = %{version}-%{release}
Provides: %{name}-redis%{?_isa} = %{version}-%{release}
%{?systemd_requires}
%{?sysusers_requires_compat}
%description
Anope is a set of IRC services forked from Epona early 2003 to pick up where
@ -86,7 +79,7 @@ membership, too.
%if %{with mysql}
%package mysql
Summary: MariaDB/MySQL modules for Anope IRC services
%if 0%{?fedora} || 0%{?rhel} > 7
%if 0%{?fedora} || (0%{?rhel} && 0%{?rhel} > 7)
BuildRequires: mariadb-connector-c-devel
%else
BuildRequires: mariadb-devel >= 5.5
@ -104,19 +97,17 @@ further modules for IRC channel statistics or to log the IRC services' logs
into a MariaDB or MySQL database.
%endif
%if %{with pcre2}
%package pcre2
%if %{with pcre}
%package pcre
Summary: PCRE regular expression module Anope IRC services
BuildRequires: pcre2-devel
BuildRequires: pcre-devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Provides: %{name}-pcre = %{version}-%{release}
Obsoletes: %{name}-pcre < 2.0.12-1
%description pcre2
%description pcre
Anope is a set of IRC services designed for flexibility and ease of use.
This package provides an Anope module to support regular expressions using
the Perl Compatible Regular Expressions (PCRE) library in version 2.
This package provides an Anope module to support for Perl Compatible Regular
Expressions (PCRE).
%endif
%if %{with tre}
@ -176,7 +167,7 @@ uplink server(s) via SSL/TLS.
%endif
%prep
%autosetup -p1
%setup -q
%build
%if 0%{?rhel} && 0%{?rhel} < 8
@ -192,75 +183,76 @@ EXTRA_LIBS+=";%{_libdir}/mysql"
EXTRA_INCLUDE+=";%{_includedir}/openssl11"
EXTRA_LIBS+=";%{_libdir}/openssl11"
%endif
. /opt/rh/devtoolset-12/enable
%endif
%if 0%{?rhel} == 8
. /opt/rh/gcc-toolset-12/enable
%endif
# Build extra modules
mv -f modules/extra/regex_posix.cpp modules/
%{?with_ldap:mv -f modules/extra/ldap.cpp modules/}
%{?with_mysql:mv -f modules/extra/mysql.cpp modules/}
%{?with_pcre2:mv -f modules/extra/regex_pcre2.cpp modules/}
%{?with_tre:mv -f modules/extra/regex_tre.cpp modules/}
%{?with_sqlite:mv -f modules/extra/sqlite.cpp modules/}
%{?with_gnutls:mv -f modules/extra/ssl_gnutls.cpp modules/}
%{?with_openssl:mv -f modules/extra/ssl_openssl.cpp modules/}
mv -f modules/extra/{m_regex_posix,m_sql_authentication,m_sql_log,m_sql_oper}.cpp modules/
%{?with_ldap:mv -f modules/extra/{m_ldap,m_ldap_authentication,m_ldap_oper}.cpp modules/}
%{?with_mysql:mv -f modules/extra/{m_mysql.cpp,stats} modules/}
%{?with_pcre:mv -f modules/extra/m_regex_pcre.cpp modules/}
%{?with_tre:mv -f modules/extra/m_regex_tre.cpp modules/}
%{?with_sqlite:mv -f modules/extra/m_sqlite.cpp modules/}
%{?with_gnutls:mv -f modules/extra/m_ssl_gnutls.cpp modules/}
%{?with_openssl:mv -f modules/extra/m_ssl_openssl.cpp modules/}
# Default directories are not picked up during build process
DEFAULT_DIRS='Anope::ConfigDir = "%{_sysconfdir}/%{name}", '
DEFAULT_DIRS+='Anope::DataDir = "%{_localstatedir}/lib/%{name}", '
DEFAULT_DIRS+='Anope::ModuleDir = "%{_libdir}/%{name}", '
DEFAULT_DIRS+='Anope::LocaleDir = "%{_datadir}/locale", '
DEFAULT_DIRS+='Anope::LogDir = "%{_localstatedir}/log/%{name}";'
sed -e "s|^\(Anope::string\) .*|\1 $DEFAULT_DIRS|" -i src/init.cpp
%cmake \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DBIN_DIR:STRING=%{_sbindir} \
-DDATA_DIR:STRING=%{_localstatedir}/lib/%{name} \
-DCONF_DIR:STRING=%{_sysconfdir}/%{name} \
-DMODULE_DIR:STRING=%{_libdir}/%{name} \
-DDB_DIR:STRING=%{_localstatedir}/lib/%{name} \
-DCONF_DIR:STRING=%{_pkgdocdir}/examples \
-DLIB_DIR:STRING=%{_libdir}/%{name} \
-DLOCALE_DIR:STRING=%{_datadir}/locale \
-DLOG_DIR:STRING=%{_localstatedir}/log/%{name} \
-DLOGS_DIR:STRING=%{_localstatedir}/log/%{name} \
-DPROGRAM_NAME:STRING=%{name} \
-DREPRODUCIBLE_BUILD:BOOL=ON \
-DDISABLE_TOOLS:BOOL=ON \
-DDEFUMASK:STRING=027 \
-DEXTRA_INCLUDE=$EXTRA_INCLUDE \
-DEXTRA_LIBS:STRING=$EXTRA_LIBS
-DEXTRA_INCLUDE_DIRS=$EXTRA_INCLUDE \
-DEXTRA_LIBS:STRING=$EXTRA_LIBS \
.
%cmake_build
%install
%cmake_install
mkdir -p $RPM_BUILD_ROOT{%{_rundir}/%{name},%{_pkgdocdir}/examples}/
mv -f $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/*.conf,%{_pkgdocdir}/examples/}
mkdir -p $RPM_BUILD_ROOT{{%{_localstatedir}/log,%{_rundir}}/%{name}/,%{_localstatedir}/lib/%{name}/{backups,runtime}}/
install -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service
install -D -p -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_tmpfilesdir}/%{name}.conf
install -D -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysusersdir}/%{name}.conf
install -D -p -m 0640 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
install -D -p -m 0640 %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/motd
install -D -p -m 0640 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/botserv.conf
install -D -p -m 0640 %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/chanserv.conf
install -D -p -m 0640 %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/chanstats.conf
install -D -p -m 0640 %{SOURCE15} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/global.conf
install -D -p -m 0640 %{SOURCE16} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/hostserv.conf
install -D -p -m 0640 %{SOURCE17} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/irc2sql.conf
install -D -p -m 0640 %{SOURCE18} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/memoserv.conf
install -D -p -m 0640 %{SOURCE19} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/modules.conf
install -D -p -m 0640 %{SOURCE20} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/nickserv.conf
install -D -p -m 0640 %{SOURCE21} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/operserv.conf
install -D -p -m 0640 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/botserv.conf
install -D -p -m 0640 %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/chanserv.conf
install -D -p -m 0640 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/chanstats.conf
install -D -p -m 0640 %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/global.conf
install -D -p -m 0640 %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/hostserv.conf
install -D -p -m 0640 %{SOURCE15} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/irc2sql.conf
install -D -p -m 0640 %{SOURCE16} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/memoserv.conf
install -D -p -m 0640 %{SOURCE17} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/modules.conf
install -D -p -m 0640 %{SOURCE18} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/nickserv.conf
install -D -p -m 0640 %{SOURCE19} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/operserv.conf
install -D -p -m 0640 %{SOURCE20} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/services.motd
install -D -p -m 0640 %{SOURCE21} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/services.conf
# Remove crontab script (pseudo init script) for anope
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/example.chk
rm -f $RPM_BUILD_ROOT%{_pkgdocdir}/examples/example.chk
# Remove webcpanel, doesn't seem to be widely used
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/webcpanel.so
rm -rf $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/webcpanel/
# Remove MySQL related modules when built without MySQL
%{!?with_mysql:rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/{chanstats,cs_fantasy_stats,cs_fantasy_top,irc2sql}.so}
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/webcpanel.so
rm -rf $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/modules/
%find_lang %{name}
%pre
%sysusers_create_compat %{SOURCE3}
getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name}
getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "Anope IRC services" %{name}
exit 0
%post
%systemd_post %{name}.service
@ -273,7 +265,7 @@ rm -rf $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/webcpanel/
%files -f %{name}.lang
%license docs/COPYING
%doc docs/Changes docs/Changes.conf docs/DEFCON
%doc docs/BUGS docs/Changes docs/Changes.conf docs/DEFCON
%doc docs/FAQ docs/MODULES docs/README docs/XMLRPC
%doc %{_pkgdocdir}/examples/
%dir %attr(0750,root,%{name}) %{_sysconfdir}/%{name}/
@ -282,165 +274,80 @@ rm -rf $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/webcpanel/
%exclude %{_sysconfdir}/%{name}/chanstats.conf
%exclude %{_sysconfdir}/%{name}/irc2sql.conf
%endif
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/motd
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/services.motd
%{_unitdir}/%{name}.service
%{_sysusersdir}/%{name}.conf
%{_tmpfilesdir}/%{name}.conf
%{_sbindir}/%{name}
%dir %{_libdir}/%{name}/
%{_libdir}/%{name}/*.so
%dir %{_libdir}/%{name}/modules/
%{_libdir}/%{name}/modules/*.so
%if %{with ldap}
%exclude %{_libdir}/%{name}/ldap.so
%exclude %{_libdir}/%{name}/ldap_authentication.so
%exclude %{_libdir}/%{name}/ldap_oper.so
%exclude %{_libdir}/%{name}/modules/m_ldap.so
%exclude %{_libdir}/%{name}/modules/m_ldap_authentication.so
%exclude %{_libdir}/%{name}/modules/m_ldap_oper.so
%endif
%if %{with mysql}
%exclude %{_libdir}/%{name}/mysql.so
%exclude %{_libdir}/%{name}/chanstats.so
%exclude %{_libdir}/%{name}/cs_fantasy_stats.so
%exclude %{_libdir}/%{name}/cs_fantasy_top.so
%exclude %{_libdir}/%{name}/irc2sql.so
%exclude %{_libdir}/%{name}/modules/m_mysql.so
%exclude %{_libdir}/%{name}/modules/m_chanstats.so
%exclude %{_libdir}/%{name}/modules/cs_fantasy_stats.so
%exclude %{_libdir}/%{name}/modules/cs_fantasy_top.so
%exclude %{_libdir}/%{name}/modules/irc2sql.so
%endif
%{?with_pcre2:%exclude %{_libdir}/%{name}/regex_pcre2.so}
%{?with_tre:%exclude %{_libdir}/%{name}/regex_tre.so}
%{?with_sqlite:%exclude %{_libdir}/%{name}/sqlite.so}
%{?with_gnutls:%exclude %{_libdir}/%{name}/ssl_gnutls.so}
%{?with_openssl:%exclude %{_libdir}/%{name}/ssl_openssl.so}
%{?with_pcre:%exclude %{_libdir}/%{name}/modules/m_regex_pcre.so}
%{?with_tre:%exclude %{_libdir}/%{name}/modules/m_regex_tre.so}
%{?with_sqlite:%exclude %{_libdir}/%{name}/modules/m_sqlite.so}
%{?with_gnutls:%exclude %{_libdir}/%{name}/modules/m_ssl_gnutls.so}
%{?with_openssl:%exclude %{_libdir}/%{name}/modules/m_ssl_openssl.so}
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/lib/%{name}/
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/lib/%{name}/backups/
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/lib/%{name}/runtime/
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/log/%{name}/
%dir %attr(0755,%{name},%{name}) %{_rundir}/%{name}/
%if %{with ldap}
%files ldap
%{_libdir}/%{name}/ldap.so
%{_libdir}/%{name}/ldap_authentication.so
%{_libdir}/%{name}/ldap_oper.so
%{_libdir}/%{name}/modules/m_ldap.so
%{_libdir}/%{name}/modules/m_ldap_authentication.so
%{_libdir}/%{name}/modules/m_ldap_oper.so
%endif
%if %{with mysql}
%files mysql
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/chanstats.conf
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/irc2sql.conf
%{_libdir}/%{name}/mysql.so
%{_libdir}/%{name}/chanstats.so
%{_libdir}/%{name}/cs_fantasy_stats.so
%{_libdir}/%{name}/cs_fantasy_top.so
%{_libdir}/%{name}/irc2sql.so
%config(noreplace) %attr(0640,root,anope) %{_sysconfdir}/%{name}/chanstats.conf
%config(noreplace) %attr(0640,root,anope) %{_sysconfdir}/%{name}/irc2sql.conf
%{_libdir}/%{name}/modules/m_mysql.so
%{_libdir}/%{name}/modules/m_chanstats.so
%{_libdir}/%{name}/modules/cs_fantasy_stats.so
%{_libdir}/%{name}/modules/cs_fantasy_top.so
%{_libdir}/%{name}/modules/irc2sql.so
%endif
%if %{with pcre2}
%files pcre2
%{_libdir}/%{name}/regex_pcre2.so
%if %{with pcre}
%files pcre
%{_libdir}/%{name}/modules/m_regex_pcre.so
%endif
%if %{with tre}
%files tre
%{_libdir}/%{name}/regex_tre.so
%{_libdir}/%{name}/modules/m_regex_tre.so
%endif
%if %{with sqlite}
%files sqlite
%{_libdir}/%{name}/sqlite.so
%{_libdir}/%{name}/modules/m_sqlite.so
%endif
%if %{with gnutls}
%files gnutls
%{_libdir}/%{name}/ssl_gnutls.so
%{_libdir}/%{name}/modules/m_ssl_gnutls.so
%endif
%if %{with openssl}
%files openssl
%{_libdir}/%{name}/ssl_openssl.so
%{_libdir}/%{name}/modules/m_ssl_openssl.so
%endif
%changelog
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sun Apr 14 2024 Robert Scheck <robert@fedoraproject.org> 2.1.4-1
- Upgrade to 2.1.4 (#2272460)
* Wed Mar 06 2024 Robert Scheck <robert@fedoraproject.org> 2.1.3-1
- Upgrade to 2.1.3 (#2267827)
* Sat Feb 17 2024 Robert Scheck <robert@fedoraproject.org> 2.1.2-1
- Upgrade to 2.1.2 (#2264678)
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Jan 06 2024 Robert Scheck <robert@fedoraproject.org> 2.1.1-1
- Upgrade to 2.1.1 (#2256929)
* Mon Nov 27 2023 Robert Scheck <robert@fedoraproject.org> 2.1.0-2
- Reflect upstream configuration file changes and renamings
* Sun Nov 26 2023 Robert Scheck <robert@fedoraproject.org> 2.1.0-1
- Upgrade to 2.1.0 (#2251530)
* Mon Aug 07 2023 Robert Scheck <robert@fedoraproject.org> 2.0.14-1
- Upgrade to 2.0.14 (#2229557)
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.13-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jun 02 2023 Robert Scheck <robert@fedoraproject.org> 2.0.13-1
- Upgrade to 2.0.13 (#2211864)
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Dec 10 2022 Robert Scheck <robert@fedoraproject.org> 2.0.12-1
- Upgrade to 2.0.12 (#2152287)
- Switch from deprecated pcre to pcre2 (#2128270)
* Tue Sep 20 2022 Robert Scheck <robert@fedoraproject.org> 2.0.11-1
- Upgrade to 2.0.11
* Fri Jul 29 2022 Robert Scheck <robert@fedoraproject.org> 2.0.10-6
- Added sysusers.d file to achieve user() and group() provides
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.10-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.10-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Dec 29 2021 Robert Scheck <robert@fedoraproject.org> 2.0.10-3
- Added upstream patches for OpenLDAP 2.6 support (#2032707)
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 2.0.10-2
- Rebuilt with OpenSSL 3.0.0
* Tue Aug 10 2021 Robert Scheck <robert@fedoraproject.org> 2.0.10-1
- Upgrade to 2.0.10 (#1991858)
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.9-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0.9-5
- Rebuilt for updated systemd-rpm-macros
See https://pagure.io/fesco/issue/2583.
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.9-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Nov 24 2020 Robert Scheck <robert@fedoraproject.org> 2.0.9-3
- Correct include path for OpenSSL 1.1 on RHEL 7
* Sat Nov 07 2020 Robert Scheck <robert@fedoraproject.org> 2.0.9-2
- License breakdown in spec file (#1890821 #c2)

View file

@ -1,2 +0,0 @@
#Type Name ID GECOS Home directory Shell
u anope - "Anope IRC services" /var/lib/anope -

View file

@ -1 +1 @@
SHA512 (anope-2.1.4.tar.gz) = 6404ed2e072ca039b18fe860b068bed946d041424157bc4d72506762f85192548653e6c60c961d456fd5cd3e4dc4dd6d3a44f094221075a543026267dfab1356
SHA512 (anope-2.0.9.tar.gz) = 0ce2caa5ede2831215781a333d896f1169f90bbb515078912f32beaff1699b7957384974cca7c86f1d584d624cb43c76769299ce245ee1fb6836ce7f14ada3e0