2020-08-20 00:02:37 +00:00
< ? php
require_once __DIR__ . '/vendor/autoload.php' ;
2021-07-29 21:58:32 +00:00
error_reporting ( - 1 );
ini_set ( 'display_errors' , 'on' );
2020-08-20 00:02:37 +00:00
try {
$pdo = new PDO ( 'mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=flash_website;charset=utf8mb4' , 'flash' , 'af66a6666b1c9a597063325b14c8b52d' , [
PDO :: ATTR_CASE => PDO :: CASE_NATURAL ,
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
PDO :: ATTR_ORACLE_NULLS => PDO :: NULL_NATURAL ,
PDO :: ATTR_STRINGIFY_FETCHES => false ,
PDO :: ATTR_EMULATE_PREPARES => false ,
PDO :: MYSQL_ATTR_INIT_COMMAND => "
SET SESSION
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' ,
time_zone = '+00:00' ;
" ,
]);
$pdo -> exec ( 'DELETE FROM `fm_whois` WHERE `whois_timestamp` < NOW() - INTERVAL 30 MINUTE' );
} catch ( Exception $ex ) {
die ( $ex -> getMessage ());
}
$domain = isset ( $_GET [ 'domain' ]) && is_string ( $_GET [ 'domain' ])
? idn_to_ascii ( mb_strtolower ( $_GET [ 'domain' ]), IDNA_NONTRANSITIONAL_TO_ASCII , INTL_IDNA_VARIANT_UTS46 )
: '' ;
$domainHash = hash ( 'sha256' , $domain );
if ( ! empty ( $domain )) {
$getDomain = $pdo -> prepare ( 'SELECT `whois_result` FROM `fm_whois` WHERE `whois_hash` = :hash' );
$getDomain -> bindValue ( 'hash' , $domainHash );
$result = $getDomain -> execute () ? json_decode ( $getDomain -> fetchColumn ()) : null ;
if ( $result === null ) {
$whois = new Whois\Client ;
try {
$result = $whois -> lookup ( $domain );
$setDomain = $pdo -> prepare ( 'REPLACE INTO `fm_whois` (`whois_hash`, `whois_result`) VALUES (:hash, :result)' );
$setDomain -> bindValue ( 'hash' , $domainHash );
$setDomain -> bindValue ( 'result' , json_encode ( $result ));
$setDomain -> execute ();
} catch ( Whois\WhoisException $ex ) {
$error = $ex -> getMessage ();
}
}
}
if ( ! empty ( $error )) {
$responseText = $error ;
} elseif ( ! empty ( $result )) {
$responseText = '' ;
switch ( $result -> type ) {
case 'domain' :
foreach ( $result -> responses as $server => $response ) {
$responseText .= " { $result -> target } domain lookup results from { $server } \r \n \r \n " ;
$responseText .= trim ( $response ) . " \r \n " ;
}
break ;
case 'ip' :
$responseText .= " RESULTS FOUND: " . count ( $result -> responses );
foreach ( $result -> responses as $server => $response ) {
$responseText .= " ------------- \r \n " ;
$responseText .= " Lookup results for { $result -> target } from { $server } : \r \n \r \n " ;
$responseText .= trim ( $response ) . " \r \n " ;
}
break ;
default :
$responseText .= 'Something happened.' ;
break ;
}
} else {
$responseText = 'Enter a domain or IP address!' ;
}
if ( isset ( $_GET [ 'ajax' ])) {
header ( 'Content-Type: application/json; charset=utf-8' );
if ( ! isset ( $result )) {
$result = new stdClass ;
}
$result -> responseText = $responseText ;
die ( json_encode ( $result ));
}
?>
<! doctype html >
< html >
< head >
< meta charset = " utf-8 " />
< title > flash . moe whois </ title >
< link href = " style.css " rel = " stylesheet " type = " text/css " />
< meta name = " viewport " content = " width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no " />
</ head >
< body >
< div class = " container " >
< div class = " header " >
< div class = " title " > flash . moe < span style = " color: #4a3650; " > whois </ span ></ div >
< div class = " nav " >
< a href = " / " > Home </ a >
< a href = " https://github.com/flashwave/whois-php " > Library </ a >
</ div >
</ div >
< form class = " lookup-form " method = " get " action = " " >
< input class = " lookup-form-input " type = " text " name = " domain " placeholder = " Enter a domain or IP address to look up! " value = " <?=htmlentities( $domain );?> " id = " lookup-input " />
< input class = " lookup-form-submit " type = " submit " value = " Look up " id = " lookup-submit " />
</ form >
< div class = " result " id = " lookup-result " >< ? = htmlentities ( $responseText ); ?> </div>
< div class = " copy " >
& copy ; < a href = " https://flash.moe " > flashwave </ a > 2013 -< ? = date ( 'Y' ); ?>
</ div >
</ div >
< script > var whoisUrl = '<?=$_SERVER["PHP_SELF"];?>' ; </ script >
< script src = " ./script.js " type = " text/javascript " charset = " utf-8 " ></ script >
</ body >
</ html >