From bbcc8b5fa76f11b9e348d067d8c21e2b9cab6258 Mon Sep 17 00:00:00 2001 From: Matthew Vale Date: Tue, 1 Dec 2015 15:13:33 +0000 Subject: [PATCH] moved config_lua responsibility to install_switch --- core/databases/app_defaults.php | 177 ------------------ .../resources/classes/install_switch.php | 145 +++++++++++++- resources/functions.php | 6 + 3 files changed, 150 insertions(+), 178 deletions(-) diff --git a/core/databases/app_defaults.php b/core/databases/app_defaults.php index 71adfaced2..c6484cbd31 100644 --- a/core/databases/app_defaults.php +++ b/core/databases/app_defaults.php @@ -24,22 +24,6 @@ Mark J Crane */ -global $IS_WINDOWS; - -if ($IS_WINDOWS == null) { - if (stristr(PHP_OS, 'WIN')) { $IS_WINDOWS = true; } else { $IS_WINDOWS = false; } -} - -if (!function_exists('correct_path')) { - function correct_path($p) { - global $IS_WINDOWS; - if ($IS_WINDOWS) { - return str_replace('/', '\\', $p); - } - return $p; - } -} - //proccess this only one time if ($domains_processed == 1) { @@ -66,166 +50,5 @@ if ($domains_processed == 1) { unset($sql); } unset($prep_statement, $result); - - //replace the backslash with a forward slash - $db_path = str_replace("\\", "/", $db_path); - - if (strlen($_SESSION['switch']['scripts']['dir']) > 0) { - //get the odbc information - $sql = "select count(*) as num_rows from v_databases "; - $sql .= "where database_driver = 'odbc' "; - if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } - $prep_statement = $db->prepare($sql); - if ($prep_statement) { - $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - unset($prep_statement); - if ($row['num_rows'] > 0) { - $odbc_num_rows = $row['num_rows']; - - $sql = "select * from v_databases "; - $sql .= "where database_driver = 'odbc' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $dsn_name = $row["database_name"]; - $dsn_username = $row["database_username"]; - $dsn_password = $row["database_password"]; - break; //limit to 1 row - } - unset ($prep_statement); - } - else { - $odbc_num_rows = '0'; - } - } - - //get the recordings directory - if (strlen($_SESSION['switch']['recordings']['dir']) > 0) { - $sql = "select * from v_default_settings "; - $sql .= "where default_setting_category = 'switch' "; - $sql .= "and default_setting_subcategory = 'recordings' "; - $sql .= "and default_setting_name = 'dir' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $recordings_dir = $row["default_setting_value"]; - } - unset($prep_statement, $result); - } - - //config.lua - if (is_dir("/etc/fusionpbx")){ - $config = "/etc/fusionpbx/config.lua"; - } elseif (is_dir("/usr/local/etc/fusionpbx")){ - $config = "/usr/local/etc/fusionpbx/config.lua"; - } - else { - $config = $_SESSION['switch']['scripts']['dir']."/resources/config.lua"; - } - $fout = fopen($config,"w"); - if(!$fout){ - throw new Exception("Failed to open '$config' for writing"); - } - $tmp = "\n"; - $tmp .= "--set the variables\n"; - if (strlen($_SESSION['switch']['sounds']['dir']) > 0) { - $tmp .= correct_path(" sounds_dir = [[".$_SESSION['switch']['sounds']['dir']."]];\n"); - } - if (strlen($_SESSION['switch']['phrases']['dir']) > 0) { - $tmp .= correct_path(" phrases_dir = [[".$_SESSION['switch']['phrases']['dir']."]];\n"); - } - if (strlen($_SESSION['switch']['db']['dir']) > 0) { - $tmp .= correct_path(" database_dir = [[".$_SESSION['switch']['db']['dir']."]];\n"); - } - if (strlen($_SESSION['switch']['recordings']['dir']) > 0) { - $tmp .= correct_path(" recordings_dir = [[".$recordings_dir."]];\n"); - } - if (strlen($_SESSION['switch']['storage']['dir']) > 0) { - $tmp .= correct_path(" storage_dir = [[".$_SESSION['switch']['storage']['dir']."]];\n"); - } - if (strlen($_SESSION['switch']['voicemail']['dir']) > 0) { - $tmp .= correct_path(" voicemail_dir = [[".$_SESSION['switch']['voicemail']['dir']."]];\n"); - } - if (strlen($_SESSION['switch']['scripts']['dir']) > 0) { - $tmp .= correct_path(" scripts_dir = [[".$_SESSION['switch']['scripts']['dir']."]];\n"); - } - $tmp .= correct_path(" php_dir = [[".PHP_BINDIR."]];\n"); - if (substr(strtoupper(PHP_OS), 0, 3) == "WIN") { - $tmp .= " php_bin = \"php.exe\";\n"; - } - else { - $tmp .= " php_bin = \"php\";\n"; - } - $tmp .= correct_path(" document_root = [[".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."]];\n"); - $tmp .= "\n"; - - if ((strlen($db_type) > 0) || (strlen($dsn_name) > 0)) { - $tmp .= "--database information\n"; - $tmp .= " database = {}\n"; - $tmp .= " database[\"type\"] = \"".$db_type."\";\n"; - $tmp .= " database[\"name\"] = \"".$db_name."\";\n"; - $tmp .= correct_path(" database[\"path\"] = [[".$db_path."]];\n"); - - if (strlen($dsn_name) > 0) { - $tmp .= " database[\"system\"] = \"odbc://".$dsn_name.":".$dsn_username.":".$dsn_password."\";\n"; - $tmp .= " database[\"switch\"] = \"odbc://freeswitch:".$dsn_username.":".$dsn_password."\";\n"; - } - elseif ($db_type == "pgsql") { - if ($db_host == "localhost") { $db_host = "127.0.0.1"; } - $tmp .= " database[\"system\"] = \"pgsql://hostaddr=".$db_host." port=".$db_port." dbname=".$db_name." user=".$db_username." password=".$db_password." options='' application_name='".$db_name."'\";\n"; - $tmp .= " database[\"switch\"] = \"pgsql://hostaddr=".$db_host." port=".$db_port." dbname=freeswitch user=".$db_username." password=".$db_password." options='' application_name='freeswitch'\";\n"; - } - elseif ($db_type == "sqlite") { - $tmp .= " database[\"system\"] = \"sqlite://".$db_path."/".$db_name."\";\n"; - $tmp .= " database[\"switch\"] = \"sqlite://".$_SESSION['switch']['db']['dir']."\";\n"; - } - elseif ($db_type == "mysql") { - $tmp .= " database[\"system\"] = \"\";\n"; - $tmp .= " database[\"switch\"] = \"\";\n"; - } - $tmp .= "\n"; - } - $tmp .= "--set defaults\n"; - $tmp .= " expire = {}\n"; - $tmp .= " expire[\"directory\"] = \"3600\";\n"; - $tmp .= " expire[\"dialplan\"] = \"3600\";\n"; - $tmp .= " expire[\"languages\"] = \"3600\";\n"; - $tmp .= " expire[\"sofia.conf\"] = \"3600\";\n"; - $tmp .= " expire[\"acl.conf\"] = \"3600\";\n"; - $tmp .= "\n"; - $tmp .= "--set xml_handler\n"; - $tmp .= " xml_handler = {}\n"; - $tmp .= " xml_handler[\"fs_path\"] = false;\n"; - $tmp .= "\n"; - $tmp .= "--set the debug options\n"; - $tmp .= " debug[\"params\"] = false;\n"; - $tmp .= " debug[\"sql\"] = false;\n"; - $tmp .= " debug[\"xml_request\"] = false;\n"; - $tmp .= " debug[\"xml_string\"] = false;\n"; - $tmp .= " debug[\"cache\"] = false;\n"; - $tmp .= "\n"; - $tmp .= "--additional info\n"; - $tmp .= " domain_count = ".count($_SESSION["domains"]).";\n"; - $tmp .= correct_path(" temp_dir = [[".$_SESSION['server']['temp']['dir']."]];\n"); - if (isset($_SESSION['domain']['dial_string']['text'])) { - $tmp .= " dial_string = \"".$_SESSION['domain']['dial_string']['text']."\";\n"; - } - $tmp .= "\n"; - $tmp .= "--include local.lua\n"; - $tmp .= " require(\"resources.functions.file_exists\");\n"; - $tmp .= " if (file_exists(\"/etc/fusionpbx/local.lua\")) then\n"; - $tmp .= " dofile(\"/etc/fusionpbx/local.lua\");\n"; - $tmp .= " elseif (file_exists(\"/usr/local/etc/fusionpbx/local.lua\")) then\n"; - $tmp .= " dofile(\"/usr/local/etc/fusionpbx/local.lua\");\n"; - $tmp .= " elseif (file_exists(scripts_dir..\"/resources/local.lua\")) then\n"; - $tmp .= " require(\"resources.local\");\n"; - $tmp .= " end\n"; - fwrite($fout, $tmp); - unset($tmp); - fclose($fout); - } } ?> \ No newline at end of file diff --git a/core/install/resources/classes/install_switch.php b/core/install/resources/classes/install_switch.php index 715c2cef5b..5e63fd2072 100644 --- a/core/install/resources/classes/install_switch.php +++ b/core/install/resources/classes/install_switch.php @@ -176,10 +176,12 @@ include "root.php"; function install() { $this->copy_conf(); $this->copy_scripts(); + $this->create_config_lua(); } function upgrade() { $this->copy_scripts(); + $this->create_config_lua(); } function copy_conf() { @@ -260,6 +262,147 @@ include "root.php"; chmod($dst_dir, 0774); } } - + + function create_config_lua() { + //get the odbc information + $sql = "select count(*) as num_rows from v_databases "; + $sql .= "where database_driver = 'odbc' "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + unset($prep_statement); + if ($row['num_rows'] > 0) { + $odbc_num_rows = $row['num_rows']; + $sql = "select * from v_databases "; + $sql .= "where database_driver = 'odbc' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + foreach ($result as &$row) { + $dsn_name = $row["database_name"]; + $dsn_username = $row["database_username"]; + $dsn_password = $row["database_password"]; + break; //limit to 1 row + } + unset ($prep_statement); + } + else { + $odbc_num_rows = '0'; + } + } + + //config.lua + if (is_dir("/etc/fusionpbx")){ + $config = "/etc/fusionpbx/config.lua"; + } elseif (is_dir("/usr/local/etc/fusionpbx")){ + $config = "/usr/local/etc/fusionpbx/config.lua"; + } + else { + $config = $_SESSION['switch']['scripts']['dir']."/resources/config.lua"; + } + $fout = fopen($config,"w"); + if(!$fout){ + throw new Exception("Failed to open '$config' for writing"); + } + $tmp = "\n"; + $tmp .= "--set the variables\n"; + if (strlen($_SESSION['switch']['sounds']['dir']) > 0) { + $tmp .= normalize_path_to_os(" sounds_dir = [[".$_SESSION['switch']['sounds']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['phrases']['dir']) > 0) { + $tmp .= normalize_path_to_os(" phrases_dir = [[".$_SESSION['switch']['phrases']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['db']['dir']) > 0) { + $tmp .= normalize_path_to_os(" database_dir = [[".$_SESSION['switch']['db']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['recordings']['dir']) > 0) { + $tmp .= normalize_path_to_os(" recordings_dir = [[".$_SESSION['switch']['recordings']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['storage']['dir']) > 0) { + $tmp .= normalize_path_to_os(" storage_dir = [[".$_SESSION['switch']['storage']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['voicemail']['dir']) > 0) { + $tmp .= normalize_path_to_os(" voicemail_dir = [[".$_SESSION['switch']['voicemail']['dir']."]];\n"); + } + if (strlen($_SESSION['switch']['scripts']['dir']) > 0) { + $tmp .= normalize_path_to_os(" scripts_dir = [[".$_SESSION['switch']['scripts']['dir']."]];\n"); + } + $tmp .= normalize_path_to_os(" php_dir = [[".PHP_BINDIR."]];\n"); + if (substr(strtoupper(PHP_OS), 0, 3) == "WIN") { + $tmp .= " php_bin = \"php.exe\";\n"; + } + else { + $tmp .= " php_bin = \"php\";\n"; + } + $tmp .= normalize_path_to_os(" document_root = [[".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."]];\n"); + $tmp .= "\n"; + + if ((strlen($db_type) > 0) || (strlen($dsn_name) > 0)) { + $tmp .= "--database information\n"; + $tmp .= " database = {}\n"; + $tmp .= " database[\"type\"] = \"".$db_type."\";\n"; + $tmp .= " database[\"name\"] = \"".$db_name."\";\n"; + $tmp .= normalize_path_to_os(" database[\"path\"] = [[".$db_path."]];\n"); + + if (strlen($dsn_name) > 0) { + $tmp .= " database[\"system\"] = \"odbc://".$dsn_name.":".$dsn_username.":".$dsn_password."\";\n"; + $tmp .= " database[\"switch\"] = \"odbc://freeswitch:".$dsn_username.":".$dsn_password."\";\n"; + } + elseif ($db_type == "pgsql") { + if ($db_host == "localhost") { $db_host = "127.0.0.1"; } + $tmp .= " database[\"system\"] = \"pgsql://hostaddr=".$db_host." port=".$db_port." dbname=".$db_name." user=".$db_username." password=".$db_password." options='' application_name='".$db_name."'\";\n"; + $tmp .= " database[\"switch\"] = \"pgsql://hostaddr=".$db_host." port=".$db_port." dbname=freeswitch user=".$db_username." password=".$db_password." options='' application_name='freeswitch'\";\n"; + } + elseif ($db_type == "sqlite") { + $tmp .= " database[\"system\"] = \"sqlite://".$db_path."/".$db_name."\";\n"; + $tmp .= " database[\"switch\"] = \"sqlite://".$_SESSION['switch']['db']['dir']."\";\n"; + } + elseif ($db_type == "mysql") { + $tmp .= " database[\"system\"] = \"\";\n"; + $tmp .= " database[\"switch\"] = \"\";\n"; + } + $tmp .= "\n"; + } + $tmp .= "--set defaults\n"; + $tmp .= " expire = {}\n"; + $tmp .= " expire[\"directory\"] = \"3600\";\n"; + $tmp .= " expire[\"dialplan\"] = \"3600\";\n"; + $tmp .= " expire[\"languages\"] = \"3600\";\n"; + $tmp .= " expire[\"sofia.conf\"] = \"3600\";\n"; + $tmp .= " expire[\"acl.conf\"] = \"3600\";\n"; + $tmp .= "\n"; + $tmp .= "--set xml_handler\n"; + $tmp .= " xml_handler = {}\n"; + $tmp .= " xml_handler[\"fs_path\"] = false;\n"; + $tmp .= "\n"; + $tmp .= "--set the debug options\n"; + $tmp .= " debug[\"params\"] = false;\n"; + $tmp .= " debug[\"sql\"] = false;\n"; + $tmp .= " debug[\"xml_request\"] = false;\n"; + $tmp .= " debug[\"xml_string\"] = false;\n"; + $tmp .= " debug[\"cache\"] = false;\n"; + $tmp .= "\n"; + $tmp .= "--additional info\n"; + $tmp .= " domain_count = ".count($_SESSION["domains"]).";\n"; + $tmp .= normalize_path_to_os(" temp_dir = [[".$_SESSION['server']['temp']['dir']."]];\n"); + if (isset($_SESSION['domain']['dial_string']['text'])) { + $tmp .= " dial_string = \"".$_SESSION['domain']['dial_string']['text']."\";\n"; + } + $tmp .= "\n"; + $tmp .= "--include local.lua\n"; + $tmp .= " require(\"resources.functions.file_exists\");\n"; + $tmp .= " if (file_exists(\"/etc/fusionpbx/local.lua\")) then\n"; + $tmp .= " dofile(\"/etc/fusionpbx/local.lua\");\n"; + $tmp .= " elseif (file_exists(\"/usr/local/etc/fusionpbx/local.lua\")) then\n"; + $tmp .= " dofile(\"/usr/local/etc/fusionpbx/local.lua\");\n"; + $tmp .= " elseif (file_exists(scripts_dir..\"/resources/local.lua\")) then\n"; + $tmp .= " require(\"resources.local\");\n"; + $tmp .= " end\n"; + fwrite($fout, $tmp); + unset($tmp); + fclose($fout); + } } ?> \ No newline at end of file diff --git a/resources/functions.php b/resources/functions.php index 4d2278a217..04e6d1f3f1 100644 --- a/resources/functions.php +++ b/resources/functions.php @@ -606,6 +606,12 @@ return str_replace(array('/','\\'), '/', $path); } } + + if ( !function_exists('normalize_path_to_os')) { + function normalize_path_to_os($path) { + return str_replace(array('/','\\'), DIRECTORY_SEPARATOR, $path); + } + } if (!function_exists('username_exists')) { function username_exists($username) {