From 91624b8a2d8bad8a729e1f5da852829d664d27ab Mon Sep 17 00:00:00 2001 From: tbrehm Date: Fri, 10 Sep 2010 11:58:47 +0000 Subject: [PATCH] Added the configuration variable $conf['demo_mode'] in the config.inc.php file. It disables the newly introduced demo mode which limits certain actions in the interface part of ispconfig: the demo mode can be used to run the ispconfig interface part as online demo. --- install/tpl/config.inc.php.master | 9 +++++++++ interface/lib/config.inc.php | 9 +++++++++ interface/web/admin/language_add.php | 1 + interface/web/admin/language_complete.php | 1 + interface/web/admin/language_edit.php | 1 + interface/web/admin/language_export.php | 1 + interface/web/admin/language_import.php | 1 + interface/web/admin/remote_user_edit.php | 3 +++ interface/web/admin/server_config_del.php | 1 + interface/web/admin/server_config_edit.php | 16 +++++++++------- interface/web/admin/server_del.php | 1 + interface/web/admin/software_repo_del.php | 1 + interface/web/admin/software_repo_edit.php | 1 + interface/web/admin/system_config_edit.php | 4 ++-- interface/web/admin/users_del.php | 1 + interface/web/admin/users_edit.php | 2 ++ interface/web/client/client_del.php | 1 + interface/web/client/client_edit.php | 6 +++--- interface/web/client/reseller_del.php | 2 ++ interface/web/client/reseller_edit.php | 6 +++--- interface/web/designer/form_edit.php | 1 + interface/web/designer/module_edit.php | 1 + interface/web/designer/module_nav_del.php | 1 + interface/web/designer/module_nav_edit.php | 1 + interface/web/designer/module_nav_flip.php | 1 + interface/web/designer/module_nav_item_del.php | 1 + interface/web/designer/module_nav_item_edit.php | 1 + interface/web/designer/module_nav_item_flip.php | 1 + interface/web/remote/index.php | 2 ++ interface/web/tools/user_settings.php | 2 ++ 30 files changed, 65 insertions(+), 15 deletions(-) diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 4c8e03b42..1bcdcad09 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -117,6 +117,15 @@ $conf["server_id"] = "{server_id}"; //** Interface $conf['interface_modules_enabled'] = 'dashboard,mail,sites,dns,tools'; +//** Demo mode +/* The demo mode is an option to restrict certain actions in the interface like +* changing the password of users with sys_userid < 3 etc. to be +* able to run the ISPConfig interface as online demo. It does not +* affect the server part. The demo mode should be always set to false +* on every normal installation +*/ +$conf['demo_mode'] = false; + //** Logging $conf["log_file"] = $conf["logpath"].$conf["fs_div"]."ispconfig.log"; diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index 26cfd03c6..0cb07a49d 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -103,6 +103,15 @@ $conf["server_id"] = "1"; //** Interface $conf['interface_modules_enabled'] = 'dashboard,mail,sites,dns,tools'; +//** Demo mode +/* The demo mode is an option to restrict certain actions in the interface like +* changing the password of users with sys_userid < 3 etc. to be +* able to run the ISPConfig interface as online demo. It does not +* affect the server part. The demo mode should be always set to false +* on every normal installation +*/ +$conf['demo_mode'] = false; + //** Logging $conf["log_file"] = '/var/log/ispconfig/ispconfig.log'; diff --git a/interface/web/admin/language_add.php b/interface/web/admin/language_add.php index f3fd93f3e..a2961715a 100644 --- a/interface/web/admin/language_add.php +++ b/interface/web/admin/language_add.php @@ -35,6 +35,7 @@ $app->auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses('tpl'); diff --git a/interface/web/admin/language_complete.php b/interface/web/admin/language_complete.php index 7ae926ff8..1ac69887d 100644 --- a/interface/web/admin/language_complete.php +++ b/interface/web/admin/language_complete.php @@ -32,6 +32,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php index e4a9dc3c4..f16ea683c 100644 --- a/interface/web/admin/language_edit.php +++ b/interface/web/admin/language_edit.php @@ -35,6 +35,7 @@ $app->auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses('tpl'); diff --git a/interface/web/admin/language_export.php b/interface/web/admin/language_export.php index d252073d3..5c192c3cf 100644 --- a/interface/web/admin/language_export.php +++ b/interface/web/admin/language_export.php @@ -35,6 +35,7 @@ $app->auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses('tpl'); diff --git a/interface/web/admin/language_import.php b/interface/web/admin/language_import.php index 10c128ea8..0ca11110c 100644 --- a/interface/web/admin/language_import.php +++ b/interface/web/admin/language_import.php @@ -35,6 +35,7 @@ $app->auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses('tpl'); diff --git a/interface/web/admin/remote_user_edit.php b/interface/web/admin/remote_user_edit.php index cadee4796..a99e9837d 100644 --- a/interface/web/admin/remote_user_edit.php +++ b/interface/web/admin/remote_user_edit.php @@ -13,6 +13,9 @@ if(!stristr($_SESSION['s']['user']['modules'],'admin')) { die; } +// Disable this function in demo mode +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + // Load the templating and form classes $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); diff --git a/interface/web/admin/server_config_del.php b/interface/web/admin/server_config_del.php index 67c0096af..7b30ea3e4 100644 --- a/interface/web/admin/server_config_del.php +++ b/interface/web/admin/server_config_del.php @@ -44,6 +44,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 1f71ef7c7..c034da155 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -71,19 +71,21 @@ class page_action extends tform_actions { } function onUpdateSave($sql) { - global $app; + global $app,$conf; if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); $app->uses('ini_parser,getconf'); - $section = $app->tform->getCurrentTab(); - $server_id = $this->id; + if($conf['demo_mode'] != true) { + $section = $app->tform->getCurrentTab(); + $server_id = $this->id; - $server_config_array = $app->getconf->get_server_config($server_id); - $server_config_array[$section] = $app->tform->encode($this->dataRecord,$section); - $server_config_str = $app->ini_parser->get_ini_string($server_config_array); + $server_config_array = $app->getconf->get_server_config($server_id); + $server_config_array[$section] = $app->tform->encode($this->dataRecord,$section); + $server_config_str = $app->ini_parser->get_ini_string($server_config_array); - $app->db->datalogUpdate('server', "config = '".$app->db->quote($server_config_str)."'", 'server_id', $server_id); + $app->db->datalogUpdate('server', "config = '".$app->db->quote($server_config_str)."'", 'server_id', $server_id); + } } } diff --git a/interface/web/admin/server_del.php b/interface/web/admin/server_del.php index 78a078570..d5b3b9639 100644 --- a/interface/web/admin/server_del.php +++ b/interface/web/admin/server_del.php @@ -44,6 +44,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/software_repo_del.php b/interface/web/admin/software_repo_del.php index 8da40c9c8..a6522fa5b 100644 --- a/interface/web/admin/software_repo_del.php +++ b/interface/web/admin/software_repo_del.php @@ -44,6 +44,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/software_repo_edit.php b/interface/web/admin/software_repo_edit.php index bd0c875f5..17902f152 100644 --- a/interface/web/admin/software_repo_edit.php +++ b/interface/web/admin/software_repo_edit.php @@ -43,6 +43,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index 70f26befb..22702091d 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -78,7 +78,7 @@ class page_action extends tform_actions { } function onUpdateSave($sql) { - global $app; + global $app,$conf; if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); $app->uses('ini_parser,getconf'); @@ -90,7 +90,7 @@ class page_action extends tform_actions { $server_config_str = $app->ini_parser->get_ini_string($server_config_array); $sql = "UPDATE sys_ini SET config = '".$app->db->quote($server_config_str)."' WHERE sysini_id = 1"; - $app->db->query($sql); + if($conf['demo_mode'] != true) $app->db->query($sql); /* * If we should use the domain-module, we have to insert all existing domains into the table diff --git a/interface/web/admin/users_del.php b/interface/web/admin/users_del.php index b4f3e7223..dfea88974 100644 --- a/interface/web/admin/users_del.php +++ b/interface/web/admin/users_del.php @@ -44,6 +44,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('admin'); +if($conf['demo_mode'] == true && $_REQUEST['id'] <= 3) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/users_edit.php b/interface/web/admin/users_edit.php index 2bf4dcc6a..ae2298615 100644 --- a/interface/web/admin/users_edit.php +++ b/interface/web/admin/users_edit.php @@ -61,6 +61,8 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; + if($conf['demo_mode'] == true && $_REQUEST['id'] <= 3) $app->error('This function is disabled in demo mode.'); + if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php index 11cfdb7e5..184b8f248 100644 --- a/interface/web/client/client_del.php +++ b/interface/web/client/client_del.php @@ -44,6 +44,7 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('client'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses('tpl,tform'); $app->load('tform_actions'); diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index 571422023..5da71107e 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -178,7 +178,7 @@ class page_action extends tform_actions { global $app; // username changed - if(isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { + if($conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { $username = $app->db->quote($this->dataRecord["username"]); $client_id = $this->id; $sql = "UPDATE sys_user SET username = '$username' WHERE client_id = $client_id"; @@ -190,7 +190,7 @@ class page_action extends tform_actions { } // password changed - if(isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { + if($conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { $password = $app->db->quote($this->dataRecord["password"]); $client_id = $this->id; $sql = "UPDATE sys_user SET passwort = md5('$password') WHERE client_id = $client_id"; @@ -198,7 +198,7 @@ class page_action extends tform_actions { } // language changed - if(isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) { + if($conf['demo_mode'] != true && isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) { $language = $app->db->quote($this->dataRecord["language"]); $client_id = $this->id; $sql = "UPDATE sys_user SET language = '$language' WHERE client_id = $client_id"; diff --git a/interface/web/client/reseller_del.php b/interface/web/client/reseller_del.php index f75eceab8..fefd37060 100644 --- a/interface/web/client/reseller_del.php +++ b/interface/web/client/reseller_del.php @@ -55,6 +55,8 @@ class page_action extends tform_actions { function onBeforeDelete() { global $app, $conf; + if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + $client_id = intval($this->dataRecord['client_id']); $tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE parent_client_id = ".$client_id); diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index b58ba8f7c..44c65be45 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -173,7 +173,7 @@ class page_action extends tform_actions { global $app, $conf; // username changed - if(isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { + if($conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { $username = $app->db->quote($this->dataRecord["username"]); $client_id = $this->id; $sql = "UPDATE sys_user SET username = '$username' WHERE client_id = $client_id"; @@ -185,7 +185,7 @@ class page_action extends tform_actions { } // password changed - if(isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { + if($conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { $password = $app->db->quote($this->dataRecord["password"]); $client_id = $this->id; $sql = "UPDATE sys_user SET passwort = md5('$password') WHERE client_id = $client_id"; @@ -193,7 +193,7 @@ class page_action extends tform_actions { } // language changed - if(isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) { + if($conf['demo_mode'] != true && isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) { $language = $app->db->quote($this->dataRecord["language"]); $client_id = $this->id; $sql = "UPDATE sys_user SET language = '$language' WHERE client_id = $client_id"; diff --git a/interface/web/designer/form_edit.php b/interface/web/designer/form_edit.php index 4ea74c2e0..90acd2e1b 100644 --- a/interface/web/designer/form_edit.php +++ b/interface/web/designer/form_edit.php @@ -31,6 +31,7 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/designer/module_edit.php b/interface/web/designer/module_edit.php index 9a8df309e..26e229a7d 100644 --- a/interface/web/designer/module_edit.php +++ b/interface/web/designer/module_edit.php @@ -31,6 +31,7 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/designer/module_nav_del.php b/interface/web/designer/module_nav_del.php index 18c5bf4d1..b0fd55a7b 100644 --- a/interface/web/designer/module_nav_del.php +++ b/interface/web/designer/module_nav_del.php @@ -34,6 +34,7 @@ if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); //* Check permissions for module $app->auth->check_module_permissions('designer'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); // Lade Template $app->uses('tpl'); diff --git a/interface/web/designer/module_nav_edit.php b/interface/web/designer/module_nav_edit.php index 73c010e82..a7acf40c1 100644 --- a/interface/web/designer/module_nav_edit.php +++ b/interface/web/designer/module_nav_edit.php @@ -34,6 +34,7 @@ require_once('../../lib/app.inc.php'); if($_SESSION['s']['user']['typ'] != 'admin'){ die('Admin permissions required.'); } +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/designer/module_nav_flip.php b/interface/web/designer/module_nav_flip.php index f3fc164d9..6599a5ff6 100644 --- a/interface/web/designer/module_nav_flip.php +++ b/interface/web/designer/module_nav_flip.php @@ -34,6 +34,7 @@ if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); //* Check permissions for module $app->auth->check_module_permissions('designer'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); // Lade Template $app->uses('tpl'); diff --git a/interface/web/designer/module_nav_item_del.php b/interface/web/designer/module_nav_item_del.php index cd458cd21..6360c46ed 100644 --- a/interface/web/designer/module_nav_item_del.php +++ b/interface/web/designer/module_nav_item_del.php @@ -31,6 +31,7 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/designer/module_nav_item_edit.php b/interface/web/designer/module_nav_item_edit.php index 5948aba5b..21e1e3594 100644 --- a/interface/web/designer/module_nav_item_edit.php +++ b/interface/web/designer/module_nav_item_edit.php @@ -31,6 +31,7 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/designer/module_nav_item_flip.php b/interface/web/designer/module_nav_item_flip.php index 2ec0566af..1aec179ff 100644 --- a/interface/web/designer/module_nav_item_flip.php +++ b/interface/web/designer/module_nav_item_flip.php @@ -31,6 +31,7 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* Check permissions for module $app->auth->check_module_permissions('designer'); diff --git a/interface/web/remote/index.php b/interface/web/remote/index.php index 78e8d0134..1fa5e607b 100644 --- a/interface/web/remote/index.php +++ b/interface/web/remote/index.php @@ -4,6 +4,8 @@ require_once('../../lib/config.inc.php'); $conf['start_session'] = false; require_once('../../lib/app.inc.php'); +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + $app->load('remoting'); $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI'])); diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php index d66381415..b67a1abb5 100644 --- a/interface/web/tools/user_settings.php +++ b/interface/web/tools/user_settings.php @@ -81,6 +81,8 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; + if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.'; + if($_POST['passwort'] != $_POST['passwort2']) { $app->tform->errorMessage = $app->tform->lng('password_mismatch'); } -- GitLab