PHP Classes

File: vault/config.php

Recommend this page to a friend!
  Classes of Caleb   CIDRAM   vault/config.php   Download  
File: vault/config.php
Role: Example script
Content type: text/plain
Description: Example script
Class: CIDRAM
Check if an IP address is a bad source of traffic
Author: By
Last change: Update of vault/config.php
Date: 5 years ago
Size: 6,879 bytes
 

Contents

Class file image Download
<?php
/**
 * This file is a part of the CIDRAM package.
 * Homepage: https://cidram.github.io/
 *
 * CIDRAM COPYRIGHT 2016 and beyond by Caleb Mazalevskis (Maikuolan).
 *
 * License: GNU/GPLv2
 * @see LICENSE.txt
 *
 * This file: Configuration handler (last modified: 2019.08.31).
 */

/** Prevents execution from outside of CIDRAM. */
if (!defined('CIDRAM')) {
    die(
'[CIDRAM] This should not be accessed directly.');
}

/** CIDRAM version number (SemVer). */
$CIDRAM['ScriptVersion'] = '2.1.0';

/** CIDRAM version identifier (complete notation). */
$CIDRAM['ScriptIdent'] = 'CIDRAM v' . $CIDRAM['ScriptVersion'];

/** CIDRAM User Agent (for external requests). */
$CIDRAM['ScriptUA'] = $CIDRAM['ScriptIdent'] . ' (https://cidram.github.io/)';

/** Default timeout (for external requests). */
$CIDRAM['Timeout'] = 12;

/** Determine PHP path. */
$CIDRAM['CIDRAM_PHP'] = defined('PHP_BINARY') ? PHP_BINARY : '';

/** Fetch domain segment of HTTP_HOST (needed for writing cookies safely). */
$CIDRAM['HTTP_HOST'] = empty($_SERVER['HTTP_HOST']) ? '' : (
   
strpos($_SERVER['HTTP_HOST'], ':') === false ? $_SERVER['HTTP_HOST'] : substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], ':'))
);

/** CIDRAM favicon. */
$CIDRAM['favicon'] =
   
'R0lGODlhEAAQAMIBAAAAAGYAAJkAAMz//2YAAGYAAGYAAGYAACH5BAEKAAQALAAAAAAQABA' .
   
'AAANBCLrcKjBK+eKQN76RIb+g0oGewAmiZZbZRppnC0y0BgR4rutK8OWfn2jgI3KKxeHvyB' .
   
'wMkc0kIEp13nZYnGPLSAAAOw==';

/** Checks whether the CIDRAM configuration file is readable. */
if (!isset($GLOBALS['CIDRAM_Config']) && !is_readable($CIDRAM['Vault'] . 'config.ini')) {
   
header('Content-Type: text/plain');
    die(
'[CIDRAM] Can\'t read the configuration file! Please reconfigure CIDRAM.');
}

/** Checks whether the CIDRAM configuration defaults file is readable. */
if (!is_readable($CIDRAM['Vault'] . 'config.yaml')) {
   
header('Content-Type: text/plain');
    die(
'[CIDRAM] Can\'t read the configuration defaults file! Please reconfigure CIDRAM.');
}

if (isset(
$GLOBALS['CIDRAM_Config'])) {
   
/** Provides a means of running tests with configuration values specific to those tests. */
   
$CIDRAM['Config'] = $GLOBALS['CIDRAM_Config'];
} else {
   
/** Attempts to parse the standard CIDRAM configuration file. */
   
$CIDRAM['Config'] = parse_ini_file($CIDRAM['Vault'] . 'config.ini', true);
}

/** Kills the script if it isn't able to load any configuration. */
if ($CIDRAM['Config'] === false) {
   
header('Content-Type: text/plain');
    die(
'[CIDRAM] Configuration file is corrupt! Please reconfigure CIDRAM.');
}

/** Checks for the existence of the HTTP_HOST "configuration overrides file". */
if (
    !empty(
$_SERVER['HTTP_HOST']) &&
    (
$CIDRAM['Domain'] = preg_replace('/^www\./', '', strtolower($_SERVER['HTTP_HOST']))) &&
    !
preg_match('/[^.\da-z-]/', $CIDRAM['Domain']) &&
   
is_readable($CIDRAM['Vault'] . $CIDRAM['Domain'] . '.config.ini')
) {
   
/** Attempts to parse the overrides file found (this is configuration specific to the requested domain). */
   
if ($CIDRAM['Overrides'] = parse_ini_file($CIDRAM['Vault'] . $CIDRAM['Domain'] . '.config.ini', true)) {
       
array_walk($CIDRAM['Overrides'], function ($Keys, $Category) use (&$CIDRAM) {
            foreach (
$Keys as $Directive => $Value) {
               
$CIDRAM['Config'][$Category][$Directive] = $Value;
            }
        });
       
$CIDRAM['Overrides'] = true;
    }
}

/** Kills the script if parsing the configuration overrides file fails. */
if (isset($CIDRAM['Overrides']) && $CIDRAM['Overrides'] === false) {
   
header('Content-Type: text/plain');
    die(
'[CIDRAM] Configuration overrides file is corrupt! Can\'t continue until this is resolved.');
}

/** Attempts to parse the CIDRAM configuration defaults file. */
$CIDRAM['YAML']->process($CIDRAM['ReadFile']($CIDRAM['Vault'] . 'config.yaml'), $CIDRAM['Config']);

/** Kills the script if parsing the configuration defaults file fails. */
if (empty($CIDRAM['Config']['Config Defaults'])) {
   
header('Content-Type: text/plain');
    die(
'[CIDRAM] Configuration defaults file is corrupt! Please reinstall CIDRAM.');
}

/** Check for supplementary configuration relating to IPv4 signature files. */
if (!empty($CIDRAM['Config']['signatures']['ipv4'])) {
    foreach (
$CIDRAM['Supplementary']($CIDRAM['Config']['signatures']['ipv4']) as $CIDRAM['Supplement']) {
       
$CIDRAM['YAML']->process($CIDRAM['ReadFile']($CIDRAM['Vault'] . $CIDRAM['Supplement']), $CIDRAM['Config']);
    }
}

/** Check for supplementary configuration relating to IPv6 signature files. */
if (!empty($CIDRAM['Config']['signatures']['ipv6'])) {
    foreach (
$CIDRAM['Supplementary']($CIDRAM['Config']['signatures']['ipv6']) as $CIDRAM['Supplement']) {
       
$CIDRAM['YAML']->process($CIDRAM['ReadFile']($CIDRAM['Vault'] . $CIDRAM['Supplement']), $CIDRAM['Config']);
    }
}

/** Check for supplementary configuration relating to modules. */
if (!empty($CIDRAM['Config']['signatures']['modules'])) {
    foreach (
$CIDRAM['Supplementary']($CIDRAM['Config']['signatures']['modules']) as $CIDRAM['Supplement']) {
       
$CIDRAM['YAML']->process($CIDRAM['ReadFile']($CIDRAM['Vault'] . $CIDRAM['Supplement']), $CIDRAM['Config']);
    }
}

/** Cleanup. */
unset($CIDRAM['Supplement']);

/** Perform fallbacks and autotyping for missing configuration directives. */
$CIDRAM['Fallback']($CIDRAM['Config']['Config Defaults'], $CIDRAM['Config']);

/** Failsafe for weird ipaddr configuration. */
$CIDRAM['IPAddr'] = (
   
$CIDRAM['Config']['general']['ipaddr'] !== 'REMOTE_ADDR' && empty($_SERVER[$CIDRAM['Config']['general']['ipaddr']])
) ?
'REMOTE_ADDR' : $CIDRAM['Config']['general']['ipaddr'];

/** Ensure we have an IP address variable to work with. */
if (!isset($_SERVER[$CIDRAM['IPAddr']])) {
   
$_SERVER[$CIDRAM['IPAddr']] = '';
}

/** Adjusted present time. */
$CIDRAM['Now'] = time() + ($CIDRAM['Config']['general']['time_offset'] * 60);

/** Set timezone. */
if (!empty($CIDRAM['Config']['general']['timezone']) && $CIDRAM['Config']['general']['timezone'] !== 'SYSTEM') {
   
date_default_timezone_set($CIDRAM['Config']['general']['timezone']);
}

/**
 * Process the request query and query variables (if any exist); These may be
 * occasionally used by certain extended rulesets.
 */
if (!empty($_SERVER['QUERY_STRING'])) {
   
$CIDRAM['Query'] = $_SERVER['QUERY_STRING'];
   
parse_str($_SERVER['QUERY_STRING'], $CIDRAM['QueryVars']);
} else {
   
$CIDRAM['Query'] = '';
   
$CIDRAM['QueryVars'] = [];
}

/** Set default hashing algorithm. */
$CIDRAM['DefaultAlgo'] = (
    !empty(
$CIDRAM['Config']['general']['default_algo']) && defined($CIDRAM['Config']['general']['default_algo'])
) ?
constant($CIDRAM['Config']['general']['default_algo']) : 1;

/** Revert script ident if "hide_version" is true. */
if (!empty($CIDRAM['Config']['general']['hide_version'])) {
   
$CIDRAM['ScriptIdent'] = 'CIDRAM';
}