function checkDomainisValid($sld, $tld) { global $CONFIG; if ($sld[0] == "-" || $sld[strlen($sld) - 1] == "-") { return 0; } $isidn = $isidntld = false; if ($CONFIG['AllowIDNDomains']) { if (!class_exists("idnhandler")) { require ROOTDIR . "/whoisfunctions.php"; } $idnconv = new idnhandler(); $idnconv->encode($sld); if ($idnconv->get_last_error() && $idnconv->get_last_error() != "The given string does not contain encodable chars") { return 0; } if ($idnconv->get_last_error() && $idnconv->get_last_error() == "The given string does not contain encodable chars") { $CONFIG['AllowIDNDomains'] = ""; } else { $isidn = true; } } if ($isidn === FALSE) { if (preg_replace('/[^.%$^\'#~@&*(),_£?!+=:{}[]()|\\/ \\ ]/', '', $sld)) { return 0; } if (!$CONFIG['AllowIDNDomains'] && preg_replace("/[^a-z0-9-.]/i", "", $sld . $tld) != $sld . $tld) { return 0; } if (preg_replace("/[^a-z0-9-.]/", "", $tld) != $tld) { return 0; } $validmask = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"; if (strspn($sld, $validmask) != strlen($sld)) { return 0; } } run_hook("DomainValidation", array("sld" => $sld, "tld" => $tld)); if ($sld === false && $sld !== 0 || !$tld) { return 0; } $coretlds = array(".com", ".net", ".org", ".info", "biz", ".mobi", ".name", ".asia", ".tel", ".in", ".mn", ".bz", ".cc", ".tv", ".us", ".me", ".co.uk", ".me.uk", ".org.uk", ".net.uk", ".ch", ".li", ".de", ".jp"); $DomainMinLengthRestrictions = $DomainMaxLengthRestrictions = array(); require ROOTDIR . "/configuration.php"; foreach ($coretlds as $ctld) { if (!array_key_exists($ctld, $DomainMinLengthRestrictions)) { $DomainMinLengthRestrictions[$ctld] = 3; } if (!array_key_exists($ctld, $DomainMaxLengthRestrictions)) { $DomainMaxLengthRestrictions[$ctld] = 63; continue; } } if (array_key_exists($tld, $DomainMinLengthRestrictions) && strlen($sld) < $DomainMinLengthRestrictions[$tld]) { return 0; } if (array_key_exists($tld, $DomainMaxLengthRestrictions) && $DomainMaxLengthRestrictions[$tld] < strlen($sld)) { return 0; } return 1; }
/** * * @ WHMCS FULL DECODED & NULLED * * @ Version : 5.2.15 * @ Author : MTIMER * @ Release on : 2013-12-24 * @ Website : http://www.mtimer.cn * **/ function lookupDomain($sld, $ext) { global $remote_ip; $idnconv = new idnhandler(); $sld = $idnconv->encode($sld); $whoisservers = file_get_contents(dirname(__FILE__) . "/whoisservers.php"); $whoisservers = explode("\n", $whoisservers); foreach ($whoisservers as $value) { $value = explode("|", $value); $tld = trim(strip_tags($value[0])); $whoisserver[$tld] = trim(strip_tags($value[1])); $whoisvalue[$tld] = trim(strip_tags($value[2])); $whoisreqprefix[$tld] = isset($value[3]) ? strip_tags($value[3]) : ""; continue; } $port = "43"; $server = $whoisserver[$ext]; $return = $whoisvalue[$ext]; $reqprefix = $whoisreqprefix[$ext]; if ($server == "") { $result["result"] = "available"; } else { $domain = $sld . $ext; $fulldomain = $domain; if (substr($return, 0, 12) == "HTTPREQUEST-") { $ch = curl_init(); $url = $server . $domain; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); $data2 = " ---" . $data; if (curl_error($ch)) { $result["result"] = "error"; if ($_SESSION["adminid"]) { $result["errordetail"] = "Error: " . curl_errno($ch) . " - " . curl_error($ch); } } else { if (strpos($data2, substr($return, 12)) == true) { $result['result'] = "available"; } else { $result['result'] = "unavailable"; $result['whois'] = nl2br(strip_tags($data)); } } curl_close($ch); } else { if (strpos($server, ":")) { $port = explode(":", $server, 2); $server = $port[0]; $port = $port[1]; } if (substr($return, 0, 6) == "NOTLD-") { $domain = $sld; $return = substr($return, 6); } $fp = @fsockopen($server, $port, $errno, $errstr, 10); if ($fp) { @fputs($fp, $reqprefix . $domain . "\r\n"); @socket_set_timeout($fp, 10); while (!@feof($fp)) { $data .= @fread($fp, 4096); } @fclose($fp); $data2 = " ---" . $data; if (strpos($data2, $return) == true) { $result['result'] = "available"; } else { $result['result'] = "unavailable"; $result['whois'] = nl2br($data); } } else { $result['result'] = "error"; if ($_SESSION['adminid']) { $result['errordetail'] = "Error: " . $errno . " - " . $errstr; } } } insert_query("tblwhoislog", array("date" => "now()", "domain" => $fulldomain, "ip" => $remote_ip)); } return $result; }