Simon Lloyd
02-20-2010, 10:47 AM
Hi all i have created a vbulletin page using this mod https://vborg.vbsupport.ru/showthread.php?t=62164, what i want to do is incorporate a whoisip lookup script within it (it's the first step of two) here's the entire php for whois:<?php
/************************************************** ***********************
php easy :: whois lookup script
================================================== ========================
Author: php easy code, www.phpeasycode.com
Web Site: http://www.phpeasycode.com
Contact: webmaster@phpeasycode.com
************************************************** ***********************/
$domain = $_GET['domain'];
// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/
$whoisservers = array(
"ac" =>"whois.nic.ac",
"ae" =>"whois.nic.ae",
"aero"=>"whois.aero",
"af" =>"whois.nic.af",
"ag" =>"whois.nic.ag",
"al" =>"whois.ripe.net",
"am" =>"whois.amnic.net",
"arpa" =>"whois.iana.org",
"as" =>"whois.nic.as",
"asia" =>"whois.nic.asia",
"at" =>"whois.nic.at",
"au" =>"whois.aunic.net",
"az" =>"whois.ripe.net",
"ba" =>"whois.ripe.net",
"be" =>"whois.dns.be",
"bg" =>"whois.register.bg",
"bi" =>"whois.nic.bi",
"biz" =>"whois.biz",
"bj" =>"whois.nic.bj",
"br" =>"whois.registro.br",
"bt" =>"whois.netnames.net",
"by" =>"whois.ripe.net",
"bz" =>"whois.belizenic.bz",
"ca" =>"whois.cira.ca",
"cat" =>"whois.cat",
"cc" =>"whois.nic.cc",
"cd" =>"whois.nic.cd",
"ch" =>"whois.nic.ch",
"ci" =>"whois.nic.ci",
"ck" =>"whois.nic.ck",
"cl" =>"whois.nic.cl",
"cn" =>"whois.cnnic.net.cn",
"com" =>"whois.verisign-grs.com",
"coop" =>"whois.nic.coop",
"cx" =>"whois.nic.cx",
"cy" =>"whois.ripe.net",
"cz" =>"whois.nic.cz",
"de" =>"whois.denic.de",
"dk" =>"whois.dk-hostmaster.dk",
"dm" =>"whois.nic.cx",
"dz" =>"whois.ripe.net",
"edu" =>"whois.educause.edu",
"ee" =>"whois.eenet.ee",
"eg" =>"whois.ripe.net",
"es" =>"whois.ripe.net",
"eu" =>"whois.eu",
"fi" =>"whois.ficora.fi",
"fo" =>"whois.ripe.net",
"fr" =>"whois.nic.fr",
"gb" =>"whois.ripe.net",
"gd" =>"whois.adamsnames.com",
"ge" =>"whois.ripe.net",
"gg" =>"whois.channelisles.net",
"gi" =>"whois2.afilias-grs.net",
"gl" =>"whois.ripe.net",
"gm" =>"whois.ripe.net",
"gov" =>"whois.nic.gov",
"gr" =>"whois.ripe.net",
"gs" =>"whois.nic.gs",
"gw" =>"whois.nic.gw",
"gy" =>"whois.registry.gy",
"hk" =>"whois.hkirc.hk",
"hm" =>"whois.registry.hm",
"hn" =>"whois2.afilias-grs.net",
"hr" =>"whois.ripe.net",
"hu" =>"whois.nic.hu",
"ie" =>"whois.domainregistry.ie",
"il" =>"whois.isoc.org.il",
"in" =>"whois.inregistry.net",
"info" =>"whois.afilias.info",
"int" =>"whois.iana.org",
"io" =>"whois.nic.io",
"iq" =>"vrx.net",
"ir" =>"whois.nic.ir",
"is" =>"whois.isnic.is",
"it" =>"whois.nic.it",
"je" =>"whois.channelisles.net",
"jobs" =>"jobswhois.verisign-grs.com",
"jp" =>"whois.jprs.jp",
"ke" =>"whois.kenic.or.ke",
"kg" =>"www.domain.kg",
"ki" =>"whois.nic.ki",
"kr" =>"whois.nic.or.kr",
"kz" =>"whois.nic.kz",
"la" =>"whois.nic.la",
"li" =>"whois.nic.li",
"lt" =>"whois.domreg.lt",
"lu" =>"whois.dns.lu",
"lv" =>"whois.nic.lv",
"ly" =>"whois.nic.ly",
"ma" =>"whois.iam.net.ma",
"mc" =>"whois.ripe.net",
"md" =>"whois.ripe.net",
"me" =>"whois.meregistry.net",
"mg" =>"whois.nic.mg",
"mil" =>"whois.nic.mil",
"mn" =>"whois.nic.mn",
"mobi" =>"whois.dotmobiregistry.net",
"ms" =>"whois.adamsnames.tc",
"mt" =>"whois.ripe.net",
"mu" =>"whois.nic.mu",
"museum" =>"whois.museum",
"mx" =>"whois.nic.mx",
"my" =>"whois.mynic.net.my",
"na" =>"whois.na-nic.com.na",
"name" =>"whois.nic.name",
"net" =>"whois.verisign-grs.net",
"nf" =>"whois.nic.nf",
"nl" =>"whois.domain-registry.nl",
"no" =>"whois.norid.no",
"nu" =>"whois.nic.nu",
"nz" =>"whois.srs.net.nz",
"org" =>"whois.pir.org",
"pl" =>"whois.dns.pl",
"pm" =>"whois.nic.pm",
"pr" =>"whois.uprr.pr",
"pro" =>"whois.registrypro.pro",
"pt" =>"whois.dns.pt",
"re" =>"whois.nic.re",
"ro" =>"whois.rotld.ro",
"ru" =>"whois.ripn.net",
"sa" =>"whois.nic.net.sa",
"sb" =>"whois.nic.net.sb",
"sc" =>"whois2.afilias-grs.net",
"se" =>"whois.iis.se",
"sg" =>"whois.nic.net.sg",
"sh" =>"whois.nic.sh",
"si" =>"whois.arnes.si",
"sk" =>"whois.ripe.net",
"sm" =>"whois.ripe.net",
"st" =>"whois.nic.st",
"su" =>"whois.ripn.net",
"tc" =>"whois.adamsnames.tc",
"tel" =>"whois.nic.tel",
"tf" =>"whois.nic.tf",
"th" =>"whois.thnic.net",
"tj" =>"whois.nic.tj",
"tk" =>"whois.dot.tk",
"tl" =>"whois.nic.tl",
"tm" =>"whois.nic.tm",
"tn" =>"whois.ripe.net",
"to" =>"whois.tonic.to",
"tp" =>"whois.nic.tl",
"tr" =>"whois.nic.tr",
"travel" =>"whois.nic.travel",
"tv" => "tvwhois.verisign-grs.com",
"tw" =>"whois.twnic.net.tw",
"ua" =>"whois.net.ua",
"ug" =>"whois.co.ug",
"uk" =>"whois.nic.uk",
"us" =>"whois.nic.us",
"uy" =>"nic.uy",
"uz" =>"whois.cctld.uz",
"va" =>"whois.ripe.net",
"vc" =>"whois2.afilias-grs.net",
"ve" =>"whois.nic.ve",
"vg" =>"whois.adamsnames.tc",
"wf" =>"whois.nic.wf",
"ws" =>"whois.website.ws",
"yt" =>"whois.nic.yt",
"yu" =>"whois.ripe.net");
function LookupDomain($domain){
global $whoisservers;
$whoisserver = "";
foreach($whoisservers as $tld=>$server) {
if(substr($domain, -strlen($tld)) == $tld) {
$whoisserver = $server;
break;
}
}
if(!$whoisserver) {
return "Error: No appropriate Whois server found for $domain domain!";
}
$result = QueryWhoisServer($whoisserver, $domain);
if(!$result) {
return "Error: No results retrieved from $whoisserver server for $domain domain!";
}
else {
preg_match("/Whois Server: (.*)/", $result, $matches);
$secondary = $matches[1];
if($secondary) {
$result = QueryWhoisServer($secondary, $domain);
return "$domain domain lookup results from $secondary server:\n\n" . $result;
}
else {
return "$domain domain lookup results from $whoisserver server:\n\n" . $result;
}
}
}
function LookupIP($ip) {
$whoisservers = array(
//"whois.afrinic.net", // Africa - returns timeout error :-(
"whois.apnic.net", // Asia/Pacific - OK :-)
"whois.arin.net", // North America - OK :-)
"whois.lacnic.net", // Latin America and some Caribbean - OK :-)
"whois.ripe.net" // Europe, the Middle East, and Central Asia - OK :-)
);
$out = array();
foreach($whoisservers as $whoisserver) {
$result = QueryWhoisServer($whoisserver, $ip);
if(preg_match("/Country: (.*)/i", $result, $matches)) {
$out[]= "lookup results for $ip from $whoisserver server:\n\n" . $result;
}
}
return count($out) . " RESULTS FOUND:\n-------------\n" . implode("\n\n-------------\n\n", $out);
}
function ValidateIP($ip) {
$ipnums = explode(".", $ip);
if(count($ipnums) != 4) {
return false;
}
foreach($ipnums as $ipnum) {
if(!is_numeric($ipnum) || ($ipnum > 255)) {
return false;
}
}
return $ip;
}
function ValidateDomain($domain) {
if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) {
return false;
}
return $domain;
}
function QueryWhoisServer($whoisserver, $domain) {
$port = 43;
$timeout = 10;
$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
fputs($fp, $domain . "\r\n");
$out = "";
while(!feof($fp)){
$out .= fgets($fp);
}
fclose($fp);
return $out;
}
?>
<html>
<head>
<title>The Code Cage Whois Lookup</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
$domain = trim($domain);
if(ValidateIP($domain)) {
$result = LookupIP($domain);
}
elseif(ValidateDomain($domain)) {
$result = LookupDomain($domain);
}
else die("Invalid Input!");
echo "<pre>\r\n" . $result . "\r\n</pre>\r\n";
}
?>
</body>
</html>my template looks like this$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions</title>
$headinclude
</head>
<body>
$header
$navbar
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="tcat">IP Lookup</td>
</tr>
<tr>
<td><div><form action[B]="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
$domain = trim($domain);
if(ValidateIP($domain)) {
$result = LookupIP($domain);
}
elseif(ValidateDomain($domain)) {
$result = LookupDomain($domain);
}
else die("Invalid Input!");
echo "<pre>\r\n" . $result . "\r\n</pre>\r\n";
}
?>
</div></td>
</tr>
</table>
$footer
</body>
</html>
However it faults when saving due to the bold section of Form Action, i clearly don't know what i'm doing, if you use the php above as a stand alone it works perfect, but i want the form within a vbulletin page (thats the first part), the second part is i want the value of the form to be populated with the IP Address from a link like this in the postbit for mods<tr><td class="vbmenu_option"><span onmouseover="this.style.cursor='hand';" onClick="window.open('modcp/whois.php','edit','width=900,height=380,scrollbars =yes')">WhoisIP for $post[username]: $post[ip]</span></td></tr>
My template is called lookupip and the php file i created to run the template is called iptest.php
Any help at all would be great!
/************************************************** ***********************
php easy :: whois lookup script
================================================== ========================
Author: php easy code, www.phpeasycode.com
Web Site: http://www.phpeasycode.com
Contact: webmaster@phpeasycode.com
************************************************** ***********************/
$domain = $_GET['domain'];
// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/
$whoisservers = array(
"ac" =>"whois.nic.ac",
"ae" =>"whois.nic.ae",
"aero"=>"whois.aero",
"af" =>"whois.nic.af",
"ag" =>"whois.nic.ag",
"al" =>"whois.ripe.net",
"am" =>"whois.amnic.net",
"arpa" =>"whois.iana.org",
"as" =>"whois.nic.as",
"asia" =>"whois.nic.asia",
"at" =>"whois.nic.at",
"au" =>"whois.aunic.net",
"az" =>"whois.ripe.net",
"ba" =>"whois.ripe.net",
"be" =>"whois.dns.be",
"bg" =>"whois.register.bg",
"bi" =>"whois.nic.bi",
"biz" =>"whois.biz",
"bj" =>"whois.nic.bj",
"br" =>"whois.registro.br",
"bt" =>"whois.netnames.net",
"by" =>"whois.ripe.net",
"bz" =>"whois.belizenic.bz",
"ca" =>"whois.cira.ca",
"cat" =>"whois.cat",
"cc" =>"whois.nic.cc",
"cd" =>"whois.nic.cd",
"ch" =>"whois.nic.ch",
"ci" =>"whois.nic.ci",
"ck" =>"whois.nic.ck",
"cl" =>"whois.nic.cl",
"cn" =>"whois.cnnic.net.cn",
"com" =>"whois.verisign-grs.com",
"coop" =>"whois.nic.coop",
"cx" =>"whois.nic.cx",
"cy" =>"whois.ripe.net",
"cz" =>"whois.nic.cz",
"de" =>"whois.denic.de",
"dk" =>"whois.dk-hostmaster.dk",
"dm" =>"whois.nic.cx",
"dz" =>"whois.ripe.net",
"edu" =>"whois.educause.edu",
"ee" =>"whois.eenet.ee",
"eg" =>"whois.ripe.net",
"es" =>"whois.ripe.net",
"eu" =>"whois.eu",
"fi" =>"whois.ficora.fi",
"fo" =>"whois.ripe.net",
"fr" =>"whois.nic.fr",
"gb" =>"whois.ripe.net",
"gd" =>"whois.adamsnames.com",
"ge" =>"whois.ripe.net",
"gg" =>"whois.channelisles.net",
"gi" =>"whois2.afilias-grs.net",
"gl" =>"whois.ripe.net",
"gm" =>"whois.ripe.net",
"gov" =>"whois.nic.gov",
"gr" =>"whois.ripe.net",
"gs" =>"whois.nic.gs",
"gw" =>"whois.nic.gw",
"gy" =>"whois.registry.gy",
"hk" =>"whois.hkirc.hk",
"hm" =>"whois.registry.hm",
"hn" =>"whois2.afilias-grs.net",
"hr" =>"whois.ripe.net",
"hu" =>"whois.nic.hu",
"ie" =>"whois.domainregistry.ie",
"il" =>"whois.isoc.org.il",
"in" =>"whois.inregistry.net",
"info" =>"whois.afilias.info",
"int" =>"whois.iana.org",
"io" =>"whois.nic.io",
"iq" =>"vrx.net",
"ir" =>"whois.nic.ir",
"is" =>"whois.isnic.is",
"it" =>"whois.nic.it",
"je" =>"whois.channelisles.net",
"jobs" =>"jobswhois.verisign-grs.com",
"jp" =>"whois.jprs.jp",
"ke" =>"whois.kenic.or.ke",
"kg" =>"www.domain.kg",
"ki" =>"whois.nic.ki",
"kr" =>"whois.nic.or.kr",
"kz" =>"whois.nic.kz",
"la" =>"whois.nic.la",
"li" =>"whois.nic.li",
"lt" =>"whois.domreg.lt",
"lu" =>"whois.dns.lu",
"lv" =>"whois.nic.lv",
"ly" =>"whois.nic.ly",
"ma" =>"whois.iam.net.ma",
"mc" =>"whois.ripe.net",
"md" =>"whois.ripe.net",
"me" =>"whois.meregistry.net",
"mg" =>"whois.nic.mg",
"mil" =>"whois.nic.mil",
"mn" =>"whois.nic.mn",
"mobi" =>"whois.dotmobiregistry.net",
"ms" =>"whois.adamsnames.tc",
"mt" =>"whois.ripe.net",
"mu" =>"whois.nic.mu",
"museum" =>"whois.museum",
"mx" =>"whois.nic.mx",
"my" =>"whois.mynic.net.my",
"na" =>"whois.na-nic.com.na",
"name" =>"whois.nic.name",
"net" =>"whois.verisign-grs.net",
"nf" =>"whois.nic.nf",
"nl" =>"whois.domain-registry.nl",
"no" =>"whois.norid.no",
"nu" =>"whois.nic.nu",
"nz" =>"whois.srs.net.nz",
"org" =>"whois.pir.org",
"pl" =>"whois.dns.pl",
"pm" =>"whois.nic.pm",
"pr" =>"whois.uprr.pr",
"pro" =>"whois.registrypro.pro",
"pt" =>"whois.dns.pt",
"re" =>"whois.nic.re",
"ro" =>"whois.rotld.ro",
"ru" =>"whois.ripn.net",
"sa" =>"whois.nic.net.sa",
"sb" =>"whois.nic.net.sb",
"sc" =>"whois2.afilias-grs.net",
"se" =>"whois.iis.se",
"sg" =>"whois.nic.net.sg",
"sh" =>"whois.nic.sh",
"si" =>"whois.arnes.si",
"sk" =>"whois.ripe.net",
"sm" =>"whois.ripe.net",
"st" =>"whois.nic.st",
"su" =>"whois.ripn.net",
"tc" =>"whois.adamsnames.tc",
"tel" =>"whois.nic.tel",
"tf" =>"whois.nic.tf",
"th" =>"whois.thnic.net",
"tj" =>"whois.nic.tj",
"tk" =>"whois.dot.tk",
"tl" =>"whois.nic.tl",
"tm" =>"whois.nic.tm",
"tn" =>"whois.ripe.net",
"to" =>"whois.tonic.to",
"tp" =>"whois.nic.tl",
"tr" =>"whois.nic.tr",
"travel" =>"whois.nic.travel",
"tv" => "tvwhois.verisign-grs.com",
"tw" =>"whois.twnic.net.tw",
"ua" =>"whois.net.ua",
"ug" =>"whois.co.ug",
"uk" =>"whois.nic.uk",
"us" =>"whois.nic.us",
"uy" =>"nic.uy",
"uz" =>"whois.cctld.uz",
"va" =>"whois.ripe.net",
"vc" =>"whois2.afilias-grs.net",
"ve" =>"whois.nic.ve",
"vg" =>"whois.adamsnames.tc",
"wf" =>"whois.nic.wf",
"ws" =>"whois.website.ws",
"yt" =>"whois.nic.yt",
"yu" =>"whois.ripe.net");
function LookupDomain($domain){
global $whoisservers;
$whoisserver = "";
foreach($whoisservers as $tld=>$server) {
if(substr($domain, -strlen($tld)) == $tld) {
$whoisserver = $server;
break;
}
}
if(!$whoisserver) {
return "Error: No appropriate Whois server found for $domain domain!";
}
$result = QueryWhoisServer($whoisserver, $domain);
if(!$result) {
return "Error: No results retrieved from $whoisserver server for $domain domain!";
}
else {
preg_match("/Whois Server: (.*)/", $result, $matches);
$secondary = $matches[1];
if($secondary) {
$result = QueryWhoisServer($secondary, $domain);
return "$domain domain lookup results from $secondary server:\n\n" . $result;
}
else {
return "$domain domain lookup results from $whoisserver server:\n\n" . $result;
}
}
}
function LookupIP($ip) {
$whoisservers = array(
//"whois.afrinic.net", // Africa - returns timeout error :-(
"whois.apnic.net", // Asia/Pacific - OK :-)
"whois.arin.net", // North America - OK :-)
"whois.lacnic.net", // Latin America and some Caribbean - OK :-)
"whois.ripe.net" // Europe, the Middle East, and Central Asia - OK :-)
);
$out = array();
foreach($whoisservers as $whoisserver) {
$result = QueryWhoisServer($whoisserver, $ip);
if(preg_match("/Country: (.*)/i", $result, $matches)) {
$out[]= "lookup results for $ip from $whoisserver server:\n\n" . $result;
}
}
return count($out) . " RESULTS FOUND:\n-------------\n" . implode("\n\n-------------\n\n", $out);
}
function ValidateIP($ip) {
$ipnums = explode(".", $ip);
if(count($ipnums) != 4) {
return false;
}
foreach($ipnums as $ipnum) {
if(!is_numeric($ipnum) || ($ipnum > 255)) {
return false;
}
}
return $ip;
}
function ValidateDomain($domain) {
if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) {
return false;
}
return $domain;
}
function QueryWhoisServer($whoisserver, $domain) {
$port = 43;
$timeout = 10;
$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
fputs($fp, $domain . "\r\n");
$out = "";
while(!feof($fp)){
$out .= fgets($fp);
}
fclose($fp);
return $out;
}
?>
<html>
<head>
<title>The Code Cage Whois Lookup</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
$domain = trim($domain);
if(ValidateIP($domain)) {
$result = LookupIP($domain);
}
elseif(ValidateDomain($domain)) {
$result = LookupDomain($domain);
}
else die("Invalid Input!");
echo "<pre>\r\n" . $result . "\r\n</pre>\r\n";
}
?>
</body>
</html>my template looks like this$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions</title>
$headinclude
</head>
<body>
$header
$navbar
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="tcat">IP Lookup</td>
</tr>
<tr>
<td><div><form action[B]="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
$domain = trim($domain);
if(ValidateIP($domain)) {
$result = LookupIP($domain);
}
elseif(ValidateDomain($domain)) {
$result = LookupDomain($domain);
}
else die("Invalid Input!");
echo "<pre>\r\n" . $result . "\r\n</pre>\r\n";
}
?>
</div></td>
</tr>
</table>
$footer
</body>
</html>
However it faults when saving due to the bold section of Form Action, i clearly don't know what i'm doing, if you use the php above as a stand alone it works perfect, but i want the form within a vbulletin page (thats the first part), the second part is i want the value of the form to be populated with the IP Address from a link like this in the postbit for mods<tr><td class="vbmenu_option"><span onmouseover="this.style.cursor='hand';" onClick="window.open('modcp/whois.php','edit','width=900,height=380,scrollbars =yes')">WhoisIP for $post[username]: $post[ip]</span></td></tr>
My template is called lookupip and the php file i created to run the template is called iptest.php
Any help at all would be great!