/** * Parses rawdata from whois server and call postProcess if exists afterwards * * @throws NoTemplateException * @throws RateLimitException * @return void */ private function parse() { $Config = $this->Config->getCurrent(); $Template = AbstractTemplate::factory($Config['template'], $this->customTemplateNamespace); // If Template is null then we do not have a template for that, but we // can still proceed to the end with just the rawdata if ($Template instanceof AbstractTemplate) { $this->Result->template[$Config['server']] = $Config['template']; $this->rawdata = $Template->translateRawData($this->rawdata, $Config); try { $Template->parse($this->Result, $this->rawdata, $this->Query); } catch (RateLimitException $e) { $server = $Config['server']; if (!in_array($server, $this->rateLimitedServers)) { $this->rateLimitedServers[] = $server; } throw new RateLimitException("Rate limit exceeded for server: " . $server); } // set rawdata to Result - this happens here because sometimes we // have to fix the rawdata as well in postProcess $this->Result->addItem('rawdata', $this->rawdata); // set registered to Result $this->Result->addItem('registered', isset($this->Result->registered) ? $this->Result->registered : false); if (!isset($this->Result->whoisserver)) { $this->Result->addItem('whoisserver', $Config['server']); } // start post processing $Template->postProcess($this); // set name to Result if (isset($this->Query->tld) && !isset($this->Query->fqdn)) { $this->Result->addItem('name', $this->Query->tld); } elseif (isset($this->Query->ip)) { $this->Result->addItem('name', $this->Query->ip); } elseif (isset($this->Query->asn)) { $this->Result->addItem('name', $this->Query->asn); } else { $this->Result->addItem('name', $this->Query->fqdn); $this->Result->addItem('idnName', $this->Query->idnFqdn); } } else { throw new NoTemplateException('Template ' . $Config['template'] . ' could not be found'); } }
/** * Parses rawdata from whois server and call postProcess if exists afterwards * * @throws NoTemplateException * @return void */ private function parse() { $Config = $this->Config->getCurrent(); $Template = AbstractTemplate::factory($Config['template']); // If Template is null then we do not have a template for that, but we // can still proceed to the end with just the rawdata if ($Template instanceof AbstractTemplate) { $this->parseTemplate($Template); // set rawdata to Result - this happens here because sometimes we // have to fix the rawdata as well in postProcess $this->Result->addItem('rawdata', explode("\n", $this->rawdata)); // check availability upon type - IP addresses are always registered if (isset($Template->available) && $Template->available != '') { preg_match_all($Template->available, $this->rawdata, $matches); $this->Result->addItem('registered', empty($matches[0])); } // set registered to Result $this->Result->addItem('registered', isset($this->Result->registered) ? $this->Result->registered : false); if (!isset($this->Result->whoisserver)) { $this->Result->addItem('whoisserver', $Config['server']); } // start post processing $Template->postProcess($this); // set name to Result if (isset($this->Query->tld) && !isset($this->Query->fqdn)) { $this->Result->addItem('name', $this->Query->tld); } elseif (isset($this->Query->ip)) { $this->Result->addItem('name', $this->Query->ip); } elseif (isset($this->Query->asn)) { $this->Result->addItem('name', $this->Query->asn); } else { $this->Result->addItem('name', $this->Query->fqdn); $this->Result->addItem('idnName', $this->Query->idnFqdn); } } else { throw \WhoisParser\AbstractException::factory('NoTemplate', 'Template ' . $Config['template'] . ' could not be found.'); } }