protected function readConfig(array $ini) { if (!empty($ini['tlds'])) { SblamURI::init($ini['tlds'], $this->services->getDB()); } else { warn('tlds not given!'); } if (!empty($ini['dns'])) { AsyncDNS::init(preg_split('![\\s,]+!', $ini['dns'], NULL, PREG_SPLIT_NO_EMPTY)); } else { warn('dns not given!'); } foreach ($ini as $name => $settings) { if (!is_array($settings) || $name == 'db') { continue; } if (!empty($settings['disabled']) || isset($settings['enabled']) && !$settings['enabled']) { /*d($name,'disabled');*/ continue; } try { include_once "tests/" . strtolower($name) . ".php"; $classname = "SblamTest" . ucfirst($name); if (!class_exists($classname)) { warn($name, "Problem loading test plugin"); } $info = call_user_func(array($classname, 'info')); if (!empty($info['remote']) && isset($ini['remote']) && !$ini['remote']) { d($info, 'Its a remote service, remote disabled, skipping'); continue; } if (!empty($info['unsupported'])) { d($info, 'unsupported in this configuration'); continue; } $test = new $classname($settings, $this->services); if (!$test instanceof ISblamTest) { warn($test, 'Not a test'); continue; } //d($classname,"instantiated"); $this->addTest($test, isset($settings['phase']) ? $settings['phase'] : 10); } catch (Exception $e) { warn($e, "Failed to initialize plugin {$name}"); } } return true; }
/** set up nameservers' IPs */ static function init(array $nameservers) { self::$nameservers = $nameservers; }
static function gethostbynameasync($name) { if (!$name || isset(self::$lookupcache[$name])) { return; } if (($res = self::gethostbynamecache($name)) !== false) { return self::$lookupcache[$name] = $res; } elseif (self::$useasync) { self::$lookupcache[$name] = AsyncDNS::query($name); } }