diff options
-rwxr-xr-x | configure | 10 | ||||
-rw-r--r-- | docs/conf/inspircd.conf.example | 4 | ||||
-rw-r--r-- | include/configreader.h | 4 | ||||
-rw-r--r-- | make/configure.pm | 1 | ||||
-rw-r--r-- | make/template/apparmor | 1 | ||||
-rw-r--r-- | make/template/config.h | 3 | ||||
-rw-r--r-- | make/template/inspircd | 18 | ||||
-rw-r--r-- | src/configreader.cpp | 1 | ||||
-rw-r--r-- | src/inspircd.cpp | 2 |
9 files changed, 25 insertions, 19 deletions
@@ -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()) { |