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