mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 10:39:02 -04:00
Add a new runtime directory and move the pid file to it.
The data directory is intended for persistent files whereas the pid file is ephemeral. This distinction doesn't matter by default but on system-wide installs ephemeral runtime files go in /var/run or /run instead.
This commit is contained in:
parent
8b2f3980cc
commit
a59ed4b394
10
configure
vendored
10
configure
vendored
@ -66,6 +66,7 @@ my ($opt_binary_dir,
|
||||
$opt_module_dir,
|
||||
$opt_portable,
|
||||
$opt_prefix,
|
||||
$opt_runtime_dir,
|
||||
$opt_script_dir,
|
||||
$opt_socketengine,
|
||||
$opt_system,
|
||||
@ -99,6 +100,7 @@ exit 1 unless GetOptions(
|
||||
'module-dir=s' => \$opt_module_dir,
|
||||
'portable' => \$opt_portable,
|
||||
'prefix=s' => \$opt_prefix,
|
||||
'runtime-dir=s' => \$opt_runtime_dir,
|
||||
'script-dir=s' => \$opt_script_dir,
|
||||
'socketengine=s' => \$opt_socketengine,
|
||||
'system' => \$opt_system,
|
||||
@ -137,6 +139,7 @@ our $interactive = !(
|
||||
defined $opt_module_dir ||
|
||||
defined $opt_portable ||
|
||||
defined $opt_prefix ||
|
||||
defined $opt_runtime_dir ||
|
||||
defined $opt_script_dir ||
|
||||
defined $opt_socketengine ||
|
||||
defined $opt_system ||
|
||||
@ -203,6 +206,7 @@ if (defined $opt_portable) {
|
||||
$config{LOG_DIR} = $opt_log_dir // 'logs';
|
||||
$config{MANUAL_DIR} = $opt_manual_dir // 'manuals';
|
||||
$config{MODULE_DIR} = $opt_module_dir // 'modules';
|
||||
$config{RUNTIME_DIR} = $opt_runtime_dir // $config{DATA_DIR};
|
||||
$config{SCRIPT_DIR} = $opt_script_dir // $config{BASE_DIR};
|
||||
} elsif (defined $opt_system) {
|
||||
$config{BASE_DIR} = $opt_prefix // '/var/lib/inspircd';
|
||||
@ -213,7 +217,8 @@ if (defined $opt_portable) {
|
||||
$config{LOG_DIR} = $opt_log_dir // '/var/log/inspircd';
|
||||
$config{MANUAL_DIR} = $opt_manual_dir // '/usr/share/man/man1';
|
||||
$config{MODULE_DIR} = $opt_module_dir // '/usr/lib/inspircd';
|
||||
$config{SCRIPT_DIR} = $opt_script_dir // '/usr/share/inspircd'
|
||||
$config{RUNTIME_DIR} = $opt_runtime_dir // '/var/run';
|
||||
$config{SCRIPT_DIR} = $opt_script_dir // '/usr/share/inspircd';
|
||||
} else {
|
||||
$config{BASE_DIR} = rel2abs $opt_prefix // $config{BASE_DIR} // catdir $RealDir, 'run';
|
||||
$config{BINARY_DIR} = $opt_binary_dir // $config{BINARY_DIR} // catdir $config{BASE_DIR}, 'bin';
|
||||
@ -223,6 +228,7 @@ if (defined $opt_portable) {
|
||||
$config{LOG_DIR} = $opt_log_dir // $config{LOG_DIR} // catdir $config{BASE_DIR}, 'logs';
|
||||
$config{MANUAL_DIR} = $opt_manual_dir // $config{MANUAL_DIR} // catdir $config{BASE_DIR}, 'manuals';
|
||||
$config{MODULE_DIR} = $opt_module_dir // $config{MODULE_DIR} // catdir $config{BASE_DIR}, 'modules';
|
||||
$config{RUNTIME_DIR} = $opt_runtime_dir // $config{RUNTIME_DIR} // $config{DATA_DIR};
|
||||
$config{SCRIPT_DIR} = $opt_script_dir // $config{SCRIPT_DIR} // $config{BASE_DIR};
|
||||
}
|
||||
|
||||
@ -345,6 +351,7 @@ if (prompt_bool $interactive, $question, 0) {
|
||||
$config{MODULE_DIR} = prompt_dir $interactive, 'In what directory are modules to be placed?', $config{MODULE_DIR};
|
||||
$config{SCRIPT_DIR} = prompt_dir $interactive, 'In what directory are scripts to be placed?', $config{SCRIPT_DIR};
|
||||
$config{EXAMPLE_DIR} = $config{CONFIG_DIR} . '/examples';
|
||||
$config{RUNTIME_DIR} = $config{DATA_DIR};
|
||||
}
|
||||
|
||||
# Configure module settings.
|
||||
@ -461,6 +468,7 @@ print_format <<"EOM";
|
||||
<|GREEN Log:|> $config{LOG_DIR}
|
||||
<|GREEN Manual:|> $config{MANUAL_DIR}
|
||||
<|GREEN Module:|> $config{MODULE_DIR}
|
||||
<|GREEN Runtime:|> $config{RUNTIME_DIR}
|
||||
<|GREEN Script:|> $config{SCRIPT_DIR}
|
||||
|
||||
<|GREEN Execution Group:|> $config{GROUP} ($config{GID})
|
||||
|
@ -531,8 +531,8 @@
|
||||
# rehash the ircd from the shell or to terminate the ircd from the #
|
||||
# shell using shell scripts, perl scripts, etc... and to monitor the #
|
||||
# ircd's state via cron jobs. If this is a relative path, it will be #
|
||||
# relative to the configuration directory, and if it is not defined, #
|
||||
# the default of 'inspircd.pid' is used. #
|
||||
# relative to the runtime directory, and if it is not defined, the #
|
||||
# default of 'inspircd.pid' is used. #
|
||||
# #
|
||||
|
||||
#<pid file="/path/to/inspircd.pid">
|
||||
|
@ -250,12 +250,16 @@ class CoreExport ServerConfig
|
||||
/** Module path */
|
||||
std::string Module;
|
||||
|
||||
/** Runtime path */
|
||||
std::string Runtime;
|
||||
|
||||
ServerPaths(ConfigTag* tag);
|
||||
|
||||
std::string PrependConfig(const std::string& fn) const { return FileSystem::ExpandPath(Config, fn); }
|
||||
std::string PrependData(const std::string& fn) const { return FileSystem::ExpandPath(Data, fn); }
|
||||
std::string PrependLog(const std::string& fn) const { return FileSystem::ExpandPath(Log, fn); }
|
||||
std::string PrependModule(const std::string& fn) const { return FileSystem::ExpandPath(Module, fn); }
|
||||
std::string PrependRuntime(const std::string& fn) const { return FileSystem::ExpandPath(Runtime, fn); }
|
||||
};
|
||||
|
||||
/** Holds a complete list of all connect blocks
|
||||
|
@ -192,6 +192,7 @@ sub cmd_update {
|
||||
say 'Updating...';
|
||||
my %config = read_config_file(CONFIGURE_CACHE_FILE);
|
||||
$config{EXAMPLE_DIR} //= catdir $config{CONFIG_DIR}, 'examples';
|
||||
$config{RUNTIME_DIR} //= $config{DATA_DIR};
|
||||
my %compiler = get_compiler_info($config{CXX});
|
||||
my %version = get_version $config{DISTRIBUTION};
|
||||
parse_templates(\%config, \%compiler, \%version);
|
||||
|
@ -37,6 +37,7 @@
|
||||
@MODULE_DIR@/core_*.so mr,
|
||||
@MODULE_DIR@/m_*.so mr,
|
||||
@LOG_DIR@/** w,
|
||||
@RUNTIME_DIR@/** rw,
|
||||
|
||||
# Required by the ldap module:
|
||||
#include <abstractions/ldapclient>
|
||||
|
@ -43,6 +43,9 @@
|
||||
/** The default location that module files are stored in. */
|
||||
#define INSPIRCD_MODULE_PATH "@MODULE_DIR@"
|
||||
|
||||
/** The default location that runtime files are stored in. */
|
||||
#define INSPIRCD_RUNTIME_PATH "@RUNTIME_DIR@"
|
||||
|
||||
/** The URL of the InspIRCd docs site. */
|
||||
#define INSPIRCD_DOCS "https://docs.inspircd.org/@VERSION_MAJOR@/"
|
||||
|
||||
|
@ -66,7 +66,7 @@ my $basepath = "@BASE_DIR@";
|
||||
my $confpath = "@CONFIG_DIR@";
|
||||
my $binpath = "@BINARY_DIR@";
|
||||
my $runpath = "@BASE_DIR@";
|
||||
my $datadir = "@DATA_DIR@";
|
||||
my $runtimedir = "@RUNTIME_DIR@";
|
||||
my $valgrindlogpath = "$basepath/valgrindlogs";
|
||||
my $executable = "inspircd";
|
||||
my $version = "@VERSION_FULL@";
|
||||
@ -359,18 +359,6 @@ sub cmd_stop()
|
||||
# Generic Helper Functions.
|
||||
###
|
||||
|
||||
# GetPidfile Version 2 - Now With Include Support..
|
||||
# I beg for months for include support in insp, then..
|
||||
# when it is added, it comes around and BITES ME IN THE ASS,
|
||||
# because i then have to code support into this script.. Evil.
|
||||
|
||||
# Craig got bitten in the ass again --
|
||||
# in 1.1 beta the include file is manditory, therefore
|
||||
# if we cant find it, default to %conf%/inspircd.pid.
|
||||
# Note, this also contains a fix for when the pid file is
|
||||
# defined, but defined in a comment (line starts with #)
|
||||
# -- Brain
|
||||
|
||||
my %filesparsed;
|
||||
|
||||
sub getpidfile
|
||||
@ -404,7 +392,7 @@ sub getpidfile
|
||||
if (($i =~ /<pid file=\"(\S+)\">/i) && ($i !~ /^#/))
|
||||
{
|
||||
# Set the PID file and return.
|
||||
$pidfile = expand_fragment $datadir, $1;
|
||||
$pidfile = expand_fragment $runtimedir, $1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -426,7 +414,7 @@ sub getpidfile
|
||||
}
|
||||
|
||||
# End of includes / No includes found. Using default.
|
||||
$pidfile = $datadir . "/inspircd.pid";
|
||||
$pidfile = $runtimedir . "/inspircd.pid";
|
||||
}
|
||||
|
||||
sub getstatus {
|
||||
|
@ -57,6 +57,7 @@ ServerConfig::ServerPaths::ServerPaths(ConfigTag* tag)
|
||||
, Data(tag->getString("datadir", INSPIRCD_DATA_PATH, 1))
|
||||
, Log(tag->getString("logdir", INSPIRCD_LOG_PATH, 1))
|
||||
, Module(tag->getString("moduledir", INSPIRCD_MODULE_PATH, 1))
|
||||
, Runtime(tag->getString("runtimedir", INSPIRCD_RUNTIME_PATH, 1))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -445,7 +445,7 @@ void InspIRCd::WritePID(const std::string& filename, bool exitonfail)
|
||||
return;
|
||||
}
|
||||
|
||||
std::string fname = ServerInstance->Config->Paths.PrependData(filename.empty() ? "inspircd.pid" : filename);
|
||||
std::string fname = ServerInstance->Config->Paths.PrependRuntime(filename.empty() ? "inspircd.pid" : filename);
|
||||
std::ofstream outfile(fname.c_str());
|
||||
if (outfile.is_open())
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user