Commit fb33392c authored by jwarnier's avatar jwarnier
Browse files

use single-quotes instead of double-quotes whenever appropriate

parent b2cdd5f1
......@@ -81,17 +81,17 @@ class apache2_plugin {
function ssl($event_name,$data) {
global $app, $conf;
if(!is_dir($data["new"]["document_root"]."/ssl")) exec("mkdir -p ".$data["new"]["document_root"]."/ssl");
$ssl_dir = $data["new"]["document_root"]."/ssl";
$domain = $data["new"]["ssl_domain"];
$key_file = $ssl_dir.'/'.$domain.".key.org";
$key_file2 = $ssl_dir.'/'.$domain.".key";
$csr_file = $ssl_dir.'/'.$domain.".csr";
$crt_file = $ssl_dir.'/'.$domain.".crt";
if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl');
$ssl_dir = $data['new']['document_root'].'/ssl';
$domain = $data['new']['ssl_domain'];
$key_file = $ssl_dir.'/'.$domain.'.key.org';
$key_file2 = $ssl_dir.'/'.$domain.'.key';
$csr_file = $ssl_dir.'/'.$domain.'.csr';
$crt_file = $ssl_dir.'/'.$domain.'.crt';
//* Create a SSL Certificate
if($data["new"]["ssl_action"] == 'create') {
$rand_file = $ssl_dir."/random_file";
if($data['new']['ssl_action'] == 'create') {
$rand_file = $ssl_dir.'/random_file';
$rand_data = md5(uniqid(microtime(),1));
for($i=0; $i<1000; $i++) {
$rand_data .= md5(uniqid(microtime(),1));
......@@ -125,7 +125,7 @@ class apache2_plugin {
[ req_attributes ]
challengePassword = A challenge password";
$ssl_cnf_file = $ssl_dir."/openssl.conf";
$ssl_cnf_file = $ssl_dir.'/openssl.conf';
file_put_contents($ssl_cnf_file,$ssl_cnf);
$rand_file = escapeshellcmd($rand_file);
......@@ -138,56 +138,56 @@ class apache2_plugin {
if(is_file($ssl_cnf_file)) {
exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $key_file 2048 && openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -out $csr_file -days $ssl_days -config $config_file && openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -in $csr_file -out $crt_file -days $ssl_days -config $config_file && openssl rsa -passin pass:$ssl_password -in $key_file -out $key_file2");
$app->log("Creating SSL Cert for: $domain",LOGLEVEL_DEBUG);
$app->log('Creating SSL Cert for: '.$domain,LOGLEVEL_DEBUG);
}
exec("chmod 400 $key_file2");
exec('chmod 400 '.$key_file2);
@unlink($config_file);
@unlink($rand_file);
$ssl_request = $app->db->quote(file_get_contents($csr_file));
$ssl_cert = $app->db->quote(file_get_contents($crt_file));
/* Update the DB of the (local) Server */
$app->db->query("UPDATE web_domain SET ssl_request = '$ssl_request', ssl_cert = '$ssl_cert' WHERE domain = '".$data["new"]["domain"]."'");
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->db->query("UPDATE web_domain SET ssl_request = '$ssl_request', ssl_cert = '$ssl_cert' WHERE domain = '".$data['new']['domain']."'");
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
/* Update also the master-DB of the Server-Farm */
$app->dbmaster->query("UPDATE web_domain SET ssl_request = '$ssl_request', ssl_cert = '$ssl_cert' WHERE domain = '".$data["new"]["domain"]."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_request = '$ssl_request', ssl_cert = '$ssl_cert' WHERE domain = '".$data['new']['domain']."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
}
//* Save a SSL certificate to disk
if($data["new"]["ssl_action"] == 'save') {
$ssl_dir = $data["new"]["document_root"]."/ssl";
$domain = $data["new"]["ssl_domain"];
$csr_file = $ssl_dir.'/'.$domain.".csr";
$crt_file = $ssl_dir.'/'.$domain.".crt";
$bundle_file = $ssl_dir.'/'.$domain.".bundle";
file_put_contents($csr_file,$data["new"]["ssl_request"]);
file_put_contents($crt_file,$data["new"]["ssl_cert"]);
if(trim($data["new"]["ssl_bundle"]) != '') file_put_contents($bundle_file,$data["new"]["ssl_bundle"]);
if($data['new']['ssl_action'] == 'save') {
$ssl_dir = $data['new']['document_root'].'/ssl';
$domain = $data['new']['ssl_domain'];
$csr_file = $ssl_dir.'/'.$domain.'.csr';
$crt_file = $ssl_dir.'/'.$domain.'.crt';
$bundle_file = $ssl_dir.'/'.$domain.'.bundle';
file_put_contents($csr_file,$data['new']['ssl_request']);
file_put_contents($crt_file,$data['new']['ssl_cert']);
if(trim($data['new']['ssl_bundle']) != '') file_put_contents($bundle_file,$data['new']['ssl_bundle']);
/* Update the DB of the (local) Server */
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
/* Update also the master-DB of the Server-Farm */
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->log("Saving SSL Cert for: $domain",LOGLEVEL_DEBUG);
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
$app->log('Saving SSL Cert for: '.$domain,LOGLEVEL_DEBUG);
}
//* Delete a SSL certificate
if($data["new"]["ssl_action"] == 'del') {
$ssl_dir = $data["new"]["document_root"]."/ssl";
$domain = $data["new"]["ssl_domain"];
$csr_file = $ssl_dir.'/'.$domain.".csr";
$crt_file = $ssl_dir.'/'.$domain.".crt";
$bundle_file = $ssl_dir.'/'.$domain.".bundle";
if($data['new']['ssl_action'] == 'del') {
$ssl_dir = $data['new']['document_root'].'/ssl';
$domain = $data['new']['ssl_domain'];
$csr_file = $ssl_dir.'/'.$domain.'.csr';
$crt_file = $ssl_dir.'/'.$domain.'.crt';
$bundle_file = $ssl_dir.'/'.$domain.'.bundle';
unlink($csr_file);
unlink($crt_file);
unlink($bundle_file);
/* Update the DB of the (local) Server */
$app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = '".$data['new']['domain']."'");
$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
/* Update also the master-DB of the Server-Farm */
$app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
$app->log("Deleting SSL Cert for: $domain",LOGLEVEL_DEBUG);
$app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = '".$data['new']['domain']."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
$app->log('Deleting SSL Cert for: '.$domain,LOGLEVEL_DEBUG);
}
......@@ -210,273 +210,273 @@ class apache2_plugin {
if($this->action != 'insert') $this->action = 'update';
if($data["new"]["type"] != "vhost" && $data["new"]["parent_domain_id"] > 0) {
if($data['new']['type'] != 'vhost' && $data['new']['parent_domain_id'] > 0) {
$old_parent_domain_id = intval($data["old"]["parent_domain_id"]);
$new_parent_domain_id = intval($data["new"]["parent_domain_id"]);
$old_parent_domain_id = intval($data['old']['parent_domain_id']);
$new_parent_domain_id = intval($data['new']['parent_domain_id']);
// If the parent_domain_id has been chenged, we will have to update the old site as well.
if($this->action == 'update' && $data["new"]["parent_domain_id"] != $data["old"]["parent_domain_id"]) {
$tmp = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$old_parent_domain_id." AND active = 'y'");
$data["new"] = $tmp;
$data["old"] = $tmp;
if($this->action == 'update' && $data['new']['parent_domain_id'] != $data['old']['parent_domain_id']) {
$tmp = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = '.$old_parent_domain_id." AND active = 'y'");
$data['new'] = $tmp;
$data['old'] = $tmp;
$this->action = 'update';
$this->update($event_name,$data);
}
// This is not a vhost, so we need to update the parent record instead.
$tmp = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$new_parent_domain_id." AND active = 'y'");
$data["new"] = $tmp;
$data["old"] = $tmp;
$tmp = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = '.$new_parent_domain_id." AND active = 'y'");
$data['new'] = $tmp;
$data['old'] = $tmp;
$this->action = 'update';
}
// load the server configuration options
$app->uses("getconf");
$web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
$app->uses('getconf');
$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
//* Check if this is a chrooted setup
if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
$apache_chrooted = true;
$app->log("Info: Apache is chrooted.",LOGLEVEL_DEBUG);
$app->log('Info: Apache is chrooted.',LOGLEVEL_DEBUG);
} else {
$apache_chrooted = false;
}
if($data["new"]["document_root"] == '') {
$app->log("document_root not set",LOGLEVEL_WARN);
if($data['new']['document_root'] == '') {
$app->log('document_root not set',LOGLEVEL_WARN);
return 0;
}
if($data["new"]["system_user"] == 'root' or $data["new"]["system_group"] == 'root') {
$app->log("Websites can not be owned by the root user or group.",LOGLEVEL_WARN);
if($data['new']['system_user'] == 'root' or $data['new']['system_group'] == 'root') {
$app->log('Websites cannot be owned by the root user or group.',LOGLEVEL_WARN);
return 0;
}
//* If the client of the site has been changed, we have a change of the document root
if($this->action == 'update' && $data["new"]["document_root"] != $data["old"]["document_root"]) {
if($this->action == 'update' && $data['new']['document_root'] != $data['old']['document_root']) {
//* Get the old client ID
$old_client = $app->dbmaster->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["old"]["sys_groupid"]));
$old_client_id = intval($old_client["client_id"]);
$old_client = $app->dbmaster->queryOneRecord('SELECT client_id FROM sys_group WHERE sys_group.groupid = '.intval($data['old']['sys_groupid']));
$old_client_id = intval($old_client['client_id']);
unset($old_client);
//* Remove the old symlinks
$tmp_symlinks_array = explode(':',$web_config["website_symlinks"]);
$tmp_symlinks_array = explode(':',$web_config['website_symlinks']);
if(is_array($tmp_symlinks_array)) {
foreach($tmp_symlinks_array as $tmp_symlink) {
$tmp_symlink = str_replace("[client_id]",$old_client_id,$tmp_symlink);
$tmp_symlink = str_replace("[website_domain]",$data["old"]["domain"],$tmp_symlink);
$tmp_symlink = str_replace('[client_id]',$old_client_id,$tmp_symlink);
$tmp_symlink = str_replace('[website_domain]',$data['old']['domain'],$tmp_symlink);
// Remove trailing slash
if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1);
// create the symlinks, if not exist
if(is_link($tmp_symlink)) {
exec("rm -f ".escapeshellcmd($tmp_symlink));
$app->log("Removed Symlink: rm -f ".$tmp_symlink,LOGLEVEL_DEBUG);
exec('rm -f '.escapeshellcmd($tmp_symlink));
$app->log('Removed symlink: rm -f '.$tmp_symlink,LOGLEVEL_DEBUG);
}
}
}
//* Move the site data
$tmp_docroot = explode('/',$data["new"]["document_root"]);
$tmp_docroot = explode('/',$data['new']['document_root']);
unset($tmp_docroot[count($tmp_docroot)-1]);
$new_dir = implode('/',$tmp_docroot);
$tmp_docroot = explode('/',$data["old"]["document_root"]);
$tmp_docroot = explode('/',$data['old']['document_root']);
unset($tmp_docroot[count($tmp_docroot)-1]);
$old_dir = implode('/',$tmp_docroot);
exec('rm -rf '.$data["new"]["document_root"]);
exec('rm -rf '.$data['new']['document_root']);
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);
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);
//* Change the owner of the website files to the new website owner
exec('chown --recursive --from='.escapeshellcmd($data["old"]["system_user"]).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data["new"]["system_user"]).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir);
exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir);
//* Change the home directory and group of the website user
$command = 'usermod';
$command .= ' --home '.escapeshellcmd($data["new"]["document_root"]);
$command .= ' --home '.escapeshellcmd($data['new']['document_root']);
$command .= ' --gid '.escapeshellcmd($data['new']['system_group']);
$command .= ' '.escapeshellcmd($data["new"]["system_user"]);
$command .= ' '.escapeshellcmd($data['new']['system_user']);
exec($command);
if($apache_chrooted) $this->_exec("chroot ".escapeshellcmd($web_config['website_basedir'])." ".$command);
if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
}
//print_r($data);
// Check if the directories are there and create them if nescessary.
if(!is_dir($data["new"]["document_root"]."/web")) exec("mkdir -p ".$data["new"]["document_root"]."/web");
if(!is_dir($data["new"]["document_root"]."/web/error") and $data["new"]["errordocs"]) exec("mkdir -p ".$data["new"]["document_root"]."/web/error");
//if(!is_dir($data["new"]["document_root"]."/log")) exec("mkdir -p ".$data["new"]["document_root"]."/log");
if(!is_dir($data["new"]["document_root"]."/ssl")) exec("mkdir -p ".$data["new"]["document_root"]."/ssl");
if(!is_dir($data["new"]["document_root"]."/cgi-bin")) exec("mkdir -p ".$data["new"]["document_root"]."/cgi-bin");
if(!is_dir($data["new"]["document_root"]."/tmp")) exec("mkdir -p ".$data["new"]["document_root"]."/tmp");
// Check if the directories are there and create them if necessary.
if(!is_dir($data['new']['document_root'].'/web')) exec('mkdir -p '.$data['new']['document_root'].'/web');
if(!is_dir($data['new']['document_root'].'/web/error') and $data['new']['errordocs']) exec('mkdir -p '.$data['new']['document_root'].'/web/error');
//if(!is_dir($data['new']['document_root'].'/log')) exec('mkdir -p '.$data['new']['document_root'].'/log');
if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl');
if(!is_dir($data['new']['document_root'].'/cgi-bin')) exec('mkdir -p '.$data['new']['document_root'].'/cgi-bin');
if(!is_dir($data['new']['document_root'].'/tmp')) exec('mkdir -p '.$data['new']['document_root'].'/tmp');
// Remove the symlink for the site, if site is renamed
if($this->action == 'update' && $data["old"]["domain"] != '' && $data["new"]["domain"] != $data["old"]["domain"]) {
if(is_dir('/var/log/ispconfig/httpd/'.$data["old"]["domain"])) exec('rm -rf /var/log/ispconfig/httpd/'.$data["old"]["domain"]);
if(is_link($data["old"]["document_root"]."/log")) unlink($data["old"]["document_root"]."/log");
if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']);
if(is_link($data['old']['document_root'].'/log')) unlink($data['old']['document_root'].'/log');
}
// Create the symlink for the logfiles
if(!is_dir('/var/log/ispconfig/httpd/'.$data["new"]["domain"])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data["new"]["domain"]);
if(!is_link($data["new"]["document_root"]."/log")) {
exec("ln -s /var/log/ispconfig/httpd/".$data["new"]["domain"]." ".$data["new"]["document_root"]."/log");
$app->log("Creating Symlink: ln -s /var/log/ispconfig/httpd/".$data["new"]["domain"]." ".$data["new"]["document_root"]."/log",LOGLEVEL_DEBUG);
if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']);
if(!is_link($data['new']['document_root'].'/log')) {
exec('ln -s /var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/log');
$app->log('Creating symlink: ln -s /var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/log',LOGLEVEL_DEBUG);
}
/*
// Create the symlink for the logfiles
// This does not work as vlogger can not log trogh symlinks.
if($this->action == 'update' && $data["old"]["domain"] != '' && $data["new"]["domain"] != $data["old"]["domain"]) {
if(is_dir($data["old"]["document_root"]."/log")) exec('rm -rf '.$data["old"]["document_root"]."/log");
if(is_link('/var/log/ispconfig/httpd/'.$data["old"]["domain"])) unlink('/var/log/ispconfig/httpd/'.$data["old"]["domain"]);
// This does not work as vlogger cannot log trough symlinks.
if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
if(is_dir($data['old']['document_root'].'/log')) exec('rm -rf '.$data['old']['document_root'].'/log');
if(is_link('/var/log/ispconfig/httpd/'.$data['old']['domain'])) unlink('/var/log/ispconfig/httpd/'.$data['old']['domain']);
}
// Create the symlink for the logfiles
if(!is_dir($data["new"]["document_root"]."/log")) exec('mkdir -p '.$data["new"]["document_root"]."/log");
if(!is_link('/var/log/ispconfig/httpd/'.$data["new"]["domain"])) {
exec("ln -s ".$data["new"]["document_root"]."/log /var/log/ispconfig/httpd/".$data["new"]["domain"]);
$app->log("Creating Symlink: ln -s ".$data["new"]["document_root"]."/log /var/log/ispconfig/httpd/".$data["new"]["domain"],LOGLEVEL_DEBUG);
if(!is_dir($data['new']['document_root'].'/log')) exec('mkdir -p '.$data['new']['document_root'].'/log');
if(!is_link('/var/log/ispconfig/httpd/'.$data['new']['domain'])) {
exec('ln -s '.$data['new']['document_root'].'/log /var/log/ispconfig/httpd/'.$data['new']['domain']);
$app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/log /var/log/ispconfig/httpd/'.$data['new']['domain'],LOGLEVEL_DEBUG);
}
*/
// Get the client ID
$client = $app->dbmaster->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["new"]["sys_groupid"]));
$client_id = intval($client["client_id"]);
$client = $app->dbmaster->queryOneRecord('SELECT client_id FROM sys_group WHERE sys_group.groupid = '.intval($data['new']['sys_groupid']));
$client_id = intval($client['client_id']);
unset($client);
// Remove old symlinks, if site is renamed
if($this->action == 'update' && $data["old"]["domain"] != '' && $data["new"]["domain"] != $data["old"]["domain"]) {
$tmp_symlinks_array = explode(':',$web_config["website_symlinks"]);
if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
$tmp_symlinks_array = explode(':',$web_config['website_symlinks']);
if(is_array($tmp_symlinks_array)) {
foreach($tmp_symlinks_array as $tmp_symlink) {
$tmp_symlink = str_replace("[client_id]",$client_id,$tmp_symlink);
$tmp_symlink = str_replace("[website_domain]",$data["old"]["domain"],$tmp_symlink);
$tmp_symlink = str_replace('[client_id]',$client_id,$tmp_symlink);
$tmp_symlink = str_replace('[website_domain]',$data['old']['domain'],$tmp_symlink);
// Remove trailing slash
if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1);
// remove the symlinks, if not exist
if(is_link($tmp_symlink)) {
exec("rm -f ".escapeshellcmd($tmp_symlink));
$app->log("Removed Symlink: rm -f ".$tmp_symlink,LOGLEVEL_DEBUG);
exec('rm -f '.escapeshellcmd($tmp_symlink));
$app->log('Removed symlink: rm -f '.$tmp_symlink,LOGLEVEL_DEBUG);
}
}
}
}
// Create the symlinks for the sites
$tmp_symlinks_array = explode(':',$web_config["website_symlinks"]);
$tmp_symlinks_array = explode(':',$web_config['website_symlinks']);
if(is_array($tmp_symlinks_array)) {
foreach($tmp_symlinks_array as $tmp_symlink) {
$tmp_symlink = str_replace("[client_id]",$client_id,$tmp_symlink);
$tmp_symlink = str_replace("[website_domain]",$data["new"]["domain"],$tmp_symlink);
$tmp_symlink = str_replace('[client_id]',$client_id,$tmp_symlink);
$tmp_symlink = str_replace('[website_domain]',$data['new']['domain'],$tmp_symlink);
// Remove trailing slash
if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1);
//* Remove symlink if target folder has been changed.
if($data["old"]["document_root"] != '' && $data["old"]["document_root"] != $data["new"]["document_root"] && is_link($tmp_symlink)) {
if($data['old']['document_root'] != '' && $data['old']['document_root'] != $data['new']['document_root'] && is_link($tmp_symlink)) {
unlink($tmp_symlink);
}
// create the symlinks, if not exist
if(!is_link($tmp_symlink)) {
exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink));
$app->log("Creating Symlink: ln -s ".$data["new"]["document_root"]."/ ".$tmp_symlink,LOGLEVEL_DEBUG);
exec('ln -s '.escapeshellcmd($data['new']['document_root']).'/ '.escapeshellcmd($tmp_symlink));
$app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/ '.$tmp_symlink,LOGLEVEL_DEBUG);
}
}
}
if($this->action == 'insert' && $data["new"]["type"] == 'vhost') {
if($this->action == 'insert' && $data['new']['type'] == 'vhost') {
// Copy the error pages
if($data["new"]["errordocs"]) {
$error_page_path = escapeshellcmd($data["new"]["document_root"])."/web/error/";
if (file_exists("/usr/local/ispconfig/server/conf-custom/error/".substr(escapeshellcmd($conf["language"]),0,2))) {
exec("cp /usr/local/ispconfig/server/conf-custom/error/".substr(escapeshellcmd($conf["language"]),0,2)."/* ".$error_page_path);
if($data['new']['errordocs']) {
$error_page_path = escapeshellcmd($data['new']['document_root']).'/web/error/';
if (file_exists('/usr/local/ispconfig/server/conf-custom/error/'.substr(escapeshellcmd($conf['language']),0,2))) {
exec('cp /usr/local/ispconfig/server/conf-custom/error/'.substr(escapeshellcmd($conf['language']),0,2).'/* '.$error_page_path);
}
else {
if (file_exists("/usr/local/ispconfig/server/conf-custom/error/400.html")) {
exec("cp /usr/local/ispconfig/server/conf-custom/error/*.html ".$error_page_path);
if (file_exists('/usr/local/ispconfig/server/conf-custom/error/400.html')) {
exec('cp /usr/local/ispconfig/server/conf-custom/error/*.html '.$error_page_path);
}
else {
exec("cp /usr/local/ispconfig/server/conf/error/".substr(escapeshellcmd($conf["language"]),0,2)."/* ".$error_page_path);
exec('cp /usr/local/ispconfig/server/conf/error/'.substr(escapeshellcmd($conf['language']),0,2).'/* '.$error_page_path);
}
}
exec("chmod -R a+r ".$error_page_path);
exec('chmod -R a+r '.$error_page_path);
}
// copy the standard index page
if (file_exists("/usr/local/ispconfig/server/conf-custom/index/standard_index.html_".substr(escapeshellcmd($conf["language"]),0,2))) {
exec("cp /usr/local/ispconfig/server/conf-custom/index/standard_index.html_".substr(escapeshellcmd($conf["language"]),0,2)." ".escapeshellcmd($data["new"]["document_root"])."/web/index.html");
if (file_exists('/usr/local/ispconfig/server/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']),0,2))) {
exec('cp /usr/local/ispconfig/server/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']),0,2).' '.escapeshellcmd($data['new']['document_root']).'/web/index.html');
}
else {
if (file_exists("/usr/local/ispconfig/server/conf-custom/index/standard_index.html")) {
exec("cp /usr/local/ispconfig/server/conf-custom/index/standard_index.html ".escapeshellcmd($data["new"]["document_root"])."/web/index.html");
if (file_exists('/usr/local/ispconfig/server/conf-custom/index/standard_index.html')) {
exec('cp /usr/local/ispconfig/server/conf-custom/index/standard_index.html '.escapeshellcmd($data['new']['document_root']).'/web/index.html');
}
else {
exec("cp /usr/local/ispconfig/server/conf/index/standard_index.html_".substr(escapeshellcmd($conf["language"]),0,2)." ".escapeshellcmd($data["new"]["document_root"])."/web/index.html");
if(is_file('/usr/local/ispconfig/server/conf/index/favicon.ico')) exec("cp /usr/local/ispconfig/server/conf/index/favicon.ico ".escapeshellcmd($data["new"]["document_root"])."/web/");
if(is_file('/usr/local/ispconfig/server/conf/index/robots.txt')) exec("cp /usr/local/ispconfig/server/conf/index/robots.txt ".escapeshellcmd($data["new"]["document_root"])."/web/");
if(is_file('/usr/local/ispconfig/server/conf/index/.htaccess')) exec("cp /usr/local/ispconfig/server/conf/index/.htaccess ".escapeshellcmd($data["new"]["document_root"])."/web/");
exec('cp /usr/local/ispconfig/server/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']),0,2).' '.escapeshellcmd($data['new']['document_root']).'/web/index.html');
if(is_file('/usr/local/ispconfig/server/conf/index/favicon.ico')) exec('cp /usr/local/ispconfig/server/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/web/');
if(is_file('/usr/local/ispconfig/server/conf/index/robots.txt')) exec('cp /usr/local/ispconfig/server/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/web/');
if(is_file('/usr/local/ispconfig/server/conf/index/.htaccess')) exec('cp /usr/local/ispconfig/server/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/web/');
}
}
exec("chmod -R a+r ".escapeshellcmd($data["new"]["document_root"])."/web/");
exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/web/');
//** Copy the error documents on update when the error document checkbox has been activated and was deactivated before
} elseif ($this->action == 'update' && $data["new"]["type"] == 'vhost' && $data["old"]["errordocs"] == 0 && $data["new"]["errordocs"] == 1) {
} elseif ($this->action == 'update' && $data['new']['type'] == 'vhost' && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) {
$error_page_path = escapeshellcmd($data["new"]["document_root"])."/web/error/";
if (file_exists("/usr/local/ispconfig/server/conf-custom/error/".substr(escapeshellcmd($conf["language"]),0,2))) {
exec("cp /usr/local/ispconfig/server/conf-custom/error/".substr(escapeshellcmd($conf["language"]),0,2)."/* ".$error_page_path);
$error_page_path = escapeshellcmd($data['new']['document_root']).'/web/error/';
if (file_exists('/usr/local/ispconfig/server/conf-custom/error/'.substr(escapeshellcmd($conf['language']),0,2))) {
exec('cp /usr/local/ispconfig/server/conf-custom/error/'.substr(escapeshellcmd($conf['language']),0,2).'/* '.$error_page_path);
}
else {
if (file_exists("/usr/local/ispconfig/server/conf-custom/error/400.html")) {
exec("cp /usr/local/ispconfig/server/conf-custom/error/*.html ".$error_page_path);
if (file_exists('/usr/local/ispconfig/server/conf-custom/error/400.html')) {
exec('cp /usr/local/ispconfig/server/conf-custom/error/*.html '.$error_page_path);
}
else {
exec("cp /usr/local/ispconfig/server/conf/error/".substr(escapeshellcmd($conf["language"]),0,2)."/* ".$error_page_path);
exec('cp /usr/local/ispconfig/server/conf/error/'.substr(escapeshellcmd($conf['language']),0,2).'/* '.$error_page_path);
}
}
exec("chmod -R a+r ".$error_page_path);
exec('chmod -R a+r '.$error_page_path);
} // end copy error docs
// Create group and user, if not exist
$app->uses("system");
$app->uses('system');
$groupname = escapeshellcmd($data["new"]["system_group"]);
if($data["new"]["system_group"] != '' && !$app->system->is_group($data["new"]["system_group"])) {
exec("groupadd $groupname");
if($apache_chrooted) $this->_exec("chroot ".escapeshellcmd($web_config['website_basedir'])." groupadd $groupname");
$app->log("Adding the group: $groupname",LOGLEVEL_DEBUG);
$groupname = escapeshellcmd($data['new']['system_group']);
if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) {
exec('groupadd '.$groupname);
if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname);
$app->log('Adding the group: '.$groupname,LOGLEVEL_DEBUG);
}
$username = escapeshellcmd($data["new"]["system_user"]);
if($data["new"]["system_user"] != '' && !$app->system->is_user($data["new"]["system_user"])) {
exec("useradd -d ".escapeshellcmd($data["new"]["document_root"])." -g $groupname -G sshusers $username -s /bin/false");
if($apache_chrooted) $this->_exec("chroot ".escapeshellcmd($web_config['website_basedir'])." "."useradd -d ".escapeshellcmd($data["new"]["document_root"])." -g $groupname -G sshusers $username -s /bin/false");
$app->log("Adding the user: $username",LOGLEVEL_DEBUG);
$username = escapeshellcmd($data['new']['system_user']);
if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) {
exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false");
if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false");
$app->log('Adding the user: '.$username,LOGLEVEL_DEBUG);
}
// Set the quota for the user
if($username != '' && $app->system->is_user($username)) {
if($data["new"]["hd_quota"] > 0) {
$blocks_soft = $data["new"]["hd_quota"] * 1024;
if($data['new']['hd_quota'] > 0) {
$blocks_soft = $data['new']['hd_quota'] * 1024;
$blocks_hard = $blocks_soft + 1024;
} else {
$blocks_soft = $blocks_hard = 0;
}
exec("setquota -u $username $blocks_soft $blocks_hard 0 0 -a &> /dev/null");
exec("setquota -T -u $username 604800 604800 -a &> /dev/null");
exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null');
}
if($this->action == 'insert') {
// Chown and chmod the directories below the document root
$this->_exec("chown -R $username:$groupname ".escapeshellcmd($data["new"]["document_root"]));
$this->_exec('chown -R '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']));
// The document root itself has to be owned by root in normal level and by the web owner in security level 20
if($web_config['security_level'] == 20) {
$this->_exec("chown $username:$groupname ".escapeshellcmd($data["new"]["document_root"]));
$this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']));
} else {
$this->_exec("chown root:root ".escapeshellcmd($data["new"]["document_root"]));
$this->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']));
}
}
......@@ -485,34 +485,34 @@ class apache2_plugin {
//* If the security level is set to high
if($web_config['security_level'] == 20) {
$this->_exec("chmod 751 ".escapeshellcmd($data["new"]["document_root"]."/"));
$this->_exec("chmod 751 ".escapeshellcmd($data["new"]["document_root"])."/*");