<?php
include_once('./geoip.class.php');
include_once('./ping.class.php');
function PrintUsage($string = '')
{
if($string != '') {
echo $string . "\n\n";
}
echo 'php index_ping.php [addr] [-mx|-txt|-soa|-aaaa|-afsdb|-sshfp|-spf|-ns|-loc]' . "\n";
echo "\t" . '[addr] mandatory: The host (IP address or host name) to ping...' . "\n";
echo "\t" . '-mx: Request for Mail exchange record' . "\n";
echo "\t" . '-txt: Request for Text record' . "\n";
echo "\t" . '-soa: Request for Start of authority record' . "\n";
echo "\t" . '-aaaa: Request for IPv6 address record' . "\n";
echo "\t" . '-afsdb: Request for distributed service advertised record' . "\n";
echo "\t" . '-sshfp: Request for SSH Finger Print record' . "\n";
echo "\t" . '-spf: Request for Sender Policy Framework record' . "\n";
echo "\t" . '-ns: Request for Name server record' . "\n";
echo "\t" . '-loc: Request for Geographic location information record' . "\n";
die("\n");
}
if($argc <= 1) {
PrintUsage('Paramètre(s) invalide(s)...');
die("\n");
}
$validsRequest = array();
$validsRequest[] = '-mx';
$validsRequest[] = '-txt';
$validsRequest[] = '-soa';
$validsRequest[] = '-aaaa';
$validsRequest[] = '-afsdb';
$validsRequest[] = '-sshfp';
$validsRequest[] = '-spf';
$validsRequest[] = '-ns';
$validsRequest[] = '-loc';
if(in_array($argv[2], $validsRequest)) {
if($argc <= 2) {
PrintUsage('Addr for the quey is invalid.');
}
} else {
PrintUsage('"' . $argv[2] . '" is not a valid request.');
}
$ping = new CPing();
$config = array();
$config['value'] = $argv[1];
if($argv[2] == '-mx')
$config['type'] = DNS_CLASS_MX;
else if($argv[2] == '-txt')
$config['type'] = DNS_CLASS_TXT;
else if($argv[2] == '-soa')
$config['type'] = DNS_CLASS_SOA;
else if($argv[2] == '-aaaa')
$config['type'] = DNS_CLASS_AAAA;
else if($argv[2] == '-afsdb')
$config['type'] = DNS_CLASS_AFSDB;
else if($argv[2] == '-sshfp')
$config['type'] = DNS_CLASS_SSHFP;
else if($argv[2] == '-spf')
$config['type'] = DNS_CLASS_SPF;
else if($argv[2] == '-ns')
$config['type'] = DNS_CLASS_NS;
else if($argv[2] == '-loc')
$config['type'] = DNS_CLASS_LOC;
$output = $ping->DNSSolve($config);
if($output === false)
{
echo 'Erreur de requête DNS...' . "\n";
}
else
{
foreach($output['records'] as $record)
{
if($record->Type == DNS_CLASS_A && $record->TTL > 0)
{
echo 'Host IP: ' . $record->rdData->ip . "\n";
$not_found = false;
}
else if($record->Type == DNS_CLASS_CNAME && $record->TTL > 0)
{
echo 'Host IP (alias): ' . $record->rdData->cname . "\n";
$not_found = false;
}
else if($record->Type == DNS_CLASS_PTR && $record->TTL > 0)
{
echo 'Host name: ' . $record->rdData->ptrdname . "\n";
$not_found = false;
}
else
{
echo 'Unknwon record: ' . "\n";
var_dump($record);
}
}
foreach($output['authority'] as $authority)
{
if($authority->Type == DNS_CLASS_SOA)
{
echo 'General informations: ' . "\n";
echo "\t" . 'Original domain name: ' . $authority->rdData->mname . "\n";
echo "\t" . 'Responsible person\'s mail: ' . $authority->rdData->rname . "\n";
echo "\t" . 'Original version serial: ' . $authority->rdData->serial . "\n";
echo "\t" . 'Refresh information every: ' . (int)($authority->rdData->refresh / 60) . ',' . ($authority->rdData->refresh % 60) . 's' . "\n";
echo "\t" . 'Authoritative expire in: ' . (int)($authority->rdData->expire / 60) . ',' . ($authority->rdData->expire % 60) . 's' . "\n";
}
else
{
echo 'Unknwon authority: ' . "\n";
var_dump($authority);
}
}
}
?>
|