mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
175 lines
6.1 KiB
PHP
175 lines
6.1 KiB
PHP
<?php
|
|
|
|
class install {
|
|
|
|
/**
|
|
* declare constant variables
|
|
*/
|
|
const app_name = 'install';
|
|
const app_uuid = '75507e6e-891e-11e5-af63-feff819cdc9f';
|
|
|
|
/**
|
|
* declare public variables
|
|
*/
|
|
public $message;
|
|
public $database_host;
|
|
public $database_port;
|
|
public $database_name;
|
|
public $database_username;
|
|
public $database_password;
|
|
|
|
/**
|
|
* called when the object is created
|
|
*/
|
|
public function __construct() {
|
|
|
|
}
|
|
|
|
/**
|
|
* Used to create the config.conf file using paths based on the operating system.
|
|
*
|
|
* @return boolean true if the configuration file is successfully created, false otherwise.
|
|
*/
|
|
public function config() {
|
|
|
|
//set the default config file location
|
|
$os = strtoupper(substr(PHP_OS, 0, 3));
|
|
switch ($os) {
|
|
case "FRE":
|
|
case "OPE":
|
|
case "NET":
|
|
case "BSD":
|
|
$config_path = '/usr/local/etc/fusionpbx';
|
|
$config_file = $config_path . '/config.conf';
|
|
$document_root = '/usr/local/www/fusionpbx';
|
|
|
|
$conf_dir = '/usr/local/etc/freeswitch';
|
|
$sounds_dir = '/usr/share/freeswitch/sounds';
|
|
$database_dir = '/var/lib/freeswitch/db';
|
|
$recordings_dir = '/var/lib/freeswitch/recordings';
|
|
$storage_dir = '/var/lib/freeswitch/storage';
|
|
$voicemail_dir = '/var/lib/freeswitch/storage/voicemail';
|
|
$scripts_dir = '/usr/share/freeswitch/scripts';
|
|
$php_dir = PHP_BINDIR;
|
|
$cache_location = '/var/cache/fusionpbx';
|
|
break;
|
|
case "LIN":
|
|
$config_path = '/etc/fusionpbx/';
|
|
$config_file = $config_path . '/config.conf';
|
|
$document_root = '/var/www/fusionpbx';
|
|
|
|
$conf_dir = '/etc/freeswitch';
|
|
$sounds_dir = '/usr/share/freeswitch/sounds';
|
|
$database_dir = '/var/lib/freeswitch/db';
|
|
$recordings_dir = '/var/lib/freeswitch/recordings';
|
|
$storage_dir = '/var/lib/freeswitch/storage';
|
|
$voicemail_dir = '/var/lib/freeswitch/storage/voicemail';
|
|
$scripts_dir = '/usr/share/freeswitch/scripts';
|
|
$php_dir = PHP_BINDIR;
|
|
$cache_location = '/var/cache/fusionpbx';
|
|
break;
|
|
case "WIN":
|
|
$system_drive = getenv('SystemDrive');
|
|
$config_path = $system_drive . DIRECTORY_SEPARATOR . 'ProgramData' . DIRECTORY_SEPARATOR . 'fusionpbx';
|
|
$config_file = $config_path . DIRECTORY_SEPARATOR . 'config.conf';
|
|
$document_root = dirname(__DIR__, 4);
|
|
|
|
$conf_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'conf';
|
|
$sounds_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'sounds';
|
|
$database_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'db';
|
|
$recordings_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'recordings';
|
|
$storage_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'storage';
|
|
$voicemail_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'voicemail';
|
|
$scripts_dir = $_SERVER['ProgramFiles'] . DIRECTORY_SEPARATOR . 'freeswitch' . DIRECTORY_SEPARATOR . 'scripts';
|
|
$php_dir = dirname(PHP_BINARY);
|
|
$cache_location = dirname(dirname(__DIR__, 4)) . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'fusionpbx';
|
|
break;
|
|
}
|
|
|
|
//end the script if the config path is not set
|
|
if (!isset($config_path)) {
|
|
$this->message = "Config file path not found\n";
|
|
return false;
|
|
}
|
|
|
|
//config directory is not writable
|
|
if (!is_writable($config_path)) {
|
|
$this->message = "Check permissions " . $config_path . " must be writable.\n";
|
|
return false;
|
|
}
|
|
|
|
//make the config directory
|
|
if (isset($config_path)) {
|
|
system('mkdir -p ' . $config_path);
|
|
}
|
|
|
|
//build the config file
|
|
$conf = "\n";
|
|
$conf .= "#database system settings\n";
|
|
$conf .= "database.0.type = pgsql\n";
|
|
$conf .= "database.0.host = " . $this->database_host . "\n";
|
|
$conf .= "database.0.port = " . $this->database_port . "\n";
|
|
$conf .= "database.0.sslmode = prefer\n";
|
|
$conf .= "database.0.name = " . $this->database_name . "\n";
|
|
$conf .= "database.0.username = " . $this->database_username . "\n";
|
|
$conf .= "database.0.password = " . $this->database_password . "\n";
|
|
$conf .= "\n";
|
|
$conf .= "#database switch settings\n";
|
|
$conf .= "database.1.type = sqlite\n";
|
|
$conf .= "database.1.path = " . $database_dir . "\n";
|
|
$conf .= "database.1.name = core.db\n";
|
|
//$conf .= "database.1.backend.base64 = \n";
|
|
$conf .= "\n";
|
|
$conf .= "#general settings\n";
|
|
$conf .= "document.root = " . $document_root . "\n";
|
|
$conf .= "project.path =\n";
|
|
$conf .= "temp.dir = /tmp\n";
|
|
$conf .= "php.dir = " . $php_dir . "\n";
|
|
$conf .= "php.bin = php\n";
|
|
$conf .= "\n";
|
|
$conf .= "#session settings\n";
|
|
$conf .= "session.cookie_httponly = true\n";
|
|
$conf .= "session.cookie_secure = true\n";
|
|
$conf .= "session.cookie_samesite = Lax\n";
|
|
$conf .= "\n";
|
|
$conf .= "#cache settings\n";
|
|
$conf .= "cache.method = file\n";
|
|
$conf .= "cache.location = " . $cache_location . "\n";
|
|
$conf .= "cache.settings = true\n";
|
|
$conf .= "\n";
|
|
$conf .= "#switch settings\n";
|
|
$conf .= "switch.conf.dir = " . $conf_dir . "\n";
|
|
$conf .= "switch.sounds.dir = " . $sounds_dir . "\n";
|
|
$conf .= "switch.database.dir = " . $database_dir . "\n";
|
|
$conf .= "switch.recordings.dir = " . $recordings_dir . "\n";
|
|
$conf .= "switch.storage.dir = " . $storage_dir . "\n";
|
|
$conf .= "switch.voicemail.dir = " . $voicemail_dir . "\n";
|
|
$conf .= "switch.scripts.dir = " . $scripts_dir . "\n";
|
|
$conf .= "\n";
|
|
$conf .= "#switch xml handler\n";
|
|
$conf .= "xml_handler.fs_path = false\n";
|
|
$conf .= "xml_handler.reg_as_number_alias = false\n";
|
|
$conf .= "xml_handler.number_as_presence_id = true\n";
|
|
$conf .= "\n";
|
|
$conf .= "#error reporting options: user,dev,all\n";
|
|
$conf .= "error.reporting = user\n";
|
|
|
|
//write the config file
|
|
$file_handle = fopen($config_file, "w");
|
|
if (!$file_handle) {
|
|
return;
|
|
}
|
|
fwrite($file_handle, $conf);
|
|
fclose($file_handle);
|
|
|
|
//if the config.conf file was saved return true
|
|
if (file_exists($config_file)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
}
|