" . fs_filehandler::NewLine(); $line .= "ServerName " . $vhostName . fs_filehandler::NewLine(); $line .= "ServerAlias " . $vhostName . " www." . $vhostName . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $userEmail . fs_filehandler::NewLine(); $line .= "RewriteEngine on" . fs_filehandler::NewLine(); $line .= "ReWriteCond %{SERVER_PORT} !^" . $customPort . "$" . fs_filehandler::NewLine(); if ( $customPort === "443" ) { $line .= "RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] " . fs_filehandler::NewLine(); } else { $line .= "RewriteRule ^/(.*) http://%{HTTP_HOST}:" . $customPort . "/$1 [NC,R,L] " . fs_filehandler::NewLine(); } $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $vhostName . fs_filehandler::NewLine() . fs_filehandler::NewLine(); return $line; } function WriteVhostConfigFile() { global $zdbh; //Get email for server admin of zpanel $getserveremail = $zdbh->query( "SELECT ac_email_vc FROM x_accounts where ac_id_pk=1" )->fetch(); if ( $getserveremail[ 'ac_email_vc' ] != "" ) { $serveremail = $getserveremail[ 'ac_email_vc' ]; } else { $serveremail = "postmaster@" . ctrl_options::GetSystemOption( 'zpanel_domain' ); } $customPorts = array(); $portQuery = $zdbh->prepare( "SELECT vh_custom_port_in, vh_deleted_ts FROM zpanel_core.x_vhosts WHERE vh_custom_port_in IS NOT NULL AND vh_deleted_ts IS NULL" ); $portQuery->execute(); while ( $rowport = $portQuery->fetch() ) { $customPorts[ ] = $rowport[ 'vh_custom_port_in' ]; } $customPortList = array_unique($customPorts); /* * ###########################################################################​################################### * # * # Default Virtual Host Container * # * ###########################################################################​################################### */ $line = "################################################################" . fs_filehandler::NewLine(); $line .= "# Apache VHOST configuration file" . fs_filehandler::NewLine(); $line .= "# Automatically generated by ZPanel " . sys_versions::ShowZpanelVersion() . fs_filehandler::NewLine(); $line .= "# Generated on: " . date( ctrl_options::GetSystemOption( 'zpanel_df' ), time() ) . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); /** * NameVirtualHost is still needed for Apache 2.2 * @todo conditionally run this for apache version > 2.2 * warning apache verion not available in php functions when running over cli */ $line .= "NameVirtualHost *:" . ctrl_options::GetSystemOption( 'apache_port' ) . "" . fs_filehandler::NewLine(); foreach ( $customPortList as $port ) { $line .= "NameVirtualHost *:" . $port . "" . fs_filehandler::NewLine(); } $line .= "" . fs_filehandler::NewLine(); $line .= "# Configuration for ZPanel control panel." . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $serveremail . fs_filehandler::NewLine(); $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'zpanel_root' ) . "\"" . fs_filehandler::NewLine(); $line .= "ServerName " . ctrl_options::GetSystemOption( 'zpanel_domain' ) . "" . fs_filehandler::NewLine(); $line .= "AddType application/x-httpd-php .php" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks -Indexes" . fs_filehandler::NewLine(); $line .= " AllowOverride All" . fs_filehandler::NewLine(); $line .= " Order allow,deny" . fs_filehandler::NewLine(); $line .= " Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "# Custom settings are loaded below this line (if any exist)" . fs_filehandler::NewLine(); // Global custom zpanel entry $line .= ctrl_options::GetSystemOption( 'global_zpcustom' ) . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= "# ZPanel generated VHOST configurations below....." . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); /* * ############################################################################################################## * # * # All Virtual Host Containers * # * ############################################################################################################## */ // Zpanel virtual host container configuration $sql = $zdbh->prepare( "SELECT * FROM x_vhosts WHERE vh_deleted_ts IS NULL" ); $sql->execute(); while ( $rowvhost = $sql->fetch() ) { // Grab some variables we will use for later... $vhostuser = ctrl_users::GetUserDetail( $rowvhost[ 'vh_acc_fk' ] ); $bandwidth = ctrl_users::GetQuotaUsages( 'bandwidth', $vhostuser[ 'userid' ] ); $diskspace = ctrl_users::GetQuotaUsages( 'diskspace', $vhostuser[ 'userid' ] ); // Set the vhosts to "LIVE" $vsql = $zdbh->prepare( "UPDATE x_vhosts SET vh_active_in=1 WHERE vh_id_pk=:id" ); $vsql->bindParam( ':id', $rowvhost[ 'vh_id_pk' ] ); $vsql->execute(); // Add a default email if no email found for client. if ( fs_director::CheckForEmptyValue( $vhostuser[ 'email' ] ) ) { $useremail = "postmaster@" . $rowvhost[ 'vh_name_vc' ]; } else { $useremail = $vhostuser[ 'email' ]; } // Check if domain or subdomain to see if we add an alias with 'www' if ( $rowvhost[ 'vh_type_in' ] == 2 ) { $serveralias = $rowvhost[ 'vh_name_vc' ]; } else { $serveralias = $rowvhost[ 'vh_name_vc' ] . " www." . $rowvhost[ 'vh_name_vc' ]; } if ( fs_director::CheckForEmptyValue( $rowvhost[ 'vh_custom_port_in' ] ) ) { $vhostPort = ctrl_options::GetSystemOption( 'apache_port' ); } else { $vhostPort = $rowvhost[ 'vh_custom_port_in' ]; } if ( fs_director::CheckForEmptyValue( $rowvhost[ 'vh_custom_ip_vc' ] ) ) { $vhostIp = "*"; } else { $vhostIp = $rowvhost[ 'vh_custom_ip_vc' ]; } //Domain is enabled //Line1: Domain enabled - Client also is enabled. //Line2: Domain enabled - Client may be disabled, but 'Allow Disabled' = 'true' in apache settings. if ( $rowvhost[ 'vh_enabled_in' ] == 1 && ctrl_users::CheckUserEnabled( $rowvhost[ 'vh_acc_fk' ] ) || $rowvhost[ 'vh_enabled_in' ] == 1 && ctrl_options::GetSystemOption( 'apache_allow_disabled' ) == strtolower( "true" ) ) { /* * ################################################## * # * # Disk Quotas Check * # * ################################################## */ //Domain is beyond its diskusage if ( $vhostuser[ 'diskquota' ] != 0 && $diskspace > $vhostuser[ 'diskquota' ] ) { $line .= "# DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "# THIS DOMAIN HAS BEEN DISABLED FOR QUOTA OVERAGE" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "ServerName " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAlias " . $rowvhost[ 'vh_name_vc' ] . " www." . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $useremail . fs_filehandler::NewLine(); $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'static_dir' ) . "diskexceeded\"" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks Indexes" . fs_filehandler::NewLine(); $line .= "AllowOverride All" . fs_filehandler::NewLine(); $line .= "Order Allow,Deny" . fs_filehandler::NewLine(); $line .= "Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'php_handler' ) . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'dir_index' ) . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= fs_filehandler::NewLine(); if ( $rowvhost[ 'vh_portforward_in' ] <> 0 ) { $line .= BuildVhostPortForward( $rowvhost[ 'vh_name_vc' ], $vhostPort, $useremail ); } $line .= fs_filehandler::NewLine(); /* * ################################################## * # * # Bandwidth Quotas Check * # * ################################################## */ //Domain is beyond its quota } elseif ( $vhostuser[ 'bandwidthquota' ] != 0 && $bandwidth > $vhostuser[ 'bandwidthquota' ] ) { $line .= "# DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "# THIS DOMAIN HAS BEEN DISABLED FOR BANDWIDTH OVERAGE" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "ServerName " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAlias " . $rowvhost[ 'vh_name_vc' ] . " www." . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $useremail . fs_filehandler::NewLine(); $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'static_dir' ) . "bandwidthexceeded\"" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks Indexes" . fs_filehandler::NewLine(); $line .= "AllowOverride All" . fs_filehandler::NewLine(); $line .= "Order Allow,Deny" . fs_filehandler::NewLine(); $line .= "Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'php_handler' ) . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'dir_index' ) . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= fs_filehandler::NewLine(); if ( $rowvhost[ 'vh_portforward_in' ] <> 0 ) { $line .= BuildVhostPortForward( $rowvhost[ 'vh_name_vc' ], $vhostPort, $useremail ); } $line .= fs_filehandler::NewLine(); /* * ################################################## * # * # Parked Domain * # * ################################################## */ //Domain is a PARKED domain. } elseif ( $rowvhost[ 'vh_type_in' ] == 3 ) { $line .= "# DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "ServerName " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAlias " . $rowvhost[ 'vh_name_vc' ] . " www." . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $useremail . fs_filehandler::NewLine(); $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'parking_path' ) . "\"" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks Indexes" . fs_filehandler::NewLine(); $line .= "AllowOverride All" . fs_filehandler::NewLine(); $line .= "Order Allow,Deny" . fs_filehandler::NewLine(); $line .= "Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'php_handler' ) . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'dir_index' ) . fs_filehandler::NewLine(); $line .= "# Custom Global Settings (if any exist)" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'global_vhcustom' ) . fs_filehandler::NewLine(); $line .= "# Custom VH settings (if any exist)" . fs_filehandler::NewLine(); $line .= $rowvhost[ 'vh_custom_tx' ] . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= fs_filehandler::NewLine(); if ( $rowvhost[ 'vh_portforward_in' ] <> 0 ) { $line .= BuildVhostPortForward( $rowvhost[ 'vh_name_vc' ], $vhostPort, $useremail ); } $line .= fs_filehandler::NewLine(); /* * ################################################## * # * # Regular or Sub domain * # * ################################################## */ //Domain is a regular domain or a subdomain. } else { $line .= "# DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); /* * todo */ // Bandwidth Settings //$line .= "Include C:/ZPanel/bin/apache/conf/mod_bw/mod_bw/mod_bw_Administration.conf" . fs_filehandler::NewLine(); // Server name, alias, email settings $line .= "ServerName " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAlias " . $serveralias . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $useremail . fs_filehandler::NewLine(); // Document root $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'hosted_dir' ) . $vhostuser[ 'username' ] . "/public_html" . $rowvhost[ 'vh_directory_vc' ] . "\"" . fs_filehandler::NewLine(); // Get Package openbasedir and suhosin enabled options if ( ctrl_options::GetSystemOption( 'use_openbase' ) == "true" ) { if ( $rowvhost[ 'vh_obasedir_in' ] <> 0 ) { $line .= "php_admin_value open_basedir \"" . ctrl_options::GetSystemOption( 'hosted_dir' ) . $vhostuser[ 'username' ] . "/public_html" . $rowvhost[ 'vh_directory_vc' ] . ctrl_options::GetSystemOption( 'openbase_seperator' ) . ctrl_options::GetSystemOption( 'openbase_temp' ) . "\"" . fs_filehandler::NewLine(); } } if ( ctrl_options::GetSystemOption( 'use_suhosin' ) == "true" ) { if ( $rowvhost[ 'vh_suhosin_in' ] <> 0 ) { $line .= ctrl_options::GetSystemOption( 'suhosin_value' ) . fs_filehandler::NewLine(); } } // Logs if ( !is_dir( ctrl_options::GetSystemOption( 'log_dir' ) . "domains/" . $vhostuser[ 'username' ] . "/" ) ) { fs_director::CreateDirectory( ctrl_options::GetSystemOption( 'log_dir' ) . "domains/" . $vhostuser[ 'username' ] . "/" ); } $line .= "ErrorLog \"" . ctrl_options::GetSystemOption( 'log_dir' ) . "domains/" . $vhostuser[ 'username' ] . "/" . $rowvhost[ 'vh_name_vc' ] . "-error.log\" " . fs_filehandler::NewLine(); $line .= "CustomLog \"" . ctrl_options::GetSystemOption( 'log_dir' ) . "domains/" . $vhostuser[ 'username' ] . "/" . $rowvhost[ 'vh_name_vc' ] . "-access.log\" " . ctrl_options::GetSystemOption( 'access_log_format' ) . fs_filehandler::NewLine(); $line .= "CustomLog \"" . ctrl_options::GetSystemOption( 'log_dir' ) . "domains/" . $vhostuser[ 'username' ] . "/" . $rowvhost[ 'vh_name_vc' ] . "-bandwidth.log\" " . ctrl_options::GetSystemOption( 'bandwidth_log_format' ) . fs_filehandler::NewLine(); // Directory options $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks Indexes" . fs_filehandler::NewLine(); $line .= "AllowOverride All" . fs_filehandler::NewLine(); $line .= "Order Allow,Deny" . fs_filehandler::NewLine(); $line .= "Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); // Get Package php and cgi enabled options $rows = $zdbh->prepare( "SELECT * FROM x_packages WHERE pk_id_pk=:packageid AND pk_deleted_ts IS NULL" ); $rows->bindParam( ':packageid', $vhostuser[ 'packageid' ] ); $rows->execute(); $packageinfo = $rows->fetch(); if ( $packageinfo[ 'pk_enablephp_in' ] <> 0 ) { $line .= ctrl_options::GetSystemOption( 'php_handler' ) . fs_filehandler::NewLine(); } //if ( $packageinfo[ 'pk_enablecgi_in' ] <> 0 ) { // $line .= ctrl_options::GetSystemOption( 'cgi_handler' ) . fs_filehandler::NewLine(); // if ( !is_dir( ctrl_options::GetSystemOption( 'hosted_dir' ) . $vhostuser[ 'username' ] . "/public_html" . $rowvhost[ 'vh_directory_vc' ] . "/_cgi-bin" ) ) { // fs_director::CreateDirectory( ctrl_options::GetSystemOption( 'hosted_dir' ) . $vhostuser[ 'username' ] . "/public_html" . $rowvhost[ 'vh_directory_vc' ] . "/_cgi-bin" ); // } //} // Error documents:- Error pages are added automatically if they are found in the _errorpages directory // and if they are a valid error code, and saved in the proper format, i.e. .html $errorpages = ctrl_options::GetSystemOption( 'hosted_dir' ) . $vhostuser[ 'username' ] . "/public_html" . $rowvhost[ 'vh_directory_vc' ] . "/_errorpages"; if ( is_dir( $errorpages ) ) { if ( $handle = opendir( $errorpages ) ) { while ( ($file = readdir( $handle )) !== false ) { if ( $file != "." && $file != ".." ) { $page = explode( ".", $file ); if ( !fs_director::CheckForEmptyValue( CheckErrorDocument( $page[ 0 ] ) ) ) { $line .= "ErrorDocument " . $page[ 0 ] . " /_errorpages/" . $page[ 0 ] . ".html" . fs_filehandler::NewLine(); } } } closedir( $handle ); } } // Directory indexes $line .= ctrl_options::GetSystemOption( 'dir_index' ) . fs_filehandler::NewLine(); // Global custom global vh entry $line .= "# Custom Global Settings (if any exist)" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'global_vhcustom' ) . fs_filehandler::NewLine(); // Client custom vh entry $line .= "# Custom VH settings (if any exist)" . fs_filehandler::NewLine(); $line .= $rowvhost[ 'vh_custom_tx' ] . fs_filehandler::NewLine(); // End Virtual Host Settings $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); $line .= fs_filehandler::NewLine(); if ( $rowvhost[ 'vh_portforward_in' ] <> 0 ) { $line .= BuildVhostPortForward( $rowvhost[ 'vh_name_vc' ], $vhostPort, $useremail ); } $line .= fs_filehandler::NewLine(); } /* * ################################################## * # * # Disabled domain * # * ################################################## */ } else { //Domain is NOT enabled $line .= "# DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "# THIS DOMAIN HAS BEEN DISABLED" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "ServerName " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAlias " . $rowvhost[ 'vh_name_vc' ] . " www." . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "ServerAdmin " . $useremail . fs_filehandler::NewLine(); $line .= "DocumentRoot \"" . ctrl_options::GetSystemOption( 'static_dir' ) . "disabled\"" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "Options FollowSymLinks Indexes" . fs_filehandler::NewLine(); $line .= "AllowOverride All" . fs_filehandler::NewLine(); $line .= "Order Allow,Deny" . fs_filehandler::NewLine(); $line .= "Allow from all" . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= ctrl_options::GetSystemOption( 'dir_index' ) . fs_filehandler::NewLine(); $line .= "" . fs_filehandler::NewLine(); $line .= "# END DOMAIN: " . $rowvhost[ 'vh_name_vc' ] . fs_filehandler::NewLine(); $line .= "################################################################" . fs_filehandler::NewLine(); } } /* * ############################################################################################################## * # * # Write vhost file to disk * # * ############################################################################################################## */ // write the vhost config file $vhconfigfile = ctrl_options::GetSystemOption( 'apache_vhost' ); if ( fs_filehandler::UpdateFile( $vhconfigfile, 0777, $line )) { // Reset Apache settings to reflect that config file has been written, until the next change. $time = time(); $vsql = $zdbh->prepare( "UPDATE x_settings SET so_value_tx=:time WHERE so_name_vc='apache_changed'" ); $vsql->bindParam( ':time', $time ); $vsql->execute(); echo "Finished writting Apache Config... Now reloading Apache..." . fs_filehandler::NewLine(); $returnValue = 0; if (sys_versions::ShowOSPlatformVersion() == "Windows") { system("" . ctrl_options::GetSystemOption('httpd_exe') . " " . ctrl_options::GetSystemOption('apache_restart') . "", $returnValue); } else { $command = ctrl_options::GetSystemOption( 'zsudo' ); $args = array( "service", ctrl_options::GetSystemOption( 'apache_sn' ), ctrl_options::GetSystemOption( 'apache_restart' ) ); $returnValue = ctrl_system::systemCommand( $command, $args ); } echo "Apache reload " . ((0 === $returnValue ) ? "suceeded" : "failed") . "." . fs_filehandler::NewLine(); } else { return false; } } function CheckErrorDocument( $error ) { $errordocs = array( 100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 300, 301, 302, 303, 304, 305, 306, 307, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510 ); if ( in_array( $error, $errordocs ) ) { return true; } else { return false; } } function BackupVhostConfigFile() { echo "Apache VHost backups are enabled... Backing up current vhost.conf to: " . ctrl_options::GetSystemOption( 'apache_budir' ) . fs_filehandler::NewLine(); if ( !is_dir( ctrl_options::GetSystemOption( 'apache_budir' ) ) ) { fs_director::CreateDirectory( ctrl_options::GetSystemOption( 'apache_budir' ) ); } copy( ctrl_options::GetSystemOption( 'apache_vhost' ), ctrl_options::GetSystemOption( 'apache_budir' ) . "VHOST_BACKUP_" . time() . "" ); fs_director::SetFileSystemPermissions( ctrl_options::GetSystemOption( 'apache_budir' ) . ctrl_options::GetSystemOption( 'apache_vhost' ) . ".BU", 0777 ); if ( ctrl_options::GetSystemOption( 'apache_purgebu' ) == strtolower( "true" ) ) { echo "Apache VHost purges are enabled... Purging backups older than: " . ctrl_options::GetSystemOption( 'apache_purge_date' ) . " days..." . fs_filehandler::NewLine(); echo "[FILE][PURGE_DATE][FILE_DATE][ACTION]" . fs_filehandler::NewLine(); $purge_date = ctrl_options::GetSystemOption( 'apache_purge_date' ); if ( $handle = @opendir( ctrl_options::GetSystemOption( 'apache_budir' ) ) ) { while ( false !== ($file = readdir( $handle )) ) { if ( $file != "." && $file != ".." ) { $filetime = @filemtime( ctrl_options::GetSystemOption( 'apache_budir' ) . $file ); if ( $filetime == NULL ) { $filetime = @filemtime( utf8_decode( ctrl_options::GetSystemOption( 'apache_budir' ) . $file ) ); } $filetime = floor( (time() - $filetime) / 86400 ); echo "" . $file . " - " . $purge_date . " - " . $filetime . ""; if ( $purge_date < $filetime ) { //delete the file echo " - Deleting file..." . fs_filehandler::NewLine(); unlink( ctrl_options::GetSystemOption( 'apache_budir' ) . $file ); } else { echo " - Skipping file..." . fs_filehandler::NewLine(); } } } } echo "Purging old backups complete..." . fs_filehandler::NewLine(); } echo "Apache backups complete..." . fs_filehandler::NewLine(); } function TriggerApacheQuotaUsage() { global $zdbh; global $controller; $sql = $zdbh->prepare( "SELECT * FROM x_vhosts WHERE vh_deleted_ts IS NULL" ); $sql->execute(); while ( $rowvhost = $sql->fetch() ) { if ( $rowvhost[ 'vh_enabled_in' ] == 1 && ctrl_users::CheckUserEnabled( $rowvhost[ 'vh_acc_fk' ] ) || $rowvhost[ 'vh_enabled_in' ] == 1 && ctrl_options::GetSystemOption( 'apache_allow_disabled' ) == strtolower( "true" ) ) { //$checksize = $zdbh->query("SELECT * FROM x_bandwidth WHERE bd_month_in = " . date("Ym") . " AND bd_acc_fk = " . $rowvhost['vh_acc_fk'] . "")->fetch(); $date = date( "Ym" ); $findsize = $zdbh->prepare( "SELECT * FROM x_bandwidth WHERE bd_month_in = :date AND bd_acc_fk = :acc" ); $findsize->bindParam( ':date', $date ); $findsize->bindParam( ':acc', $rowvhost[ 'vh_acc_fk' ] ); $findsize->execute(); $checksize = $findsize->fetch(); $currentuser = ctrl_users::GetUserDetail( $rowvhost[ 'vh_acc_fk' ] ); if ( $checksize[ 'bd_diskover_in' ] != $checksize[ 'bd_diskcheck_in' ] && $checksize[ 'bd_diskover_in' ] == 1 ) { echo "Disk usage over quota, triggering Apache..." . fs_filehandler::NewLine(); $updateapache = $zdbh->prepare( "UPDATE x_settings SET so_value_tx = 'true' WHERE so_name_vc ='apache_changed'" ); $updateapache->execute(); //$updateapache = $zdbh->query("UPDATE x_bandwidth SET bd_diskcheck_in = 1 WHERE bd_acc_fk =" . $rowvhost['vh_acc_fk'] . ""); $updateapache2 = $zdbh->prepare( "UPDATE x_bandwidth SET bd_diskcheck_in = 1 WHERE bd_acc_fk = :acc" ); $updateapache2->bindParam( ':acc', $rowvhost[ 'vh_acc_fk' ] ); $updateapache2->execute(); } if ( $checksize[ 'bd_diskover_in' ] != $checksize[ 'bd_diskcheck_in' ] && $checksize[ 'bd_diskover_in' ] == 0 ) { echo "Disk usage under quota, triggering Apache..." . fs_filehandler::NewLine(); $updateapache = $zdbh->prepare( "UPDATE x_settings SET so_value_tx = 'true' WHERE so_name_vc ='apache_changed'" ); $updateapache->execute(); //$updateapache = $zdbh->query("UPDATE x_bandwidth SET bd_diskcheck_in = 0 WHERE bd_acc_fk =" . $rowvhost['vh_acc_fk'] . ""); $updateapache2 = $zdbh->prepare( "UPDATE x_bandwidth SET bd_diskcheck_in = 0 WHERE bd_acc_fk = :acc" ); $updateapache2->bindParam( ':acc', $rowvhost[ 'vh_acc_fk' ] ); $updateapache2->execute(); } if ( $checksize[ 'bd_transover_in' ] != $checksize[ 'bd_transcheck_in' ] && $checksize[ 'bd_transover_in' ] == 1 ) { echo "Bandwidth usage over quota, triggering Apache..." . fs_filehandler::NewLine(); $updateapache = $zdbh->prepare( "UPDATE x_settings SET so_value_tx = 'true' WHERE so_name_vc ='apache_changed'" ); $updateapache->execute(); //$updateapache = $zdbh->query("UPDATE x_bandwidth SET bd_transcheck_in = 1 WHERE bd_acc_fk =" . $rowvhost['vh_acc_fk'] . ""); $updateapache2 = $zdbh->prepare( "UPDATE x_bandwidth SET bd_transcheck_in = 1 WHERE bd_acc_fk = :acc" ); $updateapache2->bindParam( ':acc', $rowvhost[ 'vh_acc_fk' ] ); $updateapache2->execute(); } if ( $checksize[ 'bd_transover_in' ] != $checksize[ 'bd_transcheck_in' ] && $checksize[ 'bd_transover_in' ] == 0 ) { echo "Bandwidth usage under quota, triggering Apache..." . fs_filehandler::NewLine(); $updateapache = $zdbh->prepare( "UPDATE x_settings SET so_value_tx = 'true' WHERE so_name_vc ='apache_changed'" ); $updateapache->execute(); //$updateapache = $zdbh->query("UPDATE x_bandwidth SET bd_transcheck_in = 0 WHERE bd_acc_fk =" . $rowvhost['vh_acc_fk'] . ""); $updateapache2 = $zdbh->prepare( "UPDATE x_bandwidth SET bd_transcheck_in = 0 WHERE bd_acc_fk = :acc" ); $updateapache2->bindParam( ':acc', $rowvhost[ 'vh_acc_fk' ] ); $updateapache2->execute(); } } } } ?>