From cb8c86a5eb7b70feb29a2ef7503aae497d40bf57 Mon Sep 17 00:00:00 2001
From: wyrie <wyrie@ispconfig3>
Date: Wed, 02 Dec 2009 06:57:59 -0500
Subject: [PATCH] Implemented: FS#973 - Gentoo support for installer. Fixed FS#974 - Directory mode for firewall configuration
---
install/lib/installer_base.lib.php | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 115 insertions(+), 2 deletions(-)
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index f671db1..7f5046b 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -737,7 +737,7 @@
$config_dir = $conf['pureftpd']['config_dir'];
- //* configure pam for SMTP authentication agains the ispconfig database
+ //* configure pure-ftpd for MySQL authentication against the ispconfig database
$configfile = 'db/mysql.conf';
if(is_file("$config_dir/$configfile")){
copy("$config_dir/$configfile", "$config_dir/$configfile~");
@@ -903,7 +903,7 @@
if(is_dir("/etc/Bastille.backup")) caselog("rm -rf /etc/Bastille.backup", __FILE__, __LINE__);
if(is_dir("/etc/Bastille")) caselog("mv -f /etc/Bastille /etc/Bastille.backup", __FILE__, __LINE__);
- @mkdir("/etc/Bastille", octdec($directory_mode));
+ @mkdir("/etc/Bastille", 0700);
if(is_dir("/etc/Bastille.backup/firewall.d")) caselog("cp -pfr /etc/Bastille.backup/firewall.d /etc/Bastille/", __FILE__, __LINE__);
caselog("cp -f tpl/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg", __FILE__, __LINE__);
caselog("chmod 644 /etc/Bastille/bastille-firewall.cfg", __FILE__, __LINE__);
@@ -1383,6 +1383,119 @@
}
+ /**
+ * Helper function - get the path to a template file based on
+ * the local part of the filename. Checks first for the existence
+ * of a distribution specific file and if not found looks in the
+ * base template folder. Optionally the behaviour can be changed
+ * by setting the 2nd parameter which will fetch the contents
+ * of the template file and return it instead of the path. The 3rd
+ * parameter further extends this behaviour by filtering the contents
+ * by inserting the ispconfig database credentials using the {} placeholders.
+ *
+ * @param string $tLocal local part of filename
+ * @param bool $tRf
+ * @param bool $tDBCred
+ * @return string Relative path to the chosen template file
+ */
+ protected function get_template_file($tLocal, $tRf=false, $tDBCred=false)
+ {
+ global $conf, $dist;
+
+ $final_path = '';
+ $dist_template = 'dist/tpl/'.strtolower($dist['name'])."/$tLocal.master";
+ if (file_exists($dist_template)) {
+ $final_path = $dist_template;
+ } else {
+ $final_path = "tpl/$tLocal.master";
+ }
+
+ if (!$tRf) {
+ return $final_path;
+ } else {
+ return (!$tDBCred) ? rf($final_path) : $this->insert_db_credentials(rf($final_path));
+ }
+ }
+
+ /**
+ * Helper function - writes the contents to a config file
+ * and performs a backup if the file exist. Additionally
+ * if the file exists the new file will be given the
+ * same rights and ownership as the original. Optionally the
+ * rights and/or ownership can be overriden by appending umask,
+ * user and group to the parameters. Providing only uid and gid
+ * values will result in only a chown.
+ *
+ * @param $tConf
+ * @param $tContents
+ * @return bool
+ */
+ protected function write_config_file($tConf, $tContents)
+ {
+ // Backup config file before writing new contents and stat file
+ if ( is_file($tConf) )
+ {
+ $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res);
+ if ($res == 0) { // stat successfull
+ list($access, $user, $group) = split(" ", $stat);
+ }
+
+ if ( copy($tConf, $tConf.'~') ) {
+ exec('chmod 400 '.$tConf.'~');
+ }
+ }
+
+ wf($tConf, $tContents); // write file
+
+ if (func_num_args() >= 4) // override rights and/or ownership
+ {
+ $args = func_get_args();
+ $output = array_slice($args, 2);
+
+ switch (sizeof($output)) {
+ case 3:
+ $umask = array_shift($output);
+ if (is_numeric($umask) && preg_match('/^0?[0-7]{3}$/', $umask)) {
+ $access = $umask;
+ }
+ case 2:
+ if (is_user($output[0]) && is_group($output[1])) {
+ list($user,$group) = $output;
+ }
+ break;
+ }
+ }
+
+ if (!empty($user) && !empty($group)) {
+ exec("chown $user:$group $tConf");
+ }
+
+ if (!empty($access)) {
+ exec("chmod $access $tConf");
+ }
+ }
+
+ /**
+ * Helper function - filter the contents of a config
+ * file by inserting the common ispconfig database
+ * credentials.
+ *
+ * @param $tContents
+ * @return string
+ */
+ protected function insert_db_credentials($tContents)
+ {
+ global $conf;
+
+ $tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents);
+ $tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents);
+ $tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents);
+ $tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents);
+ $tContents = str_replace('{mysql_server_host}',$conf['mysql']['host'], $tContents);
+ $tContents = str_replace('{mysql_server_port}',$conf["mysql"]["port"], $tContents);
+
+ return $tContents;
+ }
}
?>
\ No newline at end of file
--
Gitblit v1.9.1