| | |
| | | // private variables |
| | | var $action = ''; |
| | | |
| | | //* This function is called during ispconfig installation to determine |
| | | // if a symlink shall be created for this plugin. |
| | | function onInstall() { |
| | | global $conf; |
| | | |
| | | if($conf['services']['web'] == true) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /* |
| | | This function is called when the plugin is loaded |
| | |
| | | */ |
| | | |
| | | // Get the client ID |
| | | $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["new"]["sys_groupid"])); |
| | | $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); |
| | | |
| | |
| | | $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)) { |
| | | 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)); |
| | |
| | | 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/fileNotFound.html")){ |
| | | 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("chmod -R +r ".$error_page_path); |
| | | exec("chmod -R a+r ".$error_page_path); |
| | | } |
| | | |
| | | // copy the standard index page |
| | |
| | | } |
| | | 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"); |
| | | exec("cp /usr/local/ispconfig/server/conf/index/favicon.ico ".escapeshellcmd($data["new"]["document_root"])."/web/"); |
| | | exec("cp /usr/local/ispconfig/server/conf/index/robots.txt ".escapeshellcmd($data["new"]["document_root"])."/web/"); |
| | | exec("cp /usr/local/ispconfig/server/conf/index/.htaccess ".escapeshellcmd($data["new"]["document_root"])."/web/"); |
| | | } |
| | | } |
| | | exec("chmod +r ".escapeshellcmd($data["new"]["document_root"])."/web/index.html"); |
| | | exec("chmod -R a+r ".escapeshellcmd($data["new"]["document_root"])."/web/"); |
| | | } |
| | | |
| | | // Create group and user, if not exist |
| | |
| | | $rewrite_rules[] = array( 'rewrite_domain' => $data["new"]["domain"], |
| | | 'rewrite_type' => $data["new"]["redirect_type"], |
| | | 'rewrite_target' => $data["new"]["redirect_path"]); |
| | | |
| | | switch($data["new"]["subdomain"]) { |
| | | case 'www': |
| | | $rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$data["new"]["domain"], |
| | | 'rewrite_type' => $data["new"]["redirect_type"], |
| | | 'rewrite_target' => $data["new"]["redirect_path"]); |
| | | break; |
| | | case '*': |
| | | // TODO |
| | | //$rewrite_rules[] = array( 'rewrite_domain' => '*'.$alias["domain"], |
| | | // 'rewrite_type' => $alias["redirect_type"], |
| | | // 'rewrite_target' => $alias["redirect_path"]); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // get alias domains (co-domains and subdomains) |
| | | $aliases = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE parent_domain_id = ".$data["new"]["domain_id"]." AND active = 'y'"); |
| | | if($data["new"]["is_subdomainwww"]){ |
| | | $server_alias .= 'www.'.$data["new"]["domain"].' '; |
| | | } else { |
| | | $server_alias = ''; |
| | | } |
| | | switch($data["new"]["subdomain"]) { |
| | | case 'www': |
| | | $server_alias .= 'www.'.$data["new"]["domain"].' '; |
| | | break; |
| | | case '*': |
| | | $server_alias .= '*.'.$data["new"]["domain"].' '; |
| | | break; |
| | | } |
| | | if(is_array($aliases)) { |
| | | foreach($aliases as $alias) { |
| | | $server_alias .= $alias["domain"].' '; |
| | | switch($alias["subdomain"]) { |
| | | case 'www': |
| | | $server_alias .= 'www.'.$alias["domain"].' '.$alias["domain"].' '; |
| | | break; |
| | | case '*': |
| | | $server_alias .= '*.'.$alias["domain"].' '.$alias["domain"].' '; |
| | | break; |
| | | default: |
| | | $server_alias .= $alias["domain"].' '; |
| | | break; |
| | | } |
| | | $app->log("Add server alias: $alias[domain]",LOGLEVEL_DEBUG); |
| | | // Rewriting |
| | | if($alias["redirect_type"] != '') { |
| | | $rewrite_rules[] = array( 'rewrite_domain' => $alias["domain"], |
| | | 'rewrite_type' => $alias["redirect_type"], |
| | | 'rewrite_target' => $alias["redirect_path"]); |
| | | switch($alias["subdomain"]) { |
| | | case 'www': |
| | | $rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$alias["domain"], |
| | | 'rewrite_type' => $alias["redirect_type"], |
| | | 'rewrite_target' => $alias["redirect_path"]); |
| | | break; |
| | | case '*': |
| | | // TODO |
| | | //$rewrite_rules[] = array( 'rewrite_domain' => '*'.$alias["domain"], |
| | | // 'rewrite_type' => $alias["redirect_type"], |
| | | // 'rewrite_target' => $alias["redirect_path"]); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * install cgi starter script and add script alias to config. |
| | | * This is needed to allow cgi with suexec (to do so, we need a bin in the document-path!) |
| | | * first we create the script directory if not already created, then copy over the starter script. |
| | | * TODO: we have to fetch the data from the server-settings. |
| | | */ |
| | | |
| | | if ($data["new"]["php"] == "cgi") |
| | | { |
| | | //$cgi_config = $app->getconf->get_server_config($conf["server_id"], 'cgi'); |
| | | |
| | | $cgi_config["cgi_starter_path"] = "/var/www/php-cgi-scripts/[system_user]/"; |
| | | $cgi_config["cgi_starter_script"] = "php-cgi-starter"; |
| | | $cgi_config["cgi_bin"] = "/usr/bin/php-cgi"; |
| | | |
| | | $cgi_starter_path = str_replace("[system_user]",$data["new"]["system_user"],$cgi_config["cgi_starter_path"]); |
| | | $cgi_starter_path = str_replace("[client_id]",$client_id,$cgi_starter_path); |
| | | |
| | | if (!is_dir($cgi_starter_path)) |
| | | { |
| | | exec("mkdir -p ".escapeshellcmd($cgi_starter_path)); |
| | | exec("chown ".$data["new"]["system_user"].":".$data["new"]["system_group"]." ".escapeshellcmd($cgi_starter_path)); |
| | | |
| | | $app->log("Creating cgi starter script directory: $cgi_starter_path",LOGLEVEL_DEBUG); |
| | | } |
| | | |
| | | $cgi_tpl = new tpl(); |
| | | $cgi_tpl->newTemplate("php-cgi-starter.master"); |
| | | |
| | | $cgi_tpl->setVar('open_basedir',$data["new"]["document_root"]); |
| | | $cgi_tpl->setVar('php_cgi_bin',$cgi_config["cgi_bin"]); |
| | | |
| | | $cgi_starter_script = escapeshellcmd($cgi_starter_path.$cgi_config["cgi_starter_script"]); |
| | | file_put_contents($cgi_starter_script,$cgi_tpl->grab()); |
| | | unset($cgi_tpl); |
| | | |
| | | $app->log("Creating cgi starter script: $cgi_starter_script",LOGLEVEL_DEBUG); |
| | | |
| | | |
| | | exec("chmod 755 $cgi_starter_script"); |
| | | exec("chown ".$data["new"]["system_user"].":".$data["new"]["system_group"]." $cgi_starter_script"); |
| | | |
| | | $tpl->setVar('cgi_starter_path',$cgi_starter_path); |
| | | $tpl->setVar('cgi_starter_script',$cgi_config["cgi_starter_script"]); |
| | | |
| | | } |
| | | |
| | | $vhost_file = escapeshellcmd($web_config["vhost_conf_dir"].'/'.$data["new"]["domain"].'.vhost'); |
| | | file_put_contents($vhost_file,$tpl->grab()); |
| | | $app->log("Writing the vhost file: $vhost_file",LOGLEVEL_DEBUG); |
| | |
| | | } |
| | | } |
| | | |
| | | //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); |
| | | |
| | | // Delete the symlinks for the sites |