From e99476963d9274b5eb56c483b68034c81855303e Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 14 Aug 2015 01:09:49 +0200 Subject: bacula-client - code style fixes - Fix copyright header and indentation - Fix pfSense version checks - Fix permissions - Code style and indentation fixes - Remove unused global vars declaration - User stop_service() and restart_service() - Make sure that at least one local Director is configured before trying to start the service, otherwise it fails (see e.g. https://forum.pfsense.org/index.php?topic=97934.0) --- config/bacula-client/bacula-client.inc | 182 ++++++++++++++++----------------- 1 file changed, 86 insertions(+), 96 deletions(-) (limited to 'config/bacula-client') diff --git a/config/bacula-client/bacula-client.inc b/config/bacula-client/bacula-client.inc index 8a04d55b..07be3067 100644 --- a/config/bacula-client/bacula-client.inc +++ b/config/bacula-client/bacula-client.inc @@ -1,128 +1,118 @@ . - All rights reserved. - */ -/* ========================================================================== */ /* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code MUST retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form MUST reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ -/* ========================================================================== */ - require_once("config.inc"); - require_once("util.inc"); - - $pf_version=substr(trim(file_get_contents("/etc/version")),0,3); -if ($pf_version > 2.0) + bacula-client.inc + part of pfSense (https://www.pfSense.org/) + Copyright (C) 2012 Marcio Carlos Braga Antao + Copyright (C) 2012-2013 Marcello Coutinho + Copyright (C) 2015 ESF, LLC + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ +require_once("config.inc"); +require_once("util.inc"); + +$pf_version = substr(trim(file_get_contents("/etc/version")), 0, 3); +if ($pf_version == "2.1" || $pf_version == "2.2") { define('BACULA_LOCALBASE', '/usr/pbi/bacula-' . php_uname("m")); -else +} else { define('BACULA_LOCALBASE','/usr/local'); - +} define('BACULA_STARTUP_SCRIPT', '/usr/local/etc/rc.d/bacula-fd.sh'); -function baculaclient_custom_php_install_command(){ - global $g, $config; +function baculaclient_custom_php_install_command() { baculaclient_custom_php_write_config(); } function baculaclient_custom_php_deinstall_command(){ - global $g, $config; - conf_mount_rw(); - // 1. Delete our config file - unlink_if_exists(BACULA_LOCALBASE."/etc/bacula/bacula-fd.conf"); + // Delete our config file + unlink_if_exists(BACULA_LOCALBASE . "/etc/bacula/bacula-fd.conf"); + // Stop service and delete our rc file + stop_service("bacula-client"); + unlink_if_exists(BACULA_STARTUP_SCRIPT); - // 2. Re-run sshd config generation script - exec(BACULA_STARTUP_SCRIPT . " stop"); conf_mount_ro(); } function baculaclient_custom_php_write_config(){ - global $g, $config; + global $config, $LocalDirector; conf_mount_rw(); - //check config_file - $startup_file=BACULA_LOCALBASE . "/etc/rc.d/bacula-fd"; - if (file_exists($startup_file)){ - $startup_script=file_get_contents($startup_file); - $startup_script=preg_replace("/NO/","YES",$startup_script); - $startup_script=preg_replace("@/usr/local/etc/bacula-fd.conf@",BACULA_LOCALBASE."/etc/bacula/bacula-fd.conf",$startup_script); - $startup_script=preg_replace("@/usr/local/etc/bacula/bacula-fd.conf@",BACULA_LOCALBASE."/etc/bacula/bacula-fd.conf",$startup_script); - file_put_contents(BACULA_STARTUP_SCRIPT,$startup_script,LOCK_EX); - // Ensure bacula-fd has a+rx - exec("chmod a+rx " . BACULA_STARTUP_SCRIPT); - } - //check config - if (is_array($config['installedpackages']['baculaclient']['config'])){ + // Check config_file + $startup_file = BACULA_LOCALBASE . "/etc/rc.d/bacula-fd"; + if (file_exists($startup_file)) { + $startup_script = file_get_contents($startup_file); + $startup_script = preg_replace("/NO/","YES", $startup_script); + $startup_script = preg_replace("@/usr/local/etc/bacula-fd.conf@", BACULA_LOCALBASE . "/etc/bacula/bacula-fd.conf", $startup_script); + $startup_script = preg_replace("@/usr/local/etc/bacula/bacula-fd.conf@", BACULA_LOCALBASE . "/etc/bacula/bacula-fd.conf", $startup_script); + file_put_contents(BACULA_STARTUP_SCRIPT, $startup_script, LOCK_EX); + // Ensure bacula-fd is executable + chmod(BACULA_STARTUP_SCRIPT, 0755); + } + + // Check config + if (is_array($config['installedpackages']['baculaclient']['config'])) { $baculaclient_conf=""; foreach ($config['installedpackages']['baculaclient']['config'] as $bc) { - // create Director - switch ($bc['type']){ - case "Director": - $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-dir #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n}\n"; - Break; - case "Monitor": - $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-mon #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n\tMonitor = yes\n}\n"; - break; - case "Local": - $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-dir #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n}\n"; - $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-mon #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n\tMonitor = yes\n}\n"; - $LocalDirector = $bc['director']; - } - + // Create Director + switch ($bc['type']) { + case "Director": + $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-dir #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n}\n"; + break; + case "Monitor": + $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-mon #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n\tMonitor = yes\n}\n"; + break; + case "Local": + $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-dir #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n}\n"; + $baculaclient_conf .= "Director { \n\tName = {$bc['director']}-mon #{$bc['description']}\n\tPassword = \"{$bc['password']}\"\n\tMonitor = yes\n}\n"; + $LocalDirector = $bc['director']; } - // create Messages + } + + // Create Messages if (!empty($LocalDirector)) { $baculaclient_conf .= "Messages { \n\tName = Standard \n\tdirector = {$LocalDirector}-dir = all, !skipped, !restored\n}\n"; } - // create FielDaemon - - if (is_array($config['installedpackages']['baculaclientfd']['config'])){ - $port = $config['installedpackages']['baculaclientfd']['config'][0]['port']; - $jobs = $config['installedpackages']['baculaclientfd']['config'][0]['jobs']; - } - else{ - $port="9102"; - $jobs="20"; - } + // Create FileDaemon + if (is_array($config['installedpackages']['baculaclientfd']['config'])) { + $port = $config['installedpackages']['baculaclientfd']['config'][0]['port'] ?: '9102'; + $jobs = $config['installedpackages']['baculaclientfd']['config'][0]['jobs'] ?: '20'; + } if (!empty($LocalDirector)) { $baculaclient_conf .= "FileDaemon { \n\tName = {$LocalDirector}-fd #\n\tFDport = {$port}\n\tWorkingDirectory = /var/db/bacula\n\tPid Directory = /var/run\n\tMaximum Concurrent Jobs = {$jobs}\n}\n"; } - file_put_contents(BACULA_LOCALBASE."/etc/bacula/bacula-fd.conf",$baculaclient_conf,LOCK_EX); - exec(BACULA_STARTUP_SCRIPT . " restart"); - // Mount Read-only - conf_mount_ro(); + // Write config file and start service + file_put_contents(BACULA_LOCALBASE . "/etc/bacula/bacula-fd.conf", $baculaclient_conf, LOCK_EX); + if (!empty($LocalDirector)) { + restart_service("bacula-client"); + } else { + log_error("[bacula-client] You need at least one local Director in order to run bacula-client."); } - } - ?> + conf_mount_ro(); + } +} +?> -- cgit v1.2.3