<?php
### Обработчик услуг ISPManger 5
### Powered by pimnik98

# Получаемые параметры (операция,номер сервер,шаблон,тип)
# Выходные параметры (URL,Логин,Пароль,Тип)

# Коды ошибок
# 1 - Сервер не найден
# 2 - Ошибка на стороне обработчика
# 3 - Неопеределен тип услуги
# 4 - Неопределенно действие обработчика услуги
# 5 - Ошибка при выполнени заказа
# 6 - сервер вернул не допустимый ответ
# 7 - Недостаточно данных
# 8 - Не удалось войти в акканут
function order_isp4mgr($o,$s,$p='',$t='vhost',$d=NULL){
    global $mysqli;
    $_attributes = '@attributes';
    $_level = '$level';
    $_id = '$id';
    if ($t == 'vhost'){
        $check_ss = mysqli_query($mysqli,"SELECT * FROM `servers` WHERE `id` = '$s'");
        if (mysqli_num_rows($check_ss) != 0) {
            $ss = mysqli_fetch_object($check_ss);
            if ($o == 'open'){
                $geninv=mb_strtolower('a'.rand(10,100).generate_password(4));
                $genpwd=generate_password(8);
                $createauto = order_init($ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=LiveHDDBill&ip='.$ss->ip.'&domain='.$ss->texzone);
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'url'       =>  $ss->url,
                            'login'     =>  $geninv,
                            'passwd'    =>  $genpwd,
                            'ip'        =>  $ss->ip)
                        );
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при выполнени заказа',
                            'syserr'    =>  $parse_xml->error->msg,
                            'hash'      =>  $ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=LiveHDDBill')
                        );
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ',
                        'url'       =>  $ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=LiveHDDBill')
                    );
                }
            } elseif ($o == 'rop'){
                if (!isset($d)){
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '7',
                        'errmsg'    =>  'Недостаточно данных'
                        )
                    );
                } else {
                    $geninv=mb_strtolower($d);
                    $genpwd=generate_password(8);
                    $createauto = order_init($ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=CREAPIUSER&ip='.$ss->ip.'&domain='.$geninv.'.'.$ss->texzone);
                    if (!empty($createauto)){
                        if(preg_match('<ok/>',$createauto)){
                            return json_encode(array(
                                'status'    =>  'ok',
                                'url'       =>  $ss->url,
                                'login'     =>  $geninv,
                                'passwd'    =>  $genpwd,
                                'ip'        =>  $ss->ip
                            ));
                        } else {
                            $parse_xml = simplexml_load_string($createauto);
                            return json_encode(array(
                                'status'    => 'err',
                                'err'       => '5',
                                'errmsg'    =>  'Ошибка при выполнени заказа',
                                'syserr'    =>  base64_encode($ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=CREAPIUSER&ip='.$ss->ip.'&domain='.$ss->texzone),
                                'hash'      =>  base64_encode($ss->url.'?func=user.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&preset='.$p.'&sok=yes&comment=LiveHDDBill'),
                             ));
                        }
                    } else {
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '6',
                            'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                    }
                }
            } elseif ($o == 'close'){
                $createauto = order_init($ss->url.'?func=user.delete&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }
            } elseif ($o == 'on'){
                $createauto = order_init($ss->url.'?func=user.resume&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }
            } elseif ($o == 'off'){
                $createauto = order_init($ss->url.'?func=user.suspend&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }
            } elseif ($o == 'info'){
                $createauto = order_init($ss->url.'?func=auth&out=json&username=' . $ss->login . '&password=' . base64_decode($ss->pwd));
                if (!empty($createauto)){
                    $js = json_decode($createauto);
                    if (isset($js->auth)) {
                        return json_encode(array(
                            'status'    =>  'ok',
                            'level'     =>  'n/a',
                            'key'     =>  $js->auth,
                           ));
                    } else {
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '8',
                            'errmsg'    =>  'Не удалось войти в акканут',
                            'syserr'    =>  $js,
                            'hash'      =>  $createauto
                            ));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Не удалось соединиться с сервером',
                       # 'syserr'    =>  $parse_xml->error->msg
                    ));
                }
            } else {
                return json_encode(array(
                    'status'    =>  'err',
                    'err'       =>  '4',
                    'errmsg'    =>  'Неопределенно действие обработчика услуги'));
            }
        } else {
            return json_encode(array('status'=>'err','err'=>'1','errmsg'=>'Сервер не найден'));
        }
    } elseif ($t == 'ress') {
        $check_ss = mysqli_query($mysqli,"SELECT * FROM `servers` WHERE `id` = '$s'");
        if (mysqli_num_rows($check_ss) != 0) {
            $ss = mysqli_fetch_object($check_ss);
            $init = $createauto = order_init();
            if ($o == 'open'){
                $geninv=mb_strtolower('r'.rand(10,100).generate_password(4));
                $genpwd=generate_password(8);
                $createauto = order_init($ss->url.'?func=reseller.edit&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&name='.$geninv.'&passwd='.$genpwd.'&confirm='.$genpwd.'&ip='.$ss->ip.'&domain='.$geninv.'.'.$ss->zona.'&preset='.$p.'&sok=yes&comment=CREAPIUSER');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'url'       =>  $ss->url,
                            'login'     =>  $geninv,
                            'passwd'    =>  $genpwd,
                            'ip'        =>  $ss->ip));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при выполнени заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }

            } elseif ($o == 'close'){
                $createauto = order_init($ss->url.'?func=reseller.delete&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ')
                        );
                }
            } elseif ($o == 'on'){
                $createauto = order_init($ss->url.'?func=reseller.resume&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }
            } elseif ($o == 'off'){
                $createauto = order_init($ss->url.'?func=reseller.suspend&out=xml&authinfo='.$ss->login.':'.base64_decode($ss->pwd).'&elid='.$p.'&sok=yes');
                if (!empty($createauto)){
                    if(preg_match('<ok/>',$createauto)){
                        return json_encode(array(
                            'status'    =>  'ok',
                            'select'    =>  $p));
                    } else {
                        $parse_xml = simplexml_load_string($createauto);
                        return json_encode(array(
                            'status'    =>  'err',
                            'err'       =>  '5',
                            'errmsg'    =>  'Ошибка при удалении заказа',
                            'syserr'    =>  $parse_xml->error->msg));
                    }
                } else {
                    return json_encode(array(
                        'status'    =>  'err',
                        'err'       =>  '6',
                        'errmsg'    =>  'Сервер вернул не допустимый ответ'));
                }
            } elseif ($o == 'info'){
            } else {
                return json_encode(array(
                    'status'    =>  'err',
                    'err'       =>  '4',
                    'errmsg'    =>  'Неопределенно действие обработчика услуги'));
            }
        } else {
            return json_encode(array(
                'status'    =>  'err',
                'err'       =>  '1',
                'errmsg'    =>  'Сервер не найден'));
        }
    }
}


?>