Пример #1
0
 public function testValidateHost()
 {
     $this->assertTrue(validateHost("example.com"));
     $this->assertTrue(validateHost("domain"));
     $this->assertTrue(validateHost("EXAMPLE.COM"));
     $this->assertTrue(validateHost("Example.Com"));
     $this->assertTrue(validateHost("10.0.0.1"));
     $this->assertTrue(validateHost("127.0.0.1"));
     $this->assertFalse(validateHost("site . com"));
     $this->assertFalse(validateHost("site. com"));
     $this->assertFalse(validateHost("site .com"));
 }
Пример #2
0
 function checkIP($ip, $list)
 {
     if (!validateHost($ip)) {
         return false;
     }
     if (!is_array($list)) {
         $list = explode(',', $list);
     }
     foreach ($list as $mask) {
         $mask = str_replace('.', '\\.', $mask);
         $mask = str_replace('*', '[0-9]+(\\.[0-9]+)*', $mask);
         if (preg_match("~^{$mask}\$~", $ip)) {
             return true;
         }
     }
     return false;
 }
Пример #3
0
/**
 * Generate the Apache configuration.
 *
 * @param string $baseDir     The VuFind base directory
 * @param string $overrideDir The VuFind override directory
 * @param string $basePath    The VuFind URL base path
 * @param string $module      The VuFind custom module name (or empty for none)
 * @param int    $multi       Multisite mode preference
 * @param string $host        Virtual host name (or empty for none)
 *
 * @return void
 */
function buildApacheConfig($baseDir, $overrideDir, $basePath, $module, $multi, $host)
{
    $baseConfig = $baseDir . '/config/vufind/httpd-vufind.conf';
    $config = @file_get_contents($baseConfig);
    if (empty($config)) {
        die("Problem reading {$baseConfig}.\n\n");
    }
    $config = str_replace("/usr/local/vufind/local", "%override-dir%", $config);
    $config = str_replace("/usr/local/vufind", "%base-dir%", $config);
    $config = preg_replace("|([^/])\\/vufind|", "\$1%base-path%", $config);
    $config = str_replace("%override-dir%", $overrideDir, $config);
    $config = str_replace("%base-dir%", $baseDir, $config);
    $config = str_replace("%base-path%", $basePath, $config);
    if (!empty($module)) {
        $config = str_replace("#SetEnv VUFIND_LOCAL_MODULES VuFindLocalTemplate", "SetEnv VUFIND_LOCAL_MODULES {$module}", $config);
    }
    // In multisite mode, we need to make environment variables conditional:
    switch ($multi) {
        case MULTISITE_DIR_BASED:
            $config = preg_replace('/SetEnv\\s+(\\w+)\\s+(.*)/', 'SetEnvIf Request_URI "^' . $basePath . '" $1=$2', $config);
            break;
        case MULTISITE_HOST_BASED:
            if (($result = validateHost($host)) !== true) {
                die($result . "\n");
            }
            $config = preg_replace('/SetEnv\\s+(\\w+)\\s+(.*)/', 'SetEnvIfNoCase Host ' . str_replace('.', '\\.', $host) . ' $1=$2', $config);
            break;
    }
    $target = $overrideDir . '/httpd-vufind.conf';
    if (file_exists($target)) {
        $bak = $target . '.bak.' . time();
        copy($target, $bak);
        echo "Backed up existing Apache configuration to {$bak}.\n";
    }
    if (!@file_put_contents($target, $config)) {
        die("Problem writing {$overrideDir}/httpd-vufind.conf.\n\n");
    }
}