<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Now after having written a script that worked <u>marvelously</u> for
at least several says, <u>all of a sudden</u> now it is failing.<br>
<br>
Why? Because once again, your service is returning <u>what it feels
like</u> versus what I asked for.<br>
<br>
Here is what I got from asking for JSON:<br>
<br>
processing 204.12.8.28<br>
<br>
<tt><?xml version='1.0'?><?xml-stylesheet type='text/xsl'
href='<a class="moz-txt-link-freetext"
href="http://whois.arin.net/xsl/website.xsl">http://whois.arin.net/xsl/website.xsl</a>'
?><net
xmlns=<a class="moz-txt-link-rfc2396E"
href="http://www.arin.net/whoisrws/core/v1">"http://www.arin.net/whoisrws/core/v1"</a>
xmlns:ns2=<a class="moz-txt-link-rfc2396E"
href="http://www.arin.net/whoisrws/rdns/v1">"http://www.arin.net/whoisrws/rdns/v1"</a>
xmlns:ns3="<a class="moz-txt-link-freetext" href="http://ww">http://ww</a><br>
w.arin.net/whoisrws/netref/v2"
termsOfUse=<a class="moz-txt-link-rfc2396E"
href="https://www.arin.net/whois_tou.html">"https://www.arin.net/whois_tou.html"</a>><registrationDate>2011-02-03T11:23:31-05:00</registrationDate><ref><a
class="moz-txt-link-freetext"
href="http://whois.arin.net/rest/net/NET-204-12-8-24-1">http://whois.arin.net/rest/net/NET-204-12-8-24-1</a></ref><customerRef
name="<br>
Stylelife"
handle="C02687103"><a class="moz-txt-link-freetext"
href="http://whois.arin.net/rest/customer/C02687103">http://whois.arin.net/rest/customer/C02687103</a></customerRef><endAddress>204.12.8.31</endAddress><handle>NET-204-12-8-24-1</handle><name>STYLELIFE</name><netBlocks><netBlock><cidrLength>29</ci<br>
drLength><endAddress>204.12.8.31</endAddress><description>Reassigned</description><type>S</type><startAddress>204.12.8.24</startAddress></netBlock></netBlocks><originASes><originAS>AS20021</originAS></originASes><parentN<br>
etRef name="HOSTMYSITE"
handle="NET-204-12-0-0-1"><a class="moz-txt-link-freetext"
href="http://whois.arin.net/rest/net/NET-204-12-0-0-1">http://whois.arin.net/rest/net/NET-204-12-0-0-1</a></parentNetRef><startAddress>204.12.8.24</startAddress><updateDate>2011-02-03T11:23:31-05:00</updateDate><version>4</versio<br>
n></net><br>
204.12.8.28<br>
no ns4:pft</tt><br>
<br>
Now I am getting XML.<br>
<br>
I don't have time to keep figuring out new parsers. I already write the
code for the JSON. And it was working, as I said, for several days <b>just
fine.</b><br>
Now for no reason I can see, <b>suddenly</b>, asking for JSON gives me
XML. I don't feel like writing something that has to try to <u>figure
out what you actually sent versus what I requested.</u><br>
This time I request that you FIX THIS.<br>
<br>
=================<br>
<br>
<tt>#!/usr/local/bin/php<br>
<?php<br>
// SQL
#####################################################################################################################################################################################<br>
function sqlerr() //$ER_DUP_Entry=1062;<br>
{ if(($e = mysql_errno()) == 1062) $h = "Duplicate Key, ignored."; else
$h = mysql_error(); $h = str_replace("'","",$h); $m = "DB:$e:$h"; echo
"$m\n"; }<br>
function gqquery($q) { if(mysql_query("$q")) return 0; sqlerr(); return
1; }<br>
function mqquery($q) { if($qr = mysql_query("$q")) return $qr;
sqlerr(); return 0; }<br>
function sqquery($q) { $r = false; if($qr = mqquery($q)) { $r =
mysql_fetch_object($qr); if(!$r) $r = false; mysql_free_result($qr); }
return($r); }<br>
function attach() { global $db; $db =
mysql_connect("localhost","*****","*****"); if(!$db) return(0);
return(mysql_select_db("sdfilter",$db)); }<br>
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br>
// MAIN<br>
$aTZ = "America/Los_Angeles";
date_default_timezone_set($aTZ); // timezone (absurd
format)<br>
global $errno, $fh, $db;
$db=0; // globals<br>
error_reporting(0x1F);
// complain about anything<br>
$db = attach(); if(!$db) {echo("open db failed.");
return(1);} // sordid error handling<br>
<br>
$buf = "";<br>
$v = array();<br>
if(!($C = curl_init())) exit(0);<br>
curl_setopt($C,CURLOPT_RETURNTRANSFER,true);<br>
<br>
if(!($fh=fopen("php://stdin","r"))) exit(0);<br>
for($line = 1;;$line++) {<br>
if(!($A = fgets($fh))) break;<br>
echo "processing $A\n";<br>
if(4 !=
sscanf($A,"%d.%d.%d.%d",&$n3,&$n2,&$n1,&$n0)) break;<br>
$AA = sprintf("%02X%02X%02X%02X",$n3,$n2,$n1,$n0);<br>
if($r = sqquery("select afrom,ato,contact from abuse where afrom
<= '$AA' and '$AA' <= ato limit 1")) {<br>
echo "$A already found in abuse $r->afrom <= $AA <=
$r->ato *$r->contact), ignoring request.\n";<br>
continue;<br>
}<br>
curl_setopt($C,CURLOPT_URL,<a class="moz-txt-link-rfc2396E"
href="http://whois.arin.net/rest/ip/$A/pft.json">"http://whois.arin.net/rest/ip/$A/pft.json"</a>);<br>
$pft = curl_exec($C);<br>
<b>echo "$pft\n"; // gives the output shown above</b><br>
for($rc = 1;;) {<br>
if(!$pft) { echo "$A: no pft\n"; break; }<br>
$Q = json_decode($pft,true); $Q = $Q["ns4:pft"]; if(!$Q) { echo
"$A no ns4:pft\n"; break; }<br>
if(!isset($Q["poc"])) { echo "$A: no poc\n"; break; }<br>
if(!isset($Q["poc"][0])) { echo "$A: no poc[0]\n"; break; }<br>
$F = $Q["net"]["startAddress"]["$"]; if( 4 !=
sscanf($F,"%d.%d.%d.%d",&$n3,&$n2,&$n1,&$n0) ) break;<br>
$afrom = sprintf("%02X%02X%02X%02X",$n3,$n2,$n1,$n0);<br>
$T = $Q["net"]["endAddress"]["$"]; if( 4 !=
sscanf($T,"%d.%d.%d.%d",&$n3,&$n2,&$n1,&$n0) ) break;<br>
$ato = sprintf("%02X%02X%02X%02X",$n3,$n2,$n1,$n0);<br>
if( $afrom > $ato ) break;<br>
$n = count($Q["poc"]); $contact = "";<br>
for( $j = 0; $j < $n; $j++ ) {<br>
//echo "$A poc $j description " .
$Q["poc"][$j]["@relatedDescription"] ."\n";<br>
if($Q["poc"][$j]["@relatedDescription"] == "Abuse") {<br>
$m = count($Q["poc"][$j]["emails"]["email"]); // we
either get [$] or [0]...[n] in this modern world<br>
if($m == 1) {<br>
$contact = $Q["poc"][$j]["emails"]["email"]["$"];<br>
//echo "single records, $contact.\n";<br>
}<br>
else { // save the first contact in any case and if it
or a later one contains "abuse", use that.<br>
$contact =
strtolower($Q["poc"][$j]["emails"]["email"][0]);<br>
//echo "$A multiple records, default $contact.\n";<br>
if(strstr($contact,"abuse")) break;<br>
else for($k=1, $x =
strtolower($Q["poc"][$j]["emails"]["email"][$k]); $k<$m;$k++)
if(strstr($x,"abuse")) { $contact = $x; break; }<br>
echo "$A multiple records, using $contact.\n";<br>
}<br>
break;<br>
}<br>
}<br>
if(!$contact || $contact == <a class="moz-txt-link-rfc2396E"
href="mailto:abuse@ripe.net">"abuse@ripe.net"</a> || $contact ==
<a class="moz-txt-link-rfc2396E" href="mailto:abuse@arin.net">"abuse@arin.net"</a>
|| $contact == <a class="moz-txt-link-rfc2396E"
href="mailto:abuse@apnic.net">"abuse@apnic.net"</a>) break; // if
<a class="moz-txt-link-abbreviated" href="mailto:abuse@ripe.net">abuse@ripe.net</a>
e.g. then should ask RIPE.<br>
echo "RESULT:: $afrom - $ato\t$contact\n";<br>
$afrom = sprintf("%08X",$afrom); $ato = sprintf("%08X",$ato);<br>
gqquery("insert into abuse (afrom,ato,contact) values
('$afrom','$ato','$contact')");<br>
gqquery("update counts set count = count + 1 where
class='database/reqfilled'");<br>
$rc = 0;<br>
break;<br>
}<br>
// we no longer insert (a,0) into abuse to remember what we want.<br>
}<br>
<br>
curl_close($C);<br>
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br>
?><br>
</tt><br>
</body>
</html>