|
@@ -1,408 +0,0 @@
|
|
|
-<?php
|
|
|
-/*
|
|
|
- FusionPBX
|
|
|
- Version: MPL 1.1
|
|
|
-
|
|
|
- The contents of this file are subject to the Mozilla Public License Version
|
|
|
- 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
- the License. You may obtain a copy of the License at
|
|
|
- http://www.mozilla.org/MPL/
|
|
|
-
|
|
|
- Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
- for the specific language governing rights and limitations under the
|
|
|
- License.
|
|
|
-
|
|
|
- The Original Code is FusionPBX
|
|
|
-
|
|
|
- The Initial Developer of the Original Code is
|
|
|
- Mark J Crane <[email protected]>
|
|
|
- Portions created by the Initial Developer are Copyright (C) 2008-2016
|
|
|
- the Initial Developer. All Rights Reserved.
|
|
|
-
|
|
|
- Contributor(s):
|
|
|
- Mark J Crane <[email protected]>
|
|
|
- Matthew Vale <[email protected]>
|
|
|
-*/
|
|
|
-//add the required includes
|
|
|
- require_once "root.php";
|
|
|
- require_once "resources/functions.php";
|
|
|
- require_once "resources/classes/text.php";
|
|
|
- require_once "resources/classes/message.php";
|
|
|
-
|
|
|
-//start a php session
|
|
|
- if (!isset($_SESSION)) { session_start(); }
|
|
|
-
|
|
|
-//initialize variables we are going to use
|
|
|
- $event_host = '';
|
|
|
- $event_port = '';
|
|
|
- $event_password = '';
|
|
|
- $install_language = 'en-us';
|
|
|
- $admin_username = '';
|
|
|
- $admin_password = '';
|
|
|
- $install_default_country = 'US';
|
|
|
- $install_template_name = '';
|
|
|
- $domain_name = '';
|
|
|
- $db_type = '';
|
|
|
- $db_path = '';
|
|
|
- $db_host = '';
|
|
|
- $db_port = '';
|
|
|
- $db_name = '';
|
|
|
- $db_username = '';
|
|
|
- $db_password = '';
|
|
|
- $db_create = '';
|
|
|
- $db_create_username = '';
|
|
|
- $db_create_password = '';
|
|
|
- $db = NULL;
|
|
|
-
|
|
|
-//detect the iso country code from the locale
|
|
|
- //$locale = Locale::getDefault();
|
|
|
- $timezone = 'UTC';
|
|
|
- if (is_link('/etc/localtime')) {
|
|
|
- // Mac OS X (and older Linuxes)
|
|
|
- // /etc/localtime is a symlink to the
|
|
|
- // timezone in /usr/share/zoneinfo.
|
|
|
- $filename = readlink('/etc/localtime');
|
|
|
- if (strpos($filename, '/usr/share/zoneinfo/') === 0) {
|
|
|
- $timezone = substr($filename, 20);
|
|
|
- }
|
|
|
- } elseif (file_exists('/etc/timezone')) {
|
|
|
- // Ubuntu / Debian.
|
|
|
- $data = file_get_contents('/etc/timezone');
|
|
|
- if ($data) {
|
|
|
- $timezone = rtrim($data);
|
|
|
- }
|
|
|
- } elseif (file_exists('/etc/sysconfig/clock')) {
|
|
|
- // RHEL / CentOS
|
|
|
- $data = parse_ini_file('/etc/sysconfig/clock');
|
|
|
- if (!empty($data['ZONE'])) {
|
|
|
- $timezone = $data['ZONE'];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-//set the time zone
|
|
|
- date_default_timezone_set($timezone);
|
|
|
-
|
|
|
-//if the config.php exists deny access to install.php
|
|
|
- if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
|
|
|
- echo "access denied";
|
|
|
- exit;
|
|
|
- } elseif (file_exists("/etc/fusionpbx/config.php")) {
|
|
|
- echo "access denied";
|
|
|
- exit;
|
|
|
- } elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
|
|
|
- echo "access denied";
|
|
|
- exit;
|
|
|
- }
|
|
|
-
|
|
|
-//intialize variables
|
|
|
- $install_step = '';
|
|
|
- $return_install_step = '';
|
|
|
- $re_detect_switch = false;
|
|
|
-
|
|
|
-//process the the HTTP POST
|
|
|
- if (count($_POST) > 0) {
|
|
|
- $install_language = check_str($_POST["install_language"]);
|
|
|
- $install_step = check_str($_POST["install_step"]);
|
|
|
- $return_install_step = check_str($_POST["return_install_step"]);
|
|
|
- if(isset($_POST["event_host"])){
|
|
|
- $event_host = check_str($_POST["event_host"]);
|
|
|
- $event_port = check_str($_POST["event_port"]);
|
|
|
- $event_password = check_str($_POST["event_password"]);
|
|
|
- }
|
|
|
- if(isset($_POST["db_type"])){
|
|
|
- $db_type = $_POST["db_type"];
|
|
|
- $admin_username = $_POST["admin_username"];
|
|
|
- $admin_password = $_POST["admin_password"];
|
|
|
- $install_default_country = $_POST["install_default_country"];
|
|
|
- $install_template_name = $_POST["install_template_name"];
|
|
|
- $domain_name = $_POST["domain_name"];
|
|
|
- }
|
|
|
- if($install_step == 'config_detail' and strlen(check_str($_POST["re_detect_switch"])) > 0 ){
|
|
|
- $re_detect_switch = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-//set the install step if it is not set
|
|
|
- if(!$install_step) { $install_step = 'select_language'; }
|
|
|
-
|
|
|
-//set the language for the install
|
|
|
- $_SESSION['domain']['language']['code'] = $install_language;
|
|
|
-
|
|
|
-//add multi-lingual support
|
|
|
- $language = new text;
|
|
|
- $text = $language->get();
|
|
|
-
|
|
|
-//set a default enviroment if first_time
|
|
|
- //initialize some varibles to cut down on warnings
|
|
|
- $_SESSION['message'] = '';
|
|
|
- $v_link_label_play = '';
|
|
|
- $v_link_label_pause = '';
|
|
|
- $default_login = 0;
|
|
|
- $onload = '';
|
|
|
-
|
|
|
-//buffer the content
|
|
|
- if (sizeof(ob_get_status())!=0) ob_end_clean(); //clean the buffer
|
|
|
- ob_start();
|
|
|
-
|
|
|
- $messages = array();
|
|
|
- if (!extension_loaded('PDO')) {
|
|
|
- $messages[] = "<b>PHP PDO was not detected</b>. Please install it before proceeding";
|
|
|
- }
|
|
|
- if (!(extension_loaded('pdo_pgsql') or extension_loaded('pdo_mysql') or extension_loaded('pdo_sqlite'))) {
|
|
|
- $messages[] = "<b>no database PDO driver was detected</b>. Please install one of pgsql, mysql or sqlite before proceeding";
|
|
|
- }
|
|
|
-
|
|
|
- echo "<div align='center'>\n";
|
|
|
- $msg = '';
|
|
|
- //make sure the includes directory is writable so the config.php file can be written.
|
|
|
- if (!is_writable($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/pdo.php")) {
|
|
|
- $messages[] = "<b>Write access to ".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."</b> and its sub-directories are required during the install.";
|
|
|
- }
|
|
|
- //test for selinux
|
|
|
- if (file_exists('/usr/sbin/getenforce')) {
|
|
|
- $enforcing;
|
|
|
- exec('getenforce', $enforcing);
|
|
|
- if($enforcing[0] == 'Enforcing'){
|
|
|
- $messages[] = "<b>SELinux is enabled and enforcing</b> you must have a policy installed to let the webserver connect to the switch event socket<br/>".
|
|
|
- "<sm>You can use the following to find what ports are allowed<pre>semanage port -l | grep '^http_port_t'</pre></sm>";
|
|
|
- }
|
|
|
- }
|
|
|
- //test for windows and non sqlite
|
|
|
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' and strlen($db_type) > 0 and $db_type !='sqlite') {
|
|
|
- //Test for ODBC DSN in ODBC.INI. It should have section:
|
|
|
- //[fusionpbx]
|
|
|
- //Driver32=C:\Program Files\psqlODBC\0906\bin\psqlodbc35w.dll
|
|
|
- if ( preg_match('/\[fusionpbx\]/mi', file_get_contents('c:/Windows/ODBC.INI')) == 0 ) {
|
|
|
- $messages[] = "<b>Windows requires a system DSN ODBC connection with name 'fusionpbx'.</b>";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //action code
|
|
|
- if($return_install_step == 'config_detail'){
|
|
|
- //check for all required data
|
|
|
- $existing_errors = count($messages);
|
|
|
- if (strlen($admin_username) == 0) { $messages[] = "Please provide the Admin Username"; }
|
|
|
- if (strlen($admin_password) == 0) { $messages[] = "Please provide the Admin Password"; }
|
|
|
- elseif (strlen($admin_password) < 5) { $messages[] = "Please provide an Admin Password that is 5 or more characters.<br>\n"; }
|
|
|
- if ( count($messages) > $existing_errors) { $install_step = 'config_detail'; }
|
|
|
- }
|
|
|
- if($re_detect_switch === true ){
|
|
|
- $install_step = 'detect_config';
|
|
|
- }
|
|
|
-
|
|
|
- if($install_step =='execute') {
|
|
|
- //set the max execution time to 1 hour
|
|
|
- ini_set('max_execution_time',3600);
|
|
|
- }
|
|
|
-
|
|
|
- //display messages
|
|
|
- if (count($messages)>0) {
|
|
|
- echo "<br />\n";
|
|
|
- echo "<div align='center'>\n";
|
|
|
- echo "<table width='75%'>\n";
|
|
|
- echo "<tr>\n";
|
|
|
- echo "<th align='left'>Messages</th>\n";
|
|
|
- echo "</tr>\n";
|
|
|
- echo "<tr>\n";
|
|
|
- echo "<td class='row_style1'><strong><ul>\n";
|
|
|
- foreach ($messages as $message){
|
|
|
- echo "<li>$message</li>\n";
|
|
|
- }
|
|
|
- echo "</ul></strong></td>\n";
|
|
|
- echo "</tr>\n";
|
|
|
- echo "</table>\n";
|
|
|
- echo "</div>\n";
|
|
|
- }
|
|
|
-
|
|
|
- //includes and title
|
|
|
- $document['title'] = $text['title-install'];
|
|
|
-
|
|
|
- //view code
|
|
|
- if($install_step == 'select_language'){
|
|
|
- echo " <form method='post' name='frm' action=''>\n";
|
|
|
- include "resources/page_parts/install_select_language.php";
|
|
|
- echo " <input type='hidden' name='return_install_step' value='select_language'/>\n";
|
|
|
- echo " <input type='hidden' name='install_step' value='detect_config'/>\n";
|
|
|
- echo "</form>\n";
|
|
|
- } elseif($install_step == 'detect_config'){
|
|
|
- if(!($event_host == '' || $event_host == 'localhost' || $event_host == '::1' || $event_host == '127.0.0.1' )){
|
|
|
- echo "<p><b>Warning</b> you have chosen a value other than localhost for event_host, this is unsupported at present</p>\n";
|
|
|
- }
|
|
|
- //if($detect_ok){
|
|
|
- echo "<form method='post' name='frm' action=''>\n";
|
|
|
- include "resources/page_parts/install_event_socket.php";
|
|
|
- //echo " <input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
|
|
|
- //echo " <input type='hidden' name='return_install_step' value='detect_config'/>\n";
|
|
|
- //echo " <input type='hidden' name='install_step' value='config_detail'/>\n";
|
|
|
- //echo " <input type='hidden' name='event_host' value='$event_host'/>\n";
|
|
|
- //echo " <input type='hidden' name='event_port' value='$event_port'/>\n";
|
|
|
- //echo " <input type='hidden' name='event_password' value='$event_password'/>\n";
|
|
|
- //echo " <div style='text-align:right'>\n";
|
|
|
- //echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
|
|
|
- //echo " <button type='submit' class='btn' id='next'>".$text['button-next']."</button>\n";
|
|
|
- //echo " </div>\n";
|
|
|
- echo "</form>\n";
|
|
|
- //} else {
|
|
|
- // echo "<form method='post' name='frm' action=''>\n";
|
|
|
- // echo " <div style='text-align:right'>\n";
|
|
|
- // echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
|
|
|
- // echo " </div>\n";
|
|
|
- // echo "</form>\n";
|
|
|
- //}
|
|
|
- }
|
|
|
- elseif($install_step == 'config_detail'){
|
|
|
- //get the domain
|
|
|
- if(!$domain_name){
|
|
|
- $domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
|
|
- $domain_name = $domain_array[0];
|
|
|
- }
|
|
|
- include "resources/page_parts/install_config_detail.php";
|
|
|
- }
|
|
|
- elseif($install_step == 'config_database'){
|
|
|
- include "resources/page_parts/install_config_database.php";
|
|
|
- }
|
|
|
- elseif($install_step == 'execute'){
|
|
|
- echo "<p><b>".$text['header-installing']."</b></p>\n";
|
|
|
- //$protocol = 'http';
|
|
|
- //if($_SERVER['HTTPS']) { $protocol = 'https'; }
|
|
|
- //echo "<iframe src='$protocol://$domain_name/core/install/install_first_time.php' style='border:solid 1px #000;width:100%;height:auto'></iframe>";
|
|
|
- require_once "core/install/resources/classes/detect_switch.php";
|
|
|
- $detect_switch = new detect_switch($event_host, $event_port, $event_password);
|
|
|
- $detect_ok = true;
|
|
|
- try {
|
|
|
- $detect_switch->detect();
|
|
|
- } catch(Exception $e){
|
|
|
- //echo "<p>Failed to detect configuration detect_switch reported: " . $e->getMessage() . "</p>\n";
|
|
|
- //$detect_ok = false;
|
|
|
- }
|
|
|
- if($detect_ok){
|
|
|
- $install_ok = true;
|
|
|
- echo "<pre style='text-align:left;'>\n";
|
|
|
- function error_handler($err_severity, $errstr, $errfile, $errline ) {
|
|
|
- if (0 === error_reporting()) { return false;}
|
|
|
- switch($err_severity)
|
|
|
- {
|
|
|
- case E_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_PARSE: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_CORE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_COMPILE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_USER_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_STRICT: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- case E_RECOVERABLE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
|
|
|
- default: return false;
|
|
|
- }
|
|
|
- }
|
|
|
- #set_error_handler("error_handler");
|
|
|
- try {
|
|
|
- require_once "resources/classes/global_settings.php";
|
|
|
- $global_settings = new global_settings($detect_switch, $domain_name);
|
|
|
- if(is_null($global_settings)){ throw new Exception("Error global_settings came back with null"); }
|
|
|
- require_once "resources/classes/install_fusionpbx.php";
|
|
|
- $system = new install_fusionpbx($global_settings);
|
|
|
- $system->admin_username = $admin_username;
|
|
|
- $system->admin_password = $admin_password;
|
|
|
- $system->default_country = $install_default_country;
|
|
|
- $system->install_language = $install_language;
|
|
|
- $system->template_name = $install_template_name;
|
|
|
-
|
|
|
- require_once "resources/classes/install_switch.php";
|
|
|
- $switch = new install_switch($global_settings);
|
|
|
- //$switch->debug = true;
|
|
|
- //$system->debug = true;
|
|
|
- $switch->echo_progress = true;
|
|
|
- $system->echo_progress = true;
|
|
|
- $system->install_phase_1();
|
|
|
- $switch->install_phase_1();
|
|
|
- $system->install_phase_2();
|
|
|
- $switch->install_phase_2();
|
|
|
- } catch(Exception $e){
|
|
|
- echo "</pre>\n";
|
|
|
- echo "<p><b>Failed to install</b><br/>" . $e->getMessage() . "</p>\n";
|
|
|
- try {
|
|
|
- require_once "resources/classes/install_fusionpbx.php";
|
|
|
- $system = new install_fusionpbx($global_settings);
|
|
|
- $system->remove_config();
|
|
|
- } catch(Exception $e){
|
|
|
- echo "<p><b>Failed to remove config:</b> " . $e->getMessage() . "</p>\n";
|
|
|
- }
|
|
|
- $install_ok = false;
|
|
|
- }
|
|
|
- restore_error_handler();
|
|
|
- if($install_ok){
|
|
|
- echo "</pre>\n";
|
|
|
- header("Location: ".PROJECT_PATH."/logout.php");
|
|
|
- $_SESSION['message'] = 'Install complete';
|
|
|
- } else {
|
|
|
- echo "<form method='post' name='frm' action=''>\n";
|
|
|
- echo " <div style='text-align:right'>\n";
|
|
|
- echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
|
|
|
- echo " <button type='button' class='btn' onclick=\"location.reload(true);\">".$text['button-execute']."</button>\n";
|
|
|
- echo " </div>\n";
|
|
|
- echo "</form>\n";
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- echo "<p>Unkown install_step '$install_step'</p>\n";
|
|
|
- }
|
|
|
- echo "</div>\n";
|
|
|
-
|
|
|
-//initialize some defaults so we can be 'logged in'
|
|
|
- $_SESSION['username'] = 'install_enabled';
|
|
|
- $_SESSION['permissions'][]['permission_name'] = 'superadmin';
|
|
|
- $_SESSION['menu'] = '';
|
|
|
-
|
|
|
-//add the content to the template and then send output
|
|
|
- $body = ob_get_contents(); //get the output from the buffer
|
|
|
- ob_end_clean(); //clean the buffer
|
|
|
-
|
|
|
-//set a default template
|
|
|
- $default_template = 'default';
|
|
|
- $_SESSION['domain']['template']['name'] = $default_template;
|
|
|
- $x = 0;
|
|
|
- include "themes/$default_template/app_config.php";
|
|
|
- $_SESSION['theme'] = Array();
|
|
|
- foreach ($apps as $app_id => $data) {
|
|
|
- foreach ($apps[$app_id]['default_settings'] as $index => $default_setting) {
|
|
|
- $sub_category = $default_setting['default_setting_subcategory'];
|
|
|
- $name = $default_setting['default_setting_name'];
|
|
|
- if($default_setting['default_setting_enabled'] == 'true'){
|
|
|
- if($name == 'array'){
|
|
|
- $_SESSION['theme'][$sub_category][(isset($default_setting['default_setting_order']) ? $default_setting['default_setting_order'] : null)] = $default_setting['default_setting_value'];
|
|
|
- }
|
|
|
- else {
|
|
|
- $_SESSION['theme'][$sub_category][$name] = $default_setting['default_setting_value'];
|
|
|
- }
|
|
|
- }else{
|
|
|
- $_SESSION['theme'][$sub_category][$name] = '';
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- unset($apps, $x);
|
|
|
- $_SESSION['theme']['menu_brand_type']['text'] = "text";
|
|
|
-
|
|
|
-//set the default template path
|
|
|
- $template_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes/'.$default_template.'/template.php';
|
|
|
-
|
|
|
-//get the content of the template
|
|
|
- $template_content = file_get_contents($template_path);
|
|
|
-
|
|
|
-//replace the variables in the template
|
|
|
- $template_content = str_replace ("<!--{title}-->", $document['title'], $template_content); //<!--{title}--> defined in each individual page
|
|
|
- $template_content = str_replace ("<!--{head}-->", '', $template_content); //<!--{head}--> defined in each individual page
|
|
|
- //$template_content = str_replace ("<!--{menu}-->", $_SESSION["menu"], $template_content); //included in the theme
|
|
|
- $template_content = str_replace ("<!--{body}-->", $body, $template_content); //defined in /themes/default/template.php
|
|
|
- $template_content = str_replace ("<!--{project_path}-->", PROJECT_PATH, $template_content); //defined in /themes/default/template.php
|
|
|
-
|
|
|
-//get the contents of the template and save it to the template variable
|
|
|
- ob_start();
|
|
|
- require_once "resources/classes/menu.php";
|
|
|
- eval('?>' . $template_content . '<?php ');
|
|
|
- $content = ob_get_contents(); //get the output from the buffer
|
|
|
- ob_end_clean(); //clean the buffer
|
|
|
-
|
|
|
-//send the content to the browser and then clear the variable
|
|
|
- echo $content;
|
|
|
-
|
|
|
-?>
|