Example #1
0
function apache_config()
{
    $sock = new sockets();
    $unix = new unix();
    $EnablePHPFPM = 0;
    $ipaddr = null;
    @mkdir("/var/run/apache2", 0755, true);
    @mkdir("/var/run/sarg-apache", 0755, true);
    @mkdir("/var/log/apache2", 0755, true);
    @mkdir(dirname($GLOBALS["APACHE_PID_PATH"]), 0755, true);
    $APACHE_SRC_ACCOUNT = $unix->APACHE_SRC_ACCOUNT();
    $APACHE_SRC_GROUP = $unix->APACHE_SRC_GROUP();
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    $SargOutputDir = $sock->GET_INFO("SargOutputDir");
    if ($SargOutputDir == null) {
        $SargOutputDir = "/var/www/html/squid-reports";
    }
    $SargWebPort = intval($sock->GET_INFO("SargWebPort"));
    if ($SargWebPort == 0) {
        $SargWebPort = rand(55600, 59000);
        $sock->SET_INFO("SargWebPort", $SargWebPort);
    }
    if (is_link($SargOutputDir)) {
        $SargOutputDir = @readlink($SargOutputDir);
    }
    @mkdir($SargOutputDir, 0755, true);
    if (!is_file("{$SargOutputDir}/index.html")) {
        $php = $unix->LOCATE_PHP5_BIN();
        shell_exec("{$php} /usr/share/artica-postfix/exec.sarg.php --exec --force >/dev/null 2>&1 &");
    }
    if ($ipaddr == null) {
        $ipaddr = "*";
    }
    $phpfpm = $unix->APACHE_LOCATE_PHP_FPM();
    $php = $unix->LOCATE_PHP5_BIN();
    $EnableArticaApachePHPFPM = $sock->GET_INFO("EnableArticaApachePHPFPM");
    if (!is_numeric($EnableArticaApachePHPFPM)) {
        $EnableArticaApachePHPFPM = 0;
    }
    if (!is_file($phpfpm)) {
        $EnableArticaApachePHPFPM = 0;
    }
    $logfile = "/var/log/apache2/apache-sarg-access.log";
    $ErrorLog = "/var/log/apache2/apache-sarg-error.log";
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/run/sarg-apache");
    $apache_LOCATE_MIME_TYPES = $unix->apache_LOCATE_MIME_TYPES();
    if ($EnableArticaApachePHPFPM == 1) {
        if (!is_file("{$APACHE_MODULES_PATH}/mod_fastcgi.so")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} mod_fastcgi.so is required to use PHP5-FPM\n";
            }
            $EnableArticaApachePHPFPM = 0;
        }
    }
    if ($APACHE_SRC_ACCOUNT == null) {
        $APACHE_SRC_ACCOUNT = "www-data";
        $APACHE_SRC_GROUP = "www-data";
        $unix->CreateUnixUser($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "Apache username");
    }
    @unlink($ErrorLog);
    @unlink($logfile);
    if (!is_file("{$logfile}")) {
        @touch("{$logfile}");
    }
    if (!is_file("{$ErrorLog}")) {
        @touch("{$ErrorLog}");
    }
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, $ErrorLog);
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, $logfile);
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/run/sarg-apache");
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/log/apache2");
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, dirname($GLOBALS["APACHE_PID_PATH"]));
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Run as {$APACHE_SRC_ACCOUNT}:{$APACHE_SRC_GROUP}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} HTTP Port: {$ArticaSplashHotSpotPort} SSL Port: {$ArticaSplashHotSpotPortSSL}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP-FPM: {$EnablePHPFPM}\n";
    }
    $f[] = "LockFile /var/run/apache2/sarg-artica-accept.lock";
    $f[] = "PidFile {$GLOBALS["APACHE_PID_PATH"]}";
    $f[] = "AcceptMutex flock";
    $f[] = "DocumentRoot {$SargOutputDir}";
    $f[] = "DirectoryIndex index.html";
    $f[] = "ErrorDocument 400 /index.html";
    $f[] = "ErrorDocument 401 /index.html";
    $f[] = "ErrorDocument 403 /index.html";
    $f[] = "ErrorDocument 404 /index.html";
    $f[] = "ErrorDocument 500 /index.html";
    $f[] = "NameVirtualHost {$ipaddr}:{$SargWebPort}";
    $f[] = "Listen {$ipaddr}:{$SargWebPort}";
    $f[] = "<VirtualHost {$ipaddr}:{$SargWebPort}>";
    $f[] = "\tServerName {$ipaddr}";
    $f[] = "\tDocumentRoot {$SargOutputDir}";
    $f[] = "</VirtualHost>";
    $f[] = "<IfModule mpm_prefork_module>";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_worker_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_event_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "AccessFileName .htaccess";
    $f[] = "<Files ~ \"^\\.ht\">";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tDeny from all";
    $f[] = "\tSatisfy all";
    $f[] = "</Files>";
    $f[] = "DefaultType text/plain";
    $f[] = "HostnameLookups Off";
    $f[] = "User\t\t\t\t   {$APACHE_SRC_ACCOUNT}";
    $f[] = "Group\t\t\t\t   {$APACHE_SRC_GROUP}";
    $f[] = "Timeout              300";
    $f[] = "KeepAlive            Off";
    $f[] = "KeepAliveTimeout     15";
    $f[] = "StartServers         1";
    $f[] = "MaxClients           50";
    $f[] = "MinSpareServers      2";
    $f[] = "MaxSpareServers      5";
    $f[] = "MaxRequestsPerChild  5000";
    $f[] = "MaxKeepAliveRequests 100";
    $f[] = "ServerName " . $unix->hostname_g();
    $f[] = "<IfModule mod_mime.c>";
    $f[] = "\tTypesConfig /etc/mime.types";
    $f[] = "\tAddType application/x-compress .Z";
    $f[] = "\tAddType application/x-gzip .gz .tgz";
    $f[] = "\tAddType application/x-bzip2 .bz2";
    $f[] = "\tAddType application/x-httpd-php .php .phtml";
    $f[] = "\tAddType application/x-httpd-php-source .phps";
    $f[] = "\tAddLanguage ca .ca";
    $f[] = "\tAddLanguage cs .cz .cs";
    $f[] = "\tAddLanguage da .dk";
    $f[] = "\tAddLanguage de .de";
    $f[] = "\tAddLanguage el .el";
    $f[] = "\tAddLanguage en .en";
    $f[] = "\tAddLanguage eo .eo";
    $f[] = "\tRemoveType  es";
    $f[] = "\tAddLanguage es .es";
    $f[] = "\tAddLanguage et .et";
    $f[] = "\tAddLanguage fr .fr";
    $f[] = "\tAddLanguage he .he";
    $f[] = "\tAddLanguage hr .hr";
    $f[] = "\tAddLanguage it .it";
    $f[] = "\tAddLanguage ja .ja";
    $f[] = "\tAddLanguage ko .ko";
    $f[] = "\tAddLanguage ltz .ltz";
    $f[] = "\tAddLanguage nl .nl";
    $f[] = "\tAddLanguage nn .nn";
    $f[] = "\tAddLanguage no .no";
    $f[] = "\tAddLanguage pl .po";
    $f[] = "\tAddLanguage pt .pt";
    $f[] = "\tAddLanguage pt-BR .pt-br";
    $f[] = "\tAddLanguage ru .ru";
    $f[] = "\tAddLanguage sv .sv";
    $f[] = "\tRemoveType  tr";
    $f[] = "\tAddLanguage tr .tr";
    $f[] = "\tAddLanguage zh-CN .zh-cn";
    $f[] = "\tAddLanguage zh-TW .zh-tw";
    $f[] = "\tAddCharset us-ascii    .ascii .us-ascii";
    $f[] = "\tAddCharset ISO-8859-1  .iso8859-1  .latin1";
    $f[] = "\tAddCharset ISO-8859-2  .iso8859-2  .latin2 .cen";
    $f[] = "\tAddCharset ISO-8859-3  .iso8859-3  .latin3";
    $f[] = "\tAddCharset ISO-8859-4  .iso8859-4  .latin4";
    $f[] = "\tAddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru";
    $f[] = "\tAddCharset ISO-8859-6  .iso8859-6  .arb .arabic";
    $f[] = "\tAddCharset ISO-8859-7  .iso8859-7  .grk .greek";
    $f[] = "\tAddCharset ISO-8859-8  .iso8859-8  .heb .hebrew";
    $f[] = "\tAddCharset ISO-8859-9  .iso8859-9  .latin5 .trk";
    $f[] = "\tAddCharset ISO-8859-10  .iso8859-10  .latin6";
    $f[] = "\tAddCharset ISO-8859-13  .iso8859-13";
    $f[] = "\tAddCharset ISO-8859-14  .iso8859-14  .latin8";
    $f[] = "\tAddCharset ISO-8859-15  .iso8859-15  .latin9";
    $f[] = "\tAddCharset ISO-8859-16  .iso8859-16  .latin10";
    $f[] = "\tAddCharset ISO-2022-JP .iso2022-jp .jis";
    $f[] = "\tAddCharset ISO-2022-KR .iso2022-kr .kis";
    $f[] = "\tAddCharset ISO-2022-CN .iso2022-cn .cis";
    $f[] = "\tAddCharset Big5        .Big5       .big5 .b5";
    $f[] = "\tAddCharset cn-Big5     .cn-big5";
    $f[] = "\t# For russian, more than one charset is used (depends on client, mostly):";
    $f[] = "\tAddCharset WINDOWS-1251 .cp-1251   .win-1251";
    $f[] = "\tAddCharset CP866       .cp866";
    $f[] = "\tAddCharset KOI8      .koi8";
    $f[] = "\tAddCharset KOI8-E      .koi8-e";
    $f[] = "\tAddCharset KOI8-r      .koi8-r .koi8-ru";
    $f[] = "\tAddCharset KOI8-U      .koi8-u";
    $f[] = "\tAddCharset KOI8-ru     .koi8-uk .ua";
    $f[] = "\tAddCharset ISO-10646-UCS-2 .ucs2";
    $f[] = "\tAddCharset ISO-10646-UCS-4 .ucs4";
    $f[] = "\tAddCharset UTF-7       .utf7";
    $f[] = "\tAddCharset UTF-8       .utf8";
    $f[] = "\tAddCharset UTF-16      .utf16";
    $f[] = "\tAddCharset UTF-16BE    .utf16be";
    $f[] = "\tAddCharset UTF-16LE    .utf16le";
    $f[] = "\tAddCharset UTF-32      .utf32";
    $f[] = "\tAddCharset UTF-32BE    .utf32be";
    $f[] = "\tAddCharset UTF-32LE    .utf32le";
    $f[] = "\tAddCharset euc-cn      .euc-cn";
    $f[] = "\tAddCharset euc-gb      .euc-gb";
    $f[] = "\tAddCharset euc-jp      .euc-jp";
    $f[] = "\tAddCharset euc-kr      .euc-kr";
    $f[] = "\tAddCharset EUC-TW      .euc-tw";
    $f[] = "\tAddCharset gb2312      .gb2312 .gb";
    $f[] = "\tAddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2";
    $f[] = "\tAddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4";
    $f[] = "\tAddCharset shift_jis   .shift_jis .sjis";
    $f[] = "\tAddType text/html .shtml";
    $f[] = "\tAddOutputFilter INCLUDES .shtml";
    $f[] = "</IfModule>";
    //$f[]="Alias /index.php /usr/share/artica-postfix/hotspot.php";
    //$f[]="Alias /index.html /usr/share/artica-postfix/hotspot.php";
    $f[] = "<Directory \"{$SargOutputDir}\">";
    $f[] = "\tDirectorySlash On";
    $f[] = "\tDirectoryIndex index.html";
    $f[] = "\t\t<Files \"hostpot.php\">";
    $f[] = "\t\t\tOrder allow,deny";
    $f[] = "\t\t\tallow from all";
    $f[] = "\t\t</Files>";
    $f[] = "\tErrorDocument 400 /index.html";
    $f[] = "\tErrorDocument 401 /index.html";
    $f[] = "\tErrorDocument 403 /index.html";
    $f[] = "\tErrorDocument 404 /index.html";
    $f[] = "\tErrorDocument 500 /index.html";
    $f[] = "\tOptions -Indexes";
    $f[] = "\tAllowOverride All";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tAllow from all";
    $f[] = "</Directory>";
    $f[] = "Loglevel debug";
    $f[] = "ErrorLog {$ErrorLog}";
    $f[] = "LogFormat \"%h %l %u %t \\\"%r\\\" %<s %b\" common";
    $f[] = "CustomLog {$logfile} common";
    $array["actions_module"] = "mod_actions.so";
    $array["expires_module"] = "mod_expires.so";
    $array["rewrite_module"] = "mod_rewrite.so";
    $array["dir_module"] = "mod_dir.so";
    $array["mime_module"] = "mod_mime.so";
    $array["alias_module"] = "mod_alias.so";
    $array["auth_basic_module"] = "mod_auth_basic.so";
    $array["authz_host_module"] = "mod_authz_host.so";
    $array["autoindex_module"] = "mod_autoindex.so";
    $array["negotiation_module"] = "mod_negotiation.so";
    $array["headers_module"] = "mod_headers.so";
    //$array["ldap_module"]="mod_ldap.so";
    if (is_dir("/etc/apache2")) {
        if (!is_file("/etc/apache2/mime.types")) {
            if ($apache_LOCATE_MIME_TYPES != "/etc/apache2/mime.types") {
                @copy($apache_LOCATE_MIME_TYPES, "/etc/apache2/mime.types");
            }
        }
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Mime types path.......: {$apache_LOCATE_MIME_TYPES}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Modules path..........: {$APACHE_MODULES_PATH}\n";
    }
    while (list($module, $lib) = each($array)) {
        if (is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} include module \"{$module}\"\n";
            }
            $f[] = "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}";
        } else {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} skip module \"{$module}\"\n";
            }
        }
    }
    @file_put_contents($GLOBALS["APACHE_CONFIG_PATH"], @implode("\n", $f));
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} {$GLOBALS["APACHE_CONFIG_PATH"]} done\n";
    }
}
Example #2
0
function APACHE_ADD_MODULE($moduleso_file)
{
    $unix = new unix();
    if (preg_match("#^mod_proxy#", $moduleso_file)) {
        return;
    }
    if ($moduleso_file == "mod_proxy_balancer.so") {
        return;
    }
    if ($moduleso_file == "mod_unique_id.so") {
        return;
    }
    if ($moduleso_file == "mod_proxy_ftp.so") {
        return;
    }
    if ($moduleso_file == "mod_proxy_html.so") {
        return;
    }
    if ($moduleso_file == "mod_rpaf-2.0.so") {
        return;
    }
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    if ($moduleso_file == 'mod_perl.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: perl_module OK\n";
        }
        return 'LoadModule perl_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_log_config.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: log_config_module OK\n";
        }
        return 'LoadModule log_config_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_vhost_ldap.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: vhost_ldap_module OK\n";
        }
        return 'LoadModule vhost_ldap_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_ldap.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: ldap_module OK\n";
        }
        return 'LoadModule ldap_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_rewrite.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: mod_rewrite OK\n";
        }
        return 'LoadModule rewrite_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_dav.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: dav_module OK\n";
        }
        return 'LoadModule dav_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_suexec.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: suexec_module OK\n";
        }
        return 'LoadModule suexec_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if (!AuthorizedModule($moduleso_file)) {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return null;
    }
    if ($moduleso_file == 'mod_php5.so') {
        if (!AuthorizedModule($moduleso_file)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$moduleso_file}: blacklisted\n";
            }
            return;
        }
        return 'LoadModule php5_module' . "\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
    }
    if ($moduleso_file == 'mod_proxy_connect.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_dav_lock.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_mem_cache.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_cgid.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_proxy.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_proxy_http.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    if ($moduleso_file == 'mod_proxy_ajp.so') {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$moduleso_file}: blacklisted\n";
        }
        return;
    }
    $module_name = null;
    $moduleso_file_pattern = str_replace('.', '\\.', $moduleso_file);
    if (preg_match("#^mod_(.+?)\\.so#", $moduleso_file, $re)) {
        $module_name = $re[1] . '_module';
    } else {
        if (preg_match("#^(.+?)\\.so#", $moduleso_file, $re)) {
            $module_name = $re[1] . '_module';
        }
    }
    if ($moduleso_file == 'libphp5.so') {
        $module_name = 'php5_module';
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "{$moduleso_file}: {$module_name} OK\n";
    }
    return "LoadModule {$module_name}\t{$APACHE_MODULES_PATH}/{$moduleso_file}";
}
Example #3
0
function apache_config()
{
    $sock = new sockets();
    $unix = new unix();
    $EnablePHPFPM = 0;
    $APACHE_SRC_ACCOUNT = $unix->APACHE_SRC_ACCOUNT();
    $APACHE_SRC_GROUP = $unix->APACHE_SRC_GROUP();
    if (preg_match("#APACHE_RUN_GROUP#", $APACHE_SRC_GROUP)) {
        $APACHE_SRC_GROUP = "www-data";
    }
    $LogFilePath = "/var/log/artica-wifidog/access.log";
    $directories[] = "/var/run/apache2";
    $directories[] = "/var/run/artica-apache";
    $directories[] = "/var/log/artica-wifidog";
    $directories[] = "/home/artica/hotspot/sessions";
    $directories[] = "/home/artica/hotspot/caches";
    while (list($index, $maindir) = each($directories)) {
        @mkdir($maindir, 0755, true);
        @chown($maindir, $APACHE_SRC_ACCOUNT);
        @chgrp($maindir, $APACHE_SRC_GROUP);
    }
    $ErrorLog = dirname($LogFilePath) . "/error.log";
    if (!is_file($LogFilePath)) {
        @touch($LogFilePath);
    }
    @chown($LogFilePath, $APACHE_SRC_ACCOUNT);
    @chgrp($LogFilePath, $APACHE_SRC_GROUP);
    if (!is_file($ErrorLog)) {
        @touch($ErrorLog);
    }
    @chown($ErrorLog, $APACHE_SRC_ACCOUNT);
    @chgrp($ErrorLog, $APACHE_SRC_GROUP);
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    $HotSpotMaxClients = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/HotSpotMaxClients"));
    $HotSpotStartServers = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/HotSpotStartServers"));
    $HotSpotForceDDOSDisable = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/HotSpotForceDDOSDisable"));
    if ($HotSpotMaxClients == 0) {
        $HotSpotMaxClients = 20;
    }
    if ($HotSpotStartServers == 0) {
        $HotSpotStartServers = 5;
    }
    $EnableArticaHotSpot = $sock->GET_INFO("EnableArticaHotSpot");
    $SquidHotSpotPort = $sock->GET_INFO("SquidHotSpotPort");
    $ArticaHotSpotPort = $sock->GET_INFO("ArticaHotSpotPort");
    $ArticaSSLHotSpotPort = $sock->GET_INFO("ArticaSSLHotSpotPort");
    $ArticaSplashHotSpotPort = $sock->GET_INFO("ArticaSplashHotSpotPort");
    $ArticaSplashHotSpotPortSSL = $sock->GET_INFO("ArticaSplashHotSpotPortSSL");
    if (!is_numeric($ArticaHotSpotPort)) {
        $ArticaHotSpotPort = 0;
    }
    if (!is_numeric($ArticaSplashHotSpotPort)) {
        $ArticaSplashHotSpotPort = 16080;
    }
    if (!is_numeric($ArticaSplashHotSpotPortSSL)) {
        $ArticaSplashHotSpotPortSSL = 16443;
    }
    $ArticaHotSpotInterface = $sock->GET_INFO("ArticaHotSpotInterface");
    $HospotHTTPServerName = trim($sock->GET_INFO("HospotHTTPServerName"));
    $HotSpotErrorRedirect = $sock->GET_INFO("HotSpotErrorRedirect");
    if ($HotSpotErrorRedirect == null) {
        $HotSpotErrorRedirect = "http://www.msftncsi.com";
    }
    $Params = unserialize($sock->GET_INFO("HotSpotEvasive"));
    $ApacheEvasiveInstalled = intval($sock->GET_INFO("ApacheEvasiveInstalled"));
    if (!is_numeric($Params["DOSEnable"])) {
        $Params["DOSEnable"] = 1;
    }
    if (!is_numeric($Params["DOSHashTableSize"])) {
        $Params["DOSHashTableSize"] = 1024;
    }
    if (!is_numeric($Params["DOSPageCount"])) {
        $Params["DOSPageCount"] = 3;
    }
    if (!is_numeric($Params["DOSSiteCount"])) {
        $Params["DOSSiteCount"] = 20;
    }
    if (!is_numeric($Params["DOSPageInterval"])) {
        $Params["DOSPageInterval"] = 1;
    }
    if (!is_numeric($Params["DOSSiteInterval"])) {
        $Params["DOSSiteInterval"] = 10;
    }
    if (!is_numeric($Params["DOSBlockingPeriod"])) {
        $Params["DOSBlockingPeriod"] = 5;
    }
    $unix = new unix();
    $NETWORK_ALL_INTERFACES = $unix->NETWORK_ALL_INTERFACES();
    $ipaddr = $NETWORK_ALL_INTERFACES[$ArticaHotSpotInterface]["IPADDR"];
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} HotSpot run as {$ArticaHotSpotInterface} ( {$ipaddr} )\n";
    }
    if ($ipaddr == "0.0.0.0") {
        $ipaddr = "*";
    }
    if ($ipaddr == null) {
        $ipaddr = "*";
    }
    $GLOBALS["HOSTPOT_WEB_INTERFACE"] = $ipaddr;
    $phpfpm = $unix->APACHE_LOCATE_PHP_FPM();
    $php = $unix->LOCATE_PHP5_BIN();
    $EnableArticaApachePHPFPM = $sock->GET_INFO("EnableArticaApachePHPFPM");
    if (!is_numeric($EnableArticaApachePHPFPM)) {
        $EnableArticaApachePHPFPM = 0;
    }
    if (!is_file($phpfpm)) {
        $EnableArticaApachePHPFPM = 0;
    }
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/run/artica-apache");
    $apache_LOCATE_MIME_TYPES = $unix->apache_LOCATE_MIME_TYPES();
    if ($EnableArticaApachePHPFPM == 1) {
        if (!is_file("{$APACHE_MODULES_PATH}/mod_fastcgi.so")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} mod_fastcgi.so is required to use PHP5-FPM\n";
            }
            $EnableArticaApachePHPFPM = 0;
        }
    }
    if ($APACHE_SRC_ACCOUNT == null) {
        $APACHE_SRC_ACCOUNT = "www-data";
        $APACHE_SRC_GROUP = "www-data";
        $unix->CreateUnixUser($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "Apache username");
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Run as....: {$APACHE_SRC_ACCOUNT}:{$APACHE_SRC_GROUP}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} HTTP Port.: {$ArticaSplashHotSpotPort} SSL Port: {$ArticaSplashHotSpotPortSSL}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP-FPM...: {$EnablePHPFPM}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} MaxClients: {$HotSpotMaxClients}\n";
    }
    $f[] = "Group {$APACHE_SRC_GROUP}";
    $f[] = "User {$APACHE_SRC_ACCOUNT}";
    $f[] = "LockFile /var/run/apache2/hotspot-artica-accept.lock";
    $f[] = "PidFile /var/run/artica-apache/hotspot-apache.pid";
    $f[] = "AcceptMutex flock";
    $f[] = "SSLRandomSeed startup file:/dev/urandom  256";
    $f[] = "SSLRandomSeed connect builtin";
    $f[] = "SSLSessionCache        shmcb:/var/run/apache2/ssl_scache-hotspot(512000)";
    $f[] = "SSLSessionCacheTimeout  300";
    $f[] = "SSLSessionCacheTimeout  300";
    $f[] = "DocumentRoot /usr/share/artica-postfix";
    $f[] = "DirectoryIndex hotspot.html";
    $f[] = "ErrorDocument 400 /hotspot.html";
    $f[] = "ErrorDocument 401 /hotspot.html";
    $f[] = "ErrorDocument 403 /hotspot.html";
    $f[] = "ErrorDocument 404 /hotspot.html";
    $f[] = "ErrorDocument 500 /hotspot.html";
    $NameVirtualHost = $ipaddr;
    if ($HospotHTTPServerName != null) {
        $NameVirtualHost = $HospotHTTPServerName;
    }
    $f[] = "NameVirtualHost {$NameVirtualHost}:{$ArticaSplashHotSpotPort}";
    $f[] = "NameVirtualHost {$NameVirtualHost}:{$ArticaSplashHotSpotPortSSL}";
    $f[] = "Listen {$NameVirtualHost}:{$ArticaSplashHotSpotPort}";
    $f[] = "Listen {$NameVirtualHost}:{$ArticaSplashHotSpotPortSSL}";
    $ddos_config = null;
    if ($HotSpotForceDDOSDisable == 1) {
        $Params["DOSEnable"] = 0;
    }
    if ($Params["DOSEnable"] == 1) {
        //$ddos[]="<IfModule mod_evasive20.c>";
        $ddos[] = "\tDOSHashTableSize {$Params["DOSHashTableSize"]}";
        $ddos[] = "\tDOSPageCount {$Params["DOSPageCount"]}";
        $ddos[] = "\tDOSSiteCount {$Params["DOSSiteCount"]}";
        $ddos[] = "\tDOSPageInterval {$Params["DOSPageInterval"]}";
        $ddos[] = "\tDOSSiteInterval {$Params["DOSSiteInterval"]}";
        $ddos[] = "\tDOSBlockingPeriod {$Params["DOSBlockingPeriod"]}";
        $ddos[] = "\tDOSLogDir  \"/var/log/artica-wifidog\"";
        $ddos[] = "\tDOSSystemCommand \"/bin/echo `date '+%F %T'` HOTSPOT  %s >> /var/log/artica-wifidog/dos_evasive_attacks.log\"";
        $ddos_config = @implode("\n", $ddos);
        //$ddos[]="</IfModule>";
    }
    $f[] = "<VirtualHost {$NameVirtualHost}:{$ArticaSplashHotSpotPort}>";
    $f[] = "\tServerName {$NameVirtualHost}";
    $f[] = "\tDocumentRoot /usr/share/artica-postfix";
    $f[] = "{$ddos_config}";
    $f[] = "\tErrorDocument 400 /hotspot.html";
    $f[] = "\tErrorDocument 401 /hotspot.html";
    $f[] = "\tErrorDocument 403 /hotspot.html";
    $f[] = "\tErrorDocument 404 /hotspot.html";
    $f[] = "\tErrorDocument 500 /hotspot.html";
    $f[] = "\tFallbackResource /hotspot.html";
    $f[] = "</VirtualHost>";
    $f[] = "<VirtualHost {$NameVirtualHost}:{$ArticaSplashHotSpotPortSSL}>";
    $f[] = "\tServerName {$NameVirtualHost}";
    $f[] = "\tDocumentRoot /usr/share/artica-postfix";
    $f[] = "\tSSLEngine on";
    $squid = new squidbee();
    $ArticaSplashHotSpotCertificate = $sock->GET_INFO("ArticaSplashHotSpotCertificate");
    $data = $squid->SaveCertificate($ArticaSplashHotSpotCertificate, false, true, false);
    if ($ArticaSplashHotSpotCertificate != null) {
        $apache = new apache_certificate($ArticaSplashHotSpotCertificate);
        $f[] = $apache->build();
    } else {
        if (preg_match("#ssl_certificate\\s+(.+?);\\s+ssl_certificate_key\\s+(.+?);#is", $data, $re)) {
            $cert = $re[1];
            $key = $re[2];
            $f[] = "\tSSLCertificateFile \"{$cert}\"";
            $f[] = "\tSSLCertificateKeyFile \"{$key}\"";
        }
    }
    $f[] = "\tSSLVerifyClient none";
    $f[] = "\tServerSignature Off";
    $f[] = "{$ddos_config}";
    $f[] = "\tErrorDocument 400 /hotspot.html";
    $f[] = "\tErrorDocument 401 /hotspot.html";
    $f[] = "\tErrorDocument 403 /hotspot.html";
    $f[] = "\tErrorDocument 404 /hotspot.html";
    $f[] = "\tErrorDocument 500 /hotspot.html";
    $f[] = "\tFallbackResource /hotspot.html";
    $f[] = "</VirtualHost>";
    $f[] = "AccessFileName .htaccess";
    $f[] = "<Files ~ \"^\\.ht\">";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tDeny from all";
    $f[] = "\tSatisfy all";
    $f[] = "</Files>";
    $f[] = "DefaultType text/plain";
    $f[] = "HostnameLookups Off";
    $f[] = "User\t\t\t\t   {$APACHE_SRC_ACCOUNT}";
    $f[] = "Group\t\t\t\t   {$APACHE_SRC_GROUP}";
    $f[] = "Timeout              300";
    $f[] = "KeepAlive            Off";
    $f[] = "KeepAliveTimeout     3";
    if ($HotSpotStartServers >= $HotSpotMaxClients) {
        $HotSpotMaxClients = $HotSpotMaxClients + $HotSpotStartServers;
    }
    if ($HotSpotMaxClients > 1024) {
        $HotSpotMaxClients = 1024;
    }
    $ServerLimit = $HotSpotMaxClients + 100;
    if ($ServerLimit > 2000) {
        $ServerLimit = 2000;
    }
    $f[] = "StartServers         {$HotSpotStartServers}";
    $f[] = "MaxClients           {$HotSpotMaxClients}";
    $f[] = "ServerLimit\t\t   {$ServerLimit}";
    $MinSpareServers = $HotSpotStartServers + 5;
    $MaxSpareServers = $MinSpareServers + 1;
    $f[] = "MinSpareServers      {$MinSpareServers}";
    $f[] = "MaxSpareServers      {$MaxSpareServers}";
    $f[] = "MaxRequestsPerChild  800";
    $f[] = "MaxKeepAliveRequests 100";
    $f[] = "ServerName " . $unix->hostname_g();
    $f[] = "<IfModule mod_ssl.c>";
    $f[] = "\tSSLRandomSeed connect builtin";
    $f[] = "\tSSLRandomSeed connect file:/dev/urandom 512";
    $f[] = "\tAddType application/x-x509-ca-cert .crt";
    $f[] = "\tAddType application/x-pkcs7-crl    .crl";
    $f[] = "\tSSLPassPhraseDialog  builtin";
    $f[] = "\tSSLSessionCache        shmcb:/var/run/apache2/ssl_scache-articahtp(512000)";
    $f[] = "\tSSLSessionCacheTimeout  300";
    $f[] = "\tSSLSessionCacheTimeout  300";
    $f[] = "\tSSLMutex  sem";
    $f[] = "\tSSLCipherSuite HIGH:MEDIUM:!ADH";
    $f[] = "\tSSLProtocol all -SSLv2";
    $f[] = "</IfModule>";
    $f[] = "";
    $f[] = "AddType application/x-httpd-php .php";
    $f[] = "php_value error_log \"/var/log/artica-wifidog/access.log\"";
    $f[] = "php_value session.save_path \"/home/artica/hotspot/sessions\"";
    $f[] = "<IfModule mod_fcgid.c>";
    $f[] = "\tPHP_Fix_Pathinfo_Enable 1";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_php5.c>";
    $f[] = "    <FilesMatch \"\\.ph(p3?|tml)\$\">";
    $f[] = "\tSetHandler application/x-httpd-php";
    $f[] = "    </FilesMatch>";
    $f[] = "    <FilesMatch \"\\.phps\$\">";
    $f[] = "\tSetHandler application/x-httpd-php-source";
    $f[] = "    </FilesMatch>";
    $f[] = "    <IfModule mod_userdir.c>";
    $f[] = "        <Directory /home/*/public_html>";
    $f[] = "            php_admin_value engine Off";
    $f[] = "        </Directory>";
    $f[] = "    </IfModule>";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_mime.c>";
    $f[] = "\tTypesConfig /etc/mime.types";
    $f[] = "\tAddType application/x-compress .Z";
    $f[] = "\tAddType application/x-gzip .gz .tgz";
    $f[] = "\tAddType application/x-bzip2 .bz2";
    $f[] = "\tAddType application/x-httpd-php .php .phtml";
    $f[] = "\tAddType application/x-httpd-php-source .phps";
    $f[] = "\tAddLanguage ca .ca";
    $f[] = "\tAddLanguage cs .cz .cs";
    $f[] = "\tAddLanguage da .dk";
    $f[] = "\tAddLanguage de .de";
    $f[] = "\tAddLanguage el .el";
    $f[] = "\tAddLanguage en .en";
    $f[] = "\tAddLanguage eo .eo";
    $f[] = "\tRemoveType  es";
    $f[] = "\tAddLanguage es .es";
    $f[] = "\tAddLanguage et .et";
    $f[] = "\tAddLanguage fr .fr";
    $f[] = "\tAddLanguage he .he";
    $f[] = "\tAddLanguage hr .hr";
    $f[] = "\tAddLanguage it .it";
    $f[] = "\tAddLanguage ja .ja";
    $f[] = "\tAddLanguage ko .ko";
    $f[] = "\tAddLanguage ltz .ltz";
    $f[] = "\tAddLanguage nl .nl";
    $f[] = "\tAddLanguage nn .nn";
    $f[] = "\tAddLanguage no .no";
    $f[] = "\tAddLanguage pl .po";
    $f[] = "\tAddLanguage pt .pt";
    $f[] = "\tAddLanguage pt-BR .pt-br";
    $f[] = "\tAddLanguage ru .ru";
    $f[] = "\tAddLanguage sv .sv";
    $f[] = "\tRemoveType  tr";
    $f[] = "\tAddLanguage tr .tr";
    $f[] = "\tAddLanguage zh-CN .zh-cn";
    $f[] = "\tAddLanguage zh-TW .zh-tw";
    $f[] = "\tAddCharset us-ascii    .ascii .us-ascii";
    $f[] = "\tAddCharset ISO-8859-1  .iso8859-1  .latin1";
    $f[] = "\tAddCharset ISO-8859-2  .iso8859-2  .latin2 .cen";
    $f[] = "\tAddCharset ISO-8859-3  .iso8859-3  .latin3";
    $f[] = "\tAddCharset ISO-8859-4  .iso8859-4  .latin4";
    $f[] = "\tAddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru";
    $f[] = "\tAddCharset ISO-8859-6  .iso8859-6  .arb .arabic";
    $f[] = "\tAddCharset ISO-8859-7  .iso8859-7  .grk .greek";
    $f[] = "\tAddCharset ISO-8859-8  .iso8859-8  .heb .hebrew";
    $f[] = "\tAddCharset ISO-8859-9  .iso8859-9  .latin5 .trk";
    $f[] = "\tAddCharset ISO-8859-10  .iso8859-10  .latin6";
    $f[] = "\tAddCharset ISO-8859-13  .iso8859-13";
    $f[] = "\tAddCharset ISO-8859-14  .iso8859-14  .latin8";
    $f[] = "\tAddCharset ISO-8859-15  .iso8859-15  .latin9";
    $f[] = "\tAddCharset ISO-8859-16  .iso8859-16  .latin10";
    $f[] = "\tAddCharset ISO-2022-JP .iso2022-jp .jis";
    $f[] = "\tAddCharset ISO-2022-KR .iso2022-kr .kis";
    $f[] = "\tAddCharset ISO-2022-CN .iso2022-cn .cis";
    $f[] = "\tAddCharset Big5        .Big5       .big5 .b5";
    $f[] = "\tAddCharset cn-Big5     .cn-big5";
    $f[] = "\t# For russian, more than one charset is used (depends on client, mostly):";
    $f[] = "\tAddCharset WINDOWS-1251 .cp-1251   .win-1251";
    $f[] = "\tAddCharset CP866       .cp866";
    $f[] = "\tAddCharset KOI8      .koi8";
    $f[] = "\tAddCharset KOI8-E      .koi8-e";
    $f[] = "\tAddCharset KOI8-r      .koi8-r .koi8-ru";
    $f[] = "\tAddCharset KOI8-U      .koi8-u";
    $f[] = "\tAddCharset KOI8-ru     .koi8-uk .ua";
    $f[] = "\tAddCharset ISO-10646-UCS-2 .ucs2";
    $f[] = "\tAddCharset ISO-10646-UCS-4 .ucs4";
    $f[] = "\tAddCharset UTF-7       .utf7";
    $f[] = "\tAddCharset UTF-8       .utf8";
    $f[] = "\tAddCharset UTF-16      .utf16";
    $f[] = "\tAddCharset UTF-16BE    .utf16be";
    $f[] = "\tAddCharset UTF-16LE    .utf16le";
    $f[] = "\tAddCharset UTF-32      .utf32";
    $f[] = "\tAddCharset UTF-32BE    .utf32be";
    $f[] = "\tAddCharset UTF-32LE    .utf32le";
    $f[] = "\tAddCharset euc-cn      .euc-cn";
    $f[] = "\tAddCharset euc-gb      .euc-gb";
    $f[] = "\tAddCharset euc-jp      .euc-jp";
    $f[] = "\tAddCharset euc-kr      .euc-kr";
    $f[] = "\tAddCharset EUC-TW      .euc-tw";
    $f[] = "\tAddCharset gb2312      .gb2312 .gb";
    $f[] = "\tAddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2";
    $f[] = "\tAddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4";
    $f[] = "\tAddCharset shift_jis   .shift_jis .sjis";
    $f[] = "\tAddType text/html .shtml";
    $f[] = "\tAddOutputFilter INCLUDES .shtml";
    $f[] = "</IfModule>";
    $f[] = "Alias /index.php /hotspot.html";
    $f[] = "Alias /index.html /hotspot.html";
    $f[] = "Alias /Microsoft-Server-ActiveSync /hotspot-none.html";
    $f[] = "<Directory \"/usr/share/artica-postfix\">";
    $f[] = "\tDirectorySlash On";
    $f[] = "\tDirectoryIndex hostpot.php";
    $f[] = "\t\t<Files \"hostpot.php\">";
    $f[] = "\t\t\tOrder allow,deny";
    $f[] = "\t\t\tallow from all";
    $f[] = "\t\t</Files>";
    $f[] = "\t\t<Files \"hostpot.html\">";
    $f[] = "\t\t\tOrder allow,deny";
    $f[] = "\t\t\tallow from all";
    $f[] = "\t\t</Files>";
    $f[] = "\t\t<FilesMatch \"!(hostpot)\\.(html|php)\$\">";
    $f[] = "\t\t\tOrder allow,deny";
    $f[] = "\t\t\tdeny from all";
    $f[] = "\t\t</FilesMatch>";
    $f[] = "\tErrorDocument 400 /hotspot.html";
    $f[] = "\tErrorDocument 401 /hotspot.html";
    $f[] = "\tErrorDocument 403 /hotspot.html";
    $f[] = "\tErrorDocument 404 /hotspot.html";
    $f[] = "\tErrorDocument 500 /hotspot.html";
    $f[] = "\tFallbackResource /hotspot.html";
    $f[] = "\tOptions -Indexes";
    $f[] = "\tSSLOptions +StdEnvVars";
    $f[] = "\tAllowOverride All";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tAllow from all";
    $f[] = "</Directory>";
    if ($EnableArticaApachePHPFPM == 1) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Activate PHP5-FPM\n";
        }
        shell_exec("{$php} /usr/share/artica-postfix/exec.initslapd.php --phppfm");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Restarting PHP5-FPM\n";
        }
        shell_exec("/etc/init.d/php5-fpm restart");
        $f[] = "\tAlias /php5.fastcgi /var/run/artica-apache/php5.fastcgi";
        $f[] = "\tAddHandler php-script .php";
        $f[] = "\tFastCGIExternalServer /var/run/artica-apache/php5.fastcgi -socket /var/run/php-fpm.sock -idle-timeout 610";
        $f[] = "\tAction php-script /php5.fastcgi virtual";
        $f[] = "\t<Directory /var/run/artica-apache>";
        $f[] = "\t\t<Files php5.fastcgi>";
        $f[] = "\t\tOrder deny,allow";
        $f[] = "\t\tAllow from all";
        $f[] = "\t\t</Files>";
        $f[] = "\t</Directory>";
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP5-FPM is disabled\n";
        }
    }
    $f[] = "Loglevel debug";
    $f[] = "ErrorLog {$ErrorLog}";
    $f[] = "LogFormat \"%h %l %u %t \\\"%r\\\" %<s %b\" common";
    $f[] = "CustomLog {$LogFilePath} common";
    if ($EnableArticaApachePHPFPM == 0) {
        $array["php5_module"] = "libphp5.so";
    }
    $array["actions_module"] = "mod_actions.so";
    $array["expires_module"] = "mod_expires.so";
    $array["rewrite_module"] = "mod_rewrite.so";
    $array["dir_module"] = "mod_dir.so";
    $array["mime_module"] = "mod_mime.so";
    $array["alias_module"] = "mod_alias.so";
    $array["auth_basic_module"] = "mod_auth_basic.so";
    $array["authz_host_module"] = "mod_authz_host.so";
    $array["autoindex_module"] = "mod_autoindex.so";
    $array["negotiation_module"] = "mod_negotiation.so";
    $array["ssl_module"] = "mod_ssl.so";
    $array["headers_module"] = "mod_headers.so";
    $array["ldap_module"] = "mod_ldap.so";
    if ($Params["DOSEnable"] == 1) {
        $array["evasive20_module"] = "mod_evasive20.so";
    }
    if ($EnableArticaApachePHPFPM == 1) {
        $array["fastcgi_module"] = "mod_fastcgi.so";
    }
    if (is_dir("/etc/apache2")) {
        if (!is_file("/etc/apache2/mime.types")) {
            if ($apache_LOCATE_MIME_TYPES != "/etc/apache2/mime.types") {
                @copy($apache_LOCATE_MIME_TYPES, "/etc/apache2/mime.types");
            }
        }
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Mime types path.......: {$apache_LOCATE_MIME_TYPES}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Modules path..........: {$APACHE_MODULES_PATH}\n";
    }
    while (list($module, $lib) = each($array)) {
        if (is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} include module \"{$module}\"\n";
            }
            $f[] = "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}";
        } else {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} skip module \"{$module}\"\n";
            }
        }
    }
    build_error_page();
    @file_put_contents("/etc/artica-postfix/hotspot-httpd.conf", @implode("\n", $f) . "\n");
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} /etc/artica-postfix/hotspot-httpd.conf done\n";
    }
}
Example #4
0
function apache_config()
{
    $sock = new sockets();
    $unix = new unix();
    $EnablePHPFPM = 0;
    @mkdir("/var/run/apache2", 0755, true);
    @mkdir("/var/run/artica-apache", 0755, true);
    @mkdir("/var/log/lighttpd", 0755, true);
    $APACHE_SRC_ACCOUNT = $unix->APACHE_SRC_ACCOUNT();
    $APACHE_SRC_GROUP = $unix->APACHE_SRC_GROUP();
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    $pydio_installed = false;
    if (is_file(" /etc/php5/cli/conf.d/ming.ini")) {
        @unlink(" /etc/php5/cli/conf.d/ming.ini");
    }
    @unlink("/var/log/lighttpd/apache-error.log");
    @touch("/var/log/lighttpd/apache-error.log");
    @chmod("/var/log/lighttpd/apache-error.log", 0755);
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/log/lighttpd/*");
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/usr/share/artica-postfix/ressources/logs/*");
    if (is_dir("/usr/share/artica-postfix/pydio")) {
        $pydio_installed = true;
    }
    $ArticaHttpsPort = 9000;
    $NoLDAPInLighttpdd = 0;
    $ArticaHttpUseSSL = 1;
    $ArticaHttpsPort = $sock->GET_INFO("ArticaHttpsPort");
    $ArticaHttpUseSSL = $sock->GET_INFO("ArticaHttpUseSSL");
    if (!is_numeric($ArticaHttpUseSSL)) {
        $ArticaHttpUseSSL = 1;
    }
    if (!is_numeric($ArticaHttpsPort)) {
        $ArticaHttpsPort = "9000";
    }
    $LighttpdArticaListenIP = $sock->GET_INFO("LighttpdArticaListenIP");
    $phpfpm = $unix->APACHE_LOCATE_PHP_FPM();
    $php = $unix->LOCATE_PHP5_BIN();
    $EnableArticaApachePHPFPM = $sock->GET_INFO("EnableArticaApachePHPFPM");
    if (!is_numeric($EnableArticaApachePHPFPM)) {
        $EnableArticaApachePHPFPM = 0;
    }
    if (!is_file($phpfpm)) {
        $EnableArticaApachePHPFPM = 0;
    }
    $EnablePHPFPM = intval($sock->GET_INFO("EnablePHPFPM"));
    if (!is_numeric($EnablePHPFPM)) {
        $EnablePHPFPM = 0;
    }
    if ($EnablePHPFPM == 0) {
        $EnableArticaApachePHPFPM = 0;
    }
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/run/artica-apache");
    $apache_LOCATE_MIME_TYPES = $unix->apache_LOCATE_MIME_TYPES();
    if ($EnableArticaApachePHPFPM == 1) {
        if (!is_file("{$APACHE_MODULES_PATH}/mod_fastcgi.so")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} mod_fastcgi.so is required to use PHP5-FPM\n";
            }
            $EnableArticaApachePHPFPM = 0;
        }
    }
    if ($APACHE_SRC_ACCOUNT == null) {
        $APACHE_SRC_ACCOUNT = "www-data";
        $APACHE_SRC_GROUP = "www-data";
        $unix->CreateUnixUser($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "Apache username");
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Run as {$APACHE_SRC_ACCOUNT}:{$APACHE_SRC_GROUP}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP-FPM: {$EnablePHPFPM}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP-FPM Enabled: {$EnableArticaApachePHPFPM}\n";
    }
    $f[] = "LockFile /var/run/apache2/artica-accept.lock";
    $f[] = "PidFile /var/run/artica-apache/apache.pid";
    $f[] = "DocumentRoot /usr/share/artica-postfix";
    $open_basedir[] = "/usr/share/artica-postfix";
    $open_basedir[] = "/etc/artica-postfix";
    $open_basedir[] = "/etc/artica-postfix/settings";
    $open_basedir[] = "/var/log";
    $open_basedir[] = "/var/run/mysqld";
    $open_basedir[] = "/usr/share/php";
    $open_basedir[] = "/usr/share/php5";
    $open_basedir[] = "/var/lib/php5";
    $open_basedir[] = "/var/lighttpd/upload";
    $open_basedir[] = "/usr/share/artica-postfix/ressources";
    $open_basedir[] = "/usr/share/artica-postfix/framework";
    $open_basedir[] = "/etc/ssl/certs/mysql-client-download";
    $open_basedir[] = "/var/run";
    $open_basedir[] = "/bin";
    $open_basedir[] = "/tmp";
    $open_basedir[] = "/usr/sbin";
    $open_basedir[] = "/home";
    //$f[]="php_value open_basedir \"".@implode(":", $open_basedir)."\"";
    //$f[]="php_value output_buffering Off";
    //$f[]="php_flag magic_quotes_gpc Off";
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Listen Port: {$ArticaHttpsPort}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Listen IP: {$LighttpdArticaListenIP}\n";
    }
    if ($LighttpdArticaListenIP != null) {
        $unix = new unix();
        $IPS = $unix->NETWORK_ALL_INTERFACES(true);
        if (!isset($IPS[$LighttpdArticaListenIP])) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} ERROR! Listen IP: {$LighttpdArticaListenIP} -> FALSE !!\n";
            }
            $LighttpdArticaListenIP = null;
        }
    }
    if ($LighttpdArticaListenIP == null) {
        $LighttpdArticaListenIP = "*";
    }
    if ($LighttpdArticaListenIP != null) {
        $ArticaHttpsPort = "{$LighttpdArticaListenIP}:{$ArticaHttpsPort}";
    }
    $f[] = "Listen {$ArticaHttpsPort}";
    $MaxClients = 20;
    $f[] = "<IfModule mpm_prefork_module>";
    $f[] = "\tStartServers 1";
    $f[] = "\tMinSpareServers 2";
    $f[] = "\tMaxSpareServers 3";
    $f[] = "\tMaxClients {$MaxClients}";
    $f[] = "\tServerLimit {$MaxClients}";
    $f[] = "\tMaxRequestsPerChild 100";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_worker_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_event_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "AccessFileName .htaccess";
    $f[] = "<Files ~ \"^\\.ht\">";
    //$f[]="\tOrder allow,deny";
    //$f[]="\tDeny from all";
    //$f[]="\tSatisfy all";
    $f[] = "</Files>";
    $f[] = "DefaultType text/plain";
    $f[] = "HostnameLookups Off";
    $f[] = "User\t\t\t\t   {$APACHE_SRC_ACCOUNT}";
    $f[] = "Group\t\t\t\t   {$APACHE_SRC_GROUP}";
    $f[] = "Timeout              300";
    $f[] = "KeepAlive            Off";
    $f[] = "KeepAliveTimeout     15";
    $f[] = "StartServers         1";
    $f[] = "MaxClients           {$MaxClients}";
    $f[] = "MinSpareServers      2";
    $f[] = "MaxSpareServers      3";
    $f[] = "MaxRequestsPerChild  100";
    $f[] = "MaxKeepAliveRequests 100";
    $ServerName = $unix->hostname_g();
    if ($ServerName == null) {
        $ServerName = "localhost.localdomain";
    }
    $f[] = "ServerName {$ServerName}";
    if ($ArticaHttpUseSSL == 1) {
        $mknod = $unix->find_program("mknod");
        shell_exec("{$mknod} /dev/random c 1 9 >/dev/null 2>&1");
        $f[] = "<IfModule mod_ssl.c>";
        $f[] = "\tListen {$ArticaHttpsPort}";
        $f[] = "\tSSLRandomSeed connect builtin";
        $f[] = "\tSSLRandomSeed connect file:/dev/urandom 256";
        $f[] = "\tAddType application/x-x509-ca-cert .crt";
        $f[] = "\tAddType application/x-pkcs7-crl    .crl";
        $f[] = "\tSSLPassPhraseDialog  builtin";
        $f[] = "\tSSLSessionCache        shmcb:/var/run/apache2/ssl_scache-artica(512000)";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLCipherSuite HIGH:MEDIUM:!ADH";
        $f[] = "\tSSLProtocol all -SSLv2";
        $f[] = "</IfModule>";
        $f[] = "";
        $f[] = "<IfModule mod_gnutls.c>";
        $f[] = "\tListen {$ArticaHttpsPort}";
        $f[] = "</IfModule>";
    }
    if (!is_file("/etc/ssl/certs/apache/server.crt")) {
        shell_exec("/usr/share/artica-postfix/bin/artica-install --apache-ssl-cert");
    }
    if ($ArticaHttpUseSSL == 1) {
        $f[] = "SSLEngine on";
        $f[] = "AcceptMutex flock";
        $f[] = "SSLCertificateFile \"/etc/ssl/certs/apache/server.crt\"";
        $f[] = "SSLCertificateKeyFile \"/etc/ssl/certs/apache/server.key\"";
        $f[] = "SSLVerifyClient none";
        $f[] = "ServerSignature Off";
        $f[] = "SSLRandomSeed startup file:/dev/urandom  256";
        $f[] = "SSLRandomSeed connect builtin";
    }
    $f[] = "AddType application/x-httpd-php .php";
    if ($EnableArticaApachePHPFPM == 0) {
        $f[] = "php_value error_log \"/var/log/php.log\"";
    }
    @chown("/var/log/php.log", $APACHE_SRC_ACCOUNT);
    $f[] = "<IfModule mod_fcgid.c>";
    $f[] = "\tPHP_Fix_Pathinfo_Enable 1";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_php5.c>";
    $f[] = "    <FilesMatch \"\\.ph(p3?|tml)\$\">";
    $f[] = "\tSetHandler application/x-httpd-php";
    $f[] = "    </FilesMatch>";
    $f[] = "    <FilesMatch \"\\.phps\$\">";
    $f[] = "\tSetHandler application/x-httpd-php-source";
    $f[] = "    </FilesMatch>";
    $f[] = "    <IfModule mod_userdir.c>";
    $f[] = "        <Directory /home/*/public_html>";
    $f[] = "            php_admin_value engine Off";
    $f[] = "        </Directory>";
    $f[] = "    </IfModule>";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_mime.c>";
    $f[] = "\tTypesConfig /etc/mime.types";
    $f[] = "\tAddType application/x-compress .Z";
    $f[] = "\tAddType application/x-gzip .gz .tgz";
    $f[] = "\tAddType application/x-bzip2 .bz2";
    $f[] = "\tAddType application/x-httpd-php .php .phtml";
    $f[] = "\tAddType application/x-httpd-php-source .phps";
    $f[] = "\tAddType application/octet-stream .acl";
    $f[] = "\tAddLanguage ca .ca";
    $f[] = "\tAddLanguage cs .cz .cs";
    $f[] = "\tAddLanguage da .dk";
    $f[] = "\tAddLanguage de .de";
    $f[] = "\tAddLanguage el .el";
    $f[] = "\tAddLanguage en .en";
    $f[] = "\tAddLanguage eo .eo";
    $f[] = "\tRemoveType  es";
    $f[] = "\tAddLanguage es .es";
    $f[] = "\tAddLanguage et .et";
    $f[] = "\tAddLanguage fr .fr";
    $f[] = "\tAddLanguage he .he";
    $f[] = "\tAddLanguage hr .hr";
    $f[] = "\tAddLanguage it .it";
    $f[] = "\tAddLanguage ja .ja";
    $f[] = "\tAddLanguage ko .ko";
    $f[] = "\tAddLanguage ltz .ltz";
    $f[] = "\tAddLanguage nl .nl";
    $f[] = "\tAddLanguage nn .nn";
    $f[] = "\tAddLanguage no .no";
    $f[] = "\tAddLanguage pl .po";
    $f[] = "\tAddLanguage pt .pt";
    $f[] = "\tAddLanguage pt-BR .pt-br";
    $f[] = "\tAddLanguage ru .ru";
    $f[] = "\tAddLanguage sv .sv";
    $f[] = "\tRemoveType  tr";
    $f[] = "\tAddLanguage tr .tr";
    $f[] = "\tAddLanguage zh-CN .zh-cn";
    $f[] = "\tAddLanguage zh-TW .zh-tw";
    $f[] = "\tAddCharset us-ascii    .ascii .us-ascii";
    $f[] = "\tAddCharset ISO-8859-1  .iso8859-1  .latin1";
    $f[] = "\tAddCharset ISO-8859-2  .iso8859-2  .latin2 .cen";
    $f[] = "\tAddCharset ISO-8859-3  .iso8859-3  .latin3";
    $f[] = "\tAddCharset ISO-8859-4  .iso8859-4  .latin4";
    $f[] = "\tAddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru";
    $f[] = "\tAddCharset ISO-8859-6  .iso8859-6  .arb .arabic";
    $f[] = "\tAddCharset ISO-8859-7  .iso8859-7  .grk .greek";
    $f[] = "\tAddCharset ISO-8859-8  .iso8859-8  .heb .hebrew";
    $f[] = "\tAddCharset ISO-8859-9  .iso8859-9  .latin5 .trk";
    $f[] = "\tAddCharset ISO-8859-10  .iso8859-10  .latin6";
    $f[] = "\tAddCharset ISO-8859-13  .iso8859-13";
    $f[] = "\tAddCharset ISO-8859-14  .iso8859-14  .latin8";
    $f[] = "\tAddCharset ISO-8859-15  .iso8859-15  .latin9";
    $f[] = "\tAddCharset ISO-8859-16  .iso8859-16  .latin10";
    $f[] = "\tAddCharset ISO-2022-JP .iso2022-jp .jis";
    $f[] = "\tAddCharset ISO-2022-KR .iso2022-kr .kis";
    $f[] = "\tAddCharset ISO-2022-CN .iso2022-cn .cis";
    $f[] = "\tAddCharset Big5        .Big5       .big5 .b5";
    $f[] = "\tAddCharset cn-Big5     .cn-big5";
    $f[] = "\t# For russian, more than one charset is used (depends on client, mostly):";
    $f[] = "\tAddCharset WINDOWS-1251 .cp-1251   .win-1251";
    $f[] = "\tAddCharset CP866       .cp866";
    $f[] = "\tAddCharset KOI8      .koi8";
    $f[] = "\tAddCharset KOI8-E      .koi8-e";
    $f[] = "\tAddCharset KOI8-r      .koi8-r .koi8-ru";
    $f[] = "\tAddCharset KOI8-U      .koi8-u";
    $f[] = "\tAddCharset KOI8-ru     .koi8-uk .ua";
    $f[] = "\tAddCharset ISO-10646-UCS-2 .ucs2";
    $f[] = "\tAddCharset ISO-10646-UCS-4 .ucs4";
    $f[] = "\tAddCharset UTF-7       .utf7";
    $f[] = "\tAddCharset UTF-8       .utf8";
    $f[] = "\tAddCharset UTF-16      .utf16";
    $f[] = "\tAddCharset UTF-16BE    .utf16be";
    $f[] = "\tAddCharset UTF-16LE    .utf16le";
    $f[] = "\tAddCharset UTF-32      .utf32";
    $f[] = "\tAddCharset UTF-32BE    .utf32be";
    $f[] = "\tAddCharset UTF-32LE    .utf32le";
    $f[] = "\tAddCharset euc-cn      .euc-cn";
    $f[] = "\tAddCharset euc-gb      .euc-gb";
    $f[] = "\tAddCharset euc-jp      .euc-jp";
    $f[] = "\tAddCharset euc-kr      .euc-kr";
    $f[] = "\tAddCharset EUC-TW      .euc-tw";
    $f[] = "\tAddCharset gb2312      .gb2312 .gb";
    $f[] = "\tAddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2";
    $f[] = "\tAddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4";
    $f[] = "\tAddCharset shift_jis   .shift_jis .sjis";
    $f[] = "\tAddType text/html .shtml";
    $f[] = "\tAddOutputFilter INCLUDES .shtml";
    $f[] = "</IfModule>";
    $f[] = apache_nagios_config();
    $f[] = apache_phpldapadmin();
    $squid = $unix->LOCATE_SQUID_BIN();
    if (is_file($squid)) {
        $f[] = "Alias /proxy /usr/share/artica-postfix/squid.access.log.php";
        $f[] = "Alias /parent /usr/share/artica-postfix/squid.access.log.php";
        $f[] = "Alias /webfilter /usr/share/artica-postfix/squid.access.webfilter.log.php";
        $f[] = "Alias /meta-updates /home/artica-meta";
        $f[] = "Alias /categories /usr/share/artica-postfix/public.categories.personnal.php";
    }
    $f[] = "<Directory \"/home/artica-meta\">";
    $f[] = "\tOptions Indexes FollowSymLinks";
    $f[] = "</Directory>";
    $f[] = "<Directory \"/usr/share/artica-postfix\">";
    $f[] = "\tDirectoryIndex logon.php";
    $f[] = "\tSSLOptions +StdEnvVars";
    $f[] = "\tOptions Indexes FollowSymLinks";
    $f[] = "\tAllowOverride None";
    //$f[]="\tOrder allow,deny";
    //$f[]="\tAllow from all";
    $f[] = "</Directory>";
    if (is_file($unix->LOCATE_SQUID_BIN())) {
        $ArticaProxyStatisticsBackupFolder = $sock->GET_INFO("ArticaProxyStatisticsBackupFolder");
        if ($ArticaProxyStatisticsBackupFolder == null) {
            $ArticaProxyStatisticsBackupFolder = "/home/artica/squid/backup-statistics";
        }
        $ArticaProxyStatisticsOpenWeb = intval($sock->GET_INFO("ArticaProxyStatisticsOpenWeb"));
        if ($ArticaProxyStatisticsOpenWeb == 1) {
            $f[] = "Alias /backup-stats  \"{$ArticaProxyStatisticsBackupFolder}\"";
            $f[] = "<Directory \"{$ArticaProxyStatisticsBackupFolder}\">";
            $f[] = "\tSSLOptions +StdEnvVars";
            $f[] = "\tOptions Indexes FollowSymLinks";
            $f[] = "\tAllowOverride All";
            //$f[]="\tOrder allow,deny";
            //$f[]="\tAllow from all";
            $f[] = "</Directory>";
        }
    }
    if ($pydio_installed) {
        $directories[] = "/home/pydio/plugins/auth.serial";
        $directories[] = "/home/pydio/plugins/conf.serial";
        $directories[] = "/home/pydio/plugins";
        $directories[] = "/home/pydio/cache";
        $directories[] = "/home/pydio/files";
        $directories[] = "/home/pydio/logs";
        $directories[] = "/home/pydio/personal";
        $directories[] = "/home/pydio/public";
        $directories[] = "/home/pydio/tmp";
        while (list($index, $dir) = each($directories)) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} permissions on {$dir}\n";
            }
            @mkdir($dir, 0755, true);
            $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, $dir);
        }
        $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/home/pydio/cache");
        $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/home/pydio/plugins");
        $f[] = "Alias /explorer  \"/usr/share/artica-postfix/pyio\"";
        $f[] = "<Directory \"/usr/share/artica-postfix/pyio\">";
        $f[] = "\tDirectoryIndex index.php";
        $f[] = "\tSSLOptions +StdEnvVars";
        $f[] = "\tOptions Indexes FollowSymLinks";
        $f[] = "\tAllowOverride All";
        //$f[]="\tOrder allow,deny";
        //$f[]="\tAllow from all";
        $f[] = "</Directory>";
    }
    if ($EnableArticaApachePHPFPM == 1) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Activate PHP5-FPM\n";
        }
        shell_exec("{$php} /usr/share/artica-postfix/exec.initslapd.php --phppfm");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Restarting PHP5-FPM\n";
        }
        shell_exec("/etc/init.d/php5-fpm restart");
        $f[] = "\tAlias /php5.fastcgi /var/run/artica-apache/php5.fastcgi";
        $f[] = "\tAddHandler php-script .php";
        $f[] = "\tFastCGIExternalServer /var/run/artica-apache/php5.fastcgi -socket /var/run/php-fpm.sock -idle-timeout 610";
        $f[] = "\tAction php-script /php5.fastcgi virtual";
        $f[] = "\t<Directory /var/run/artica-apache>";
        $f[] = "\t\t<Files php5.fastcgi>";
        //$f[]="\t\tOrder deny,allow";
        //$f[]="\t\tAllow from all";
        $f[] = "\t\t</Files>";
        $f[] = "\t</Directory>";
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP5-FPM is disabled\n";
        }
    }
    $f[] = "Loglevel info";
    $f[] = "ErrorLog /var/log/lighttpd/apache-error.log";
    $f[] = "LogFormat \"%h %l %u %t \\\"%r\\\" %<s %b\" common";
    $f[] = "CustomLog /var/log/lighttpd/apache-access.log common";
    if ($EnableArticaApachePHPFPM == 0) {
        $array["php5_module"] = "libphp5.so";
    }
    $array["actions_module"] = "mod_actions.so";
    $array["expires_module"] = "mod_expires.so";
    $array["rewrite_module"] = "mod_rewrite.so";
    $array["dir_module"] = "mod_dir.so";
    $array["mime_module"] = "mod_mime.so";
    $array["alias_module"] = "mod_alias.so";
    $array["auth_basic_module"] = "mod_auth_basic.so";
    $array["authn_file_module"] = "mod_authn_file.so";
    //$array["authz_host_module"]="mod_authz_host.so";
    $array["autoindex_module"] = "mod_autoindex.so";
    $array["negotiation_module"] = "mod_negotiation.so";
    $array["ssl_module"] = "mod_ssl.so";
    $array["headers_module"] = "mod_headers.so";
    $array["ldap_module"] = "mod_ldap.so";
    if ($EnableArticaApachePHPFPM == 1) {
        $array["fastcgi_module"] = "mod_fastcgi.so";
    }
    if (is_dir("/etc/apache2")) {
        if (!is_file("/etc/apache2/mime.types")) {
            if ($apache_LOCATE_MIME_TYPES != "/etc/apache2/mime.types") {
                @copy($apache_LOCATE_MIME_TYPES, "/etc/apache2/mime.types");
            }
        }
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Mime types path.......: {$apache_LOCATE_MIME_TYPES}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Modules path..........: {$APACHE_MODULES_PATH}\n";
    }
    while (list($module, $lib) = each($array)) {
        if (is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} include module \"{$module}\"\n";
            }
            $f[] = "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}";
        } else {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} skip module \"{$module}\"\n";
            }
        }
    }
    $f[] = apache_phpmyadmin();
    @file_put_contents("/etc/artica-postfix/httpd.conf", @implode("\n", $f));
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} /etc/artica-postfix/httpd.conf done\n";
    }
}
Example #5
0
function apache_config()
{
    $sock = new sockets();
    $unix = new unix();
    $EnablePHPFPM = 0;
    @mkdir("/var/run/squid", 0755, true);
    @mkdir("/var/run/squid", 0755, true);
    $APACHE_SRC_ACCOUNT = "squid";
    $APACHE_SRC_GROUP = "squid";
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    if (!isset($GLOBALS["HyperCacheStoragePath"])) {
        $sock = new sockets();
        $GLOBALS["HyperCacheStoragePath"] = $sock->GET_INFO("HyperCacheStoragePath");
        if ($GLOBALS["HyperCacheStoragePath"] == null) {
            $GLOBALS["HyperCacheStoragePath"] = "/home/artica/proxy-cache";
        }
    }
    $SquidEnforceRules = intval($sock->GET_INFO("SquidEnforceRules"));
    $HyperCacheHTTPListenPort = $sock->GET_INFO("HyperCacheHTTPListenPort");
    $HyperCacheHTTPListenPortSSL = $sock->GET_INFO("HyperCacheHTTPListenPortSSL");
    $HyperCacheHTTPListenPortSSLEnabled = intval($sock->GET_INFO("HyperCacheHTTPListenPortSSLEnabled"));
    if (!is_numeric($HyperCacheHTTPListenPort)) {
        $HyperCacheHTTPListenPort = 8700;
    }
    if (!is_numeric($HyperCacheHTTPListenPortSSL)) {
        $HyperCacheHTTPListenPortSSL = 8900;
    }
    $HyperCacheListenAddr = $sock->GET_INFO("HyperCacheListenAddr");
    $unix = new unix();
    $NETWORK_ALL_INTERFACES = $unix->NETWORK_ALL_INTERFACES();
    unset($NETWORK_ALL_INTERFACES["lo"]);
    if ($HyperCacheListenAddr == null) {
        $HyperCacheListenAddr = $unix->NETWORK_DEFAULT_LISTEN_ADDR();
        $sock->SET_INFO("HyperCacheListenAddr", $HyperCacheListenAddr);
    }
    if ($unix->NETWORK_IS_LISTEN_ADDR_EXISTS($HyperCacheListenAddr)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} {$HyperCacheListenAddr} doesn't exists...\n";
        }
        $HyperCacheListenAddr = $unix->NETWORK_DEFAULT_LISTEN_ADDR();
        $sock->SET_INFO("HyperCacheListenAddr", $HyperCacheListenAddr);
    }
    $ipaddr = $HyperCacheListenAddr;
    $phpfpm = $unix->APACHE_LOCATE_PHP_FPM();
    $php = $unix->LOCATE_PHP5_BIN();
    $EnableArticaApachePHPFPM = $sock->GET_INFO("EnableArticaApachePHPFPM");
    if (!is_numeric($EnableArticaApachePHPFPM)) {
        $EnableArticaApachePHPFPM = 0;
    }
    if (!is_file($phpfpm)) {
        $EnableArticaApachePHPFPM = 0;
    }
    $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, "/var/run/squid");
    $apache_LOCATE_MIME_TYPES = $unix->apache_LOCATE_MIME_TYPES();
    if ($EnableArticaApachePHPFPM == 1) {
        if (!is_file("{$APACHE_MODULES_PATH}/mod_fastcgi.so")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} mod_fastcgi.so is required to use PHP5-FPM\n";
            }
            $EnableArticaApachePHPFPM = 0;
        }
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Listen address: {$ipaddr}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Run as {$APACHE_SRC_ACCOUNT}:{$APACHE_SRC_GROUP}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} HTTP Port: {$HyperCacheHTTPListenPort} SSL Port: {$HyperCacheHTTPListenPortSSL}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP-FPM: {$EnablePHPFPM}\n";
    }
    $q = new mysql_squid_builder();
    $nice = EXEC_NICE();
    $sql = "SELECT * FROM artica_caches_mirror WHERE enabled=1 AND `ToDelete`=0";
    $results = $q->QUERY_SQL($sql);
    $HyperCache = new HyperCache();
    while ($ligne = mysql_fetch_assoc($results)) {
        $t = time();
        $sitename = $ligne["sitename"];
        $sitename_path = $HyperCache->HyperCacheUriToHostname($sitename);
        $workingdir = $GLOBALS["HyperCacheStoragePath"] . "/mirror/{$sitename_path}";
        if (!is_dir($workingdir)) {
            @mkdir($workingdir, 0755, true);
        }
        @chown("{$GLOBALS["HyperCacheStoragePath"]}/mirror", "squid");
        @chgrp("{$GLOBALS["HyperCacheStoragePath"]}/mirror", "squid");
        @chown("{$GLOBALS["HyperCacheStoragePath"]}/mirror/{$sitename_path}", "squid");
        @chgrp("{$GLOBALS["HyperCacheStoragePath"]}/mirror/{$sitename_path}", "squid");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} build folder for mirrored {$sitename_path}\n";
        }
        $mirrors[] = "";
        $mirrors_aliases[] = "alias /{$sitename_path} {$workingdir}";
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: alias /{$sitename_path} {$workingdir}\n";
        }
        $mirrors[] = "";
        $mirrors[] = "\t<Directory \"{$workingdir}\">";
        $mirrors[] = "\t\tDirectorySlash On";
        $mirrors[] = "\t\tDirectoryIndex index.html index-2.html";
        $mirrors[] = "\t\tOptions All";
        $mirrors[] = "\t\tOrder deny,allow";
        $mirrors[] = "\t\tAllow from all";
        $mirrors[] = "\t</Directory>";
        $mirrors[] = "";
    }
    $mirrors_conf = @implode("\n", $mirrors);
    $mirrors_aliases_conf = @implode("\n", $mirrors_aliases);
    $f[] = "LockFile /var/run/squid/HyperCacheWebAccept.lock";
    $f[] = "PidFile /var/run/squid/HyperCacheWeb.pid";
    $f[] = "AcceptMutex flock";
    $f[] = "DocumentRoot /usr/share/artica-postfix";
    $f[] = "DirectoryIndex squidcache.php";
    $f[] = "NameVirtualHost {$ipaddr}:{$HyperCacheHTTPListenPort}";
    $f[] = $mirrors_aliases_conf;
    if ($HyperCacheHTTPListenPortSSLEnabled == 1) {
        $f[] = "SSLRandomSeed startup file:/dev/urandom  256";
        $f[] = "SSLRandomSeed connect builtin";
        $f[] = "SSLSessionCache        shmcb:/var/run/squid/HyperCacheWebSSL(512000)";
        $f[] = "SSLSessionCacheTimeout  300";
        $f[] = "SSLSessionCacheTimeout  300";
        $f[] = "NameVirtualHost {$ipaddr}:{$HyperCacheHTTPListenPortSSL}";
        $f[] = "Listen {$ipaddr}:{$HyperCacheHTTPListenPortSSL}";
    }
    $f[] = "Listen {$ipaddr}:{$HyperCacheHTTPListenPort}";
    $f[] = "<VirtualHost {$ipaddr}:{$HyperCacheHTTPListenPort}>";
    $f[] = "\tServerName {$ipaddr}";
    $f[] = "\tLoglevel debug";
    $f[] = "\tLoglevel debug";
    $f[] = "\tErrorLog /var/log/squid/HyperCache-error.log";
    $f[] = "\tLogFormat \"%h %l %u %t \\\"%r\\\" %<s %b\" common";
    $f[] = "\tCustomLog /var/log/squid/HyperCache-access.log common";
    $f[] = "\tErrorDocument 400 /squidcache.php";
    $f[] = "\tErrorDocument 401 /squidcache.php";
    $f[] = "\tErrorDocument 403 /squidcache.php";
    $f[] = "\tErrorDocument 404 /squidcache.php";
    $f[] = "\tErrorDocument 500 /squidcache.php";
    //$f[]="\tFallbackResource /squidcache.php";
    $f[] = $mirrors_aliases_conf;
    $f[] = $mirrors_conf;
    $f[] = "</VirtualHost>";
    if ($HyperCacheHTTPListenPortSSLEnabled == 1) {
        $squid = new squidbee();
        $data = $squid->SaveCertificate($ArticaSplashHotSpotCertificate, false, true, false);
        if (preg_match("#ssl_certificate\\s+(.+?);\\s+ssl_certificate_key\\s+(.+?);#is", $data, $re)) {
            $cert = $re[1];
            $key = $re[2];
        }
        $f[] = "<VirtualHost {$ipaddr}:{$HyperCacheHTTPListenPortSSL}>";
        $f[] = "\tFallbackResource /squidcache.php";
        $f[] = "\tServerName {$ipaddr}";
        $f[] = "\tDocumentRoot /usr/share/artica-postfix";
        $f[] = "\tSSLEngine on";
        $f[] = "\tSSLCertificateFile \"{$cert}\"";
        $f[] = "\tSSLCertificateKeyFile \"{$key}\"";
        $f[] = "\tSSLVerifyClient none";
        $f[] = "\tServerSignature Off";
        $f[] = $mirrors_conf;
        $f[] = "</VirtualHost>";
    }
    $f[] = "<IfModule mpm_prefork_module>";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_worker_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mpm_event_module>";
    $f[] = "\tMinSpareThreads      25";
    $f[] = "\tMaxSpareThreads      75 ";
    $f[] = "\tThreadLimit          64";
    $f[] = "\tThreadsPerChild      25";
    $f[] = "</IfModule>";
    $f[] = "AccessFileName .htaccess";
    $f[] = "<Files ~ \"^\\.ht\">";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tDeny from all";
    $f[] = "\tSatisfy all";
    $f[] = "</Files>";
    $f[] = "DefaultType text/plain";
    $f[] = "HostnameLookups Off";
    $f[] = "User\t\t\t\t   {$APACHE_SRC_ACCOUNT}";
    $f[] = "Group\t\t\t\t   {$APACHE_SRC_GROUP}";
    $f[] = "Timeout              300";
    $f[] = "KeepAlive            Off";
    $f[] = "KeepAliveTimeout     15";
    $f[] = "StartServers         1";
    $f[] = "MaxClients           50";
    $f[] = "MinSpareServers      2";
    $f[] = "MaxSpareServers      5";
    $f[] = "MaxRequestsPerChild  5000";
    $f[] = "MaxKeepAliveRequests 100";
    $f[] = "ServerName " . $unix->hostname_g();
    if ($HyperCacheHTTPListenPortSSLEnabled == 1) {
        $f[] = "<IfModule mod_ssl.c>";
        $f[] = "\tSSLRandomSeed connect builtin";
        $f[] = "\tSSLRandomSeed connect file:/dev/urandom 512";
        $f[] = "\tAddType application/x-x509-ca-cert .crt";
        $f[] = "\tAddType application/x-pkcs7-crl    .crl";
        $f[] = "\tSSLPassPhraseDialog  builtin";
        $f[] = "\tSSLSessionCache        shmcb:/var/run/squid/ssl_scache-articahtp(512000)";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLMutex  sem";
        $f[] = "\tSSLCipherSuite HIGH:MEDIUM:!ADH";
        $f[] = "\tSSLProtocol all -SSLv2";
        $f[] = "</IfModule>";
        $f[] = "";
    }
    // $f[]="\tFallbackResource /squidcache.php";
    $f[] = "AddType application/x-httpd-php .php";
    $f[] = "php_value error_log \"/var/log/lighttpd/apache-hotspot-php.log\"";
    $f[] = "<IfModule mod_fcgid.c>";
    $f[] = "\tPHP_Fix_Pathinfo_Enable 1";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_php5.c>";
    $f[] = "    <FilesMatch \"\\.ph(p3?|tml)\$\">";
    $f[] = "\tSetHandler application/x-httpd-php";
    $f[] = "    </FilesMatch>";
    $f[] = "    <FilesMatch \"\\.phps\$\">";
    $f[] = "\tSetHandler application/x-httpd-php-source";
    $f[] = "    </FilesMatch>";
    $f[] = "    <IfModule mod_userdir.c>";
    $f[] = "        <Directory /home/*/public_html>";
    $f[] = "            php_admin_value engine Off";
    $f[] = "        </Directory>";
    $f[] = "    </IfModule>";
    $f[] = "</IfModule>";
    $f[] = "<IfModule mod_mime.c>";
    $f[] = "\tTypesConfig /etc/mime.types";
    $f[] = "\tAddType application/x-compress .Z";
    $f[] = "\tAddType application/x-gzip .gz .tgz";
    $f[] = "\tAddType application/x-bzip2 .bz2";
    $f[] = "\tAddType application/x-httpd-php .php .phtml";
    $f[] = "\tAddType application/x-httpd-php-source .phps";
    $f[] = "\tAddLanguage ca .ca";
    $f[] = "\tAddLanguage cs .cz .cs";
    $f[] = "\tAddLanguage da .dk";
    $f[] = "\tAddLanguage de .de";
    $f[] = "\tAddLanguage el .el";
    $f[] = "\tAddLanguage en .en";
    $f[] = "\tAddLanguage eo .eo";
    $f[] = "\tRemoveType  es";
    $f[] = "\tAddLanguage es .es";
    $f[] = "\tAddLanguage et .et";
    $f[] = "\tAddLanguage fr .fr";
    $f[] = "\tAddLanguage he .he";
    $f[] = "\tAddLanguage hr .hr";
    $f[] = "\tAddLanguage it .it";
    $f[] = "\tAddLanguage ja .ja";
    $f[] = "\tAddLanguage ko .ko";
    $f[] = "\tAddLanguage ltz .ltz";
    $f[] = "\tAddLanguage nl .nl";
    $f[] = "\tAddLanguage nn .nn";
    $f[] = "\tAddLanguage no .no";
    $f[] = "\tAddLanguage pl .po";
    $f[] = "\tAddLanguage pt .pt";
    $f[] = "\tAddLanguage pt-BR .pt-br";
    $f[] = "\tAddLanguage ru .ru";
    $f[] = "\tAddLanguage sv .sv";
    $f[] = "\tRemoveType  tr";
    $f[] = "\tAddLanguage tr .tr";
    $f[] = "\tAddLanguage zh-CN .zh-cn";
    $f[] = "\tAddLanguage zh-TW .zh-tw";
    $f[] = "\tAddCharset us-ascii    .ascii .us-ascii";
    $f[] = "\tAddCharset ISO-8859-1  .iso8859-1  .latin1";
    $f[] = "\tAddCharset ISO-8859-2  .iso8859-2  .latin2 .cen";
    $f[] = "\tAddCharset ISO-8859-3  .iso8859-3  .latin3";
    $f[] = "\tAddCharset ISO-8859-4  .iso8859-4  .latin4";
    $f[] = "\tAddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru";
    $f[] = "\tAddCharset ISO-8859-6  .iso8859-6  .arb .arabic";
    $f[] = "\tAddCharset ISO-8859-7  .iso8859-7  .grk .greek";
    $f[] = "\tAddCharset ISO-8859-8  .iso8859-8  .heb .hebrew";
    $f[] = "\tAddCharset ISO-8859-9  .iso8859-9  .latin5 .trk";
    $f[] = "\tAddCharset ISO-8859-10  .iso8859-10  .latin6";
    $f[] = "\tAddCharset ISO-8859-13  .iso8859-13";
    $f[] = "\tAddCharset ISO-8859-14  .iso8859-14  .latin8";
    $f[] = "\tAddCharset ISO-8859-15  .iso8859-15  .latin9";
    $f[] = "\tAddCharset ISO-8859-16  .iso8859-16  .latin10";
    $f[] = "\tAddCharset ISO-2022-JP .iso2022-jp .jis";
    $f[] = "\tAddCharset ISO-2022-KR .iso2022-kr .kis";
    $f[] = "\tAddCharset ISO-2022-CN .iso2022-cn .cis";
    $f[] = "\tAddCharset Big5        .Big5       .big5 .b5";
    $f[] = "\tAddCharset cn-Big5     .cn-big5";
    $f[] = "\t# For russian, more than one charset is used (depends on client, mostly):";
    $f[] = "\tAddCharset WINDOWS-1251 .cp-1251   .win-1251";
    $f[] = "\tAddCharset CP866       .cp866";
    $f[] = "\tAddCharset KOI8      .koi8";
    $f[] = "\tAddCharset KOI8-E      .koi8-e";
    $f[] = "\tAddCharset KOI8-r      .koi8-r .koi8-ru";
    $f[] = "\tAddCharset KOI8-U      .koi8-u";
    $f[] = "\tAddCharset KOI8-ru     .koi8-uk .ua";
    $f[] = "\tAddCharset ISO-10646-UCS-2 .ucs2";
    $f[] = "\tAddCharset ISO-10646-UCS-4 .ucs4";
    $f[] = "\tAddCharset UTF-7       .utf7";
    $f[] = "\tAddCharset UTF-8       .utf8";
    $f[] = "\tAddCharset UTF-16      .utf16";
    $f[] = "\tAddCharset UTF-16BE    .utf16be";
    $f[] = "\tAddCharset UTF-16LE    .utf16le";
    $f[] = "\tAddCharset UTF-32      .utf32";
    $f[] = "\tAddCharset UTF-32BE    .utf32be";
    $f[] = "\tAddCharset UTF-32LE    .utf32le";
    $f[] = "\tAddCharset euc-cn      .euc-cn";
    $f[] = "\tAddCharset euc-gb      .euc-gb";
    $f[] = "\tAddCharset euc-jp      .euc-jp";
    $f[] = "\tAddCharset euc-kr      .euc-kr";
    $f[] = "\tAddCharset EUC-TW      .euc-tw";
    $f[] = "\tAddCharset gb2312      .gb2312 .gb";
    $f[] = "\tAddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2";
    $f[] = "\tAddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4";
    $f[] = "\tAddCharset shift_jis   .shift_jis .sjis";
    $f[] = "\tAddType text/html .shtml";
    $f[] = "\tAddOutputFilter INCLUDES .shtml";
    $f[] = "</IfModule>";
    $f[] = $mirrors_conf;
    $f[] = "<Directory \"/usr/share/artica-postfix\">";
    $f[] = "FallbackResource /squidcache.php";
    $f[] = "\tDirectorySlash On";
    $f[] = "\tDirectoryIndex squidcache.php";
    $f[] = "\t\t<Files \"squidcache.php\">";
    $f[] = "\t\t\tOrder allow,deny";
    $f[] = "\t\t\tallow from all";
    $f[] = "\t\t</Files>";
    /*	$f[]="\tErrorDocument 400 /hotspot.php";
    	$f[]="\tErrorDocument 401 /hotspot.php";
    	$f[]="\tErrorDocument 403 /hotspot.php";
    	$f[]="\tErrorDocument 404 /hotspot.php";
    	$f[]="\tErrorDocument 500 /hotspot.php";
    */
    $f[] = "\tOptions -Indexes";
    $f[] = ParseArticaDirectory();
    @chmod("/usr/share/artica-postfix/squidcache.php", 0755);
    @chown("/usr/share/artica-postfix/squidcache.php", "squid");
    if ($HyperCacheHTTPListenPortSSLEnabled == 1) {
        $f[] = "\tSSLOptions +StdEnvVars";
    }
    $f[] = "\tAllowOverride All";
    $f[] = "\tOrder allow,deny";
    $f[] = "\tAllow from all";
    $f[] = "</Directory>";
    if ($EnableArticaApachePHPFPM == 1) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Activate PHP5-FPM\n";
        }
        shell_exec("{$php} /usr/share/artica-postfix/exec.initslapd.php --phppfm");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Restarting PHP5-FPM\n";
        }
        shell_exec("/etc/init.d/php5-fpm restart");
        $f[] = "\tAlias /php5.fastcgi /var/run/squid/php5.fastcgi";
        $f[] = "\tAddHandler php-script .php";
        $f[] = "\tFastCGIExternalServer /var/run/squid/php5.fastcgi -socket /var/run/php-fpm.sock -idle-timeout 610";
        $f[] = "\tAction php-script /php5.fastcgi virtual";
        $f[] = "\t<Directory /var/run/squid>";
        $f[] = "\t\t<Files php5.fastcgi>";
        $f[] = "\t\tOrder deny,allow";
        $f[] = "\t\tAllow from all";
        $f[] = "\t\t</Files>";
        $f[] = "\t</Directory>";
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} PHP5-FPM is disabled\n";
        }
    }
    if ($EnableArticaApachePHPFPM == 0) {
        $array["php5_module"] = "libphp5.so";
    }
    $array["dumpio_module"] = "mod_dumpio.so";
    $array["actions_module"] = "mod_actions.so";
    $array["expires_module"] = "mod_expires.so";
    $array["rewrite_module"] = "mod_rewrite.so";
    $array["dir_module"] = "mod_dir.so";
    $array["mime_module"] = "mod_mime.so";
    $array["alias_module"] = "mod_alias.so";
    $array["auth_basic_module"] = "mod_auth_basic.so";
    $array["authz_host_module"] = "mod_authz_host.so";
    $array["autoindex_module"] = "mod_autoindex.so";
    $array["negotiation_module"] = "mod_negotiation.so";
    if ($HyperCacheHTTPListenPortSSLEnabled == 1) {
        $array["ssl_module"] = "mod_ssl.so";
    }
    $array["headers_module"] = "mod_headers.so";
    //$array["ldap_module"]="mod_ldap.so";
    if ($EnableArticaApachePHPFPM == 1) {
        $array["fastcgi_module"] = "mod_fastcgi.so";
    }
    if (is_dir("/etc/apache2")) {
        if (!is_file("/etc/apache2/mime.types")) {
            if ($apache_LOCATE_MIME_TYPES != "/etc/apache2/mime.types") {
                @copy($apache_LOCATE_MIME_TYPES, "/etc/apache2/mime.types");
            }
        }
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Mime types path.......: {$apache_LOCATE_MIME_TYPES}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Modules path..........: {$APACHE_MODULES_PATH}\n";
    }
    while (list($module, $lib) = each($array)) {
        if (is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} include module \"{$module}\"\n";
            }
            $f[] = "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}";
        } else {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} skip module \"{$module}\"\n";
            }
        }
    }
    @file_put_contents("/etc/artica-postfix/HyperCacheHTTPD.conf", @implode("\n", $f));
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} /etc/artica-postfix/HyperCacheHTTPD.conf done\n";
    }
}
Example #6
0
function CheckHttpdConf()
{
    EnableMods();
    apache_user();
    $sock = $GLOBALS["CLASS_SOCKETS"];
    $unix = new unix();
    $users = new usersMenus();
    $GLOBALS["ToRestore"] = array();
    $freeweb = new freeweb();
    $chmod = $unix->find_program("chmod");
    $php5 = $unix->LOCATE_PHP5_BIN();
    $httpdconf = $unix->LOCATE_APACHE_CONF_PATH();
    if (!is_file($httpdconf)) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache unable to stat configuration file\n";
        return;
    }
    $d_path = $unix->APACHE_DIR_SITES_ENABLED();
    $DAEMON_PATH = $unix->getmodpathfromconf($httpdconf);
    $APACHE_SRC_ACCOUNT = $unix->APACHE_SRC_ACCOUNT();
    $APACHE_SRC_GROUP = $unix->APACHE_SRC_GROUP();
    if (is_file("/etc/apache2/sites-available/default-ssl")) {
        @unlink("/etc/apache2/sites-available/default-ssl");
    }
    if (is_link("/etc/apache2/sites-enabled/000-default")) {
        @unlink("/etc/apache2/sites-enabled/000-default");
    }
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache daemon path: \"{$DAEMON_PATH}\" run has \"{$APACHE_SRC_ACCOUNT}:{$APACHE_SRC_GROUP}\"\n";
    if ($APACHE_SRC_ACCOUNT == null) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache daemon unable to determine user that will run apache\n";
        die;
    }
    if (!is_dir("/var/log/apache2")) {
        @mkdir("/var/log/apache2", 0755, true);
    }
    if (!is_dir("/usr/share/GeoIP")) {
        @mkdir("/usr/share/GeoIP", 0755, true);
    }
    shell_exec("{$chmod} 755 /usr/share/GeoIP >/dev/null 2>&1");
    $ApacheDisableModDavFS = intval($sock->GET_INFO("ApacheDisableModDavFS"));
    $ApacheDisableModStatus = intval($sock->GET_INFO("ApacheDisableModStatus"));
    $FreeWebListenPort = $sock->GET_INFO("FreeWebListenPort");
    $FreeWebListenSSLPort = $sock->GET_INFO("FreeWebListenSSLPort");
    $FreeWebEnableModSUPhp = $sock->GET_INFO("FreeWebEnableModSUPhp");
    $FreeWebsEnableModSecurity = $sock->GET_INFO("FreeWebsEnableModSecurity");
    $FreeWebsEnableModEvasive = $sock->GET_INFO("FreeWebsEnableModEvasive");
    $FreeWebsEnableModQOS = $sock->GET_INFO("FreeWebsEnableModQOS");
    $FreeWebsEnableOpenVPNProxy = $sock->GET_INFO("FreeWebsEnableOpenVPNProxy");
    $FreeWebsOpenVPNRemotPort = trim($sock->GET_INFO("FreeWebsOpenVPNRemotPort"));
    $FreeWebDisableSSL = trim($sock->GET_INFO("FreeWebDisableSSL"));
    $FreeWebEnableSQLLog = trim($sock->GET_INFO("FreeWebEnableSQLLog"));
    $ApacheServerTokens = $sock->GET_INFO("ApacheServerTokens");
    if ($ApacheServerTokens == null) {
        $ApacheServerTokens = "Full";
    }
    $hostname = $sock->GET_INFO("ApacheServerName");
    if ($hostname == null) {
        $hostname = $sock->getFrameWork("system.php?hostname-g=yes");
        $sock->SET_INFO($hostname, "ApacheServerName");
    }
    $ZarafaWebAccessInFrontEnd = $sock->GET_INFO("ZarafaWebAccessInFrontEnd");
    if (!is_numeric($ZarafaWebAccessInFrontEnd)) {
        $ZarafaWebAccessInFrontEnd = 1;
    }
    $TomcatEnable = $sock->GET_INFO("TomcatEnable");
    if (!is_numeric($FreeWebDisableSSL)) {
        $FreeWebDisableSSL = 0;
    }
    if (!is_numeric($FreeWebListenSSLPort)) {
        $FreeWebListenSSLPort = 443;
    }
    if (!is_numeric($FreeWebListenPort)) {
        $FreeWebListenPort = 80;
    }
    if (!is_numeric($FreeWebsEnableModSecurity)) {
        $FreeWebsEnableModSecurity = 0;
    }
    if (!is_numeric($FreeWebsEnableModEvasive)) {
        $FreeWebsEnableModEvasive = 0;
    }
    if (!is_numeric($FreeWebsEnableModQOS)) {
        $FreeWebsEnableModQOS = 0;
    }
    if (!is_numeric($FreeWebsEnableOpenVPNProxy)) {
        $FreeWebsEnableOpenVPNProxy = 0;
    }
    if (!is_numeric($TomcatEnable)) {
        $TomcatEnable = 1;
    }
    if (!is_numeric($FreeWebEnableSQLLog)) {
        $FreeWebEnableSQLLog = 0;
    }
    if (!is_numeric($FreeWebEnableModSUPhp)) {
        $FreeWebEnableModSUPhp = 0;
    }
    if ($unix->isNGnx()) {
        $FreeWebListenSSLPort = 447;
        $FreeWebListenPort = 82;
    }
    if ($unix->IsSquidReverse()) {
        $FreeWebListenSSLPort = 447;
        $FreeWebListenPort = 82;
    }
    $APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
    $toremove[] = "mod-status.init";
    $toremove[] = "status.conf";
    $toremove[] = "fcgid.load";
    $toremove[] = "fcgid.conf";
    $toremove[] = "fastcgi.conf";
    $toremove[] = "fastcgi.load";
    $toremove[] = "fastcgi.conf";
    $toremove[] = "log_sql.load";
    $toremove[] = "log_sql_mysql.load";
    $toremove[] = "geoip.conf";
    $toremove[] = "bw.load";
    $toremove[] = "geoip_module.load";
    $toremove[] = "log_sql_module.conf";
    $toremove[] = "log_sql_module.load";
    $toremove[] = "log_sql_mysql_module.load";
    $toremove[] = "log_sql_ssl.load";
    $toremove[] = "unique_id.load";
    $toremove[] = "mime.conf";
    $toremove[] = "mime.load";
    $toremove[] = "php5.conf";
    $toremove[] = "php5.load";
    $toremove[] = "fcgid_module.load";
    $toremove[] = "php5-fpm.load";
    $toremove[] = "fastcgi.load";
    $toremove[] = "php5-fpm.conf";
    $toremove[] = "bw.load";
    $toremove[] = "status_module.load";
    $toremove[] = "autoindex.load";
    $toremove[] = "ldap.load";
    if (is_file("/etc/apache2/sites-enabled/000-default")) {
        $ToDeleteDefault = true;
        $q = new mysql();
        $ligne = @mysql_fetch_array($q->QUERY_SQL("SELECT servername,enabled FROM freeweb WHERE servername='_default_'", 'artica_backup'));
        if ($q->ok) {
            if ($ligne["servername"] == "_default_") {
                if ($ligne["enabled"] == 1) {
                    $ToDeleteDefault = false;
                }
            }
        } else {
            $ToDeleteDefault = false;
        }
        if ($ZarafaWebAccessInFrontEnd == 1) {
            $ToDeleteDefault = false;
        }
        if ($ToDeleteDefault) {
            @unlink("/etc/apache2/sites-enabled/000-default");
        }
    }
    if (is_file("/etc/apache2/conf.d/other-vhosts-access-log")) {
        @unlink("/etc/apache2/conf.d/other-vhosts-access-log");
    }
    @mkdir("/etc/apache2/htdocs", 0755, true);
    if (is_file("/etc/apache2/sites-enabled/default-www")) {
        @unlink("/etc/apache2/sites-enabled/default-www");
    }
    if (is_file("/etc/apache2/sites-available/default")) {
        @unlink("/etc/apache2/sites-available/default");
    }
    if (is_file("/etc/apache2/conf.d/zarafa-webaccess.conf")) {
        @unlink("/etc/apache2/conf.d/zarafa-webaccess.conf");
    }
    if (is_file("/etc/apache2/conf.d/zarafa-webaccess-mobile.conf")) {
        @unlink("/etc/apache2/conf.d/zarafa-webaccess-mobile.conf");
    }
    if (is_file("/etc/httpd/conf/extra/httpd-info.conf")) {
        @unlink("/etc/httpd/conf/extra/httpd-info.conf");
    }
    if (is_file("/etc/apache2/mods-enabled/ssl.conf")) {
        @unlink("/etc/apache2/mods-enabled/ssl.conf");
    }
    $FreeWebListen = $unix->APACHE_ListenDefaultAddress();
    while (list($num, $file) = each($toremove)) {
        if (is_file("{$DAEMON_PATH}/mods-enabled/{$file}")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache remove mods-enabled/{$file}\n";
            shell_exec("/bin/rm -f {$DAEMON_PATH}/mods-enabled/{$file} >/dev/null 2>&1");
        }
        if (is_file("{$DAEMON_PATH}/mods-enabled/{$file}")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache remove mods-available/{$file}\n";
            shell_exec("/bin/rm -f {$DAEMON_PATH}/mods-available/{$file} >/dev/null 2>&1");
        }
    }
    php5_conf($DAEMON_PATH);
    if ($FreeWebDisableSSL == 1) {
        $FreeWebListenSSLPort = 0;
    }
    $VirtualHostsIPAddresses = VirtualHostsIPAddresses($FreeWebListenPort, $FreeWebListen, $FreeWebListenSSLPort);
    if (count($VirtualHostsIPAddresses[0]) > 0) {
        $conf[] = @implode("\n", $VirtualHostsIPAddresses[0]);
    }
    if (count($VirtualHostsIPAddresses[1]) > 0) {
        $conf[] = @implode("\n", $VirtualHostsIPAddresses[1]);
    }
    if ($FreeWebDisableSSL == 0) {
        $conf[] = "<IfModule mod_ssl.c>";
        //$conf[]="\tListen $FreeWebListenSSLPort";
        $conf[] = "\tNameVirtualHost {$FreeWebListen}:{$FreeWebListenSSLPort}";
        if ($VirtualHostsIPAddresses[2] > 0) {
            $conf[] = @implode("\n", $VirtualHostsIPAddresses[2]);
        }
        $conf[] = "\tSSLPassPhraseDialog exec:/etc/apache2/ssl-tools/sslpass.sh";
        shell_exec("{$php5} /usr/share/artica-postfix/exec.openssl.php --pass");
        $conf[] = "</IfModule>";
        $conf[] = "";
        $conf[] = "<IfModule mod_gnutls.c>";
        $conf[] = "\tNameVirtualHost {$FreeWebListen}:{$FreeWebListenSSLPort}";
        if ($VirtualHostsIPAddresses[2] > 0) {
            $conf[] = @implode("\n", $VirtualHostsIPAddresses[2]);
        }
        //$conf[]="\tListen $FreeWebListenSSLPort";
        $conf[] = "</IfModule>";
    }
    $conf[] = "<IfModule mod_fcgid.c>";
    $conf[] = "\tPHP_Fix_Pathinfo_Enable 1";
    $conf[] = "</IfModule>";
    $conf[] = "<IfModule mod_fastcgi.c>";
    $conf[] = "\tAddHandler fastcgi-script .fcgi";
    $conf[] = "#FastCgiWrapper /usr/lib/apache2/suexec";
    $conf[] = "\tFastCgiIpcDir /var/lib/apache2/fastcgi";
    $conf[] = "</IfModule>";
    if (is_file("/usr/lib/apache2/modules/mod_cband.so")) {
        $conf[] = "<IfModule mod_cband.c>";
        $conf[] = "\tCBandScoreFlushPeriod 1";
        $conf[] = "\tCBandRandomPulse On";
        $conf[] = "</IfModule>";
    }
    $conf[] = "";
    if (!is_dir("{$DAEMON_PATH}/sites-available")) {
        @mkdir("{$DAEMON_PATH}/sites-available", 666, true);
    }
    if (!is_dir("{$DAEMON_PATH}/BackupConf")) {
        @mkdir("{$DAEMON_PATH}/BackupConf", 666, true);
    }
    if (is_file("{$DAEMON_PATH}/ports.conf")) {
        @unlink("{$DAEMON_PATH}/BackupConf/ports.conf");
        @copy("{$DAEMON_PATH}/ports.conf", "{$DAEMON_PATH}/BackupConf/ports.conf");
        $GLOBALS["ToRestore"][] = "{$DAEMON_PATH}/BackupConf/ports.conf";
    }
    @file_put_contents("{$DAEMON_PATH}/ports.conf", @implode("\n", $conf));
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache {$DAEMON_PATH}/ports.conf for NameVirtualHost {$FreeWebListen}:{$FreeWebListenPort} done\n";
    mod_security();
    if ($FreeWebsEnableModEvasive == 1) {
        $Params = unserialize(base64_decode($sock->GET_INFO("modEvasiveDefault")));
        if (!is_numeric($Params["DOSHashTableSize"])) {
            $Params["DOSHashTableSize"] = 1024;
        }
        if (!is_numeric($Params["DOSPageCount"])) {
            $Params["DOSPageCount"] = 10;
        }
        if (!is_numeric($Params["DOSSiteCount"])) {
            $Params["DOSSiteCount"] = 150;
        }
        if (!is_numeric($Params["DOSPageInterval"])) {
            $Params["DOSPageInterval"] = 1.5;
        }
        if (!is_numeric($Params["DOSSiteInterval"])) {
            $Params["DOSSiteInterval"] = 1.5;
        }
        if (!is_numeric($Params["DOSBlockingPeriod"])) {
            $Params["DOSBlockingPeriod"] = 10.7;
        }
        $f[] = "   LoadModule evasive20_module modules/mod_evasive20.so";
        $f[] = "   ExtendedStatus On";
        $f[] = "   DOSHashTableSize {$Params["DOSHashTableSize"]}";
        $f[] = "   DOSPageCount {$Params["DOSPageCount"]}";
        $f[] = "   DOSSiteCount {$Params["DOSSiteCount"]}";
        $f[] = "   DOSPageInterval {$Params["DOSPageInterval"]}";
        $f[] = "   DOSSiteInterval {$Params["DOSSiteInterval"]}";
        $f[] = "   DOSBlockingPeriod {$Params["DOSBlockingPeriod"]}";
        $f[] = "   DOSLogDir  \"/var/log/apache2/mod_evasive.log\"";
        $f[] = "   DOSSystemCommand \"/bin/echo `date '+%F %T'` apache2  %s >> /var/log/apache2/dos_evasive_attacks.log\"";
        $f[] = "";
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache {$DAEMON_PATH}/mod_evasive.conf\n";
        if (is_file("{$DAEMON_PATH}/mod_evasive.conf")) {
            @unlink("{$DAEMON_PATH}/BackupConf/mod_evasive.conf");
            @copy("{$DAEMON_PATH}/ports.conf", "{$DAEMON_PATH}/BackupConf/mod_evasive.conf");
            $GLOBALS["ToRestore"][] = "{$DAEMON_PATH}/BackupConf/mod_evasive.conf";
        }
        @file_put_contents("{$DAEMON_PATH}/mod_evasive.conf", @implode("\n", $f));
        unset($f);
    }
    @mkdir("/var/run/apache2", 0775, true);
    if (is_file("{$DAEMON_PATH}/ssl.conf")) {
        @unlink("{$DAEMON_PATH}/BackupConf/ssl.conf");
        @copy("{$DAEMON_PATH}/ports.conf", "{$DAEMON_PATH}/BackupConf/ssl.conf");
        $GLOBALS["ToRestore"][] = "{$DAEMON_PATH}/BackupConf/ssl.conf";
    }
    @unlink("{$DAEMON_PATH}/ssl.conf");
    if ($FreeWebDisableSSL == 0) {
        $f[] = "<IfModule mod_ssl.c>";
        $f[] = "\tSSLRandomSeed connect builtin";
        $f[] = "\tSSLRandomSeed connect file:/dev/urandom 512";
        $f[] = "\tAddType application/x-x509-ca-cert .crt";
        $f[] = "\tAddType application/x-pkcs7-crl    .crl";
        $f[] = "\tSSLPassPhraseDialog  builtin";
        $f[] = "\tSSLSessionCache        shmcb:/var/run/apache2/ssl_scache(512000)";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLSessionCacheTimeout  300";
        $f[] = "\tSSLMutex  sem";
        //$f[]="	SSLMutex  file:/var/run/apache2/ssl_mutex";
        $f[] = "\tSSLCipherSuite HIGH:MEDIUM:!ADH";
        $f[] = "\tSSLProtocol all -SSLv2";
        $f[] = "</IfModule>";
        $f[] = "";
        @file_put_contents("{$DAEMON_PATH}/ssl.conf", @implode("\n", $f));
        unset($f);
    }
    apache_security($DAEMON_PATH);
    $httpdconf_data = @file_get_contents($httpdconf);
    $httpdconf_basename = basename($httpdconf);
    if (is_file($httpdconf)) {
        @unlink("{$DAEMON_PATH}/BackupConf/{$httpdconf_basename}");
        @copy("{$DAEMON_PATH}/{$httpdconf_basename}", "{$DAEMON_PATH}/BackupConf/{$httpdconf_basename}");
        $GLOBALS["ToRestore"][] = "{$DAEMON_PATH}/BackupConf/{$httpdconf_basename}";
    }
    if (preg_match("#<Location \\/server-status>(.+?)<\\/Location>#is", $httpdconf_data, $re)) {
        $httpdconf_data = str_replace($re[0], "", $httpdconf_data);
    }
    $f = explode("\n", $httpdconf_data);
    while (list($num, $ligne) = each($f)) {
        if (preg_match("#^Include\\s+#", $ligne)) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache removing {$f[$num]}\n";
            $f[$num] = null;
        }
        if (preg_match("#\\#.*?Include\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#Listen\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#ProxyRequests#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#ProxyVia#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#AllowCONNECT#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#KeepAlive#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#Timeout\\s+[0-9]+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#MaxKeepAliveRequests\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#KeepAliveTimeout\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#MinSpareServers\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#MaxSpareServers\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#StartServers\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#MaxClients\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#MaxRequestsPerChild\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#ExtendedStatus\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#LoadModule\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#ErrorLog\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#LogFormat\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#User\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#Group\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#CustomLog\\s+#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#LogLevel#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#ServerName#", $ligne)) {
            $f[$num] = null;
        }
        if (preg_match("#DavLockDB#", $ligne)) {
            $f[$num] = null;
        }
        if (trim($ligne) == "Loglevel info") {
            $f[$num] = null;
        }
    }
    $FreeWebPerformances = unserialize(base64_decode($sock->GET_INFO("FreeWebPerformances")));
    if (!isset($FreeWebPerformances["Timeout"])) {
        $FreeWebPerformances["Timeout"] = 300;
    }
    if (!isset($FreeWebPerformances["KeepAlive"])) {
        $FreeWebPerformances["KeepAlive"] = 0;
    }
    if (!isset($FreeWebPerformances["MaxKeepAliveRequests"])) {
        $FreeWebPerformances["MaxKeepAliveRequests"] = 100;
    }
    if (!isset($FreeWebPerformances["KeepAliveTimeout"])) {
        $FreeWebPerformances["KeepAliveTimeout"] = 15;
    }
    if (!isset($FreeWebPerformances["MinSpareServers"])) {
        $FreeWebPerformances["MinSpareServers"] = 1;
    }
    if (!isset($FreeWebPerformances["MaxSpareServers"])) {
        $FreeWebPerformances["MaxSpareServers"] = 2;
    }
    if (!isset($FreeWebPerformances["StartServers"])) {
        $FreeWebPerformances["StartServers"] = 1;
    }
    if (!isset($FreeWebPerformances["MaxClients"])) {
        $FreeWebPerformances["MaxClients"] = 50;
    }
    if (!isset($FreeWebPerformances["MaxRequestsPerChild"])) {
        $FreeWebPerformances["MaxRequestsPerChild"] = 10000;
    }
    if (!is_numeric($FreeWebPerformances["Timeout"])) {
        $FreeWebPerformances["Timeout"] = 300;
    }
    if (!is_numeric($FreeWebPerformances["KeepAlive"])) {
        $FreeWebPerformances["KeepAlive"] = 0;
    }
    if (!is_numeric($FreeWebPerformances["MaxKeepAliveRequests"])) {
        $FreeWebPerformances["MaxKeepAliveRequests"] = 100;
    }
    if (!is_numeric($FreeWebPerformances["KeepAliveTimeout"])) {
        $FreeWebPerformances["KeepAliveTimeout"] = 15;
    }
    if (!is_numeric($FreeWebPerformances["MinSpareServers"])) {
        $FreeWebPerformances["MinSpareServers"] = 1;
    }
    if (!is_numeric($FreeWebPerformances["MaxSpareServers"])) {
        $FreeWebPerformances["MaxSpareServers"] = 2;
    }
    if (!is_numeric($FreeWebPerformances["StartServers"])) {
        $FreeWebPerformances["StartServers"] = 1;
    }
    if (!is_numeric($FreeWebPerformances["MaxClients"])) {
        $FreeWebPerformances["MaxClients"] = 50;
    }
    if (!is_numeric($FreeWebPerformances["MaxRequestsPerChild"])) {
        $FreeWebPerformances["MaxRequestsPerChild"] = 10000;
    }
    reset($f);
    while (list($num, $ligne) = each($f)) {
        if (trim($ligne) == null) {
            continue;
        }
        if (substr($ligne, 0, 1) == "#") {
            continue;
        }
        $httpd[] = $ligne;
    }
    $php5 = $unix->LOCATE_PHP5_BIN();
    shell_exec("{$php5} /usr/share/artica-postfix/exec.samba.php --fix-etc-hosts >/dev/null 2>&1");
    if ($APACHE_SRC_GROUP == '${APACHE_RUN_GROUP}') {
        $APACHE_SRC_GROUP = $APACHE_SRC_ACCOUNT;
    }
    if ($FreeWebPerformances["KeepAlive"] == 1) {
        $FreeWebPerformances["KeepAlive"] = "On";
    } else {
        $FreeWebPerformances["KeepAlive"] = "Off";
    }
    $httpd[] = "User\t\t\t\t   {$APACHE_SRC_ACCOUNT}";
    $httpd[] = "Group\t\t\t\t   {$APACHE_SRC_GROUP}";
    $httpd[] = "Timeout              {$FreeWebPerformances["Timeout"]}";
    $httpd[] = "KeepAlive            {$FreeWebPerformances["KeepAlive"]}";
    $httpd[] = "KeepAliveTimeout     {$FreeWebPerformances["KeepAliveTimeout"]}";
    $httpd[] = "StartServers         {$FreeWebPerformances["StartServers"]}";
    $httpd[] = "MaxClients           {$FreeWebPerformances["MaxClients"]}";
    $httpd[] = "MinSpareServers      {$FreeWebPerformances["MinSpareServers"]}";
    $httpd[] = "MaxSpareServers      {$FreeWebPerformances["MaxSpareServers"]}";
    $httpd[] = "MaxRequestsPerChild  {$FreeWebPerformances["MaxRequestsPerChild"]}";
    $httpd[] = "MaxKeepAliveRequests {$FreeWebPerformances["MaxKeepAliveRequests"]}";
    $httpd[] = "ServerName {$hostname}";
    if ($FreeWebsEnableOpenVPNProxy == 1) {
        if ($FreeWebsOpenVPNRemotPort != null) {
            $httpd[] = "ProxyRequests On";
            $httpd[] = "ProxyVia On";
            $httpd[] = "AllowCONNECT {$FreeWebsOpenVPNRemotPort}";
            $httpd[] = "KeepAlive On";
        }
    }
    @unlink("{$DAEMON_PATH}/mods-enabled/klms.FastCgiExternalServer.conf");
    if ($users->KLMS_WEB_INSTALLED) {
        $sql = "SELECT COUNT(*) as tcount FROM freeweb WHERE groupware='KLMS'";
        $q = new mysql();
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "artica_backup"));
        $CountDeGroupware = $ligne["tcount"];
        echo "Starting......: " . date("H:i:s") . " {$CountDeGroupware} KLMS Groupware(s)\n";
        if ($CountDeGroupware > 0) {
            if (is_file("/opt/kaspersky/klmsui/share/htdocs/cgi-bin/klwi")) {
                @file_put_contents("{$DAEMON_PATH}/mods-enabled/klms.FastCgiExternalServer.conf", "FastCgiExternalServer /opt/kaspersky/klmsui/share/htdocs/cgi-bin/klwi -host 127.0.0.1:2711\n");
            }
        }
    }
    //$dir_master=$unix->getmodpathfromconf();
    if (is_file('/usr/lib/apache2/modules/mod_kav64.so')) {
        $sock = new sockets();
        $ApacheEnableKavModule = intval($sock->GET_INFO("ApacheEnableKavModule"));
        if ($ApacheEnableKavModule == 1) {
            $httpd[] = "LoadModule kav_module /usr/lib/apache2/modules/mod_kav64.so";
        }
    }
    if (!is_file("{$DAEMON_PATH}/videocache.conf")) {
        @touch("{$DAEMON_PATH}/videocache.conf");
    }
    $httpd[] = "Include {$DAEMON_PATH}/videocache.conf";
    if (is_file("{$DAEMON_PATH}/security.conf")) {
        $httpd[] = "Include {$DAEMON_PATH}/security.conf";
    }
    $httpd[] = "Include {$DAEMON_PATH}/mods-enabled/*.load";
    $httpd[] = "Include {$DAEMON_PATH}/mods-enabled/*.conf";
    $httpd[] = "Include {$DAEMON_PATH}/mods-enabled/*.init";
    $mod_php5[] = "<IfModule mod_php5.c>";
    $mod_php5[] = "    <FilesMatch \"\\.ph(p3?|tml)\$\">";
    $mod_php5[] = "\tSetHandler application/x-httpd-php";
    $mod_php5[] = "    </FilesMatch>";
    $mod_php5[] = "    <FilesMatch \"\\.phps\$\">";
    $mod_php5[] = "\tSetHandler application/x-httpd-php-source";
    $mod_php5[] = "    </FilesMatch>";
    $mod_php5[] = "    # To re-enable php in user directories comment the following lines";
    $mod_php5[] = "    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it";
    $mod_php5[] = "    # prevents .htaccess files from disabling it.";
    $mod_php5[] = "    <IfModule mod_userdir.c>";
    $mod_php5[] = "        <Directory /home/*/public_html>";
    $mod_php5[] = "            php_admin_value engine Off";
    $mod_php5[] = "        </Directory>";
    $mod_php5[] = "    </IfModule>";
    $mod_php5[] = "</IfModule>";
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache saving: {$DAEMON_PATH}/mods-enabled/mod_php5.conf\n";
    @file_put_contents("{$DAEMON_PATH}/mods-enabled/mod_php5.conf", @implode("\n", $mod_php5));
    $httpd[] = "Include {$DAEMON_PATH}/mods-enabled/mod_php5.conf";
    $mod_php5 = array();
    if (basename($httpdconf) != "httpd.conf") {
        $httpd[] = "Include {$DAEMON_PATH}/httpd.conf";
    }
    $httpd[] = "Include {$DAEMON_PATH}/ports.conf";
    if ($FreeWebsEnableModSecurity == 1) {
        $httpd[] = "Include {$DAEMON_PATH}/mod_security.conf";
    }
    if ($FreeWebsEnableModEvasive == 1) {
        $httpd[] = "Include {$DAEMON_PATH}/mod_evasive.conf";
    }
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache checks WebDav (ApacheDisableModDavFS = {$ApacheDisableModDavFS})\n";
    $freeweb_tmp = new freeweb();
    $WebDavContainers = $freeweb_tmp->WebDavContainers();
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache checks WebDav " . strlen($WebDavContainers) . " bytes\n";
    @file_put_contents("{$DAEMON_PATH}/webdavcontainers.conf", $WebDavContainers);
    if ($ApacheDisableModDavFS == 0) {
        $httpd[] = "DavLockDB \"/var/www/.DavLockDB\"";
        @mkdir("/var/www", 0755, true);
        @chown("/var/www", $APACHE_SRC_ACCOUNT);
        @chgrp("/var/www", $APACHE_SRC_GROUP);
    }
    @mkdir("/var/lib/apache2/fastcgi", 0755, true);
    @chown("/var/lib/apache2/fastcgi", $APACHE_SRC_ACCOUNT);
    @chgrp("/var/lib/apache2/fastcgi", $APACHE_SRC_GROUP);
    $httpd[] = 'Loglevel info';
    $httpd[] = 'ErrorLog /var/log/apache2/error.log';
    $httpd[] = 'LogFormat "%h %l %u %t \\"%r\\" %<s %b" common';
    $httpd[] = 'CustomLog /var/log/apache2/access.log common';
    $mod_status = $freeweb->mod_status();
    if ($mod_status != null) {
        $status[] = "<IfModule mod_status.c>";
        $status[] = "\tExtendedStatus On";
        $status[] = "{$mod_status}";
        $status[] = "</IfModule>";
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/mod-status.init", @implode("\n", $status));
    }
    @unlink("{$DAEMON_PATH}/mods-enabled/pagespeed.conf");
    if ($users->APACHE_MOD_PAGESPEED) {
        if (!is_dir("/var/cache/apache2/mod_pagespeed/default/files")) {
            @mkdir("/var/cache/apache2/mod_pagespeed/default/files", 644, true);
        }
        $pspedd[] = "<IfModule pagespeed_module>";
        $pspedd[] = "\tModPagespeedFileCachePath            \"/var/cache/apache2/mod_pagespeed/default\"";
        $pspedd[] = "\tModPagespeedGeneratedFilePrefix      \"/var/cache/apache2/mod_pagespeed/files/\"";
        $pspedd[] = "\tSetOutputFilter MOD_PAGESPEED_OUTPUT_FILTER";
        $pspedd[] = "\tAddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html";
        $pspedd[] = "</IfModule>";
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/pagespeed.conf", @implode("\n", $pspedd));
    }
    if ($users->APACHE_MOD_LOGSSQL) {
        if ($FreeWebEnableSQLLog == 1) {
            $q = new mysql();
            if (!$q->DATABASE_EXISTS("apachelogs")) {
                $q->CREATE_DATABASE("apachelogs");
            }
            $APACHE_MOD_LOGSSQL[] = "<IfModule log_sql_mysql_module>";
            $APACHE_MOD_LOGSSQL[] = "\tLogSQLLoginInfo mysql://{$q->mysql_admin}:{$q->mysql_password}@{$q->mysql_server}:{$q->mysql_port}/apachelogs";
            $APACHE_MOD_LOGSSQL[] = "\tLogSQLMassVirtualHosting On";
            $APACHE_MOD_LOGSSQL[] = "\tLogSQLmachineID {$users->hostname}";
            $APACHE_MOD_LOGSSQL[] = "\tLogSQLTransferLogFormat AbcHhmMpRSstTUuvz";
            $APACHE_MOD_LOGSSQL[] = "</IfModule>";
            @file_put_contents("{$DAEMON_PATH}/mods-enabled/log_sql_module.conf", @implode("\n", $APACHE_MOD_LOGSSQL));
        }
    }
    CheckHttpdConf_mime_module();
    CheckHttpdConf_mailman();
    if (is_file("/etc/apache2/mailman.conf")) {
        $httpd[] = "Include /etc/apache2/mailman.conf";
    }
    if (is_file("/etc/apache2/sysconfig.d/loadmodule.conf")) {
        $httpd[] = "Include /etc/apache2/sysconfig.d/loadmodule.conf";
    }
    if (is_file("/etc/apache2/uid.conf")) {
        $httpd[] = "Include /etc/apache2/uid.conf";
    }
    if (is_file("/etc/apache2/default-server.conf")) {
        patch_suse_default_server();
        $httpd[] = "Include /etc/apache2/default-server.conf";
    }
    $httpd[] = "Include {$DAEMON_PATH}/mime.conf";
    $httpd[] = "Include {$DAEMON_PATH}/conf.d/";
    $httpd[] = "Include {$DAEMON_PATH}/sites-enabled/";
    $httpd[] = "Include {$DAEMON_PATH}/webdavcontainers.conf";
    //PHP5 MODULE
    //if(is_file("$APACHE_MODULES_PATH/mod_php5.so")){$httpd[]="LoadModule php5_module $APACHE_MODULES_PATH/mod_php5.so";}
    //if(is_file("$APACHE_MODULES_PATH/mod_ldap.so")){$httpd[]="LoadModule ldap_module $APACHE_MODULES_PATH/mod_ldap.so";}
    if ($ApacheDisableModDavFS == 0) {
        if (is_file("{$APACHE_MODULES_PATH}/mod_dav.so")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'dav_module' enabled\n";
            $httpd[] = "LoadModule dav_module {$APACHE_MODULES_PATH}/mod_dav.so";
        }
        if (is_file("{$APACHE_MODULES_PATH}/mod_dav_lock.so")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'dav_lock_module' enabled\n";
            $httpd[] = "LoadModule dav_lock_module {$APACHE_MODULES_PATH}/mod_dav_lock.so";
        }
        if (is_file("{$APACHE_MODULES_PATH}/mod_dav_fs.so")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'dav_fs_module' enabled\n";
            $httpd[] = "LoadModule dav_fs_module {$APACHE_MODULES_PATH}/mod_dav_fs.so";
        }
    }
    $httpd[] = "";
    $httpd[] = YfiAdds();
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache {$httpdconf} done\n";
    @file_put_contents($httpdconf, @implode("\n", $httpd));
    // MODULES -----------------------------------------------------------------------
    if (!is_dir("{$DAEMON_PATH}/mods-enabled")) {
        @mkdir("{$DAEMON_PATH}/mods-enabled", 666, true);
    }
    if (!is_file("{$DAEMON_PATH}/httpd.conf")) {
        @file_put_contents("{$DAEMON_PATH}/httpd.conf", "#");
    }
    @unlink("/etc/libapache2-mod-jk/workers.properties");
    @unlink("/etc/apache2/workers.properties");
    @unlink("{$DAEMON_PATH}/conf.d/jk.conf");
    $free = new freeweb();
    $array["php5_module"] = "libphp5.so";
    if ($users->APACHE_MOD_SUPHP) {
        if ($FreeWebEnableModSUPhp == 1) {
            $array["suphp_module"] = "mod_suphp.so";
        }
    }
    //$array["access_module"]="mod_access.so";
    $array["qos_module"] = "mod_qos.so";
    $array["rewrite_module"] = "mod_rewrite.so";
    $array["cache_module"] = "mod_cache.so";
    $array["disk_cache_module"] = "mod_disk_cache.so";
    $array["mem_cache_module"] = "mod_mem_cache.so";
    $array["expires_module"] = "mod_expires.so";
    $ApacheDisableModStatus = intval($sock->GET_INFO("ApacheDisableModStatus"));
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module ApacheDisableModStatus={$ApacheDisableModStatus}\n";
    if ($ApacheDisableModStatus == 0) {
        $array["status_module"] = "mod_status.so";
    }
    if (is_file($free->locate_geoip_db())) {
        $array["geoip_module"] = "mod_geoip.so";
    }
    $array["info_module"] = "mod_info.so";
    $array["suexec_module"] = "mod_suexec.so";
    $array["fcgid_module"] = "mod_fcgid.so";
    $array["authz_host_module"] = "mod_authz_host.so";
    $array["dir_module"] = "mod_dir.so";
    $array["mime_module"] = "mod_mime.so";
    $array["log_config_module"] = "mod_log_config.so";
    $array["alias_module"] = "mod_alias.so";
    $array["autoindex_module"] = "mod_autoindex.so";
    $array["negotiation_module"] = "mod_negotiation.so";
    $array["setenvif_module"] = "mod_setenvif.so";
    $array["logio_module"] = "mod_logio.so";
    $array["auth_basic_module"] = "mod_auth_basic.so";
    $array["authn_file_module"] = "mod_authn_file.so";
    $array["vhost_alias_module"] = "mod_vhost_alias.so";
    $array["python_module"] = "mod_python.so";
    $array["auth_digest_module"] = "mod_auth_digest.so";
    $array["mime_module"] = "mod_mime.so";
    $array["ssl_module"] = "mod_ssl.so";
    if ($FreeWebEnableSQLLog == 1) {
        $array["log_sql_module"] = "mod_log_sql.so";
        $array["log_sql_mysql_module"] = "mod_log_sql_mysql.so";
    }
    if (mod_bw_module_must_be_enabled()) {
        $array["bw_module"] = "mod_bw.so";
    }
    $array["actions_module"] = "mod_actions.so";
    $array["expires_module"] = "mod_expires.so";
    $array["include_module"] = "mod_include.so";
    $array["rpaf_module"] = "mod_rpaf-2.0.so";
    $array["fastcgi_module"] = "mod_fastcgi.so";
    $array["deflate_module"] = "mod_deflate.so";
    $array["headers_module"] = "mod_headers.so";
    $array["cband_module"] = "mod_cband.so";
    if (is_file("{$APACHE_MODULES_PATH}/mod_rpaf-2.0.so")) {
        $net = new networking();
        $ips = $net->ALL_IPS_GET_ARRAY();
        while (list($ip, $line) = each($ips)) {
            $tip[] = $ip;
        }
        $rpfmod[] = "<IfModule mod_rpaf.c>";
        $rpfmod[] = "\tRPAFenable On";
        $rpfmod[] = "\tRPAFsethostname On";
        $rpfmod[] = "\tRPAFproxy_ips " . @implode(" ", $tip);
        $rpfmod[] = "\tRPAFheader X-Forwarded-For";
        $rpfmod[] = "</IfModule>";
        $rpfmod[] = "<IfModule rpaf_module>";
        $rpfmod[] = "\tRPAFenable On";
        $rpfmod[] = "\tRPAFsethostname On";
        $rpfmod[] = "\tRPAFproxy_ips " . @implode(" ", $tip);
        $rpfmod[] = "\tRPAFheader X-Forwarded-For";
        $rpfmod[] = "</IfModule>";
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/rpaf.conf", @implode("\n", $rpfmod));
    }
    if (is_file("{$APACHE_MODULES_PATH}/mod_pagespeed.so")) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'mod_pagespeed' enabled\n";
        $ppsped[] = "LoadModule pagespeed_module {$APACHE_MODULES_PATH}/mod_pagespeed.so";
        if (is_file("{$APACHE_MODULES_PATH}/mod_deflate.so")) {
            $ppsped[] = "# Only attempt to load mod_deflate if it hasn't been loaded already.";
            $ppsped[] = "<IfModule !mod_deflate.c>";
            $ppsped[] = "\tLoadModule deflate_module {$APACHE_MODULES_PATH}/mod_deflate.so";
            $ppsped[] = "</IfModule>";
        }
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/mod_pagespeed.load", @implode("\n", $ppsped));
    } else {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'mod_pagespeed' {$APACHE_MODULES_PATH}/mod_pagespeed.so no such file\n";
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "Starting......: " . date("H:i:s") . " [DEBUG] Apache TOMCAT_INSTALLED -> {$users->TOMCAT_INSTALLED}\n";
    }
    if ($users->TOMCAT_INSTALLED) {
        if ($TomcatEnable == 1) {
            if (is_dir($users->TOMCAT_DIR)) {
                if (is_dir($users->TOMCAT_JAVA)) {
                    $array["jk_module"] = "mod_jk.so";
                    $ftom[] = "workers.tomcat_home={$users->TOMCAT_DIR}";
                    $ftom[] = "workers.java_home={$users->TOMCAT_JAVA}";
                    $ftom[] = "ps=/";
                    $ftom[] = "worker.list=ajp13_worker";
                    $ftom[] = "worker.ajp13_worker.port=8009";
                    $ftom[] = "worker.ajp13_worker.host=127.0.0.1";
                    $ftom[] = "worker.ajp13_worker.type=ajp13";
                    $ftom[] = "worker.ajp13_worker.lbfactor=1";
                    $ftom[] = "worker.loadbalancer.type=lb";
                    $ftom[] = "worker.loadbalancer.balance_workers=ajp13_worker";
                    $ftom[] = "";
                    @file_put_contents("/etc/apache2/workers.properties", @implode("\n", $ftom));
                    @mkdir("/etc/libapache2-mod-jk", 644);
                    @file_put_contents("/etc/libapache2-mod-jk/workers.properties", @implode("\n", $ftom));
                    $faptom[] = "<ifmodule mod_jk.c>";
                    $faptom[] = "\tJkWorkersFile /etc/apache2/workers.properties";
                    $faptom[] = "\tJkLogFile /var/log/apache2/mod_jk.log";
                    $faptom[] = "\tJkLogLevel error";
                    $faptom[] = "</ifmodule>";
                    @file_put_contents("{$DAEMON_PATH}/conf.d/jk.conf", @implode("\n", $faptom));
                }
            }
        }
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "Starting......: " . date("H:i:s") . " [DEBUG] Apache cleaning mods...\n";
    }
    @unlink("{$DAEMON_PATH}/mods-enabled/mod-security.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/mod_security.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/mod-evasive.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/mod_evasive.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/geoip.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/status.conf");
    @unlink("{$DAEMON_PATH}/mods-enabled/status.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/php5.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/jk.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/dav_lock_module.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/dav_module.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/dav_fs_module.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/pagespeed.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/rpaf.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/alias.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/auth_basic.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/dir.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/deflate.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/negotiation.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/authn_file.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/authz_host.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/setenvif.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/ssl.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/ldap.load");
    @unlink("{$DAEMON_PATH}/mods-enabled/authnz_ldap.load");
    $sock = new sockets();
    $FreeWebsDisableMOdQOS = $sock->GET_INFO("FreeWebsDisableMOdQOS");
    if ($GLOBALS["VERBOSE"]) {
        echo "Starting......: " . date("H:i:s") . " [DEBUG] Apache FreeWebsDisableMOdQOS = {$FreeWebsDisableMOdQOS} ...\n";
    }
    if (!is_numeric($FreeWebsDisableMOdQOS)) {
        $FreeWebsDisableMOdQOS = 0;
    }
    if ($FreeWebsEnableModQOS == 0) {
        $FreeWebsDisableMOdQOS = 1;
    }
    if ($FreeWebsDisableMOdQOS == 1) {
        unset($array["qos_module"]);
        @unlink("{$DAEMON_PATH}/mods-enabled/qos_module.load");
    }
    if ($FreeWebsEnableModEvasive == 1) {
        if (is_file("{$APACHE_MODULES_PATH}/mod_evasive20.so")) {
            $a[] = "LoadModule evasive20_module {$APACHE_MODULES_PATH}/mod_evasive20.so";
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'mod_evasive2' enabled\n";
            @file_put_contents("{$DAEMON_PATH}/mods-enabled/mod_evasive.load", @implode("\n", $a));
        } else {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache {$APACHE_MODULES_PATH}/mod_evasive20.so no such file\n";
        }
    } else {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module 'mod_evasive2' disabled\n";
    }
    $sql = "SELECT COUNT(servername) as tcount FROM freeweb WHERE UseReverseProxy=1";
    if ($GLOBALS["VERBOSE"]) {
        echo "Starting......: " . date("H:i:s") . " [DEBUG] Apache {$sql}\n";
    }
    $q = new mysql();
    $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, 'artica_backup'));
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache " . $ligne["tcount"] . " Reverse Proxy\n";
    $proxys_mods["proxy_module"] = "mod_proxy.so";
    $proxys_mods["proxy_http_module"] = "mod_proxy_http.so";
    $proxys_mods["proxy_ftp_module"] = "mod_proxy_ftp.so";
    $proxys_mods["proxy_connect_module"] = "mod_proxy_connect.so";
    $proxys_mods["headers_module"] = "mod_headers.so";
    $proxys_mods["deflate_module"] = "mod_deflate.so";
    $proxys_mods["xml2enc_module"] = "mod_xml2enc.so";
    $proxys_mods["proxy_html_module"] = "mod_proxy_html.so";
    $proxys_orgs[] = "proxy_ajp.load";
    $proxys_orgs[] = "proxy_balancer.load";
    $proxys_orgs[] = "proxy.conf";
    $proxys_orgs[] = "proxy_connect.load";
    $proxys_orgs[] = "proxy_ftp.load";
    $proxys_orgs[] = "proxy_html.conf";
    $proxys_orgs[] = "proxy_html.load";
    $proxys_orgs[] = "proxy_http.load";
    $proxys_orgs[] = "proxy.load";
    $proxys_orgs[] = "proxy_scgi.load";
    if (is_file("/etc/httpd/conf.d/proxy_ajp.conf")) {
        @unlink("/etc/httpd/conf.d/proxy_ajp.conf");
    }
    while (list($module, $lib) = each($proxys_orgs)) {
        if (is_file("{$DAEMON_PATH}/mods-enabled/{$lib}")) {
            @unlink("{$DAEMON_PATH}/mods-enabled/{$lib}");
        }
    }
    while (list($module, $lib) = each($proxys_mods)) {
        if (is_file("{$DAEMON_PATH}/mods-enabled/{$module}.load")) {
            @unlink("{$DAEMON_PATH}/mods-enabled/{$module}.load");
        }
    }
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache {$ligne["tcount"]} reverse proxy(s)\n";
    $countDeProxy = $ligne["tcount"];
    if ($FreeWebsEnableOpenVPNProxy == 1) {
        if ($FreeWebsOpenVPNRemotPort != null) {
            $countDeProxy = $countDeProxy + 1;
        }
    }
    if ($users->EJABBERD_INSTALLED) {
        if ($countDeProxy == 0) {
            $countDeProxy = 1;
        }
    }
    if ($countDeProxy > 0) {
        reset($proxys_mods);
        while (list($module, $lib) = each($proxys_mods)) {
            if (!is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module '{$module}' '{$lib}' no such file\n";
                continue;
            }
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module '{$module}' enabled\n";
            $final_proxys[] = "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}";
        }
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/proxy_module.load", @implode("\n", $final_proxys));
    }
    while (list($module, $lib) = each($array)) {
        if (!is_file("{$APACHE_MODULES_PATH}/{$lib}")) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module '{$module}' '{$lib}' no such file\n";
            continue;
        }
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache module '{$module}' enabled\n";
        @file_put_contents("{$DAEMON_PATH}/mods-enabled/{$module}.load", "LoadModule {$module} {$APACHE_MODULES_PATH}/{$lib}");
    }
    ZarafaWebAccessInFrontEnd($DAEMON_PATH);
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache testing configuration file\n";
    if (!TestingApacheConfigurationFile()) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Apache testing configuration file FAILED !! restore old config\n";
        while (list($index, $restorefile) = each($GLOBALS["ToRestore"])) {
            $basename = basename($restorefile);
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache Removing {$DAEMON_PATH}/{$basename}\n";
            @unlink("{$DAEMON_PATH}/{$basename}");
            echo "Starting......: " . date("H:i:s") . " [INIT]: Apache Restoring {$restorefile}\n";
            @copy($restorefile, "{$DAEMON_PATH}/{$basename}");
        }
    }
    echo "Starting......: " . date("H:i:s") . " [INIT]: Apache terminated... next process\n";
}
Example #7
0
    }
}
if (preg_match("#--no-compile#", @implode(" ", $argv))) {
    $GLOBALS["NO_COMPILE"] = true;
}
if (preg_match("#--verbose#", @implode(" ", $argv))) {
    $GLOBALS["VERBOSE"] = true;
}
if (preg_match("#--repos#", @implode(" ", $argv))) {
    $GLOBALS["REPOS"] = true;
}
if (preg_match("#--force#", @implode(" ", $argv))) {
    $GLOBALS["FORCE"] = true;
}
$users = new usersMenus();
$APACHE_MODULES_PATH = $unix->APACHE_MODULES_PATH();
if (!is_dir($APACHE_MODULES_PATH)) {
    echo "Unable to locate APACHE MODULES DIRECTORY...\n";
    die;
}
$timefile = $unix->file_time_min("/etc/artica-postfix/mod_rpaf-2.0.so.compile");
if ($timefile < 60) {
    echo "Already executed since {$timefile}mn, need to wait 1h\n";
    die;
}
$wget = $unix->find_program("wget");
$tar = $unix->find_program("tar");
$rm = $unix->find_program("rm");
$cp = $unix->find_program("cp");
$dirsrc = "mod_rpaf";
$Architecture = Architecture();