mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Add a module which rehashes SSL modules on receiving SIGUSR1.
This has been imported from inspircd-extras where it was known as m_rehashsslsignal. The name has been changed slightly to match the other modules which do SSL stuff (sslmodes, sslinfo).
This commit is contained in:
parent
b7ecd18b73
commit
9da5c8e200
@ -1894,6 +1894,11 @@
|
||||
# with 2.0 servers. You can enable it by uncommenting this:
|
||||
#<sslmodes enableumode="yes">
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# SSL rehash signal module: Allows the SSL modules to be rehashed by
|
||||
# sending SIGUSR1 to a running InspIRCd process.
|
||||
#<module name="sslrehashsignal">
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# GnuTLS SSL module: Adds support for SSL connections using GnuTLS,
|
||||
# if enabled. You must answer 'yes' in ./configure when asked or
|
||||
|
64
src/modules/m_sslrehashsignal.cpp
Normal file
64
src/modules/m_sslrehashsignal.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* InspIRCd -- Internet Relay Chat Daemon
|
||||
*
|
||||
* Copyright (C) 2018 Peter Powell <petpow@saberuk.com>
|
||||
* Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com>
|
||||
*
|
||||
* This file is part of InspIRCd. InspIRCd is free software: you can
|
||||
* redistribute it and/or modify it under the terms of the GNU General Public
|
||||
* License as published by the Free Software Foundation, version 2.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include "inspircd.h"
|
||||
|
||||
static volatile sig_atomic_t signaled;
|
||||
|
||||
class ModuleSSLRehashSignal : public Module
|
||||
{
|
||||
private:
|
||||
static void SignalHandler(int)
|
||||
{
|
||||
signaled = 1;
|
||||
}
|
||||
|
||||
public:
|
||||
~ModuleSSLRehashSignal()
|
||||
{
|
||||
signal(SIGUSR1, SIG_DFL);
|
||||
}
|
||||
|
||||
void init()
|
||||
{
|
||||
signal(SIGUSR1, SignalHandler);
|
||||
}
|
||||
|
||||
void OnBackgroundTimer(time_t)
|
||||
{
|
||||
if (!signaled)
|
||||
return;
|
||||
|
||||
const std::string feedbackmsg = "Got SIGUSR1, reloading SSL credentials";
|
||||
ServerInstance->SNO->WriteGlobalSno('a', feedbackmsg);
|
||||
ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, feedbackmsg);
|
||||
|
||||
const std::string str = "ssl";
|
||||
FOREACH_MOD(OnModuleRehash, (NULL, str));
|
||||
signaled = 0;
|
||||
}
|
||||
|
||||
Version GetVersion()
|
||||
{
|
||||
return Version("Reloads SSL credentials on SIGUSR1", VF_VENDOR);
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_INIT(ModuleSSLRehashSignal)
|
Loading…
x
Reference in New Issue
Block a user