HEX
Server: Apache/2.4.67 (Debian)
System: Linux hosting103 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User: muzikaecom (1013)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //usr/local/share/hostingplatform/scripts/__generateApacheVHOST
#!/usr/bin/env php
<?php
if(!isset($argv[1])) {
 print "Please specify hostingpackage name.\n";
 exit;
}
$packagename = $argv[1];
if($packagename && strlen($packagename)) {
 $db = new SQLite3("/var/local/hostingplatform/db.sqlite");
 $db->query("PRAGMA foreign_keys = ON");

 $packagename = $db->escapeString($packagename);

 $package_query = "SELECT * FROM hosting WHERE packagename = '$packagename'";
 $package_result = $db->query($package_query);
 $package = $package_result->fetchArray(SQLITE3_ASSOC);

 $server_settings_query = "SELECT setting, value FROM server_settings WHERE setting IN ('hostname','phpmyadmin_redirect','apache_http_port','apache_https_port') ORDER BY setting";
 $server_settings_result = $db->query($server_settings_query);
 $server_settings = array();
 while($server_settings_data = $server_settings_result->fetchArray(SQLITE3_ASSOC)) {
  $server_settings[$server_settings_data["setting"]] = $server_settings_data["value"];
 }

 // Defining default Apache ports for HTTP / HTTPS
 if(empty($server_settings["apache_http_port"])) {
  $server_settings["apache_http_port"] = 80;
 }
 if(empty($server_settings["apache_https_port"])) {
  $server_settings["apache_https_port"] = 443;
 }

 $domains_query = "SELECT hosting_domains.domainname as domainname,
                          hosting_domains.domainname as alias,
                          hosting_domains.operationmode as operationmode,
                          hosting_domains.platform as platform,
                          coalesce(hosting_domains.ipv4,'*') as ipv4,
                          coalesce(hosting_domains.ipv6,'*') as ipv6
                   FROM   hosting_domains
                   WHERE  hosting_domains.packagename = '$packagename'

                   UNION

                   SELECT hosting_domains.domainname as domainname,
                          domain_aliases.alias,
                          domain_aliases.operationmode as operationmode,
                          hosting_domains.platform as platfor,
                          coalesce(hosting_domains.ipv4,'*') as ipv4,
                          coalesce(hosting_domains.ipv6,'*') as ipv6
                   FROM   domain_aliases
                   JOIN   hosting_domains ON domain_aliases.domain = hosting_domains.domainname
                   WHERE  hosting_domains.packagename = '$packagename'

                   ORDER BY
                          hosting_domains.domainname";

 $result = $db->query($domains_query);

 $num_rows = 0;
 while($data = $result->fetchArray(SQLITE3_ASSOC)) {
  $num_rows++;
 }

 if($num_rows) {
  $vhost = "# Auto generated VHOST configuration for Hostingpackage $packagename\n";

  while($data = $result->fetchArray(SQLITE3_ASSOC)) {

   $vhost .= "\n";
   for($i = 0; $i < strlen($data["alias"]) + 4; $i++) {
    $vhost .= "#";
   }
   $vhost .= "\n# " . $data["alias"] . " #\n";
   for($i = 0; $i < strlen($data["alias"]) + 4; $i++) {
    $vhost .= "#";
   }
   $vhost .= "\n\n";

   if($data["operationmode"] == "http" || $data["operationmode"] == "mixed") {
    if($data["ipv4"] != "*" && $data["ipv6"] != "*") {
     $vhost .= " <VirtualHost";
     if($data["ipv4"] != "*") {
      $vhost .=  " " . $data["ipv4"] . ":" . $server_settings["apache_http_port"];
     }
     if($data["ipv6"] != "*") {
      $vhost .=  " [" . $data["ipv6"] . "]:" . $server_settings["apache_http_port"];
     }
     $vhost .= ">\n";
    }
    else {
     $vhost .= "<VirtualHost *:" . $server_settings["apache_http_port"] . ">\n";
    }
    $vhost .= "  ServerAdmin  support@resellerdns.nl\n\n";
    $vhost .= "  ServerName   " . $data["alias"] . "\n";
    $vhost .= "  ServerAlias  www." . $data["alias"] . "\n";
    $vhost .= "\n";
    $vhost .= "  DocumentRoot /home/" . $packagename . "/" . $data["domainname"] . "/\n";
    if(isset($server_settings["phpmyadmin_redirect"]) && $server_settings["phpmyadmin_redirect"] == 1 && isset($server_settings["hostname"])) {
     $vhost .= "  Redirect permanent /phpmyadmin https://" . $server_settings["hostname"] . "/phpmyadmin\n";
    }
    $vhost .= "  <Directory />\n";
    $vhost .= "    Options FollowSymLinks\n";
    $vhost .= "    AllowOverride None\n";
    $vhost .= "  </Directory>\n\n";
    $vhost .= "  <Directory /home/" . $packagename . "/" . $data["domainname"] . ">\n";
    $vhost .= "    Options MultiViews IncludesNoExec ExecCGI FollowSymlinks Includes\n";
    $vhost .= "    AllowOverride FileInfo AuthConfig Limit Indexes Options=All,MultiViews\n";
    $vhost .= "    Require all granted\n";
    $vhost .= "  </Directory>\n\n";
    $vhost .= "  ErrorLog     /var/log/apache2/hostingpackages/" . $packagename . "/" . $data["alias"] . "-error.log\n";
    $vhost .= "  LogLevel     warn\n";
    $vhost .= "  CustomLog    /var/log/apache2/hostingpackages/" . $packagename . "/" . $data["alias"] . "-access.log combined\n\n";
    $vhost .= "  AccessFileName .htaccess\n\n";

    $vhost .= "  Protocols h2 http/1.1\n\n";
    $vhost .= "  AddDefaultCharset utf-8\n";

    if(!empty($data["platform"])) {
     if($data["platform"] == "python") {
      // Python WSGI configuration
      $vhost .= "  WSGIDaemonProcess http-" . $data["alias"] . " display-name=" . $data["alias"] . " processes=2 threads=15 user=" . $packagename . " group=" . $packagename . "\n";
      $vhost .= "  AddHandler wsgi-script .wsgi\n";
      $vhost .= "  WSGIProcessGroup http-" . $data["alias"] . "\n";
     }
     else {
      $vhost .= "  <IfModule proxy_fcgi_module>\n";
      $vhost .= "   <IfModule setenvif_module>\n";
      $vhost .= "    SetEnvIfNoCase ^Authorization\$ \"(.+)\" HTTP_AUTHORIZATION=\$1\n";
      $vhost .= "   </IfModule>\n\n";
      $vhost .= "   <FilesMatch \".+\\.ph(?:ar|p|tml)\$\">\n";
##    $vhost .= "    ProxyFCGISetEnvIf \"true\" SCRIPT_FILENAME \"/" . $data["domainname"] . "/%{reqenv:SCRIPT_NAME}\"\n"; ##  CHROOT Future ##
      $vhost .= "    SetHandler \"proxy:unix:/run/php/php" . $data["platform"] . "-fpm-" . $packagename . ".sock|fcgi://localhost\"\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "   <FilesMatch \".+\\.phps\$\">\n";
      $vhost .= "    Require all denied\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "   <FilesMatch \"^\\.ph(?:ar|p|ps|tml)\$\">\n";
      $vhost .= "    Require all denied\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "  </IfModule>\n\n";
     }

      $vhost .= "    <IfModule mod_rewrite.c>\n";
      $vhost .= "      RewriteEngine On\n";
      $vhost .= "      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f\n";
      $vhost .= "      RewriteCond %{REQUEST_URI} ^/.well-known/\n";
      $vhost .= "      RewriteRule ^(.*)\$ https://" . $server_settings["hostname"] . "\$1 [P]\n";
      $vhost .= "      SSLProxyEngine On\n";
      $vhost .= "    </IfModule>\n";

    }

    $vhost .= " </VirtualHost>\n";
   }
   if($data["operationmode"] == "redirect") {
    if($data["ipv4"] != "*" && $data["ipv6"] != "*") {
     $vhost .= "<VirtualHost";
     if($data["ipv4"] != "*") {
      $vhost .=  " " . $data["ipv4"] . ":" . $server_settings["apache_http_port"];
     }
     if($data["ipv6"] != "*") {
      $vhost .=  " [" . $data["ipv6"] . "]:" . $server_settings["apache_http_port"];
     }
     $vhost .= ">\n";
    }
    else {
     $vhost .= "<VirtualHost *:" . $server_settings["apache_http_port"] . ">\n";
    }
    $vhost .= "  ServerAdmin  support@resellerdns.nl\n\n";
    $vhost .= "  ServerName   " . $data["alias"] . "\n";
    $vhost .= "\n";
    $vhost .= "  Redirect permanent / https://" . $data["alias"] . "/\n";
    $vhost .= "</VirtualHost>\n\n";

    if($data["ipv4"] != "*" && $data["ipv6"] != "*") {
     $vhost .= "<VirtualHost";
     if($data["ipv4"] != "*") {
      $vhost .=  " " . $data["ipv4"] . ":" . $server_settings["apache_http_port"];
     }
     if($data["ipv6"] != "*") {
      $vhost .=  " [" . $data["ipv6"] . "]:" . $server_settings["apache_http_port"];
     }
     $vhost .= ">\n";
    }
    else {
     $vhost .= "<VirtualHost *:" . $server_settings["apache_http_port"] . ">\n";
    }
    $vhost .= "  ServerAdmin  support@resellerdns.nl\n\n";
    $vhost .= "  ServerName   www." . $data["alias"] . "\n";
    $vhost .= "\n";
    $vhost .= "  Redirect permanent / https://www." . $data["alias"] . "/\n";
    $vhost .= "</VirtualHost>\n\n";
   }

   $domainpreview_check = substr($data["alias"], stripos($data["alias"], ".") + 1);

   if(($data["ipv4"] != "*" || $data["ipv6"] != "*") && 
      ($data["operationmode"] == "https" || $data["operationmode"] == "mixed" || $data["operationmode"] == "redirect") &&
      ((is_readable("/etc/ssl/certs/" . $packagename . "-" . $data["alias"] . ".pem") && is_readable("/etc/ssl/private/" . $packagename . "-" . $data["alias"] . ".key")) ||
       (is_readable("/etc/ssl/certs/" . $domainpreview_check . ".pem") && is_readable("/etc/ssl/private/" . $domainpreview_check . ".key")))) {

    $vhost .= "<IfModule mod_ssl.c>\n";
    $vhost .= " <VirtualHost";
    if($data["ipv4"] != "*") {
     $vhost .=  " " . $data["ipv4"] . ":" . $server_settings["apache_https_port"];
    }
    if($data["ipv6"] != "*") {
     $vhost .=  " [" . $data["ipv6"] . "]:" . $server_settings["apache_https_port"];
    }
    $vhost .= ">\n";
    $vhost .= "   ServerAdmin  support@resellerdns.nl\n\n";
    $vhost .= "   ServerName   " . $data["alias"] . "\n";
    $vhost .= "   ServerAlias  www." . $data["alias"] . "\n";
    $vhost .= "\n";
    $vhost .= "   DocumentRoot /home/" . $packagename . "/" . $data["domainname"] . "/\n";
    if(isset($server_settings["phpmyadmin_redirect"]) && $server_settings["phpmyadmin_redirect"] == 1 && isset($server_settings["hostname"])) {
     $vhost .= "   Redirect permanent /phpmyadmin https://" . $server_settings["hostname"] . "/phpmyadmin\n";
    }
    $vhost .= "   <Directory />\n";
    $vhost .= "     Options FollowSymLinks\n";
    $vhost .= "     AllowOverride None\n";
    $vhost .= "   </Directory>\n\n";
    $vhost .= "   <Directory /home/" . $packagename . "/" . $data["domainname"] . ">\n";
    $vhost .= "     Options MultiViews IncludesNoExec ExecCGI FollowSymlinks Includes\n";
    $vhost .= "     AllowOverride FileInfo AuthConfig Limit Indexes Options=All,MultiViews\n";
    $vhost .= "     Require all granted\n";
    $vhost .= "   </Directory>\n\n";
    $vhost .= "   ErrorLog     /var/log/apache2/hostingpackages/" . $packagename . "/" . $data["alias"] . "-error.log\n";
    $vhost .= "   LogLevel     warn\n";
    $vhost .= "   CustomLog    /var/log/apache2/hostingpackages/" . $packagename . "/" . $data["alias"] . "-access.log combined\n\n";
    $vhost .= "   AccessFileName .htaccess\n\n";

    $vhost .= "   Protocols h2 http/1.1\n\n";
    $vhost .= "   AddDefaultCharset utf-8\n";

    $vhost .= "   SSLEngine on\n";
    if(is_readable("/etc/ssl/certs/" . $packagename . "-" . $data["alias"] . ".pem") && is_readable("/etc/ssl/private/" . $packagename . "-" . $data["alias"] . ".key")) {
     $vhost .= "   SSLCertificateFile    /etc/ssl/certs/" . $packagename . "-" . $data["alias"] . ".pem\n";
     $vhost .= "   SSLCertificateKeyFile /etc/ssl/private/" . $packagename . "-" . $data["alias"] . ".key\n\n";
    }
    elseif(is_readable("/etc/ssl/certs/" . $domainpreview_check . ".pem") && is_readable("/etc/ssl/private/" . $domainpreview_check . ".key")) {
     $vhost .= "   SSLCertificateFile    /etc/ssl/certs/" . $domainpreview_check . ".pem\n";
     $vhost .= "   SSLCertificateKeyFile /etc/ssl/private/" . $domainpreview_check . ".key\n\n";
    }

    $vhost .= "   Header always set Strict-Transport-Security \"max-age=31536000; preload\"\n";

    if(!empty($data["platform"])) {
     if($data["platform"] == "python") {
      // Python WSGI configuration
      $vhost .= "  WSGIDaemonProcess https-" . $data["alias"] . " display-name=" . $data["alias"] . " processes=2 threads=15 user=" . $packagename . " group=" . $packagename . "\n";
      $vhost .= "  AddHandler wsgi-script .wsgi\n";
      $vhost .= "  WSGIProcessGroup https-" . $data["alias"] . "\n";
     }
     else {
      $vhost .= "  <IfModule proxy_fcgi_module>\n";
      $vhost .= "   <IfModule setenvif_module>\n";
      $vhost .= "    SetEnvIfNoCase ^Authorization\$ \"(.+)\" HTTP_AUTHORIZATION=\$1\n";
      $vhost .= "   </IfModule>\n\n";
      $vhost .= "   <FilesMatch \".+\\.ph(?:ar|p|tml)\$\">\n";
##    $vhost .= "    ProxyFCGISetEnvIf \"true\" SCRIPT_FILENAME \"/" . $data["domainname"] . "/%{reqenv:SCRIPT_NAME}\"\n"; ##  CHROOT Future ##
      $vhost .= "    SetHandler \"proxy:unix:/run/php/php" . $data["platform"] . "-fpm-" . $packagename . ".sock|fcgi://localhost\"\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "   <FilesMatch \".+\\.phps\$\">\n";
      $vhost .= "    Require all denied\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "   <FilesMatch \"^\\.ph(?:ar|p|ps|tml)\$\">\n";
      $vhost .= "    Require all denied\n";
      $vhost .= "   </FilesMatch>\n";
      $vhost .= "  </IfModule>\n\n";
     }
    }

    $vhost .= "    <IfModule mod_rewrite.c>\n";
    $vhost .= "      RewriteEngine On\n";
    $vhost .= "      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f\n";
    $vhost .= "      RewriteCond %{REQUEST_URI} ^/.well-known/\n";
    $vhost .= "      RewriteRule ^(.*)\$ https://" . $server_settings["hostname"] . "\$1 [P]\n";
    $vhost .= "      SSLProxyEngine On\n";
    $vhost .= "    </IfModule>\n";


    $vhost .= " </VirtualHost>\n";
    $vhost .= "</IfModule>\n";
   }
  }
  file_put_contents("/etc/apache2/sites-available/" . $packagename . ".conf", $vhost);
  shell_exec("/usr/sbin/a2ensite " . escapeshellcmd($packagename));
 }
 else {
  shell_exec("/usr/sbin/a2dissite " . escapeshellcmd($packagename));
 }

 shell_exec(dirname(__FILE__) . "/__reloadApache");
}
?>