Commit 355efb9a authored by tbrehm's avatar tbrehm

Merged revisions 2886-2909 from stable branch.

parent 85444438
......@@ -96,7 +96,7 @@ $conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
$conf['language'] = $conf_old['language'];
if($conf['language'] == '{language}') $conf['language'] = 'en';
$conf['timezone'] = $conf_old['timezone'];
$conf['timezone'] = (isset($conf_old['timezone']))?$conf_old['timezone']:'UTC';
if($conf['timezone'] == '{timezone}' or trim($conf['timezone']) == '') $conf['timezone'] = 'UTC';
if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
......
......@@ -45,6 +45,7 @@ class functions {
$content = file_get_contents($filepath);
$content = chunk_split(base64_encode($content));
$uid = strtoupper(md5(uniqid(time())));
$subject = "=?utf-8?B?".base64_encode($subject)."?=";
if($filename == '') {
$path_parts = pathinfo($filepath);
......@@ -75,6 +76,7 @@ class functions {
$header = "From: $from\nReply-To: $from\n";
$header .= "Content-Type: text/plain;\n\tcharset=\"UTF-8\"\n";
$header .= "Content-Transfer-Encoding: 8bit\n\n";
$subject = "=?utf-8?B?".base64_encode($subject)."?=";
mail($to, $subject, $text, $header);
}
......
......@@ -348,8 +348,8 @@ class remoting {
$this->server->fault('permission_denied','You do not have the permissions to access this function.');
return false;
}
$affected_rows = $this->deleteQuery('../mail/form/mail_user_filter.tform.php', $primary_id);
$app->plugin->raiseEvent('mail:mail_user_filter:on_after_delete',$this);
$affected_rows = $this->deleteQuery('../mail/form/mail_user_filter.tform.php', $primary_id,'mail:mail_user_filter:on_after_delete');
// $app->plugin->raiseEvent('mail:mail_user_filter:on_after_delete',$this);
return $affected_rows;
}
......@@ -2180,20 +2180,29 @@ class remoting {
//* Get the SQL query
$sql = $app->remoting_lib->getSQL($params,'INSERT',0);
$app->db->query($sql);
//* Check if no system user with that username exists
$username = $app->db->quote($params["username"]);
$tmp = $app->db->queryOneRecord("SELECT count(userid) as number FROm sys_user WHERE username = '$username'");
$tmp = $app->db->queryOneRecord("SELECT count(userid) as number FROM sys_user WHERE username = '$username'");
if($tmp['number'] > 0) $app->remoting_lib->errorMessage .= "Duplicate username<br />";
//* Stop on error while preparing the sql query
if($app->remoting_lib->errorMessage != '') {
$this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
return false;
}
//* Execute the SQL query
$app->db->query($sql);
$insert_id = $app->db->insertID();
//* Stop on error while executing the sql query
if($app->remoting_lib->errorMessage != '') {
$this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
return false;
}
$this->id = $insert_id;
$this->dataRecord = $params;
......@@ -2332,22 +2341,23 @@ class remoting {
// set a few values for compatibility with tform actions, mostly used by plugins
$this->oldDataRecord = $old_rec;
$this->id = $primary_id;
$this->dataRecord = $params;
$this->dataRecord = $old_rec;
//$this->dataRecord = $params;
//* Get the SQL query
$sql = $app->remoting_lib->getDeleteSQL($primary_id);
$app->db->errorMessage = '';
$app->db->query($sql);
$affected_rows = $app->db->affectedRows();
if($app->db->errorMessage != '') {
if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this);
$this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
return false;
}
$affected_rows = $app->db->affectedRows();
if($event_identifier != '') {
$app->plugin->raiseEvent($event_identifier,$this);
}
//* Save changes to Datalog
if($app->remoting_lib->formDef["db_history"] == 'yes') {
......
......@@ -536,11 +536,16 @@ class remoting_lib {
if($field['formtype'] == 'PASSWORD') {
$sql_insert_key .= "`$key`, ";
if($field['encryption'] == 'CRYPT') {
$record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
$record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
} elseif ($field['encryption'] == 'MYSQL') {
$sql_insert_val .= "PASSWORD('".$app->db->quote($record[$key])."'), ";
} elseif ($field['encryption'] == 'CLEARTEXT') {
$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
} else {
$record[$key] = md5($record[$key]);
$record[$key] = md5(stripslashes($record[$key]));
$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
}
$sql_insert_val .= "'".$record[$key]."', ";
} elseif ($field['formtype'] == 'CHECKBOX') {
$sql_insert_key .= "`$key`, ";
if($record[$key] == '') {
......@@ -645,7 +650,11 @@ class remoting_lib {
foreach($primary_id as $key => $val) {
$key = $app->db->quote($key);
$val = $app->db->quote($val);
$sql_where .= "$key = '$val' AND ";
if(stristr($val,'%')) {
$sql_where .= "$key like '$val' AND ";
} else {
$sql_where .= "$key = '$val' AND ";
}
}
$sql_where = substr($sql_where,0,-5);
$sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$sql_where;
......
......@@ -161,7 +161,7 @@ if(is_array($installed_packages)) {
foreach($installed_packages as $ip) {
// Get version number of the latest installed version
$sql = "SELECT v1, v2, v3, v4 FROM software_update, software_update_inst WHERE software_update.software_update_id = software_update_inst.software_update_id AND server_id = 1 ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC LIMIT 0,1";
$sql = "SELECT v1, v2, v3, v4 FROM software_update, software_update_inst WHERE software_update.software_update_id = software_update_inst.software_update_id AND server_id = ".$server_id." ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC LIMIT 0,1";
$lu = $app->db->queryOneRecord($sql);
// Get all installable updates
......
......@@ -106,6 +106,14 @@ class page_action extends tform_actions {
}
if($this->id > 0) {
//* we are editing a existing record
$app->tpl->setVar("edit_disabled", 1);
$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
} else {
$app->tpl->setVar("edit_disabled", 0);
}
parent::onShowEnd();
}
......
......@@ -116,6 +116,14 @@ class page_action extends tform_actions {
}
if($this->id > 0) {
//* we are editing a existing record
$app->tpl->setVar("edit_disabled", 1);
$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
} else {
$app->tpl->setVar("edit_disabled", 0);
}
parent::onShowEnd();
}
......@@ -180,19 +188,36 @@ class page_action extends tform_actions {
// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
// And we want to update all rr records too, that belong to this record
$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
}
if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
// And we want to update all rr records too, that belong to this record
$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
}
}
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'])) {
//* We do not allow users to change a domain which has been created by the admin
$rec = $app->db->queryOneRecord("SELECT origin from dns_soa WHERE id = ".$this->id);
if(isset($this->dataRecord["origin"]) && $rec['origin'] != $this->dataRecord["origin"] && $app->tform->checkPerm($this->id,'u')) {
//* Add a error message and switch back to old server
$app->tform->errorMessage .= $app->lng('The Zone (soa) can not be changed. Please ask your Administrator if you want to change the Zone name.');
$this->dataRecord["origin"] = $rec['origin'];
}
unset($rec);
}
}
function onAfterUpdate() {
global $app, $conf;
......@@ -206,13 +231,13 @@ class page_action extends tform_actions {
// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
// And we want to update all rr records too, that belong to this record
$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
}
if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
// And we want to update all rr records too, that belong to this record
$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
}
......
......@@ -80,7 +80,7 @@ $form["tabs"]['dns'] = array (
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
'errmsg'=> 'name_error_empty'),
1 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{1,64}$/',
'regex' => '/^[\w\.\-]{1,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -78,7 +78,7 @@ $form["tabs"]['dns'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-\*]{0,64}$/',
'regex' => '/^[\w\.\-\*]{0,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -78,7 +78,7 @@ $form["tabs"]['dns'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{0,64}$/',
'regex' => '/^[\w\.\-]{0,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -78,7 +78,7 @@ $form["tabs"]['dns'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{0,64}$/',
'regex' => '/^[\w\.\-]{0,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -94,7 +94,7 @@ $form["tabs"]['dns_slave'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{1,64}$/',
'regex' => '/^[\w\.\-]{1,255}$/',
'errmsg'=> 'ns_error_regex'),
),
'default' => '',
......
......@@ -94,7 +94,7 @@ $form["tabs"]['dns_soa'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{1,64}$/',
'regex' => '/^[\w\.\-]{1,255}$/',
'errmsg'=> 'ns_error_regex'),
),
'default' => '',
......@@ -108,7 +108,7 @@ $form["tabs"]['dns_soa'] = array (
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
'errmsg'=> 'mbox_error_empty'),
1 => array ( 'type' => 'REGEX',
'regex' => '/^[[a-zA-Z0-9\.\-\_]{0,64}\.$/',
'regex' => '/^[[a-zA-Z0-9\.\-\_]{0,255}\.$/',
'errmsg'=> 'mbox_error_regex'),
),
'default' => '',
......
......@@ -78,7 +78,7 @@ $form["tabs"]['dns'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{0,64}$/',
'regex' => '/^[\w\.\-]{0,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -78,7 +78,7 @@ $form["tabs"]['dns'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'REGEX',
'regex' => '/^[\w\.\-]{0,64}$/',
'regex' => '/^[\w\.\-]{0,255}$/',
'errmsg'=> 'name_error_regex'),
),
'default' => '',
......
......@@ -28,4 +28,5 @@ $wb['seconds_txt'] = 'Seconds';
$wb['eg_domain_tld'] = 'e.g. domain.tld';
$wb['eg_ns1_domain_tld'] = 'e.g. ns1.domain.tld';
$wb['eg_webmaster_domain_tld'] = 'e.g. webmaster@domain.tld';
$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'The Domain can not be changed. Please ask your Administrator if you want to change the domain name.';
?>
......@@ -7,10 +7,18 @@
<fieldset class="inlineLabels"><legend>Secondary DNS Zone</legend>
<tmpl_if name="is_admin">
<div class="ctrlHolder">
<label for="server_id">{tmpl_var name='server_id_txt'}</label>
<tmpl_if name="edit_disabled">
<label for="server_id_disabled">{tmpl_var name='server_id_txt'}</label>
<select name="server_id_disabled" id="server_id_disabled" class="selectInput" disabled="disabled">
{tmpl_var name='server_id'}
</select>
<input type="hidden" name="server_id" value="{tmpl_var name='server_id_value'}" />
<tmpl_else>
<label for="server_id">{tmpl_var name='server_id_txt'}</label>
<select name="server_id" id="server_id" class="selectInput">
{tmpl_var name='server_id'}
</select>
{tmpl_var name='server_id'}
</select>
</tmpl_if>
</div>
<div class="ctrlHolder">
<label for="client_group_id">{tmpl_var name='client_txt'}</label>
......
......@@ -7,10 +7,18 @@
<fieldset class="inlineLabels"><legend>DNS Zone</legend>
<tmpl_if name="is_admin">
<div class="ctrlHolder">
<label for="server_id">{tmpl_var name='server_id_txt'}</label>
<tmpl_if name="edit_disabled">
<label for="server_id_disabled">{tmpl_var name='server_id_txt'}</label>
<select name="server_id_disabled" id="server_id_disabled" class="selectInput" disabled="disabled">
{tmpl_var name='server_id'}
</select>
<input type="hidden" name="server_id" value="{tmpl_var name='server_id_value'}" />
<tmpl_else>
<label for="server_id">{tmpl_var name='server_id_txt'}</label>
<select name="server_id" id="server_id" class="selectInput">
{tmpl_var name='server_id'}
</select>
{tmpl_var name='server_id'}
</select>
</tmpl_if>
</div>
<div class="ctrlHolder">
<label for="client_group_id">{tmpl_var name='client_txt'}</label>
......
......@@ -14,4 +14,5 @@ $wb["source_username_error_isempty"] = 'Username is empty.';
$wb["source_password_error_isempty"] = 'Password is empty.';
$wb["destination_error_isemail"] = 'No destination selected.';
$wb["source_server_error_regex"] = 'Pop3/Imap Server is not a valid domain name.';
$wb["error_delete_read_all_combination"] = 'Illegal combination of options. You can not use "Delete emails after retrieval" = no together with "Retrieve all emails" = yes';
?>
\ No newline at end of file
......@@ -85,11 +85,17 @@ class page_action extends tform_actions {
}
} // end if user is not admin
// Set the server ID according to the selected destination
$tmp = $app->db->queryOneRecord("SELECT server_id FROM mail_user WHERE email = '".$app->db->quote($this->dataRecord["destination"])."'");
$this->dataRecord["server_id"] = $tmp["server_id"];
unset($tmp);
//* Check that no illegal combination of options is set
if((!isset($this->dataRecord['source_delete']) || @$this->dataRecord['source_delete'] == 'n') && $this->dataRecord['source_read_all'] == 'y') {
$app->tform->errorMessage .= $app->tform->lng('error_delete_read_all_combination')."<br>";
}
parent::onSubmit();
}
......
......@@ -78,6 +78,7 @@
jQuery('#redirect_type option[value="R"]').hide();
jQuery('#redirect_type option[value="L"]').hide();
jQuery('#redirect_type option[value="R,L"]').hide();
jQuery('#redirect_type option[value="R=301,L"]').hide();
jQuery('#redirect_type option[value="last"]').show();
jQuery('#redirect_type option[value="break"]').show();
......@@ -94,8 +95,9 @@
jQuery('#redirect_type option[value="R"]').show();
jQuery('#redirect_type option[value="L"]').show();
jQuery('#redirect_type option[value="R,L"]').show();
jQuery('#redirect_type option[value="R=301,L"]').show();
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
}
});
}
......
......@@ -51,13 +51,14 @@
jQuery('#redirect_type option[value="R"]').hide();
jQuery('#redirect_type option[value="L"]').hide();
jQuery('#redirect_type option[value="R,L"]').hide();
jQuery('#redirect_type option[value="R=301,L"]').hide();
if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
} else {
jQuery('#redirect_type option[value="last"]').hide();
jQuery('#redirect_type option[value="break"]').hide();
jQuery('#redirect_type option[value="redirect"]').hide();
jQuery('#redirect_type option[value="permanent"]').hide();
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
}
});
}
......
......@@ -65,6 +65,7 @@
jQuery('#redirect_type option[value="R"]').hide();
jQuery('#redirect_type option[value="L"]').hide();
jQuery('#redirect_type option[value="R,L"]').hide();
jQuery('#redirect_type option[value="R=301,L"]').hide();
jQuery('#redirect_type option[value="last"]').show();
jQuery('#redirect_type option[value="break"]').show();
......@@ -81,8 +82,9 @@
jQuery('#redirect_type option[value="R"]').show();
jQuery('#redirect_type option[value="L"]').show();
jQuery('#redirect_type option[value="R,L"]').show();
jQuery('#redirect_type option[value="R=301,L"]').show();
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
}
});
}
......
......@@ -55,9 +55,7 @@ function replacePrefix($name, $dataRecord) {
function getClientName($dataRecord) {
global $app, $conf;
/* FS#1234 - CLIENTNAME value when in reseller account - need check this workarround impact */
//if($_SESSION["s"]["user"]["typ"] != 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
if($_SESSION["s"]["user"]["typ"] != 'admin' && ! $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
if($_SESSION["s"]["user"]["typ"] != 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
// Get the group-id of the user
$client_group_id = $_SESSION["s"]["user"]["default_group"];
} else {
......
......@@ -537,7 +537,7 @@ class page_action extends tform_actions {
function onAfterUpdate() {
global $app, $conf;
// make sure that the record belongs to the clinet group and not the admin group when a admin inserts it
// make sure that the record belongs to the client group and not the admin group when a admin inserts it
// also make sure that the user can not delete domain created by a admin
if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
$client_group_id = intval($this->dataRecord["client_group_id"]);
......
......@@ -18,6 +18,7 @@ try {
$forwarding_id = 1;
$mail_forwarding_record = $client->mail_forward_get($session_id, $forwarding_id);
// $mail_forwarding_record = $client->mail_forward_get($session_id, array('source' => '%@test.int'));
print_r($mail_forwarding_record);
......
......@@ -18,12 +18,12 @@ try {
$client_id = 1;
$params = array(
'server_id' => 1,
'type' => 'y',
'database_name' => 'db_o',
'database_user' => 'test',
'database_password' => 'test',
'type' => 'mysql',
'database_name' => 'db_name1',
'database_user' => 'db_name1',
'database_password' => 'db_name1',
'database_charset' => 'UTF8',
'remote_access' => 'y',
'remote_access' => 'n',
'remote_ips' => '',
'active' => 'y'
);
......
......@@ -8,7 +8,7 @@ $soap_location = 'http://localhost:8080/ispconfig3/interface/web/remote/index.ph
$soap_uri = 'http://localhost:8080/ispconfig3/interface/web/remote/';
*/
$soap_location = 'http://192.168.0.110:8080/remote/index.php';
$soap_uri = 'http://192.168.0.110:8080/remote/';
$soap_location = 'http://192.168.0.105:8080/remote/index.php';
$soap_uri = 'http://192.168.0.105:8080/remote/';
?>
......@@ -32,9 +32,12 @@ if ($handle = opendir('.'))
}
$current = $year.$month;
$awprev[$current] = $year."-".$month;
if ( $month < 10 ) {
$current = $year."0".$month;
}
$awprev[$current] = $year."-".$month;
closedir($handle);
closedir($handle);
}
arsort($awprev);
......
......@@ -26,7 +26,7 @@
ErrorLog /var/log/ispconfig/httpd/<tmpl_var name='domain'>/error.log
<tmpl_if name='errordocs'>
Alias /error/ "<tmpl_var name='web_document_root_www'>/error/"
ErrorDocument 400 /error/400.html
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
......
......@@ -180,7 +180,7 @@ foreach($records as $rec) {
if(is_file($awstats_website_conf_file)) unlink($awstats_website_conf_file);
$sql = "SELECT domain FROM web_domain WHERE (type = 'alias' OR type = 'subdomain') server_id = ".$conf['server_id'];
$sql = "SELECT domain FROM web_domain WHERE (type = 'alias' OR type = 'subdomain') AND server_id = ".$conf['server_id'];
$aliases = $app->db->queryAllRecords($sql);
$aliasdomain = '';
......
......@@ -1253,6 +1253,24 @@ class system{
$app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder,LOGLEVEL_DEBUG);
}
//* Function to create directory paths and chown them to a user and group
function mkdirpath($path, $mode = 0755, $user = '', $group = '') {
$path_parts = explode('/',$path);
$new_path = '';
if(is_array($path_parts)) {
foreach($path_parts as $part) {
$new_path .= '/'.$part;
if(!@is_dir($new_path)) {
mkdir($new_path);
chmod($new_path,$mode);
if($user != '') chown($new_path,$user);
if($group != '') chgrp($new_path,$group);
}
}
}
}
}
?>
......@@ -363,7 +363,13 @@ class apache2_plugin {
unset($tmp_docroot[count($tmp_docroot)-1]);
$old_dir = implode('/',$tmp_docroot);
exec('rm -rf '.$data['new']['document_root']);
//* Check if there is already some data in the new docroot and rename it as we need a clean path to move the existing site to the new path
if(@is_dir($data['new']['document_root'])) {
rename($data['new']['document_root'],$data['new']['document_root'].'_bak_'.date('Y_m_d'));
$app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d'),LOGLEVEL_DEBUG);
}
//* Create new base directory, if it does not exist yet
if(!is_dir($new_dir)) exec('mkdir -p '.$new_dir);
exec('mv '.$data['old']['document_root'].' '.$new_dir);
$app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir,LOGLEVEL_DEBUG);
......
......@@ -208,6 +208,16 @@ class bind_plugin {
if(is_file($filename)) unset($filename);
}
//* Ensure that the named slave directory is writable by the named user
if (file_exists('/etc/gentoo-release')) {
$slave_record_dir = $dns_config['bind_zonefiles_dir'].'/sec';
} else {
$slave_record_dir = $dns_config['bind_zonefiles_dir'].'/slave';
}
if(!@is_dir($slave_record_dir)) mkdir($slave_record_dir,0770);
chown($slave_record_dir,$dns_config['bind_user']);
chgrp($slave_record_dir,$dns_config['bind_group']);
//* Reload bind nameserver
$app->services->restartServiceDelayed('bind','reload');
......
......@@ -91,18 +91,18 @@ class mail_plugin {
$tmp_basepath_parts = explode('/',$tmp_basepath);
unset($tmp_basepath_parts[count($tmp_basepath_parts)-1]);
$base_path = implode('/',$tmp_basepath_parts);
//* Create the mail domain directory, if it does not exist
if(!empty($base_path) && !is_dir($base_path)) {
exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']);
//exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']);
$app->system->mkdirpath($base_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
$app->log('Created Directory: '.$base_path,LOGLEVEL_DEBUG);
}
// Dovecot uses a different mail layout with a separate 'Maildir' subdirectory.
if($mail_config['pop3_imap_daemon'] == 'dovecot') {
exec("su -c 'mkdir -p ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
//exec("su -c 'mkdir -p ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
$app->system->mkdirpath($maildomain_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
$app->log('Created Directory: '.$maildomain_path,LOGLEVEL_DEBUG);
$maildomain_path .= '/Maildir';
}
......@@ -160,24 +160,30 @@ class mail_plugin {
//* Send the welcome email message
if(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt')) {
$tmp = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt');
$lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt');
} elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt')) {
$tmp = file($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt');
$lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt');
} elseif(file_exists($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt')) {
$tmp = file($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt');
$lines = file($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt');
} else {
$tmp = file($conf['rootpath'].'/conf/mail/welcome_email_en.txt');