Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Controller_User extends Controller { function __construct() { global $view, $nav, $db;
- $this->model = new Model_User();
- $this->view = $view;
- $this->db = $db;
- $nav[] = array('url' => '/user', 'name' => 'Личный кабинет');
- $this->view->changeTitle('Личный кабинет');
- $ghdrs = getallheaders();
- $ghst = $ghdrs['Host'];
- } function action_index() { global $user;
- $DATA = array();
- $this->view->changeTitle('Личный кабинет');
- if ( !$user['id'] ) { return $this->view->msg('2', 'Вы не авторизованы', '2');
- } $DATA['user'] = $user;
- $DATA['servers'] = $this->model->getMyServers();
- return $this->view->parse_template_path($DATA, 'modules/user/user.tpl');
- } function action_registration() { global $nav, $user;
- $this->view->changeTitle('Регистрация »
- Личный кабинет');
- $nav[] = array('url' => '/user/registration', 'name' => 'Регистрация');
- $DATA = array();
- if ( $user['id'] ) { return $this->view->msg('2', 'Вы уже авторизованы', '2');
- } return $this->view->content .= $this->view->parse_template_path($DATA, 'modules/user/registration.tpl');
- } function action_activation() { global $nav, $user;
- $DATA = array();
- $this->view->changeTitle('Активация аккаунта »
- Личный кабинет');
- $nav[] = array('url' => '/user/activation', 'name' => 'Активация аккаунта');
- if ( !$user['id'] ) { return $this->view->msg('2', 'Вы не авторизованы', '2');
- } if ( $user['gid'] >= "3" ) { return $this->view->msg('2', 'Аккаунт уже активирован', '2');
- } if ( !empty($_GET['code']) ) { $DATA['code'] = filter_var($_GET['code'], 515);
- } if ( !empty( $_POST ) ) { $this->view->content .= $this->model->activation();
- } $DATA['user'] = $user;
- return $this->view->content .= $this->view->parse_template_path($DATA, 'modules/user/activation.tpl');
- } function action_auth() { global $nav, $user;
- $DATA = array();
- $nav[] = array('url' => '/user/auth', 'name' => 'Авторизация');
- $this->view->changeTitle('Авторизация »
- Личный кабинет');
- if ( $user['id'] ) { return $this->view->msg('2', 'Вы уже авторизованы', '2');
- } return $this->view->content .= $this->view->parse_template_path($DATA, 'modules/user/auth.tpl');
- } function action_voucher() { global $nav, $user;
- $DATA = array();
- $this->view->changeTitle('Активировать ваучер »
- Личный кабинет');
- $nav[] = array('url' => '/user/voucher/', 'name' => 'Активировать ваучер');
- if ( !$user['id'] ) { return $this->view->msg('2', 'Вы не авторизованы', '2');
- } $DATA['games'] = $this->model->getGameList();
- $DATA['user'] = $user;
- return $this->view->content .= $this->view->parse_template_path($DATA, 'modules/user/voucher.tpl');
- } function action_add() { global $nav, $user;
- $DATA = array();
- $this->view->changeTitle('Добавить сервер »
- Личный кабинет');
- $nav[] = array('url' => '/user/add/', 'name' => 'Добавить сервер');
- if ( !$user['id'] ) { return $this->view->msg('2', 'Вы не авторизованы', '2');
- } $DATA['games'] = $this->model->getGameList();
- $DATA['user'] = $user;
- return $this->view->content .= $this->view->parse_template_path($DATA, 'modules/user/add.tpl');
- } function action_ajax_vaucher() { global $user;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( !$user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы не авторизированы!')));
- $address = $this->view->safevar($_POST['address']);
- $game = $this->view->safevar($_POST['game']);
- $key = $this->view->safevar($_POST['key']);
- $site = isset( $_POST['site'] ) ? $this->view->safevar($_POST['site']) : '';
- $captcha = $this->view->safevar($_POST['captcha']);
- if ( $user['id'] ) $email = $user['email'];
- else $email = $this->view->safevar($_POST['email']);
- if ( empty( $address ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите IP:PORT сервера')));
- else if ( empty( $game ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Выберите игру')));
- else if ( empty( $key ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите ваучер')));
- else if ( empty( $email ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите Эл. почту')));
- else if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'E-mail ('.$email.') указан не верно')));
- else if ( empty( $captcha ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча не введена')));
- $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $this->view->sconfigs()['recaptcha_secretkey'] . '&response=' . $captcha);
- $responseData = json_decode($verifyResponse);
- if ( $responseData->success == false ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча введена не верно')));
- $this->db->query("SELECT * FROM `vaucher` WHERE `key` = '{$key}' AND `status` = '0'");
- if ( $this->db->rowCount() > 0 ) { foreach ( $this->db->resultSet() as $row ) { $vaucher_id = $row['id'];
- $service = explode('-', $row['service_id']);
- $user_id = $user['id'];
- $this->db->query( "SELECT * FROM `service` WHERE `id` = {$service[0]}" );
- $row_service = $this->db->single();
- $name = $row_service['name'];
- $limit = $row_service['limit'];
- $type_service = $row_service['type'];
- $row_service['service'] = json_decode($row_service['service'], true);
- if ( empty ( $row_service['service'][$service[1]] ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Услуга не найдена')));
- if ( $service[0] == 3 ) $cnt = $row_service['service'][$service[1]]['rounds'];
- else $cnt = $row_service['service'][$service[1]]['days'];
- if ( $service[0] == 1 ) $types = 'top';
- else if ( $service[0] == 2 ) $types = 'vip';
- else if ( $service[0] == 3 ) $types = 'boost';
- else if ( $service[0] == 4 ) $types = 'gamemenu';
- else $types = 'top';
- $this->db->query( "SELECT `id` FROM `servers` WHERE `{$types}` = '1' AND `type` = '{$game}'" );
- $count_service = $this->db->rowCount();
- $this->db->query( "SELECT * FROM `servers` WHERE `address` = '{$address}'" );
- if ( $this->db->rowCount() > 0 ) { $row_s = $this->db->single();
- if ( $user_id > 0 ) { $this->db->query( "SELECT * FROM `user_servers` WHERE `sid` = '{$row_s['id']}'" );
- if ( !$this->db->rowCount() ) { $this->db->query("INSERT INTO `user_servers` (`sid`, `uid`) VALUES (:sid, :uid)");
- $this->db->bind(':sid', $sid);
- $this->db->bind(':uid', $user_id);
- $this->db->execute();
- } } } else { $ip = explode(':', $address)[0];
- $ip = gethostbyname($ip);
- $json = file_get_contents('https://ipapi.co/' . $ip . '/json/');
- $country = json_decode($json, TRUE);
- $country = $country['country'];
- $this->db->query("INSERT INTO `servers` (`hostname`, `address`, `map`, `players`, `maxplayers`, `type`, `country`, `date_created`, `modded`) VALUES (:hostname, :address, :map, :players, :maxplayers, :type, :country, UNIX_TIMESTAMP(), '1')");
- $this->db->bind(':hostname', 'Сервер отключен');
- $this->db->bind(':address', $address);
- $this->db->bind(':map', 'no_map');
- $this->db->bind(':players', '0');
- $this->db->bind(':maxplayers', '0');
- $this->db->bind(':type', $game);
- $this->db->bind(':country', $country);
- $this->db->execute();
- $sid = $this->db->lastInsertId();
- if ( $user_id > 0 ) { $this->db->query("INSERT INTO `user_servers` (`sid`, `uid`) VALUES (:sid, :uid)");
- $this->db->bind(':sid', $sid);
- $this->db->bind(':uid', $user_id);
- $this->db->execute();
- } } if ( $type_service == '2' ) { if($count_service >= $limit) { $this->db->query( "SELECT * FROM `servers` WHERE `boost` = '1' AND `type` = '{$game}' ORDER BY `boost_created`" );
- foreach ( $this->db->resultSet() as $val ) { if($val['boost_rounds'] == 1) { $this->db->query("UPDATE `servers` SET `boost` = '0', `boost_created` = '0', `boost_rounds` = '0' WHERE `id` = '{$val['id']}'");
- $this->db->execute();
- break;
- } else { $this->db->query("UPDATE `servers` SET `boost` = '1', `boost_created` = '".(time()+1)."', `boost_rounds` = `boost_rounds` - '1' WHERE `id` = '{$val['id']}'");
- $this->db->execute();
- } } } $this->db->query( "UPDATE `servers` SET `boost` = '1', `boost_created` = '".(time()+1)."', `boost_rounds` = `boost_rounds` + '{$cnt}' WHERE `address` = '{$address}'" );
- $this->db->execute();
- } else { $created = $types.'_created';
- $end = $types.'_end';
- $time = time();
- $this->db->query( "SELECT * FROM `servers` WHERE `address` = '{$address}'" );
- $row = $this->db->single();
- if ( $row[$types] == 1 ) $date_end = $row[$end] + ($cnt * 24 * 60 * 60);
- else $date_end = $time + ($cnt * 24 * 60 * 60);
- $this->db->query( "UPDATE `servers` SET `{$types}` = '1', `{$created}` = '{$time}', `{$end}` = '{$date_end}' WHERE `address` = '{$address}'" );
- $this->db->execute();
- } $this->db->query( "UPDATE `vaucher` SET `address` = '{$address}', `user_id` = '{$user['id']}', `status` = '1' WHERE `id` = '{$vaucher_id}'" );
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => 'Ваучер успешно активирован')));
- } } else exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ваучер не найден')));
- } function action_ajax_registration() { global $user;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( $user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы уже зарегестрированы!')));
- $email = $this->view->safevar($_POST['email']);
- $login = $this->view->safevar($_POST['login']);
- $password1 = $this->view->safevar($_POST['password1']);
- $password2 = $this->view->safevar($_POST['password2']);
- $captcha = $this->view->safevar($_POST['captcha']);
- if ( empty( $login ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите логин')));
- else if ( empty( $email ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите Эл. почту')));
- else if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'E-mail ('.$email.') указан не верно')));
- else if ( empty( $password1 ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите пароль')));
- else if ( empty( $password2 ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Подтвердите пароль')));
- else if( $password1 != $password2 ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Пароли не совпадают')));
- else if ( empty( $captcha ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча не введена')));
- $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $this->view->sconfigs()['recaptcha_secretkey'] . '&response=' . $captcha);
- $responseData = json_decode($verifyResponse);
- if ( $responseData->success == false ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча введена не верно')));
- $this->db->query("SELECT `email` FROM `users` WHERE `email` = :email");
- $this->db->bind(':email', $email);
- if( $this->db->rowCount() >= 1 ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Эл. почта [ ' . $email . ' ] уже зарегистрирована')));
- $this->db->query("SELECT `login` FROM `users` WHERE `login` = :login");
- $this->db->bind(':login', $login);
- if( $this->db->rowCount() >= 1 ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Пользователь с логином [ ' . $login . ' ] уже зарегистрирован')));
- $code = $this->view->GenerateKey(10);
- $time = time();
- $ip = $this->view->getVisitorIp();
- $password = md5($password1);
- $this->db->query("INSERT INTO `users` (`email`, `password`, `login`, `gid`, `reg_ip`, `date_reg`, `code`) VALUES (:email, :password, :login, :gid, :reg_ip, :date_reg, :code)");
- $this->db->bind(':email', $email);
- $this->db->bind(':password', $password);
- $this->db->bind(':login', $login);
- $this->db->bind(':gid', '2');
- $this->db->bind(':reg_ip', $ip);
- $this->db->bind(':date_reg', $time);
- $this->db->bind(':code', $code);
- if ( $this->db->execute() ) { $lastID = $this->db->lastInsertId();
- $to = $email;
- $subject = 'Добро пожаловать на сайт '.$_SERVER['SERVER_NAME'].'';
- $headers = "From: Support <support@".$_SERVER['SERVER_NAME'].">\r\n";
- $headers .= "Reply-To: ". strip_tags($email) . "\r\n";
- $headers .= "MIME-Version: 1.0\r\n";
- $headers .= "Content-Type: text/html;
- charset=UTF-8\r\n";
- $message = '<html><body>';
- $message .= '
- Добро пожаловать на сайт <a href="https://'.$_SERVER['SERVER_NAME'].'">'.$_SERVER['SERVER_NAME'].'</a>
- <br /><br />
- Пожалуйста сохраните это сообщение. Параметры вашей учётной записи таковы:
- <br /><br />
- ---------------------------- <br />
- Имя пользователя: '.$login.' <br />
- Пароль пользователя: '.$password1.' <br />
- ----------------------------
- <br /><br />
- ~~~~~~~~<br />
- Спасибо за то, что зарегистрировались на нашем сайте.
- ';
- $message .= '</body></html>';
- mail($to, $subject, $message, $headers);
- $hash = md5($this->view->GenerateKey(10));
- setcookie("hash", $hash, time()+2592000, "/");
- setcookie("id", $lastID, time()+2592000, "/");
- $this->db->query("UPDATE `users` SET `hash` = :hash WHERE `id` = :id");
- $this->db->bind(':hash', $hash);
- $this->db->bind(':id', $lastID);
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => 'Аккаунт успешно зарегистрирован!')));
- } } function action_ajax_auth() { global $user;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( $user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы уже авторизированы!')));
- $login = $this->view->safevar($_POST['login']);
- $password = $this->view->safevar($_POST['password']);
- $captcha = $this->view->safevar($_POST['captcha']);
- if ( empty( $login ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите логин')));
- else if ( empty( $password ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Введите пароль')));
- else if ( empty( $captcha ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча не введена')));
- $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $this->view->sconfigs()['recaptcha_secretkey'] . '&response=' . $captcha);
- $responseData = json_decode($verifyResponse);
- if ( $responseData->success == false ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Каптча введена не верно')));
- $password = md5($password);
- $this->db->query("SELECT * FROM `users` WHERE `login` = '{$login}' AND `password` = '{$password}'");
- if ( $this->db->rowCount() == 1 ) { foreach ( $this->db->resultSet() as $row ) { $hash = md5($this->view->GenerateKey(10));
- setcookie("hash", $hash, time()+2592000, "/");
- setcookie("id", $row['id'], time()+2592000, "/");
- $this->db->query("UPDATE `users` SET `hash` = :hash WHERE `id` = :id");
- $this->db->bind(':hash', $hash);
- $this->db->bind(':id', $row['id']);
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => 'Выполняется авторизация!')));
- } } else { exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Логин или пароль не совпадают!')));
- } } function action_ajax_logout() { global $user;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( !$user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы не авторизированы')));
- if ( !isset($_SESSION) ) session_start();
- $id = $this->view->safevar($user['id']);
- $hash = $this->view->safevar($_COOKIE['hash']);
- session_unset();
- session_destroy();
- setcookie('id', '', 0, "/");
- setcookie('hash', '', 0, "/");
- $this->db->query("SELECT * FROM `users` WHERE `id` = '{$id}' AND FIND_IN_SET('{$hash}', `hash`)");
- if ( $this->db->rowCount() >= 1 ) { foreach ( $this->db->resultSet() as $row ) { $check = explode(",", $row['hash']);
- if($key = array_search($hash, $check) AND isset($check[$key])) unset($check[$key]);
- $newhash = implode(',',$check);
- $this->db->query("UPDATE `users` SET `hash` = '{$newhash}' WHERE `id` = '{$id}'");
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => 'Вы успешно вышлии из аккаунта!')));
- } } } function action_ajax_rm_srv() { global $user;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( !$user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы не авторизированы')));
- $id = $this->view->safevar($_POST['id']);
- if ( empty( $id ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Сервер не найден!')));
- $this->db->query("SELECT * FROM `user_servers` WHERE `uid` = '{$user['id']}' AND `sid` = '{$id}'");
- if ( $this->db->rowCount() == 1 ) { $this->db->query("DELETE FROM `user_servers` WHERE `uid` = '{$user['id']}' AND `sid` = '{$id}'");
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => 'Сервер был удален из аккаунта!')));
- } else { exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Сервер не найден!')));
- } } function action_ajax_validate_owner() { global $user, $servers;
- if ( !$this->view->is_ajax() ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Ошибка')));
- if ( !$user['id'] ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Вы не авторизированы!')));
- $id = $this->view->safevar($_POST['sid']);
- if ( empty( $id ) ) exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => 'Сервер не найден!')));
- $this->db->query("SELECT `id` FROM `servers` WHERE `owner` = '{$user['id']}' AND `id` = '{$id}'");
- if ( $this->db->rowCount() == 1 ) { exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => '<span class=\"moderation\">Вы уже подтвердили права на этот сервер.</span><hr />')));
- } else { $this->db->query("SELECT `address`, `type`, `hostname` FROM `servers` WHERE `id` = '{$id}'");
- $row = $this->db->single();
- $address = explode(':', $row['address']);
- $data = $servers->getinfoserver($row['type'], $address[0], $address[1]);
- $hostname = filter_var($data['s']['name'], 515);
- if ( $hostname == "Monitoring-Steam.ru | Validate" ) { $this->db->query("UPDATE `servers` SET `owner` = '{$user['id']}' WHERE `id` = '{$id}'");
- $this->db->execute();
- exit(json_encode(array('success' => true, 'status' => 'success', 'msg' => "<span class=\"accept\">Права успешно подтверждены: ".$row['hostname']."</span><hr />")));
- } else { exit(json_encode(array('success' => true, 'status' => 'error', 'msg' => "<span class=\"reject\">Ошибка, текущее название: ".$hostname."</span><hr />")));
- } } } }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement