RIPE whois functie
Auteur: Gerard - 03 mei 2005 - 16:12 - Gekeurd door: CelestialCelebi - Hits: 6220 - Aantal punten: 2.67 (3 stemmen)
Een script wat bij mij gebruikt is op een vBulletin 2 installatie om verbinding te maken met RiPE om zo meer informatie op te halen over een bepaald ip-adres.
Kan handig zijn voor normale websites of voor ip-lookups van members.
Deze snippet zoekt alleen de lijnen uit die voor mij interressant waren. Het kan natuurlijk altijd zo zijn dat jij iets meer informatie wil. Je kan dan gewoon de for loop aanpassen.
Update 12-03-2007
Ik zat eens door mijn zelfgemaakte (en gedeelde) scripts hier op sitemasters te bladeren en zag dat ik dit stukje onzin ooit een keer had gemaakt. Natuurlijk script ik tegenwoordig al lang niet meer zo en dus vond ik het dus wel zo netjes om hem even bij te werken en in een functie te gieten.
De documentatie spreekt voor zich. Mocht je echter vragen/opmerkingen hebben dan hoor ik deze graag.
|
Code: |
<?php
/**
* The function can be used to extract information from the RIPE whois database
* about an ip address. The function is capable of filtering the data to supply
* you with only the information that you want. Further more it can return an
* array with each part of the information in a seperate key or return a string
* with all the requested information.
*
* @author Gerard Klomp <glj.klomp@googlemail.com>
* @version 1.0
* @param string $sIpAddress The ip address to retrieve more information about
* @param boolean $bReturnArray Set to true to return an array, else it will return a string (default: true)
* @param array $aGetValuesOf Lists all the keys to retrieve
* @return array|string|boolean Returns array|string on success, else false
*/
function ripe_whois($sIpAddress, $bReturnArray = true, $aGetValuesOf = array('inetnum', 'netname', 'descr', 'country', 'org')) {
$rConnection = fsockopen('whois.ripe.net', 43, $iErrNo, $sErrStr, 5);
if ($rConnection) {
$aReturn = array();
$sResult = '';
fwrite($rConnection, $sIpAddress . "\n");
while (true) {
if (strlen(($sData = fread($rConnection, 8192))) == 0) {
break;
}
$sResult .= $sData;
}
fclose($rConnection);
foreach(explode("\n", $sResult) as $sResultRow) {
$sResultRow = trim($sResultRow);
if (ereg('%', $sResultRow) === false && !empty($sResultRow) && ereg(implode('|', $aGetValuesOf) . ':', $sResultRow) !== false && $bReturnArray) {
$aRow = explode(':', $sResultRow, 3);
$aReturn[$aRow[0]] = (isset($aReturn[$aRow[0]]) ? $aReturn[$aRow[0]] . "\n" . trim($aRow[1]) : trim($aRow[1]));
$aReturn[$aRow[0]] = (isset($aRow[2]) ? $aReturn[$aRow[0]] . ":" . trim($aRow[2]) : $aReturn[$aRow[0]]);
} else if (ereg('%', $sResultRow) === false && !empty($sResultRow) && ereg(implode('|', $aGetValuesOf) . ':', $sResultRow) !== false && !$bReturnArray) {
$aReturn[md5($_SERVER['REMOTE_ADDR'])] .= "\n" . $sResultRow;
}
}
return ($bReturnArray ? $aReturn : trim($aReturn[md5($_SERVER['REMOTE_ADDR'])]));
}
return false;
}
<?php /** * The function can be used to extract information from the RIPE whois database * about an ip address. The function is capable of filtering the data to supply * you with only the information that you want. Further more it can return an * array with each part of the information in a seperate key or return a string * with all the requested information. * * @author Gerard Klomp <glj.klomp@googlemail.com> * @version 1.0 * @param string $sIpAddress The ip address to retrieve more information about * @param boolean $bReturnArray Set to true to return an array, else it will return a string (default: true) * @param array $aGetValuesOf Lists all the keys to retrieve * @return array|string|boolean Returns array|string on success, else false */ function ripe_whois ($sIpAddress, $bReturnArray = true, $aGetValuesOf = array('inetnum', 'netname', 'descr', 'country', 'org')) { $rConnection = fsockopen('whois.ripe.net', 43, $iErrNo, $sErrStr, 5); if ($rConnection) { $sResult = ''; fwrite($rConnection, $sIpAddress . "\n"); while (true) { if (strlen(($sData = fread($rConnection, 8192))) == 0) { break; } $sResult .= $sData; } foreach(explode("\n", $sResult) as $sResultRow) { $sResultRow = trim($sResultRow); if (ereg('%', $sResultRow) === false && !empty($sResultRow) && ereg(implode('|', $aGetValuesOf) . ':', $sResultRow) !== false && $bReturnArray) { $aRow = explode(':', $sResultRow, 3); $aReturn[$aRow[0]] = (isset($aReturn[$aRow[0]]) ? $aReturn[$aRow[0]] . "\n" . trim($aRow[1]) : trim($aRow[1])); $aReturn[$aRow[0]] = (isset($aRow[2]) ? $aReturn[$aRow[0]] . ":" . trim($aRow[2]) : $aReturn[$aRow[0]]); } else if (ereg('%', $sResultRow) === false && !empty($sResultRow) && ereg(implode('|', $aGetValuesOf) . ':', $sResultRow) !== false && !$bReturnArray) { $aReturn[md5($_SERVER['REMOTE_ADDR'])] .= "\n" . $sResultRow; } } return ($bReturnArray ? $aReturn : trim($aReturn[md5($_SERVER['REMOTE_ADDR'])])); } return false; }
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|