(2003-2009) * @author Froxlor team (2010-) * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package Install * */ /** * Most elements are taken from the phpBB (www.phpbb.com) * installer, (c) 1999 - 2004 phpBB Group. */ // ensure that default timezone is set if(function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get")) { @date_default_timezone_set(@date_default_timezone_get()); } if(file_exists('../lib/userdata.inc.php')) { /** * Includes the Usersettings eg. MySQL-Username/Passwort etc. to test if Froxlor is already installed */ require ('../lib/userdata.inc.php'); if(isset($sql) && is_array($sql) ) { $installed_hint = file_get_contents('../templates/Froxlor/misc/alreadyinstalledhint.tpl'); die($installed_hint); } } /** * Include the functions */ require ('../lib/functions.php'); /** * Include the MySQL-Table-Definitions */ require ('../lib/tables.inc.php'); /** * Language Managament */ $languages = Array( 'german' => 'Deutsch', 'english' => 'English', 'french' => 'Francais' ); $standardlanguage = 'english'; if(isset($_GET['language']) && isset($languages[$_GET['language']])) { $language = $_GET['language']; } elseif(isset($_POST['language']) && isset($languages[$_POST['language']])) { $language = $_POST['language']; } else { $language = $standardlanguage; } if(file_exists('./lng/' . $language . '.lng.php')) { /** * Includes file /lng/$language.lng.php if it exists */ require ('./lng/' . $language . '.lng.php'); } /** * BEGIN FUNCTIONS ----------------------------------------------- */ function page_header() { ?> Froxlor Server Management Panel - Installation
'.$text; } else { echo ' '.$text.' '; } } function requirement_checks() { global $lng, $theme; page_header(); ?>
Froxlor Server Management Panel

Requirements

=")) { status_message('red', $lng['install']['notinstalled']); $_die = true; } else { status_message('green', 'OK'); } // Check if magic_quotes_runtime is active status_message('begin', $lng['install']['phpmagic_quotes_runtime']); if(get_magic_quotes_runtime()) { // Deactivate set_magic_quotes_runtime(false); status_message('orange', $lng['install']['active'] . '
' . $lng['install']['phpmagic_quotes_runtime_description']); } else { status_message('green', 'OK'); } // check for mysql-extension status_message('begin', $lng['install']['phpmysql']); if(!extension_loaded('mysql') && !extension_loaded('mysqlnd')) { status_message('red', $lng['install']['notinstalled']); $_die = true; } else { status_message('green', 'OK'); } // check for xml-extension status_message('begin', $lng['install']['phpxml']); if(!extension_loaded('xml')) { status_message('red', $lng['install']['notinstalled']); $_die = true; } else { status_message('green', 'OK'); } // check for filter-extension status_message('begin', $lng['install']['phpfilter']); if(!extension_loaded('filter')) { status_message('red', $lng['install']['notinstalled']); $_die = true; } else { status_message('green', 'OK'); } // check for posix-extension status_message('begin', $lng['install']['phpposix']); if(!extension_loaded('posix')) { status_message('red', $lng['install']['notinstalled']); $_die = true; } else { status_message('green', 'OK'); } // check for bcmath extension status_message('begin', $lng['install']['phpbcmath']); if(!extension_loaded('bcmath')) { status_message('orange', $lng['install']['notinstalled'] . '
' . $lng['install']['bcmathdescription']); } else { status_message('green', 'OK'); } // check for open_basedir status_message('begin', $lng['install']['openbasedir']); $php_ob = @ini_get("open_basedir"); if(!empty($php_ob) && $php_ob != '') { status_message('orange', $lng['install']['openbasedirenabled']); } else { status_message('green', 'OK'); } ?>

Froxlor Server Management Panel

Installation

0) { $tables_exist = true; } } if($tables_exist) { $filename = "/tmp/froxlor_backup_" . date('YmdHi') . ".sql"; if(is_file("/usr/bin/mysqldump")) { $do_backup = true; $mysql_dump = '/usr/bin/mysqldump'; } elseif(is_file("/usr/local/bin/mysqldump")) { $do_backup = true; $mysql_dump = '/usr/local/bin/mysqldump'; } else { $do_backup = false; status_message('red', $lng['install']['backing_up_binary_missing']); } if($do_backup) { $command = $mysql_dump . " " . $mysql_database . " -u " . $mysql_root_user . " --password='" . $mysql_root_pass . "' --result-file=" . $filename; $output = exec($command); if(stristr($output, "error")) { status_message('red', $lng['install']['backing_up_failed']); } else { status_message('green', 'OK'); } } } //so first we have to delete the database and the user given for the unpriv-user if they exit status_message('begin', $lng['install']['erasing_old_db']); $db_root->query("DELETE FROM `mysql`.`user` WHERE `User` = '" . $db_root->escape($mysql_unpriv_user) . "' AND `Host` = '" . $db_root->escape($mysql_access_host) . "'"); $db_root->query("DELETE FROM `mysql`.`db` WHERE `User` = '" . $db_root->escape($mysql_unpriv_user) . "' AND `Host` = '" . $db_root->escape($mysql_access_host) . "'"); $db_root->query("DELETE FROM `mysql`.`tables_priv` WHERE `User` = '" . $db_root->escape($mysql_unpriv_user) . "' AND `Host` = '" . $db_root->escape($mysql_access_host) . "'"); $db_root->query("DELETE FROM `mysql`.`columns_priv` WHERE `User` = '" . $db_root->escape($mysql_unpriv_user) . "' AND `Host` = '" . $db_root->escape($mysql_access_host) . "'"); $db_root->query("DROP DATABASE IF EXISTS `" . $db_root->escape(str_replace('`', '', $mysql_database)) . "` ;"); $db_root->query("FLUSH PRIVILEGES;"); status_message('green', 'OK'); //then we have to create a new user and database for the froxlor unprivileged mysql access status_message('begin', $lng['install']['create_mysqluser_and_db']); $db_root->query("CREATE DATABASE `" . $db_root->escape(str_replace('`', '', $mysql_database)) . "`"); $mysql_access_host_array = array_map('trim', explode(',', $mysql_access_host)); if(in_array('127.0.0.1', $mysql_access_host_array) && !in_array('localhost', $mysql_access_host_array)) { $mysql_access_host_array[] = 'localhost'; } if(!in_array('127.0.0.1', $mysql_access_host_array) && in_array('localhost', $mysql_access_host_array)) { $mysql_access_host_array[] = '127.0.0.1'; } $mysql_access_host_array[] = $serverip; foreach($mysql_access_host_array as $mysql_access_host) { $db_root->query("GRANT ALL PRIVILEGES ON `" . $db_root->escape(str_replace('`', '', $mysql_database)) . "`.* TO '" . $db_root->escape($mysql_unpriv_user) . "'@'" . $db_root->escape($mysql_access_host) . "' IDENTIFIED BY 'password'"); $db_root->query("SET PASSWORD FOR '" . $db_root->escape($mysql_unpriv_user) . "'@'" . $db_root->escape($mysql_access_host) . "' = PASSWORD('" . $db_root->escape($mysql_unpriv_pass) . "')"); } $db_root->query("FLUSH PRIVILEGES;"); $mysql_access_host = implode(',', $mysql_access_host_array); status_message('green', 'OK'); //now a new database and the new froxlor-unprivileged-mysql-account have been created and we can fill it now with the data. status_message('begin', $lng['install']['testing_new_db']); $db = new db($mysql_host, $mysql_unpriv_user, $mysql_unpriv_pass, $mysql_database); status_message('green', 'OK'); status_message('begin', $lng['install']['importing_data']); $db_schema = './froxlor.sql'; $sql_query = @file_get_contents($db_schema, 'r'); $sql_query = remove_remarks($sql_query); $sql_query = split_sql_file($sql_query, ';'); for ($i = 0;$i < sizeof($sql_query);$i++) { if(trim($sql_query[$i]) != '') { $result = $db->query($sql_query[$i]); } } status_message('green', 'OK'); status_message('begin', 'System Servername...'); if(validate_ip($_SERVER['SERVER_NAME'], true) !== false) { status_message('red', $lng['install']['servername_should_be_fqdn']); } else { status_message('green', 'OK'); } //now let's change the settings in our settings-table status_message('begin', $lng['install']['changing_data']); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = 'admin@" . $db->escape($servername) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'adminmail'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($serverip) . "' WHERE `settinggroup` = 'system' AND `varname` = 'ipaddress'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($servername) . "' WHERE `settinggroup` = 'system' AND `varname` = 'hostname'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($version) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'version'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($languages[$language]) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'standardlanguage'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($mysql_access_host) . "' WHERE `settinggroup` = 'system' AND `varname` = 'mysql_access_host'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($webserver) . "' WHERE `settinggroup` = 'system' AND `varname` = 'webserver'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($httpuser) . "' WHERE `settinggroup` = 'system' AND `varname` = 'httpuser'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($httpgroup) . "' WHERE `settinggroup` = 'system' AND `varname` = 'httpgroup'"); if($webserver == "apache2") { $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_vhost'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/froxlor-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/init.d/apache2 reload' WHERE `settinggroup` = 'system' AND `varname` = 'apachereload_command'"); } elseif($webserver == "lighttpd") { $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/conf-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_vhost'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/froxlor-diroptions/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/froxlor-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/init.d/lighttpd reload' WHERE `settinggroup` = 'system' AND `varname` = 'apachereload_command'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/lighttpd.pem' WHERE `settinggroup` = 'system' AND `varname` = 'ssl_cert_file'"); } elseif($webserver == "nginx") { $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/nginx/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_vhost'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/nginx/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/nginx/froxlor-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/init.d/nginx reload' WHERE `settinggroup` = 'system' AND `varname` = 'apachereload_command'"); } // insert the lastcronrun to be the installation date $query = 'UPDATE `%s` SET `value` = UNIX_TIMESTAMP() WHERE `settinggroup` = \'system\' AND `varname` = \'lastcronrun\''; $query = sprintf($query, TABLE_PANEL_SETTINGS); $db->query($query); // set specific times for some crons (traffic only at night, etc.) $ts = mktime(0, 0, 0, date('m', time()), date('d', time()), date('Y', time())); $db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_traffic.php';"); $ts = mktime(1, 0, 0, date('m', time()), date('d', time()), date('Y', time())); $db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_used_tickets_reset.php';"); $db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_ticketarchive.php';"); // and lets insert the default ip and port $query = "INSERT INTO `".TABLE_PANEL_IPSANDPORTS."` SET `ip`= '".$db->escape($serverip)."', `port` = '80', `namevirtualhost_statement` = '1', `vhostcontainer` = '1', `vhostcontainer_servername_statement` = '1'"; $db->query($query); $defaultip = $db->insert_id(); // insert the defaultip $query = 'UPDATE `%s` SET `value` = \'%s\' WHERE `settinggroup` = \'system\' AND `varname` = \'defaultip\''; $query = sprintf($query, TABLE_PANEL_SETTINGS, $db->escape($defaultip)); $db->query($query); status_message('green', 'OK'); //last but not least create the main admin status_message('begin', $lng['install']['adding_admin_user']); $db->query("INSERT INTO `" . TABLE_PANEL_ADMINS . "` SET `loginname` = '" . $db->escape($admin_user) . "', `password` = '" . md5($admin_pass1) . "', `name` = 'Siteadmin', `email` = 'admin@" . $db->escape($servername) . "', `def_language` = '". $db->escape($languages[$language]) . "', `customers` = -1, `customers_used` = 0, `customers_see_all` = 1, `caneditphpsettings` = 1, `domains` = -1, `domains_used` = 0, `domains_see_all` = 1, `change_serversettings` = 1, `diskspace` = -1024, `diskspace_used` = 0, `mysqls` = -1, `mysqls_used` = 0, `emails` = -1, `emails_used` = 0, `email_accounts` = -1, `email_accounts_used` = 0, `email_forwarders` = -1, `email_forwarders_used` = 0, `email_quota` = -1, `email_quota_used` = 0, `ftps` = -1, `ftps_used` = 0, `tickets` = -1, `tickets_used` = 0, `tickets_see_all` = 1, `subdomains` = -1, `subdomains_used` = 0, `traffic` = -1048576, `traffic_used` = 0, `deactivated` = 0, `aps_packages` = -1, `aps_packages_used` = 0, `email_autoresponder` = -1, `email_autoresponder_used` = 0"); status_message('green', 'OK'); //now we create the userdata.inc.php with the mysql-accounts status_message('begin', $lng['install']['creating_configfile']); $userdata = ""; //we test now if we can store the userdata.inc.php in ../lib if($fp = @fopen('../lib/userdata.inc.php', 'w')) { $result = @fputs($fp, $userdata, strlen($userdata)); @fclose($fp); status_message('green', $lng['install']['creating_configfile_succ']); chmod('../lib/userdata.inc.php', 0440); } elseif($fp = @fopen('/tmp/userdata.inc.php', 'w')) { $result = @fputs($fp, $userdata, strlen($userdata)); @fclose($fp); status_message('orange', $lng['install']['creating_configfile_temp']); chmod('/tmp/userdata.inc.php', 0440); } else { status_message('red', $lng['install']['creating_configfile_failed']); echo "\t\t\n\t\t\t\n\t\t\n"; } ?>

" . nl2br(htmlspecialchars($userdata)) . "

Froxlor Server Management Panel

Froxlor - Install

 

Froxlor - Install

 

 

 

 

 

 

 

 

 

 

 

  />Apache2

  />LigHTTPd

  />Nginx