Файл: RootPanel 1.7.0 FreeCode/RootPanel 1.7.0 FreeCode/_rootinc/freehost.inc.php
Строк: 384
<?
class FREEHOST
{
public $controller = true;
public $url = null;
public $port = null;
public $user = null;
public $password = null;
public $md5password = null;
public $auth = null;
public $error = null;
public $fp = null;
public function startup(&$controller)
{
$this->controller =& $controller;
}
public function init($url,$port,$user,$password)
{
$this->user = $user;
$this->url = $url;
$this->port = $port;
$this->password = $password;
$this->md5password = md5($password);
}
public function connect()
{
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
$this->error="Socket Error: Could not initialize socket.";
return false;
}
if (!$result = socket_connect($sock, $this->url, $this->port)) {
$this->error="Socket Error: Could not connect to the host.";
return false;
}
$this->fp=$sock;
$result = $this->get(1024);
if ($result["hello"]) {
if ($this->login()) {
return true;
}
else {
return false;
}
} else {
$this->error = "Unable to get Hello message.";
return false;
}
}
public function disconnect()
{
$command = "<command>logout</command>n<chksum>".md5("logout".$this->user.$this->md5password)."</chksum>n<auth>".$this->auth."</auth>";
socket_write($this->fp, $command, strlen($command));
}
public function get($size = "")
{
if ($size) {
$result = socket_read($this->fp, $size, PHP_NORMAL_READ);
} else {
$result="";
while (false !== ($res = socket_read($this->fp, 2))){
$result .= $res;
if (preg_match("/</auth>/u",$result))
break;
}
}
$result = $this->parseData($result);
if (is_array($result)) {
return $result;
} else {
$this->error = "Unable to get result.";
return false;
}
}
public function parseData($out)
{
if (preg_match_all("/<([a-z]+)>([^<]*)</([a-z]+)>/iu",$out,$arr,PREG_SET_ORDER)) {
for ($i=0;$i<count($arr);$i++) {
$getarr[$arr[$i][1]]=$arr[$i][2];
}
return $getarr;
}
}
public function login()
{
$query = "<command>login</command>n<login>".$this->user."</login>n<password>".$this->md5password."</password>n<chksum>".md5("login".$this->user.$this->md5password)."</chksum>";
if(!socket_write($this->fp, $query, strlen($query))) {
$this->error='Unable to send login query.';
return false;
} else {
$result = $this->get();
if ($result) {
if ($result["result"] == "0" and $result["auth"]) {
$this->auth = $result["auth"];
return true;
} else if (is_array($result)) {
$this->error = "Login error: ".$this->errorTXT($result["result"]);
$this->disconnect();
return false;
}
} else {
$this->error = "Unable to get result for login.";
return false;
}
}
}
public function registerDomain($domain,$ns1,$ns2,$ns3,$ns4,$nichandle)
{
if ($this->connect()) {
$nslistcode = "<nserver>$ns1</nserver>n<nserver>$ns2</nserver>"; if ($ns3) {$nslistcode = $nslistcode."n<nserver>$ns3</nserver>"; } if ($ns4) {$nslistcode = $nslistcode."n<nserver>$ns4</nserver>"; }
$nslist = $ns1.$ns2; if ($ns3) { $nslist = $nslist.$ns3; } if ($ns4) { $nslist = $nslist.$ns4; }
$query = "<command>register</command>n<domain>".$domain."</domain>n<descr>Private Domain</descr>n".$nslistcode."n<admin-c>".$nichandle."</admin-c>n<tech-c>".$nichandle."</tech-c>n<auth>".$this->auth."</auth>n<chksum>".md5("register".$this->user.$this->md5password.$domain.$nslist."Private Domain".$nichandle.$nichandle)."</chksum>";
if(!socket_write($this->fp, $query, strlen($query))) {
$this->error='Unable to send registerDomain query.';
return false;
} else {
$result = $this->get();
if ($result) {
if ($result["result"] == "0") {
$this->disconnect();
return true;
} else if (is_array($result)) {
$this->error = "registerDomain error: ".$this->errorTXT($result["result"]);
$this->disconnect();
return false;
}
} else {
$this->error = "Unable to get result for registerDomain.";
$this->disconnect();
return false;
}
}
} else {
return false;
}
}
public function renewDomain($domain,$period)
{
if ($this->connect()) {
$query = "<command>renew</command>n<domain>".$domain."</domain>n<period>".$period."</period>n<auth>".$this->auth."</auth>n<chksum>".md5("renew".$this->user.$this->md5password.$domain.$period)."</chksum>";
if(!socket_write($this->fp, $query, strlen($query))) {
$this->error='Unable to send renewDomain query.';
return false;
} else {
$result = $this->get();
if ($result) {
if ($result["result"] == "0") {
$this->disconnect();
return true;
} else if (is_array($result)) {
$this->error = "renewDomain error: ".$this->errorTXT($result["result"]);
$this->disconnect();
return false;
}
} else {
$this->error = "Unable to get result for renewDomain.";
$this->disconnect();
return false;
}
}
} else {
return false;
}
}
public function getNS($domain)
{
if ($this->connect()) {
$query = "<command>whois</command>n<domain>$domain</domain>n<auth>".$this->auth."</auth>n<chksum>".md5("whois".$this->user.$this->md5password.$domain)."</chksum>";
if(!socket_write($this->fp, $query, strlen($query))) {
$this->error='Unable to send getNS query.';
return false;
} else {
$result = $this->get();
if ($result) {
if ($result["result"] == "0") {
$result1 = mb_split("n", $result["info"]);
while (list($index,$res) = each($result1)) {
if (preg_match("/nserver/ui",$res)) {
preg_match("/nserver:s+(.*)/iu",$res,$arr);
$resultarray[]=$arr[1];
} else if (preg_match("/Name Server/ui",$res)) {
preg_match("/Name Server:s+(.*)/iu",$res,$arr);
$resultarray[]=$arr[1];
}
}
$this->disconnect();
return $resultarray;
} else if (is_array($result)) {
$this->error = "getNS error: ".$this->errorTXT($result["result"]);
$this->disconnect();
return false;
}
} else {
$this->error = "Unable to get result for getNS.";
$this->disconnect();
return false;
}
}
} else {
return false;
}
}
public function updateNS($domain,$ns1,$ns2,$ns3,$ns4,$nichandle)
{
if ($this->connect()) {
$nslistcode = "<nserver>$ns1</nserver>n<nserver>$ns2</nserver>"; if ($ns3) {$nslistcode = $nslistcode."n<nserver>$ns3</nserver>"; } if ($ns4) {$nslistcode = $nslistcode."n<nserver>$ns4</nserver>"; }
$nslist = $ns1.$ns2; if ($ns3) { $nslist = $nslist.$ns3; } if ($ns4) { $nslist = $nslist.$ns4; }
$query = "<command>modify</command>n<domain>$domain</domain>n<descr>Private Domain</descr>n".$nslistcode."n<admin-c>".$nichandle."</admin-c>n<tech-c>".$nichandle."</tech-c>n<auth>".$this->auth."</auth>n<chksum>".md5("modify".$this->user.$this->md5password.$domain.$nslist."Private Domain".$nichandle.$nichandle)."</chksum>";
if(!socket_write($this->fp, $query, strlen($query))) {
$this->error='Unable to send updateNS query.';
return false;
} else {
$result = $this->get();
if ($result) {
if ($result["result"] == "0") {
$this->disconnect();
return true;
} else if (is_array($result)) {
$this->error = "updateNS error: ".$this->errorTXT($result["result"]);
$this->disconnect();
return false;
}
} else {
$this->error = "Unable to get result for updateNS.";
$this->disconnect();
return false;
}
}
} else {
return false;
}
}
public function errorTXT($err){
switch($err){
case 1: return "Использована недопустимая директива, либо недопустимый символ.";
case 2: return "Использована неизвестная директива";
case 3: return "Указан неверный формат домена. Допускаются только буквы латинского алфавита, цифры и тире.";
case 4: return "Неверное количесво параметров в теме письма.";
case 5: return "Неверный формат мейнтерйнера";
case 6: return "У Вас нет доступа к автоматизированной системе";
case 7: return "Вы не указали пароль для авторизации.";
case 8: return "Из темы письма не ясно что делать.";
case 9: return "Домен в теме письма не соответствует домену в теле письма.";
case 10: return "Длина домена в зонах IN.UA, BIZ, INFO должна быть не меньше 3-х символов.";
case 11: return "Whois сервер не отвечает. Операция не может быть выполнена.";
case 12: return "Такой домен уже существует.";
case 13: return "Указанный UANIC не существует.";
case 14: return "Вы не указали ДНС сервера.";
case 15: return "Была обнаружена проблема с настройкой ДНС серверов";
case 16: return "Мейнтейнер в теме письма не соответствует мейнтейнеру в теле письма.";
case 17: return "Данная доменная зона нами не поддерживается.";
case 18: return "Невозможно получить информацию о Вашем балансе.";
case 19: return "У Вас недостаточно денег для выполнения этой операции.";
case 20: return "Необходимо чтоб ADMIN-C был EUNIC.";
case 21: return "Необходимо чтоб TECH-C был EUNIC.";
case 22: return "Ннеобходимо чтоб ADMIN-C был UANIC.";
case 23: return "Необходимо чтоб TECH-C был UANIC.";
case 24: return "Во время продления домена возникла ошибка, попробуйте позже.";
case 25: return "Данный домен не обслуживается в нашей компании.";
case 26: return "Пароль авторизации указан неверно.";
case 27: return "В очереди уже есть заявка на регистрацию этого домена.";
case 28: return "Количество ДНС серверов должно быть не менее 2-х.";
case 29: return "Домена не существует.";
case 30: return "Не указан ADMIN-C.";
case 31: return "Не указан TECH-C.";
case 32: return "Не указано поле descr.";
case 33: return "В поле descr указан недопустимый символ.";
case 34: return "Чексумма не указана или указана не верно.";
case 35: return "Домен подан на регистрацию.";
case 36: return "Не закрыт тег";
case 37: return "Команда не указана или указана не верно";
case 38: return "Не указана команда";
case 39: return "Не указан auth код";
case 40: return "указан не верный auth код";
case 41: return "не указан период продления домена";
case 42: return "домен Вами не обслуживается";
case 43: return "непредвиденная ошибка";
case 44: return "домен зарегистрирован нами";
case 45: return "перенос домена уже начат";
case 46: return "превышен максимальный лимит подключений";
case 47: return "невозможно определить IP адрес";
case 48: return "доступ запрещен, превышен лимит неудачных попыток";
case 49: return "превышен лимит команд за 1 минуту";
}
}
}
?>