Commit 4fa7eb02 authored by tbrehm's avatar tbrehm
Browse files

Fixed a bug when a alias domain or subdomain of a website gets deleted.

parent 036579b9
......@@ -574,7 +574,7 @@ class apache2_plugin {
$cgi_tpl->newTemplate("php-cgi-starter.master");
// This works, because php "rewrites" a symlink to the physical path
$cgi_tpl->setVar('open_basedir', $data["new"]["document_root"]);
$cgi_tpl->setVar('open_basedir', $data["new"]["document_root"]);
// This will NOT work!
//$cgi_tpl->setVar('open_basedir', "/var/www/" . $data["new"]["domain"]);
$cgi_tpl->setVar('php_cgi_bin',$cgi_config["cgi_bin"]);
......@@ -634,73 +634,87 @@ class apache2_plugin {
$app->uses("getconf");
$web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
// Deleting the vhost file, symlink and the data directory
$vhost_symlink = escapeshellcmd($web_config["vhost_conf_enabled_dir"].'/'.$data["old"]["domain"].'.vhost');
unlink($vhost_symlink);
$app->log("Removing symlink: $vhost_symlink => $vhost_file",LOGLEVEL_DEBUG);
$vhost_file = escapeshellcmd($web_config["vhost_conf_dir"].'/'.$data["old"]["domain"].'.vhost');
unlink($vhost_file);
$app->log("Removing vhost file: $vhost_file",LOGLEVEL_DEBUG);
if($data["old"]["type"] != "vhost" && $data["old"]["parent_domain_id"] > 0) {
//* This is a alias domain or subdomain, so we have to update the website instead
$parent_domain_id = intval($data["old"]["parent_domain_id"]);
$tmp = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$parent_domain_id." AND active = 'y'");
$data["new"] = $tmp;
$data["old"] = $tmp;
$this->action = 'update';
// just run the update function
$this->update($event_name,$data);
} else {
//* This is a website
// Deleting the vhost file, symlink and the data directory
$vhost_symlink = escapeshellcmd($web_config["vhost_conf_enabled_dir"].'/'.$data["old"]["domain"].'.vhost');
unlink($vhost_symlink);
$app->log("Removing symlink: $vhost_symlink => $vhost_file",LOGLEVEL_DEBUG);
$vhost_file = escapeshellcmd($web_config["vhost_conf_dir"].'/'.$data["old"]["domain"].'.vhost');
unlink($vhost_file);
$app->log("Removing vhost file: $vhost_file",LOGLEVEL_DEBUG);
$docroot = escapeshellcmd($data["old"]["document_root"]);
if($docroot != '' && !stristr($docroot,'..')) exec("rm -rf $docroot");
$docroot = escapeshellcmd($data["old"]["document_root"]);
if($docroot != '' && !stristr($docroot,'..')) exec("rm -rf $docroot");
//remove the php fastgi starter script if available
if ($data["old"]["php"] == "fast-cgi")
{
$fastcgi_starter_path = str_replace("[system_user]",$data["old"]["system_user"],$web_config["fastcgi_starter_path"]);
if (is_dir($fastcgi_starter_path))
//remove the php fastgi starter script if available
if ($data["old"]["php"] == "fast-cgi")
{
$fastcgi_starter_path = str_replace("[system_user]",$data["old"]["system_user"],$web_config["fastcgi_starter_path"]);
if (is_dir($fastcgi_starter_path))
{
exec("rm -rf $fastcgi_starter_path");
}
}
}
//remove the php cgi starter script if available
if ($data["old"]["php"] == "cgi")
{
// TODO: fetch the date from the server-settings
$web_config["cgi_starter_path"] = "/var/www/php-cgi-scripts/[system_user]/";
$cgi_starter_path = str_replace("[system_user]",$data["old"]["system_user"],$web_config["cgi_starter_path"]);
if (is_dir($cgi_starter_path))
//remove the php cgi starter script if available
if ($data["old"]["php"] == "cgi")
{
// TODO: fetch the date from the server-settings
$web_config["cgi_starter_path"] = "/var/www/php-cgi-scripts/[system_user]/";
$cgi_starter_path = str_replace("[system_user]",$data["old"]["system_user"],$web_config["cgi_starter_path"]);
if (is_dir($cgi_starter_path))
{
exec("rm -rf $cgi_starter_path");
}
}
}
$app->log("Removing website: $docroot",LOGLEVEL_DEBUG);
$app->log("Removing website: $docroot",LOGLEVEL_DEBUG);
// Delete the symlinks for the sites
$client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["old"]["sys_groupid"]));
$client_id = intval($client["client_id"]);
unset($client);
$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);
// 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)) {
unlink($tmp_symlink);
$app->log("Removing symlink: ".$tmp_symlink,LOGLEVEL_DEBUG);
// Delete the symlinks for the sites
$client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["old"]["sys_groupid"]));
$client_id = intval($client["client_id"]);
unset($client);
$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);
// 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)) {
unlink($tmp_symlink);
$app->log("Removing symlink: ".$tmp_symlink,LOGLEVEL_DEBUG);
}
}
}
}
// end removing symlinks
// end removing symlinks
// Delete the log file directory
$vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data["old"]["domain"]);
if($data["old"]["domain"] != '' && !stristr($vhost_logfile_dir,'..')) exec("rm -rf $vhost_logfile_dir");
$app->log("Removing website logfile directory: $vhost_logfile_dir",LOGLEVEL_DEBUG);
// Delete the log file directory
$vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data["old"]["domain"]);
if($data["old"]["domain"] != '' && !stristr($vhost_logfile_dir,'..')) exec("rm -rf $vhost_logfile_dir");
$app->log("Removing website logfile directory: $vhost_logfile_dir",LOGLEVEL_DEBUG);
//delete the web user
$command = 'userdel';
$command .= ' '.$data["old"]["system_user"];
exec($command);
//delete the web user
$command = 'userdel';
$command .= ' '.$data["old"]["system_user"];
exec($command);
}
}
//* This function is called when a IP on the server is inserted, updated or deleted
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment