diff --git a/install/sql/incremental/upd_0031.sql b/install/sql/incremental/upd_0031.sql index f14e1264adc78926fc06c3faf7eea2f012165058..0fb25a5d407b0bd7d3bc43bfdfd0ac80c0119db4 100644 --- a/install/sql/incremental/upd_0031.sql +++ b/install/sql/incremental/upd_0031.sql @@ -1 +1,18 @@ +CREATE TABLE `server_php` ( + `server_php_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `client_id` int(11) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) DEFAULT NULL, + `php_fastcgi_binary` varchar(255) DEFAULT NULL, + `php_fastcgi_ini_dir` varchar(255) DEFAULT NULL, + `php_fpm_init_script` varchar(255) DEFAULT NULL, + `php_fpm_ini_dir` varchar(255) DEFAULT NULL, + `php_fpm_pool_dir` varchar(255) DEFAULT NULL, + PRIMARY KEY (`server_php_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `web_domain` ADD `fastcgi_php_version` VARCHAR( 255 ) NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index a755adfa304b664152bb7c5d64e53104d863c9c2..2612d7e886c8a7540232aee5f205daba7ea965cb 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1010,6 +1010,31 @@ CREATE TABLE `server_ip` ( -- -------------------------------------------------------- + +-- +-- Table structure for table `server_php` +-- + +CREATE TABLE `server_php` ( + `server_php_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `client_id` int(11) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) DEFAULT NULL, + `php_fastcgi_binary` varchar(255) DEFAULT NULL, + `php_fastcgi_ini_dir` varchar(255) DEFAULT NULL, + `php_fpm_init_script` varchar(255) DEFAULT NULL, + `php_fpm_ini_dir` varchar(255) DEFAULT NULL, + `php_fpm_pool_dir` varchar(255) DEFAULT NULL, + PRIMARY KEY (`server_php_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + -- -- Table structure for table `shell_user` -- diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 9f6f30cc89ff56c58e407c6fcd370b6af0958c32..275fa7ace326712fc4d90939bb86a4b5cc9d4a0a 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -90,7 +90,6 @@ fastcgi_children=8 fastcgi_max_requests=5000 fastcgi_bin=/usr/bin/php-cgi fastcgi_config_syntax=1 -fastcgi_additional_php_versions= [jailkit] jailkit_chroot_home=/home/[username] diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index facc193e4559c40c704acc318c55dd8b5af3957c..24f3f18c64984250110f31c76e2a3971b9eba1dd 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -867,14 +867,6 @@ $form["tabs"]['fastcgi'] = array( 'width' => '40', 'maxlength' => '255' ), - 'fastcgi_additional_php_versions' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), ################################## # ENDE Datatable fields ################################## diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php new file mode 100644 index 0000000000000000000000000000000000000000..e5fcb7b36303437c5cd5e6c0924ecf641579a812 --- /dev/null +++ b/interface/web/admin/form/server_php.tform.php @@ -0,0 +1,194 @@ + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['php_name'] = array ( + 'title' => "Name", + 'width' => 80, + 'template' => "templates/server_php_name_edit.htm", + 'fields' => array ( + ################################## + # Beginn Datenbankfelder + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'client_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => "SELECT client_id,CONCAT(contact_name,' :: ',username) as name FROM client WHERE {AUTHSQL} ORDER BY contact_name", + 'keyfield'=> 'client_id', + 'valuefield'=> 'name' + ), + 'value' => array(0 => ' ') + ), + 'name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'server_php_name_error_empty'), + ), + 'default' => '', + 'value' => '', + 'separator' => '', + 'width' => '40', + 'maxlength' => '255' + ), + ################################## + # ENDE Datenbankfelder + ################################## + ) +); + +$form["tabs"]['php_fastcgi'] = array( + 'title' => "FastCGI Settings", + 'width' => 80, + 'template' => "templates/server_php_fastcgi_edit.htm", + 'fields' => array( + ################################## + # Begin Datatable fields + ################################## + 'php_fastcgi_binary' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fastcgi_ini_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + +$form["tabs"]['php_fpm'] = array( + 'title' => "PHP-FPM Settings", + 'width' => 80, + 'template' => "templates/server_php_fpm_edit.htm", + 'fields' => array( + ################################## + # Begin Datatable fields + ################################## + 'php_fpm_init_script' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_ini_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_pool_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); +?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/de.lng b/interface/web/admin/lib/lang/de.lng index 3cea3528919445224d7d5c2aa3adf08aee5a2981..d638c99eccc37ec604af81631b292e2c400c1a4f 100644 --- a/interface/web/admin/lib/lang/de.lng +++ b/interface/web/admin/lib/lang/de.lng @@ -40,4 +40,5 @@ $wb['Do OS-Update'] = 'Do OS-Update'; $wb['Do ISPConfig-Update'] = 'Do ISPConfig-Update'; $wb['1001'] = 'Username or password is empty.'; $wb['1002'] = 'Username or password is wrong.'; +$wb['Additional PHP Versions'] = 'Zusätzliche PHP-Versionen'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 7911e94814225274cba1ec91ae9f76b7e0cd96fb..fd78f1bcedf6fb282989d957dd6762e47586a241 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -153,6 +153,4 @@ $wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update' $wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group'; $wb['connect_userid_to_webid_txt'] = 'Connect Linux userid to webid'; $wb['connect_userid_to_webid_start_txt'] = 'Start ID for userid/webid connect'; -$wb["fastcgi_additional_php_versions_txt"] = 'Zusätzliche PHP-Versionen'; -$wb["fastcgi_additional_php_versions_hint_txt"] = 'Format:
<name>;<path_to_executable>;<path_to_php.ini_dir>
z.B.:
PHP 5.2.17;/opt/php52/bin/php-cgi;/opt/php52/etc/'; ?> diff --git a/interface/web/admin/lib/lang/de_server_ip.lng b/interface/web/admin/lib/lang/de_server_ip.lng index ba94772979d388611a46eb1090c3c91b3b1f1a63..c432cbb7e0f440eee921694e3ef37d03234b3925 100644 --- a/interface/web/admin/lib/lang/de_server_ip.lng +++ b/interface/web/admin/lib/lang/de_server_ip.lng @@ -4,8 +4,8 @@ $wb['ip_address_txt'] = 'IP Adresse'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; $wb['ip_error_wrong'] = 'Das IP Adresse ist ungültig'; $wb['ip_error_unique'] = 'Das IP Adresse müss einzigartig sein'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; +$wb['client_id_txt'] = 'Kunde'; +$wb['ip_type_txt'] = 'Typ'; $wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports-Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443'; ?> diff --git a/interface/web/admin/lib/lang/de_server_ip_list.lng b/interface/web/admin/lib/lang/de_server_ip_list.lng index 54deb763a24365265aa8b0c6831a479cff52ce7c..1d792dffe4fcc0bffcd39a3548a0bce1f4efc6a2 100644 --- a/interface/web/admin/lib/lang/de_server_ip_list.lng +++ b/interface/web/admin/lib/lang/de_server_ip_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'IP Adressen'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP Adresse'; $wb['add_new_record_txt'] = 'Neue IP Adresse hinzufügen'; -$wb['client_id_txt'] = 'Client'; +$wb['client_id_txt'] = 'Kunde'; $wb['virtualhost_txt'] = 'HTTP Vhost'; $wb['virtualhost_port_txt'] = 'HTTP Ports'; $wb['ip_type_txt'] = 'Type'; diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng new file mode 100644 index 0000000000000000000000000000000000000000..d28c534aba5ab71fae54f7352905c5d1a2e21834 --- /dev/null +++ b/interface/web/admin/lib/lang/de_server_php.lng @@ -0,0 +1,16 @@ + diff --git a/interface/web/admin/lib/lang/de_server_php_list.lng b/interface/web/admin/lib/lang/de_server_php_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..0176bf8664fd9c621cfad9e37c2c52fadf3721be --- /dev/null +++ b/interface/web/admin/lib/lang/de_server_php_list.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/admin/lib/lang/en.lng b/interface/web/admin/lib/lang/en.lng index b07214eed66230ea94873882fdcd3e1e003bf439..2fb4deed06ebcbffb5d08aa0cc3c0a915adc60b4 100644 --- a/interface/web/admin/lib/lang/en.lng +++ b/interface/web/admin/lib/lang/en.lng @@ -42,4 +42,5 @@ $wb['Remote Users'] = 'Remote Users'; $wb['Remote Actions'] = 'Remote Actions'; $wb['Do OS-Update'] = 'Do OS-Update'; $wb['Do ISPConfig-Update'] = 'Do ISPConfig-Update'; +$wb['Additional PHP Versions'] = 'Additional PHP Versions'; ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index c6a80f2de1b3de3166c1048cb0843cf6a4289c82..4cce27548246f6fbd52ac2086498f24ba3c9efdd 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -157,6 +157,4 @@ $wb["connect_userid_to_webid_txt"] = 'Connect Linux userid to webid'; $wb["connect_userid_to_webid_start_txt"] = 'Start ID for userid/webid connect'; $wb["realtime_blackhole_list_txt"] = 'Real-time Blackhole List'; $wb["realtime_blackhole_list_note_txt"] = '(Separate RBL\'s with commas)'; -$wb["fastcgi_additional_php_versions_txt"] = 'Additional PHP Versions'; -$wb["fastcgi_additional_php_versions_hint_txt"] = 'Format:
<name>;<path_to_executable>;<path_to_php.ini_dir>
e.g.:
PHP 5.2.17;/opt/php52/bin/php-cgi;/opt/php52/etc/'; ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng new file mode 100644 index 0000000000000000000000000000000000000000..addbfa49357aa4e45f3c0ef1700065df9cf541f7 --- /dev/null +++ b/interface/web/admin/lib/lang/en_server_php.lng @@ -0,0 +1,16 @@ + diff --git a/interface/web/admin/lib/lang/en_server_php_list.lng b/interface/web/admin/lib/lang/en_server_php_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..b402fd1ed19978b32027a9ed16e7b44f241db93e --- /dev/null +++ b/interface/web/admin/lib/lang/en_server_php_list.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php index 84959d6c5404d5d73397b256f6e41fcae6ca827c..833c8c5156ee894b227721ed7ac4d34468a2a32c 100644 --- a/interface/web/admin/lib/module.conf.php +++ b/interface/web/admin/lib/module.conf.php @@ -78,6 +78,11 @@ $items[] = array( 'title' => 'Edit Server IP', $items[] = array( 'title' => 'Interface Config', 'target' => 'content', 'link' => 'admin/system_config_edit.php?id=1'); + +$items[] = array( 'title' => 'Additional PHP Versions', + 'target' => 'content', + 'link' => 'admin/server_php_list.php', + 'html_id'=> 'server_php_list'); $module['nav'][] = array( 'title' => 'System', 'open' => 1, diff --git a/interface/web/admin/list/server_php.list.php b/interface/web/admin/list/server_php.list.php new file mode 100644 index 0000000000000000000000000000000000000000..1464d161f5ad8c858b8d792eb1037f5f8a6351b1 --- /dev/null +++ b/interface/web/admin/list/server_php.list.php @@ -0,0 +1,82 @@ + 'server_id', + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'op' => 'like', + 'prefix' => '%', + 'suffix' => '%', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => '', + 'value' => ''); + +$liste['item'][] = array( 'field' => 'client_id', + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'op' => 'like', + 'prefix' => '%', + 'suffix' => '%', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT client_id,contact_name FROM client WHERE {AUTHSQL} ORDER BY contact_name', + 'keyfield'=> 'client_id', + 'valuefield'=> 'contact_name' + ), + 'width' => '', + 'value' => ''); + +$liste['item'][] = array( 'field' => 'name', + 'datatype' => 'VARCHAR', + 'op' => 'like', + 'prefix' => '%', + 'suffix' => '%', + 'width' => ''); + +?> \ No newline at end of file diff --git a/interface/web/admin/server_php_del.php b/interface/web/admin/server_php_del.php new file mode 100644 index 0000000000000000000000000000000000000000..9b6a6fed9bb2190be566460ccf2f5dae573596dd --- /dev/null +++ b/interface/web/admin/server_php_del.php @@ -0,0 +1,51 @@ +auth->check_module_permissions('admin'); + +$app->uses("tform_actions"); +$app->tform_actions->onDelete(); + +?> \ No newline at end of file diff --git a/interface/web/admin/server_php_edit.php b/interface/web/admin/server_php_edit.php new file mode 100644 index 0000000000000000000000000000000000000000..aeac62113aebf094c9f856dd1250944fbee1c34c --- /dev/null +++ b/interface/web/admin/server_php_edit.php @@ -0,0 +1,73 @@ +auth->check_module_permissions('admin'); + +// Loading classes +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onBeforeUpdate() { + global $app, $conf; + + //* Check if the server has been changed + // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway + if(($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) && isset($this->dataRecord["server_id"])) { + $rec = $app->db->queryOneRecord("SELECT server_id from server_php WHERE server_php_id = ".$this->id); + if($rec['server_id'] != $this->dataRecord["server_id"]) { + //* Add a error message and switch back to old server + $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); + $this->dataRecord["server_id"] = $rec['server_id']; + } + unset($rec); + } + } +} + +$page = new page_action; +$page->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/sites/ajax_get_fastcgi_php_versions.php b/interface/web/admin/server_php_list.php similarity index 71% rename from interface/web/sites/ajax_get_fastcgi_php_versions.php rename to interface/web/admin/server_php_list.php index 41d2536e547a6ae540fb1847c86bf70a6fe7bd42..86a7050801afa5e073b1c9fd71362a8dac371be9 100644 --- a/interface/web/sites/ajax_get_fastcgi_php_versions.php +++ b/interface/web/admin/server_php_list.php @@ -1,7 +1,7 @@ auth->check_module_permissions('sites'); +/****************************************** +* Begin Form configuration +******************************************/ + +$list_def_file = "list/server_php.list.php"; -$server_id = intval($_GET["server_id"]); -$client_group_id = intval($_GET["client_group_id"]); +/****************************************** +* End Form configuration +******************************************/ -if($_SESSION["s"]["user"]["typ"] == 'admin' or $app->auth->has_clients($_SESSION['s']['user']['userid'])) { +//* Check permissions for module +$app->auth->check_module_permissions('admin'); - $app->uses('ini_parser,getconf'); - $fastcgi = $app->getconf->get_server_config($server_id,'fastcgi'); - $php_versions = explode('\n',$fastcgi['fastcgi_additional_php_versions']); +$app->uses('listform_actions'); - $php_select = ""; +$app->listform_actions->SQLOrderBy = "ORDER BY server_id, name"; - if(is_array($php_versions)) { - foreach( $php_versions as $php_version) { - $php_select .= "#$php_version"; - } - } +$app->listform_actions->onLoad(); - unset($php_versions); -} -echo $php_select; ?> \ No newline at end of file diff --git a/interface/web/admin/templates/server_config_fastcgi_edit.htm b/interface/web/admin/templates/server_config_fastcgi_edit.htm index 0f051f5b6d25b66e5e397fb0e2f342efd922567b..3ca49c5d6495888ab76063b58f4e8e63e9472231 100644 --- a/interface/web/admin/templates/server_config_fastcgi_edit.htm +++ b/interface/web/admin/templates/server_config_fastcgi_edit.htm @@ -39,10 +39,6 @@ {tmpl_var name='fastcgi_config_syntax'} -
- - {tmpl_var name='fastcgi_additional_php_versions_hint_txt'} -
diff --git a/interface/web/admin/templates/server_php_fastcgi_edit.htm b/interface/web/admin/templates/server_php_fastcgi_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..37e6946bce2509c065b4fa6c5638d00b58cae8db --- /dev/null +++ b/interface/web/admin/templates/server_php_fastcgi_edit.htm @@ -0,0 +1,26 @@ +

+

+ +
+ +
+
+
+ + +
+
+ + +
+
+ + + +
+ + +
+
+ +
diff --git a/interface/web/admin/templates/server_php_fpm_edit.htm b/interface/web/admin/templates/server_php_fpm_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..47760a895ceb9a0a67db31c4a0fb7984310faf86 --- /dev/null +++ b/interface/web/admin/templates/server_php_fpm_edit.htm @@ -0,0 +1,30 @@ +

+

+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
+ + +
+
+ +
diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm new file mode 100644 index 0000000000000000000000000000000000000000..b64840ee11ded6ec64ad7a02f4b3e9fe8b8ed16c --- /dev/null +++ b/interface/web/admin/templates/server_php_list.htm @@ -0,0 +1,55 @@ +

+ +
+ +
+
{tmpl_var name="toolsarea_head_txt"} +
+ +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='search_limit'}
{tmpl_var name="server_id"}{tmpl_var name="client_id"}{tmpl_var name="name"} + +
+
+
+ +
diff --git a/interface/web/admin/templates/server_php_name_edit.htm b/interface/web/admin/templates/server_php_name_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..bb6866848aa5103ad6f7a92b40d63fcc121e43c1 --- /dev/null +++ b/interface/web/admin/templates/server_php_name_edit.htm @@ -0,0 +1,34 @@ +

+

+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
+ + +
+
+ +
diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index ebaa9f71d8b2649bd10e4d6de866ac94bfef5141..3ad14638d6d428139b52bd2e7c4eb925cd4b5ad4 100644 --- a/interface/web/sites/ajax_get_json.php +++ b/interface/web/sites/ajax_get_json.php @@ -59,6 +59,22 @@ $type = $_GET["type"]; unset($server); $json .= '"}'; } + + if($type == 'getphpfastcgi'){ + $json = '{'; + $sql = "SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = $server_id"; + $php_records = $app->db->queryAllRecords($sql); + $php_select = ""; + if(is_array($php_records) && !empty($php_records)) { + foreach( $php_records as $php_record) { + $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; + $json .= '"'.$php_version.'": "'.$php_record['name'].'",'; + } + } + unset($php_records); + if(substr($json,-1) == ',') $json = substr($json,0,-1); + $json .= '}'; + } //} diff --git a/interface/web/sites/templates/web_domain_edit.htm b/interface/web/sites/templates/web_domain_edit.htm index 064cf27e6c0556b906442503ac329a81af944ab4..b15036f8cb971abd8be74baba5cba599c6edb557 100644 --- a/interface/web/sites/templates/web_domain_edit.htm +++ b/interface/web/sites/templates/web_domain_edit.htm @@ -167,11 +167,17 @@ reloadWebIP(); }); + if(jQuery('#php').val() == 'fast-cgi'){ + jQuery('.fastcgi_php_version:hidden').show(); + } else { + jQuery('.fastcgi_php_version:visible').hide(); + } jQuery('#php').change(function(){ + reloadFastcgiPHPVersions(); if(jQuery(this).val() == 'fast-cgi'){ - jQuery('.fastcgi_php_version').show(); + jQuery('.fastcgi_php_version:hidden').show(); } else { - jQuery('.fastcgi_php_version').hide(); + jQuery('.fastcgi_php_version:visible').hide(); } }); @@ -201,7 +207,19 @@ } function reloadFastcgiPHPVersions() { - loadOptionInto('fastcgi_php_version','sites/ajax_get_fastcgi_php_versions.php?server_id='+serverId+'&client_group_id='+clientGroupId); + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getphpfastcgi"}, function(data) { + var options = ''; + var phpfastcgiselected = ''; + $.each(data, function(key, val) { + if($('#fastcgi_php_version').val() == key){ + phpfastcgiselected = ' selected="selected"'; + } else { + phpfastcgiselected = ''; + } + options += ''; + }); + $('#fastcgi_php_version').html(options); + }); } diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index d861cdb146ef8eb58dfe22d949cc20b2b00c6db8..4d70e894a60ce1e2d88b7c789b48100b265b0f64 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -45,7 +45,7 @@ require_once('../../lib/app.inc.php'); $app->auth->check_module_permissions('sites'); // Loading classes -$app->uses('tpl,tform,tform_actions,ini_parser,getconf'); +$app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { @@ -130,17 +130,18 @@ class page_action extends tform_actions { unset($ips); //PHP Version Selection (FastCGI) - $fastcgi = $app->getconf->get_server_config($client['default_webserver'],'fastcgi'); - $php_versions = explode('\n',$fastcgi['fastcgi_additional_php_versions']); + $sql = "SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".$client['default_webserver']." AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; + $php_records = $app->db->queryAllRecords($sql); $php_select = ""; - if(is_array($php_versions)) { - foreach( $php_versions as $php_version) { + if(is_array($php_records) && !empty($php_records)) { + foreach( $php_records as $php_record) { + $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version",$php_select); - unset($php_versions); + unset($php_records); //* Reseller: If the logged in user is not admin and has sub clients (is a reseller) } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { @@ -199,17 +200,18 @@ class page_action extends tform_actions { unset($ips); //PHP Version Selection (FastCGI) - $fastcgi = $app->getconf->get_server_config($client['default_webserver'],'fastcgi'); - $php_versions = explode('\n',$fastcgi['fastcgi_additional_php_versions']); + $sql = "SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".$client['default_webserver']." AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; + $php_records = $app->db->queryAllRecords($sql); $php_select = ""; - if(is_array($php_versions)) { - foreach( $php_versions as $php_version) { + if(is_array($php_records) && !empty($php_records)) { + foreach( $php_records as $php_record) { + $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version",$php_select); - unset($php_versions); + unset($php_records); //* Admin: If the logged in user is admin } else { @@ -254,17 +256,18 @@ class page_action extends tform_actions { unset($ips); //PHP Version Selection (FastCGI) - $fastcgi = $app->getconf->get_server_config($server_id,'fastcgi'); - $php_versions = explode('\n',$fastcgi['fastcgi_additional_php_versions']); + $sql = "SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = $server_id"; + $php_records = $app->db->queryAllRecords($sql); $php_select = ""; - if(is_array($php_versions)) { - foreach( $php_versions as $php_version) { + if(is_array($php_records) && !empty($php_records)) { + foreach( $php_records as $php_record) { + $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version",$php_select); - unset($php_versions); + unset($php_records); // Fill the client select field $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name"; diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index e9a66c40ec3a0f717db053d92abb609a60a192df..47b889c14a000d7c35f8aed7197bb473dca3c8fc 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -912,7 +912,7 @@ class apache2_plugin { // Support for multiple PHP versions (FastCGI) if(trim($data['new']['fastcgi_php_version']) != ''){ $default_fastcgi_php = false; - list($custom_fastcgi_php_name, $custom_fastcgi_php_executable, $custom_fastcgi_php_ini_dir) = explode(';', trim($data['new']['fastcgi_php_version'])); + list($custom_fastcgi_php_name, $custom_fastcgi_php_executable, $custom_fastcgi_php_ini_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); if(substr($custom_fastcgi_php_ini_dir,-1) != '/') $custom_fastcgi_php_ini_dir .= '/'; } else { $default_fastcgi_php = true;