Вход Регистрация
Файл: 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_INETSOCK_STREAMSOL_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$commandstrlen($command));
    }

    public function 
get($size "")
    {
        if (
$size) {
            
$result socket_read($this->fp$sizePHP_NORMAL_READ);
        } else {
            
$result="";        
            while (
false !== ($res socket_read($this->fp2))){
                
$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$querystrlen($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$querystrlen($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$querystrlen($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$querystrlen($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$querystrlen($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 минуту";
        }    
    }

}
?>
Онлайн: 0
Реклама