| | |
| | | |
| | | require_once('../../lib/config.inc.php'); |
| | | require_once('../../lib/app.inc.php'); |
| | | require_once('tools.inc.php'); |
| | | |
| | | //* Check permissions for module |
| | | $app->auth->check_module_permissions('sites'); |
| | |
| | | */ |
| | | |
| | | //* Get the database name and database user prefix |
| | | $app->uses('getconf'); |
| | | $app->uses('getconf,tools_sites'); |
| | | $global_config = $app->getconf->get_global_config('sites'); |
| | | $dbname_prefix = replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | $dbuser_prefix = replacePrefix($global_config['dbuser_prefix'], $this->dataRecord); |
| | | $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | |
| | | if ($this->dataRecord['database_name'] != ""){ |
| | | /* REMOVE the restriction */ |
| | | $app->tpl->setVar("database_name", str_replace($dbname_prefix , '', $this->dataRecord['database_name'])); |
| | | $app->tpl->setVar("database_user", str_replace($dbuser_prefix , '', $this->dataRecord['database_user'])); |
| | | } |
| | | |
| | | if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { |
| | | $app->tpl->setVar("database_name_prefix", $global_config['dbname_prefix']); |
| | | $app->tpl->setVar("database_user_prefix", $global_config['dbuser_prefix']); |
| | | } else { |
| | | $app->tpl->setVar("database_name_prefix", $dbname_prefix); |
| | | $app->tpl->setVar("database_user_prefix", $dbuser_prefix); |
| | | } |
| | | |
| | | if($this->id > 0) { |
| | |
| | | // When the record is updated |
| | | if($this->id > 0) { |
| | | // restore the server ID if the user is not admin and record is edited |
| | | $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE database_id = ".intval($this->id)); |
| | | $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE database_id = ".$app->functions->intval($this->id)); |
| | | $this->dataRecord["server_id"] = $tmp["server_id"]; |
| | | unset($tmp); |
| | | // When the record is inserted |
| | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } else { |
| | | // check if client of database parent domain is client of db user! |
| | | $web_group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = '".$app->functions->intval($this->dataRecord['parent_domain_id'])."'"); |
| | | if($this->dataRecord['database_user_id']) { |
| | | $group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_database_user WHERE database_user_id = '".$app->functions->intval($this->dataRecord['database_user_id'])."'"); |
| | | if($group['sys_groupid'] != $web_group['sys_groupid']) { |
| | | $app->error($app->tform->wordbook['database_client_differs_txt']); |
| | | } |
| | | } |
| | | if($this->dataRecord['database_ro_user_id']) { |
| | | $group = $app->db->queryOneRecord("SELECT sys_groupid FROM web_database_user WHERE database_user_id = '".$app->functions->intval($this->dataRecord['database_ro_user_id'])."'"); |
| | | if($group['sys_groupid'] != $web_group['sys_groupid']) { |
| | | $app->error($app->tform->wordbook['database_client_differs_txt']); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | parent::onSubmit(); |
| | |
| | | if($this->dataRecord['parent_domain_id'] == 0) $app->tform->errorMessage .= $app->tform->lng("database_site_error_empty").'<br />'; |
| | | |
| | | //* Get the database name and database user prefix |
| | | $app->uses('getconf'); |
| | | $app->uses('getconf,tools_sites'); |
| | | $global_config = $app->getconf->get_global_config('sites'); |
| | | $dbname_prefix = replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | $dbuser_prefix = replacePrefix($global_config['dbuser_prefix'], $this->dataRecord); |
| | | |
| | | $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | |
| | | //* Prevent that the database name and charset is changed |
| | | $old_record = $app->tform->getDataRecord($this->id); |
| | | if($old_record["database_name"] != $dbname_prefix . $this->dataRecord["database_name"]) { |
| | |
| | | |
| | | //* Database username and database name shall not be empty |
| | | if($this->dataRecord['database_name'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_name_error_empty"].'<br />'; |
| | | if($this->dataRecord['database_user'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_user_error_empty"].'<br />'; |
| | | |
| | | |
| | | //* 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'])) { |
| | |
| | | unset($old_record); |
| | | |
| | | if(strlen($dbname_prefix . $this->dataRecord['database_name']) > 64) $app->tform->errorMessage .= str_replace('{db}',$dbname_prefix . $this->dataRecord['database_name'],$app->tform->wordbook["database_name_error_len"]).'<br />'; |
| | | if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16) $app->tform->errorMessage .= str_replace('{user}',$dbuser_prefix . $this->dataRecord['database_user'],$app->tform->wordbook["database_user_error_len"]).'<br />'; |
| | | |
| | | //* Check database name and user against blacklist |
| | | $dbname_blacklist = array($conf['db_database'],'mysql'); |
| | |
| | | $app->tform->errorMessage .= $app->lng('Database name not allowed.').'<br />'; |
| | | } |
| | | |
| | | $dbuser_blacklist = array($conf['db_user'],'mysql','root'); |
| | | if(in_array($dbname_prefix . $this->dataRecord['database_user'],$dbname_blacklist)) { |
| | | $app->tform->errorMessage .= $app->lng('Database user not allowed.').'<br />'; |
| | | } |
| | | |
| | | if ($app->tform->errorMessage == ''){ |
| | | /* restrict the names if there is no error */ |
| | | /* crop user and db names if they are too long -> mysql: user: 16 chars / db: 64 chars */ |
| | | $this->dataRecord['database_name'] = substr($dbname_prefix . $this->dataRecord['database_name'], 0, 64); |
| | | $this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16); |
| | | } |
| | | |
| | | //* Check for duplicates |
| | |
| | | // we need remote access rights for this server, so get it's ip address |
| | | $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); |
| | | if($server_config['ip_address']!='') { |
| | | if($this->dataRecord['remote_access'] != 'y') $this->dataRecord['remote_ips'] = ''; |
| | | $this->dataRecord['remote_access'] = 'y'; |
| | | $this->dataRecord['remote_ips'] .= ($this->dataRecord['remote_ips'] != '' ? ',' : '') . $server_config['ip_address']; |
| | | if(preg_match('/(^|,)' . preg_quote($server_config['ip_address'], '/') . '(,|$)/', $this->dataRecord['remote_ips']) == false) { |
| | | $this->dataRecord['remote_ips'] .= ($this->dataRecord['remote_ips'] != '' ? ',' : '') . $server_config['ip_address']; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | //* Database username and database name shall not be empty |
| | | if($this->dataRecord['database_name'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_name_error_empty"].'<br />'; |
| | | if($this->dataRecord['database_user'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_user_error_empty"].'<br />'; |
| | | |
| | | //* Get the database name and database user prefix |
| | | $app->uses('getconf'); |
| | | $app->uses('getconf,tools_sites'); |
| | | $global_config = $app->getconf->get_global_config('sites'); |
| | | $dbname_prefix = replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | $dbuser_prefix = replacePrefix($global_config['dbuser_prefix'], $this->dataRecord); |
| | | $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $this->dataRecord); |
| | | |
| | | if(strlen($dbname_prefix . $this->dataRecord['database_name']) > 64) $app->tform->errorMessage .= str_replace('{db}',$dbname_prefix . $this->dataRecord['database_name'],$app->tform->wordbook["database_name_error_len"]).'<br />'; |
| | | if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16) $app->tform->errorMessage .= str_replace('{user}',$dbuser_prefix . $this->dataRecord['database_user'],$app->tform->wordbook["database_user_error_len"]).'<br />'; |
| | | |
| | | //* Check database name and user against blacklist |
| | | $dbname_blacklist = array($conf['db_database'],'mysql'); |
| | |
| | | $app->tform->errorMessage .= $app->lng('Database name not allowed.').'<br />'; |
| | | } |
| | | |
| | | $dbuser_blacklist = array($conf['db_user'],'mysql','root'); |
| | | if(in_array($dbname_prefix . $this->dataRecord['database_user'],$dbname_blacklist)) { |
| | | $app->tform->errorMessage .= $app->lng('Database user not allowed.').'<br />'; |
| | | } |
| | | |
| | | /* restrict the names */ |
| | | /* crop user and db names if they are too long -> mysql: user: 16 chars / db: 64 chars */ |
| | | if ($app->tform->errorMessage == ''){ |
| | | $this->dataRecord['database_name'] = substr($dbname_prefix . $this->dataRecord['database_name'], 0, 64); |
| | | $this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16); |
| | | } |
| | | |
| | | //* Check for duplicates |
| | |
| | | // we need remote access rights for this server, so get it's ip address |
| | | $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); |
| | | if($server_config['ip_address']!='') { |
| | | if($this->dataRecord['remote_access'] != 'y') $this->dataRecord['remote_ips'] = ''; |
| | | $this->dataRecord['remote_access'] = 'y'; |
| | | $this->dataRecord['remote_ips'] .= (trim($this->dataRecord['remote_ips']) != '' ? ',' : '') . $server_config['ip_address']; |
| | | if(preg_match('/(^|,)' . preg_quote($server_config['ip_address'], '/') . '(,|$)/', $this->dataRecord['remote_ips']) == false) { |
| | | $this->dataRecord['remote_ips'] .= ($this->dataRecord['remote_ips'] != '' ? ',' : '') . $server_config['ip_address']; |
| | | } |
| | | } |
| | | } |
| | | |
| | | parent::onBeforeInsert(); |
| | | } |
| | | |
| | | function onInsertSave($sql) { |
| | | global $app, $conf; |
| | | |
| | | $app->uses('sites_database_plugin'); |
| | | |
| | | $app->sites_database_plugin->processDatabaseInsert($this); |
| | | |
| | | $app->db->query($sql); |
| | | if($app->db->errorMessage != '') die($app->db->errorMessage); |
| | | $new_id = $app->db->insertID(); |
| | | |
| | | return $new_id; |
| | | } |
| | | |
| | | function onUpdateSave($sql) { |
| | | global $app; |
| | | if(!empty($sql) && !$app->tform->isReadonlyTab($app->tform->getCurrentTab(),$this->id)) { |
| | | |
| | | $app->uses('sites_database_plugin'); |
| | | $app->sites_database_plugin->processDatabaseUpdate($this); |
| | | |
| | | $app->db->query($sql); |
| | | if($app->db->errorMessage != '') die($app->db->errorMessage); |
| | | } |
| | | } |
| | | |
| | | function onAfterInsert() { |
| | | global $app, $conf; |
| | | |
| | | if($this->dataRecord["parent_domain_id"] > 0) { |
| | | $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($this->dataRecord["parent_domain_id"])); |
| | | $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"])); |
| | | |
| | | //* The Database user shall be owned by the same group then the website |
| | | $sys_groupid = $web['sys_groupid']; |
| | |
| | | global $app, $conf; |
| | | |
| | | if($this->dataRecord["parent_domain_id"] > 0) { |
| | | $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($this->dataRecord["parent_domain_id"])); |
| | | $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"])); |
| | | |
| | | //* The Database user shall be owned by the same group then the website |
| | | $sys_groupid = $web['sys_groupid']; |