summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure10
-rw-r--r--docs/conf/inspircd.conf.example4
-rw-r--r--include/configreader.h4
-rw-r--r--make/configure.pm1
-rw-r--r--make/template/apparmor1
-rw-r--r--make/template/config.h3
-rw-r--r--make/template/inspircd18
-rw-r--r--src/configreader.cpp1
-rw-r--r--src/inspircd.cpp2
9 files changed, 25 insertions, 19 deletions
diff --git a/configure b/configure
index 223fc4d14..724970cad 100755
--- a/configure
+++ b/configure
@@ -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})
diff --git a/docs/conf/inspircd.conf.example b/docs/conf/inspircd.conf.example
index 3d16d4eba..06ad9669d 100644
--- a/docs/conf/inspircd.conf.example
+++ b/docs/conf/inspircd.conf.example
@@ -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">
diff --git a/include/configreader.h b/include/configreader.h
index 3a5ea9c60..8a548fcbf 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -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
diff --git a/make/configure.pm b/make/configure.pm
index 91e2cc7d6..001de5fc7 100644
--- a/make/configure.pm
+++ b/make/configure.pm
@@ -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);
diff --git a/make/template/apparmor b/make/template/apparmor
index 83c248c55..ded5634e6 100644
--- a/make/template/apparmor
+++ b/make/template/apparmor
@@ -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>
diff --git a/make/template/config.h b/make/template/config.h
index 034191893..97dd15453 100644
--- a/make/template/config.h
+++ b/make/template/config.h
@@ -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@/"
diff --git a/make/template/inspircd b/make/template/inspircd
index 0150bb994..4b316e0e0 100644
--- a/make/template/inspircd
+++ b/make/template/inspircd
@@ -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 {
diff --git a/src/configreader.cpp b/src/configreader.cpp
index f96836507..3977be25e 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -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))
{
}
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 5760e631b..df5dc8647 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -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())
{