From 8431a82f2c979c9bd94d010384762b9ff0ad4e7b Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Sat, 20 Aug 2016 09:16:33 +0200 Subject: [PATCH] check for correct extension for auto-update feature, fixes #1648 Signed-off-by: Michael Kaufmann (d00p) --- admin_autoupdate.php | 2 +- install/lib/class.FroxlorInstall.php | 9 + install/lng/english.lng.php | 2 + install/lng/german.lng.php | 2 + lib/navigation/00.froxlor.main.php | 367 +++++++++++++-------------- lng/english.lng.php | 2 +- lng/german.lng.php | 2 +- 7 files changed, 196 insertions(+), 190 deletions(-) diff --git a/admin_autoupdate.php b/admin_autoupdate.php index f1a7672e..da4da2ae 100644 --- a/admin_autoupdate.php +++ b/admin_autoupdate.php @@ -32,7 +32,7 @@ if (ini_get('allow_url_fopen') === false) { } // check for archive-stuff -if (function_exists('gzopen') === false) { +if (! extension_loaded('zip')) { redirectTo($filename, array('s' => $s, 'page' => 'error', 'errno' => 2)); } diff --git a/install/lib/class.FroxlorInstall.php b/install/lib/class.FroxlorInstall.php index 545a58be..792e8202 100644 --- a/install/lib/class.FroxlorInstall.php +++ b/install/lib/class.FroxlorInstall.php @@ -996,6 +996,15 @@ class FroxlorInstall $content .= $this->_status_message('green', $this->_lng['requirements']['installed']); } + // check for zip extension + $content .= $this->_status_message('begin', $this->_lng['requirements']['phpzip']); + + if (! extension_loaded('zip')) { + $content .= $this->_status_message('orange', $this->_lng['requirements']['notinstalled'] . "
" . $this->_lng['requirements']['zipdescription']); + } else { + $content .= $this->_status_message('green', $this->_lng['requirements']['installed']); + } + // check for open_basedir $content .= $this->_status_message('begin', $this->_lng['requirements']['openbasedir']); $php_ob = @ini_get("open_basedir"); diff --git a/install/lng/english.lng.php b/install/lng/english.lng.php index 2d107cde..7faf8b1f 100644 --- a/install/lng/english.lng.php +++ b/install/lng/english.lng.php @@ -34,7 +34,9 @@ $lng['requirements']['phpposix'] = 'PHP posix-extension...'; $lng['requirements']['phpbcmath'] = 'PHP bcmath-extension...'; $lng['requirements']['phpcurl'] = 'PHP curl-extension...'; $lng['requirements']['phpmbstring'] = 'PHP mbstring-extension...'; +$lng['requirements']['phpzip'] = 'PHP zip-extension...'; $lng['requirements']['bcmathdescription'] = 'Traffic-calculation related functions will not work correctly!'; +$lng['requirements']['zipdescription'] = 'The auto-update feature requires the zip extension.'; $lng['requirements']['openbasedir'] = 'open_basedir...'; $lng['requirements']['openbasedirenabled'] = 'Froxlor will not work properly with open_basedir enabled. Please disable open_basedir for Froxlor in the coresponding php.ini'; $lng['requirements']['diedbecauseofrequirements'] = 'Cannot install Froxlor without these requirements! Try to fix them and retry.'; diff --git a/install/lng/german.lng.php b/install/lng/german.lng.php index 3bcfdcd6..c8e8b095 100644 --- a/install/lng/german.lng.php +++ b/install/lng/german.lng.php @@ -34,7 +34,9 @@ $lng['requirements']['phpposix'] = 'PHP posix-Erweiterung...'; $lng['requirements']['phpbcmath'] = 'PHP bcmath-Erweiterung...'; $lng['requirements']['phpcurl'] = 'PHP curl-Erweiterung...'; $lng['requirements']['phpmbstring'] = 'PHP mbstring-Erweiterung...'; +$lng['requirements']['phpzip'] = 'PHP zip-Erweiterung...'; $lng['requirements']['bcmathdescription'] = 'Traffic-Berechnungs bezogene Funktionen stehen nicht vollständig zur Verfügung!'; +$lng['requirements']['zipdescription'] = 'Die Auto-Update Funktion benötigt die zip Erweiterung.'; $lng['requirements']['openbasedir'] = 'open_basedir genutzt wird...'; $lng['requirements']['openbasedirenabled'] = 'Froxlor wird mit aktiviertem open_basedir nicht vollständig funktionieren. Bitte deaktivieren Sie open_basedir für Froxlor in der entsprechenden php.ini'; $lng['requirements']['diedbecauseofrequirements'] = 'Kann Froxlor ohne diese Voraussetzungen nicht installieren! Beheben Sie die angezeigten Probleme und versuchen Sie es erneut.'; diff --git a/lib/navigation/00.froxlor.main.php b/lib/navigation/00.froxlor.main.php index 2d070c0c..838042c5 100644 --- a/lib/navigation/00.froxlor.main.php +++ b/lib/navigation/00.froxlor.main.php @@ -16,303 +16,296 @@ * @package Navigation * */ - -return array ( - 'customer' => array ( - 'index' => array ( +return array( + 'customer' => array( + 'index' => array( 'url' => 'customer_index.php', 'label' => $lng['admin']['overview'], - 'elements' => array ( - array ( - 'label' => $lng['menue']['main']['username'], + 'elements' => array( + array( + 'label' => $lng['menue']['main']['username'] ), - array ( + array( 'url' => 'customer_index.php?page=change_password', - 'label' => $lng['menue']['main']['changepassword'], + 'label' => $lng['menue']['main']['changepassword'] ), - array ( + array( 'url' => 'customer_index.php?page=change_language', - 'label' => $lng['menue']['main']['changelanguage'], + 'label' => $lng['menue']['main']['changelanguage'] ), - array ( + array( 'url' => 'customer_index.php?page=change_theme', 'label' => $lng['menue']['main']['changetheme'], 'show_element' => (Settings::Get('panel.allow_theme_change_customer') == true) ), - array ( + array( 'url' => 'customer_index.php?action=logout', - 'label' => $lng['login']['logout'], - ), - ), + 'label' => $lng['login']['logout'] + ) + ) ), - 'email' => array ( + 'email' => array( 'url' => 'customer_email.php', 'label' => $lng['menue']['email']['email'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','email') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'email')), + 'elements' => array( + array( 'url' => 'customer_email.php?page=emails', 'label' => $lng['menue']['email']['emails'], 'required_resources' => 'emails' ), - array ( + array( 'url' => 'customer_email.php?page=emails&action=add', 'label' => $lng['emails']['emails_add'], 'required_resources' => 'emails' ), - array ( + array( 'url' => Settings::Get('panel.webmail_url'), 'new_window' => true, 'label' => $lng['menue']['email']['webmail'], 'required_resources' => 'emails_used', - 'show_element' => ( Settings::Get('panel.webmail_url') != '' ), - ), - ), + 'show_element' => (Settings::Get('panel.webmail_url') != '') + ) + ) ), - 'mysql' => array ( + 'mysql' => array( 'url' => 'customer_mysql.php', 'label' => $lng['menue']['mysql']['mysql'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','mysql') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'mysql')), + 'elements' => array( + array( 'url' => 'customer_mysql.php?page=mysqls', 'label' => $lng['menue']['mysql']['databases'], - 'required_resources' => 'mysqls', + 'required_resources' => 'mysqls' ), - array ( + array( 'url' => Settings::Get('panel.phpmyadmin_url'), 'new_window' => true, 'label' => $lng['menue']['mysql']['phpmyadmin'], 'required_resources' => 'mysqls_used', - 'show_element' => ( Settings::Get('panel.phpmyadmin_url') != '' ), - ), - ), + 'show_element' => (Settings::Get('panel.phpmyadmin_url') != '') + ) + ) ), - 'domains' => array ( + 'domains' => array( 'url' => 'customer_domains.php', 'label' => $lng['menue']['domains']['domains'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','domains') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'domains')), + 'elements' => array( + array( 'url' => 'customer_domains.php?page=domains', - 'label' => $lng['menue']['domains']['settings'], - ), - ), + 'label' => $lng['menue']['domains']['settings'] + ) + ) ), - 'ftp' => array ( + 'ftp' => array( 'url' => 'customer_ftp.php', 'label' => $lng['menue']['ftp']['ftp'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','ftp') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'ftp')), + 'elements' => array( + array( 'url' => 'customer_ftp.php?page=accounts', - 'label' => $lng['menue']['ftp']['accounts'], + 'label' => $lng['menue']['ftp']['accounts'] ), - array ( + array( 'url' => Settings::Get('panel.webftp_url'), 'new_window' => true, 'label' => $lng['menue']['ftp']['webftp'], - 'show_element' => ( Settings::Get('panel.webftp_url') != '' ), - ), - ), + 'show_element' => (Settings::Get('panel.webftp_url') != '') + ) + ) ), - 'extras' => array ( + 'extras' => array( 'url' => 'customer_extras.php', 'label' => $lng['menue']['extras']['extras'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'extras')), + 'elements' => array( + array( 'url' => 'customer_extras.php?page=htpasswds', 'label' => $lng['menue']['extras']['directoryprotection'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras.directoryprotection') ), + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'extras.directoryprotection')) ), - array ( + array( 'url' => 'customer_extras.php?page=htaccess', 'label' => $lng['menue']['extras']['pathoptions'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras.pathoptions') ), + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'extras.pathoptions')) ), - array ( + array( 'url' => 'customer_logger.php?page=log', 'label' => $lng['menue']['logger']['logger'], - 'show_element' => ( Settings::Get('logger.enabled') == true ) && ( !Settings::IsInList('panel.customer_hide_options','extras.logger') ), + 'show_element' => (Settings::Get('logger.enabled') == true) && (! Settings::IsInList('panel.customer_hide_options', 'extras.logger')) ), - array ( + array( 'url' => 'customer_extras.php?page=backup', 'label' => $lng['menue']['extras']['backup'], - 'show_element' => ( Settings::Get('system.backupenabled') == true ) && ( !Settings::IsInList('panel.customer_hide_options','extras.backup') ), - ), - ), + 'show_element' => (Settings::Get('system.backupenabled') == true) && (! Settings::IsInList('panel.customer_hide_options', 'extras.backup')) + ) + ) ), - 'traffic' => array ( + 'traffic' => array( 'url' => 'customer_traffic.php', 'label' => $lng['menue']['traffic']['traffic'], - 'show_element' => ( !Settings::IsInList('panel.customer_hide_options','traffic') ), - 'elements' => array ( - array ( + 'show_element' => (! Settings::IsInList('panel.customer_hide_options', 'traffic')), + 'elements' => array( + array( 'url' => 'customer_traffic.php?page=current', - 'label' => $lng['menue']['traffic']['current'], - ), - ), - ), + 'label' => $lng['menue']['traffic']['current'] + ) + ) + ) ), - 'admin' => array ( - 'index' => array ( + 'admin' => array( + 'index' => array( 'url' => 'admin_index.php', 'label' => $lng['admin']['overview'], - 'elements' => array ( - array ( - 'label' => $lng['menue']['main']['username'], + 'elements' => array( + array( + 'label' => $lng['menue']['main']['username'] ), - array ( + array( 'url' => 'admin_index.php?page=change_password', - 'label' => $lng['menue']['main']['changepassword'], + 'label' => $lng['menue']['main']['changepassword'] ), - array ( + array( 'url' => 'admin_index.php?page=change_language', - 'label' => $lng['menue']['main']['changelanguage'], + 'label' => $lng['menue']['main']['changelanguage'] ), - array ( + array( 'url' => 'admin_index.php?page=change_theme', 'label' => $lng['menue']['main']['changetheme'], 'show_element' => (Settings::Get('panel.allow_theme_change_admin') == true) ), - array ( + array( 'url' => 'admin_index.php?action=logout', - 'label' => $lng['login']['logout'], - ), - ), + 'label' => $lng['login']['logout'] + ) + ) ), - 'resources' => array ( + 'resources' => array( 'label' => $lng['admin']['resources'], 'required_resources' => 'customers', - 'elements' => array ( - array ( + 'elements' => array( + array( 'url' => 'admin_customers.php?page=customers', 'label' => $lng['admin']['customers'], - 'required_resources' => 'customers', + 'required_resources' => 'customers' ), - array ( + array( 'url' => 'admin_admins.php?page=admins', 'label' => $lng['admin']['admins'], - 'required_resources' => 'change_serversettings', + 'required_resources' => 'change_serversettings' ), - array ( - 'url' => 'admin_domains.php?page=domains', - 'label' => $lng['admin']['domains'], - 'required_resources' => 'domains', - ), - array ( - 'url' => 'admin_ipsandports.php?page=ipsandports', - 'label' => $lng['admin']['ipsandports']['ipsandports'], - 'required_resources' => 'change_serversettings', - ), - array ( - 'url' => 'admin_settings.php?page=updatecounters', - 'label' => $lng['admin']['updatecounters'], - 'required_resources' => 'change_serversettings', - ), - ), + array( + 'url' => 'admin_domains.php?page=domains', + 'label' => $lng['admin']['domains'], + 'required_resources' => 'domains' + ), + array( + 'url' => 'admin_ipsandports.php?page=ipsandports', + 'label' => $lng['admin']['ipsandports']['ipsandports'], + 'required_resources' => 'change_serversettings' + ), + array( + 'url' => 'admin_settings.php?page=updatecounters', + 'label' => $lng['admin']['updatecounters'], + 'required_resources' => 'change_serversettings' + ) + ) ), - 'traffic' => array ( + 'traffic' => array( 'label' => $lng['admin']['traffic'], 'required_resources' => 'customers', - 'elements' => array ( - array ( + 'elements' => array( + array( 'url' => 'admin_traffic.php?page=customers', 'label' => $lng['admin']['customertraffic'], - 'required_resources' => 'customers', - ), - ), + 'required_resources' => 'customers' + ) + ) ), - 'server' => array ( + 'server' => array( 'label' => $lng['admin']['server'], 'required_resources' => 'change_serversettings', - 'elements' => array ( - array ( + 'elements' => array( + array( 'url' => 'admin_configfiles.php?page=configfiles', 'label' => $lng['admin']['configfiles']['serverconfiguration'], - 'required_resources' => 'change_serversettings', + 'required_resources' => 'change_serversettings' ), - array ( + array( 'url' => 'admin_settings.php?page=overview', 'label' => $lng['admin']['serversettings'], - 'required_resources' => 'change_serversettings', + 'required_resources' => 'change_serversettings' ), - array ( + array( 'url' => 'admin_cronjobs.php?page=overview', 'label' => $lng['admin']['cron']['cronsettings'], - 'required_resources' => 'change_serversettings', + 'required_resources' => 'change_serversettings' ), - array ( - 'url' => 'admin_logger.php?page=log', - 'label' => $lng['menue']['logger']['logger'], - 'required_resources' => 'change_serversettings', - 'show_element' => ( Settings::Get('logger.enabled') == true ), - ), - array ( + array( + 'url' => 'admin_logger.php?page=log', + 'label' => $lng['menue']['logger']['logger'], + 'required_resources' => 'change_serversettings', + 'show_element' => (Settings::Get('logger.enabled') == true) + ), + array( 'url' => 'admin_settings.php?page=rebuildconfigs', 'label' => $lng['admin']['rebuildconf'], + 'required_resources' => 'change_serversettings' + ), + array( + 'url' => 'admin_autoupdate.php?page=overview', + 'label' => $lng['admin']['autoupdate'], 'required_resources' => 'change_serversettings', - ), - array ( - 'url' => 'admin_autoupdate.php?page=overview', - 'label' => $lng['admin']['autoupdate'], - 'required_resources' => 'change_serversettings', - ), - ), + 'show_element' => extension_loaded('zip') + ) + ) ), - 'server_php' => array ( - 'label' => $lng['admin']['server_php'], - 'required_resources' => 'change_serversettings', - 'elements' => array ( - array ( - 'url' => 'admin_phpsettings.php?page=overview', - 'label' => $lng['menue']['phpsettings']['maintitle'], - 'show_element' => ( - Settings::Get('system.mod_fcgid') == true || - Settings::Get('phpfpm.enabled') == true - ), - ), - array ( - 'url' => 'admin_settings.php?page=phpinfo', - 'label' => $lng['admin']['phpinfo'], - 'required_resources' => 'change_serversettings', - ), - array ( - 'url' => 'admin_apcuinfo.php?page=showinfo', - 'label' => $lng['admin']['apcuinfo'], - 'required_resources' => 'change_serversettings', - 'show_element' => ( - function_exists('apcu_cache_info') === true - ), - ), - array ( - 'url' => 'admin_opcacheinfo.php?page=showinfo', - 'label' => $lng['admin']['opcacheinfo'], - 'required_resources' => 'change_serversettings', - 'show_element' => ( - function_exists('opcache_get_configuration') === true - ), - ), - ), - ), - 'misc' => array ( + 'server_php' => array( + 'label' => $lng['admin']['server_php'], + 'required_resources' => 'change_serversettings', + 'elements' => array( + array( + 'url' => 'admin_phpsettings.php?page=overview', + 'label' => $lng['menue']['phpsettings']['maintitle'], + 'show_element' => (Settings::Get('system.mod_fcgid') == true || Settings::Get('phpfpm.enabled') == true) + ), + array( + 'url' => 'admin_settings.php?page=phpinfo', + 'label' => $lng['admin']['phpinfo'], + 'required_resources' => 'change_serversettings' + ), + array( + 'url' => 'admin_apcuinfo.php?page=showinfo', + 'label' => $lng['admin']['apcuinfo'], + 'required_resources' => 'change_serversettings', + 'show_element' => (function_exists('apcu_cache_info') === true) + ), + array( + 'url' => 'admin_opcacheinfo.php?page=showinfo', + 'label' => $lng['admin']['opcacheinfo'], + 'required_resources' => 'change_serversettings', + 'show_element' => (function_exists('opcache_get_configuration') === true) + ) + ) + ), + 'misc' => array( 'label' => $lng['admin']['misc'], - 'elements' => array ( - array ( - 'url' => 'admin_settings.php?page=integritycheck', - 'label' => $lng['admin']['integritycheck'], - 'required_resources' => 'change_serversettings', - ), - array ( - 'url' => 'admin_templates.php?page=email', - 'label' => $lng['admin']['templates']['email'], - ), - array ( - 'url' => 'admin_message.php?page=message', - 'label' => $lng['admin']['message'], + 'elements' => array( + array( + 'url' => 'admin_settings.php?page=integritycheck', + 'label' => $lng['admin']['integritycheck'], + 'required_resources' => 'change_serversettings' ), - ), - ), - ), + array( + 'url' => 'admin_templates.php?page=email', + 'label' => $lng['admin']['templates']['email'] + ), + array( + 'url' => 'admin_message.php?page=message', + 'label' => $lng['admin']['message'] + ) + ) + ) + ) ); diff --git a/lng/english.lng.php b/lng/english.lng.php index 4d51f0bd..d398a6f6 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1961,7 +1961,7 @@ $lng['admin']['autoupdate'] = 'Auto-Update'; $lng['error']['customized_version'] = 'It looks like your Froxlor installation has been customized, no support sorry.'; $lng['error']['autoupdate_0'] = 'Unknown error'; $lng['error']['autoupdate_1'] = 'PHP setting allow_url_fopen is disabled. Autoupdate needs this setting to be enabled in php.ini'; -$lng['error']['autoupdate_2'] = 'PHP extension Zlib not found, please ensure it is installed and activated'; +$lng['error']['autoupdate_2'] = 'PHP zip extension not found, please ensure it is installed and activated'; $lng['error']['autoupdate_4'] = 'The froxlor archive could not be stored to the disk :('; $lng['error']['autoupdate_5'] = 'version.froxlor.org returned inacceptable values :('; $lng['error']['autoupdate_6'] = 'Woops, there was no (valid) version given to download :('; diff --git a/lng/german.lng.php b/lng/german.lng.php index d1f50438..48782131 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1615,7 +1615,7 @@ $lng['admin']['autoupdate'] = 'Auto-Update'; $lng['error']['customized_version'] = 'Es scheint als wäre die Froxlor Installation angepasst worden. Kein Support, sorry.'; $lng['error']['autoupdate_0'] = 'Unbekannter Fehler'; $lng['error']['autoupdate_1'] = 'PHP Einstellung allow_url_fopen ist deaktiviert. Autoupdate benötigt diese Option, bitte in der php.ini aktivieren.'; -$lng['error']['autoupdate_2'] = 'PHP Extension Zlib nicht gefunden, bitte prüfen, ob diese installiert und aktiviert ist.'; +$lng['error']['autoupdate_2'] = 'PHP zip Erweiterung nicht gefunden, bitte prüfen, ob diese installiert und aktiviert ist.'; $lng['error']['autoupdate_4'] = 'Das froxlor Archiv konnte nicht auf der Festplatte gespeichert werden :('; $lng['error']['autoupdate_5'] = 'version.froxlor.org gab ungültige Werte zurück :('; $lng['error']['autoupdate_6'] = 'Woops, keine (gültige) Version angegeben für den Download :(';