summaryrefslogtreecommitdiffstats
path: root/src/etc/inc
diff options
context:
space:
mode:
authork-paulius <k.dash.paulius@gmail.com>2016-02-10 20:47:15 -0600
committerRenato Botelho <renato@netgate.com>2016-09-13 14:34:20 -0300
commit7066f0cce295a8cbae046bec7fcb1dfebbf74dd9 (patch)
tree276fcca5a2ca2e604f50f83bae98e688a4f23229 /src/etc/inc
parent6a7644470031c779550d87eb4530c19c6aaff244 (diff)
downloadpfsense-7066f0cce295a8cbae046bec7fcb1dfebbf74dd9.zip
pfsense-7066f0cce295a8cbae046bec7fcb1dfebbf74dd9.tar.gz
Allow packages to request syslogd log socket to be created inside chroot by specifying it in /package/logging/logsocket element. Implements #4898.
Example: <package> <logging> <logsocket>/var/appname/var/run/log</logsocket> </logging> </package> (cherry picked from commit ab31acb937792bdedef11fcdbd1d98ad126ebc0b)
Diffstat (limited to 'src/etc/inc')
-rw-r--r--src/etc/inc/system.inc21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc
index a3627ec..8a1094d 100644
--- a/src/etc/inc/system.inc
+++ b/src/etc/inc/system.inc
@@ -912,7 +912,7 @@ function system_syslogd_start() {
$syslogconf = "";
if ($config['installedpackages']['package']) {
foreach ($config['installedpackages']['package'] as $package) {
- if ($package['logging']) {
+ if (isset($package['logging']['facilityname']) && isset($package['logging']['logfilename'])) {
array_push($separatelogfacilities, $package['logging']['facilityname']);
if (!is_file($g['varlog_path'].'/'.$package['logging']['logfilename'])) {
mwexec("{$log_create_directive} {$log_size} {$g['varlog_path']}/{$package['logging']['logfilename']}");
@@ -1097,6 +1097,22 @@ EOD;
$syslogd_extra = "-f {$g['varetc_path']}/syslog.conf {$sourceip}";
}
+ $log_sockets = array();
+ $log_sockets[] = "{$g['dhcpd_chroot_path']}/var/run/log";
+
+ if (isset($config['installedpackages']['package'])) {
+ foreach ($config['installedpackages']['package'] as $package) {
+ if (isset($package['logging']['logsocket']) && '' != $package['logging']['logsocket'] &&
+ is_dir(pathinfo($package['logging']['logsocket'], PATHINFO_DIRNAME)) && !in_array($package['logging']['logsocket'], $log_sockets)) {
+ $log_sockets[] = $package['logging']['logsocket'];
+ }
+ }
+ }
+ $syslogd_sockets = "";
+ foreach ($log_sockets as $log_socket) {
+ $syslogd_sockets .= " -l {$log_socket}";
+ }
+
if (isvalidpid("{$g['varrun_path']}/syslog.pid")) {
sigkillbypid("{$g['varrun_path']}/syslog.pid", "TERM");
usleep(100000); // syslogd often doesn't respond to a TERM quickly enough for the starting of syslogd below to be successful
@@ -1108,8 +1124,7 @@ EOD;
usleep(100000);
}
-
- $retval = mwexec_bg("/usr/sbin/syslogd -s -c -c -l {$g['dhcpd_chroot_path']}/var/run/log -P {$g['varrun_path']}/syslog.pid {$syslogd_extra}");
+ $retval = mwexec_bg("/usr/sbin/syslogd -s -c -c {$syslogd_sockets} -P {$g['varrun_path']}/syslog.pid {$syslogd_extra}");
if (platform_booting()) {
echo gettext("done.") . "\n";
OpenPOWER on IntegriCloud