3
* EngineGP (https://enginegp.ru or https://enginegp.com)
5
* @copyright Copyright (c) 2018-present Solovev Sergei <inbox@seansolovev.ru>
7
* @link https://github.com/EngineGPDev/EngineGP for the canonical source repository
9
* @license https://github.com/EngineGPDev/EngineGP/blob/main/LICENSE MIT License
13
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
17
$nmch = 'privileges' . sys::ip();
19
if ($mcache->get($nmch)) {
20
sys::outjs(['e' => sys::text('other', 'mcache')], $nmch);
23
$mcache->set($nmch, 1, false, 10);
27
$aData['address'] = $_POST['address'] ?? sys::outjs(['e' => 'Необходимо указать адрес сервера'], $nmch);
28
$aData['type'] = $_POST['type'] ?? sys::outjs(['e' => 'Необходимо указать тип авторизации на сервере'], $nmch);
29
$aData['data'] = isset($_POST['data']) ? str_replace('"', '', $_POST['data']) : sys::outjs(['e' => 'Необходимо указать данные авторизации'], $nmch);
30
$aData['passwd'] = $_POST['passwd'] ?? '';
31
$aData['service'] = isset($_POST['service']) ? sys::int($_POST['service']) : sys::outjs(['e' => 'Необходимо указать услугу'], $nmch);
32
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(['e' => 'Необходимо указать период'], $nmch);
33
$aData['mail'] = $_POST['mail'] ?? sys::outjs(['e' => 'Необходимо указать почту'], $nmch);
35
if (!in_array($aData['type'], ['a', 'ca', 'de'])) {
36
sys::outjs(['e' => 'Неправильно передан тип авторизации на сервере'], $nmch);
39
switch ($aData['type']) {
41
if ($aData['data'] == '') {
42
sys::outjs(['e' => 'Необходимо указать ник'], $nmch);
46
if (sys::valid($aData['data'], 'steamid') || sys::valid($aData['data'], 'steamid3')) {
47
sys::outjs(['e' => 'Неправильный формат SteamID'], $nmch);
51
if (sys::valid($aData['data'], 'ip')) {
52
sys::outjs(['e' => 'Неправильный формат IP'], $nmch);
56
if (sys::valid($aData['address'], 'other', $aValid['address'])) {
57
sys::outjs(['e' => 'Адрес игрового сервера имеет неверный формат'], $nmch);
60
$sql->query('SELECT `id`, `name`, `game` FROM `servers` WHERE `address`="' . $aData['address'] . '" LIMIT 1');
62
sys::outjs(['e' => 'Игровой сервер не найден в базе'], $nmch);
65
$server = $sql->get();
67
$sql->query('SELECT `id` FROM `admins_' . $server['game'] . '` WHERE `server`="' . $server['id'] . '" AND `value`="' . htmlspecialchars($aData['data']) . '" LIMIT 1');
69
sys::outjs(['e' => 'Привилегия для данного игрока уже установлена, дождитесь её завершения.'], $nmch);
72
if ($aData['type'] != 'de' and sys::valid($aData['passwd'], 'other', $aValid['passwd'])) {
73
sys::outjs(['e' => 'Неправильный формат пароля, используйте латинские буквы и цифры от 6 до 20 символов'], $nmch);
76
if (sys::valid($aData['mail'], 'other', $aValid['mail'])) {
77
sys::outjs(['e' => 'Неправильный формат почты'], $nmch);
80
$sql->query('SELECT `flags`, `immunity`, `data` FROM `privileges_list` WHERE `id`="' . $aData['service'] . '" AND `server`="' . $server['id'] . '" LIMIT 1');
82
sys::outjs(['e' => 'Указанная услуга не найдена'], $nmch);
85
$privilege = $sql->get();
87
$data = sys::b64djs($privilege['data']);
89
if (!array_key_exists($aData['time'], $data)) {
90
sys::outjs(['e' => 'Неправильно указан период'], $nmch);
93
$price = $data[$aData['time']];
95
$time = !$aData['time'] ? $start_point + 172800000 : $start_point + $aData['time'] * 86400;
97
if ($server['game'] == 'cs') {
98
$text = '"' . $aData['data'] . '" "' . $aData['passwd'] . '" "' . $privilege['flags'] . '" "' . $aData['type'] . '"';
99
$sqlq = 'INSERT INTO `admins_' . $server['game'] . '` set'
100
. '`server`="' . $server['id'] . '",'
101
. '`value`="' . htmlspecialchars($aData['data']) . '",'
103
. '`passwd`="' . $aData['passwd'] . '",'
104
. '`flags`="' . $privilege['flags'] . '",'
105
. '`type`="' . $aData['type'] . '",'
106
. '`time`="' . $time . '",'
107
. '`text`="' . htmlspecialchars($text) . '",'
108
. '`info`="Онлайн покупка"';
110
$text = '"' . $aData['data'] . '" "' . $aData['immunity'] . ':' . $privilege['flags'] . '" "' . $aData['passwd'] . '"';
111
$sqlq = 'INSERT INTO `admins_' . $server['game'] . '` set'
112
. '`server`="' . $server['id'] . '",'
113
. '`value`="' . $aData['data'] . '",'
115
. '`passwd`="' . htmlspecialchars($aData['passwd']) . '",'
116
. '`flags`="' . $aData['flags'] . '",'
117
. '`immunity`="' . $privilege['immunity'] . '",'
118
. '`time`="' . $time . '",'
119
. '`text`="' . htmlspecialchars($text) . '",'
120
. '`info`="Онлайн покупка"';
123
$sql->query('SELECT `key` FROM `privileges_buy` WHERE '
124
. '`server`="' . $server['id'] . '" AND'
125
. '`text`="' . base64_encode($text) . '" AND'
126
. '`price`="' . $price . '" AND'
127
. '`mail`="' . $aData['mail'] . '" AND'
128
. '`status`="0" LIMIT 1');
133
$sql->query('INSERT INTO `privileges_buy` set '
134
. '`server`="' . $server['id'] . '",'
135
. '`text`="' . base64_encode($text) . '",'
136
. '`sql`="' . base64_encode($sqlq) . '",'
137
. '`price`="' . $price . '",'
138
. '`key`="' . $key . '",'
139
. '`date`="' . $start_point . '",'
140
. '`mail`="' . $aData['mail'] . '",'
147
$html->get('pay', 'sections/services/privileges');
149
$html->set('cur', $cfg['currency']);
150
$html->set('wmr', $cfg['webmoney_wmr']);
151
$html->set('key', $key);
152
$html->set('sum', $price);
156
sys::outjs(['s' => $html->arr['pay']], $nmch);
159
if (isset($url['select'])) {
160
if ($url['select'] == 'time') {
161
$service = isset($url['service']) ? sys::int($url['service']) : sys::out();
163
$sql->query('SELECT `data` FROM `privileges_list` WHERE `id`="' . $service . '" LIMIT 1');
168
$data = sys::b64djs($list['data']);
170
if (isset($data[0])) {
171
$time = '<option value="0">Навсегда / ' . $data[0] . ' ' . $cfg['currency'] . '</option>';
176
foreach ($data as $days => $price) {
177
$time .= '<option value="' . $days . '">' . $days . ' ' . sys::day($time) . ' / ' . $price . ' ' . $cfg['currency'] . '</option>';
183
$address = isset($_POST['address']) ? trim($_POST['address']) : sys::outjs(['e' => 'Необходимо указать адрес игрового сервера']);
185
if (sys::valid($address, 'other', $aValid['address'])) {
186
sys::outjs(['e' => 'Указанный адрес имеет неверный формат']);
189
$sql->query('SELECT `id`, `name` FROM `servers` WHERE `address`="' . $address . '" LIMIT 1');
191
sys::outjs(['e' => 'Игровой сервер не найден в базе']);
194
$server = $sql->get();
196
$sql->query('SELECT `active` FROM `privileges` WHERE `server`="' . $server['id'] . '" LIMIT 1');
198
sys::outjs(['e' => 'Игровой сервер не предоставляет услуги']);
201
$privilege = $sql->get();
203
if (!$privilege['active']) {
204
sys::outjs(['e' => 'Игровой сервер времено не предоставляет услуги']);
209
$sql->query('SELECT `id`, `name` FROM `privileges_list` WHERE `server`="' . $server['id'] . '" ORDER BY `id` ASC LIMIT 5');
210
while ($list = $sql->get()) {
211
$name .= '<option value="' . $list['id'] . '">' . $list['name'] . '</option>';
214
$sql->query('SELECT `data` FROM `privileges_list` WHERE `server`="' . $server['id'] . '" ORDER BY `id` ASC LIMIT 1');
219
$data = sys::b64djs($list['data']);
221
if (isset($data[0])) {
222
$time = '<option value="0">Навсегда / ' . $data[0] . ' ' . $cfg['currency'] . '</option>';
227
foreach ($data as $days => $price) {
228
$time .= '<option value="' . $days . '">' . $days . ' ' . sys::day($time) . ' / ' . $price . ' ' . $cfg['currency'] . '</option>';
231
$html->get('form', 'sections/services/privileges');
233
$html->set('home', $cfg['http']);
234
$html->set('name', $server['name']);
235
$html->set('address', $address);
236
$html->set('services', $name);
237
$html->set('time', $time);
241
sys::outjs(['s' => $html->arr['form']]);
244
$html->get('index', 'sections/services/privileges');