EngineGP

Форк
0
/
privileges.php 
246 строк · 9.6 Кб
1
<?php
2
/*
3
 * EngineGP   (https://enginegp.ru or https://enginegp.com)
4
 *
5
 * @copyright Copyright (c) 2018-present Solovev Sergei <inbox@seansolovev.ru>
6
 *
7
 * @link      https://github.com/EngineGPDev/EngineGP for the canonical source repository
8
 *
9
 * @license   https://github.com/EngineGPDev/EngineGP/blob/main/LICENSE MIT License
10
 */
11

12
if (!defined('EGP')) {
13
    exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
14
}
15

16
if ($go) {
17
    $nmch = 'privileges' . sys::ip();
18

19
    if ($mcache->get($nmch)) {
20
        sys::outjs(['e' => sys::text('other', 'mcache')], $nmch);
21
    }
22

23
    $mcache->set($nmch, 1, false, 10);
24

25
    $aData = [];
26

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);
34

35
    if (!in_array($aData['type'], ['a', 'ca', 'de'])) {
36
        sys::outjs(['e' => 'Неправильно передан тип авторизации на сервере'], $nmch);
37
    }
38

39
    switch ($aData['type']) {
40
        case 'a':
41
            if ($aData['data'] == '') {
42
                sys::outjs(['e' => 'Необходимо указать ник'], $nmch);
43
            }
44
            break;
45
        case 'ca':
46
            if (sys::valid($aData['data'], 'steamid') || sys::valid($aData['data'], 'steamid3')) {
47
                sys::outjs(['e' => 'Неправильный формат SteamID'], $nmch);
48
            }
49
            break;
50
        default:
51
            if (sys::valid($aData['data'], 'ip')) {
52
                sys::outjs(['e' => 'Неправильный формат IP'], $nmch);
53
            }
54
    }
55

56
    if (sys::valid($aData['address'], 'other', $aValid['address'])) {
57
        sys::outjs(['e' => 'Адрес игрового сервера имеет неверный формат'], $nmch);
58
    }
59

60
    $sql->query('SELECT `id`, `name`, `game` FROM `servers` WHERE `address`="' . $aData['address'] . '" LIMIT 1');
61
    if (!$sql->num()) {
62
        sys::outjs(['e' => 'Игровой сервер не найден в базе'], $nmch);
63
    }
64

65
    $server = $sql->get();
66

67
    $sql->query('SELECT `id` FROM `admins_' . $server['game'] . '` WHERE `server`="' . $server['id'] . '" AND `value`="' . htmlspecialchars($aData['data']) . '" LIMIT 1');
68
    if ($sql->num()) {
69
        sys::outjs(['e' => 'Привилегия для данного игрока уже установлена, дождитесь её завершения.'], $nmch);
70
    }
71

72
    if ($aData['type'] != 'de' and sys::valid($aData['passwd'], 'other', $aValid['passwd'])) {
73
        sys::outjs(['e' => 'Неправильный формат пароля, используйте латинские буквы и цифры от 6 до 20 символов'], $nmch);
74
    }
75

76
    if (sys::valid($aData['mail'], 'other', $aValid['mail'])) {
77
        sys::outjs(['e' => 'Неправильный формат почты'], $nmch);
78
    }
79

80
    $sql->query('SELECT `flags`, `immunity`, `data` FROM `privileges_list` WHERE `id`="' . $aData['service'] . '" AND `server`="' . $server['id'] . '" LIMIT 1');
81
    if (!$sql->num()) {
82
        sys::outjs(['e' => 'Указанная услуга не найдена'], $nmch);
83
    }
84

85
    $privilege = $sql->get();
86

87
    $data = sys::b64djs($privilege['data']);
88

89
    if (!array_key_exists($aData['time'], $data)) {
90
        sys::outjs(['e' => 'Неправильно указан период'], $nmch);
91
    }
92

93
    $price = $data[$aData['time']];
94

95
    $time = !$aData['time'] ? $start_point + 172800000 : $start_point + $aData['time'] * 86400;
96

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']) . '",'
102
            . '`active`="1",'
103
            . '`passwd`="' . $aData['passwd'] . '",'
104
            . '`flags`="' . $privilege['flags'] . '",'
105
            . '`type`="' . $aData['type'] . '",'
106
            . '`time`="' . $time . '",'
107
            . '`text`="' . htmlspecialchars($text) . '",'
108
            . '`info`="Онлайн покупка"';
109
    } else {
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'] . '",'
114
            . '`active`="1",'
115
            . '`passwd`="' . htmlspecialchars($aData['passwd']) . '",'
116
            . '`flags`="' . $aData['flags'] . '",'
117
            . '`immunity`="' . $privilege['immunity'] . '",'
118
            . '`time`="' . $time . '",'
119
            . '`text`="' . htmlspecialchars($text) . '",'
120
            . '`info`="Онлайн покупка"';
121
    }
122

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');
129

130
    if (!$sql->num()) {
131
        $key = sys::key();
132

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'] . '",'
141
            . '`status`="0"');
142
    } else {
143
        $pay = $sql->get();
144
        $key = $pay['key'];
145
    }
146

147
    $html->get('pay', 'sections/services/privileges');
148

149
    $html->set('cur', $cfg['currency']);
150
    $html->set('wmr', $cfg['webmoney_wmr']);
151
    $html->set('key', $key);
152
    $html->set('sum', $price);
153

154
    $html->pack('pay');
155

156
    sys::outjs(['s' => $html->arr['pay']], $nmch);
157
}
158

159
if (isset($url['select'])) {
160
    if ($url['select'] == 'time') {
161
        $service = isset($url['service']) ? sys::int($url['service']) : sys::out();
162

163
        $sql->query('SELECT  `data` FROM `privileges_list` WHERE `id`="' . $service . '" LIMIT 1');
164
        $list = $sql->get();
165

166
        $time = '';
167

168
        $data = sys::b64djs($list['data']);
169

170
        if (isset($data[0])) {
171
            $time = '<option value="0">Навсегда / ' . $data[0] . ' ' . $cfg['currency'] . '</option>';
172

173
            unset($data[0]);
174
        }
175

176
        foreach ($data as $days => $price) {
177
            $time .= '<option value="' . $days . '">' . $days . ' ' . sys::day($time) . ' / ' . $price . ' ' . $cfg['currency'] . '</option>';
178
        }
179

180
        sys::out($time);
181
    }
182

183
    $address = isset($_POST['address']) ? trim($_POST['address']) : sys::outjs(['e' => 'Необходимо указать адрес игрового сервера']);
184

185
    if (sys::valid($address, 'other', $aValid['address'])) {
186
        sys::outjs(['e' => 'Указанный адрес имеет неверный формат']);
187
    }
188

189
    $sql->query('SELECT `id`, `name` FROM `servers` WHERE `address`="' . $address . '" LIMIT 1');
190
    if (!$sql->num()) {
191
        sys::outjs(['e' => 'Игровой сервер не найден в базе']);
192
    }
193

194
    $server = $sql->get();
195

196
    $sql->query('SELECT `active` FROM `privileges` WHERE `server`="' . $server['id'] . '" LIMIT 1');
197
    if (!$sql->num()) {
198
        sys::outjs(['e' => 'Игровой сервер не предоставляет услуги']);
199
    }
200

201
    $privilege = $sql->get();
202

203
    if (!$privilege['active']) {
204
        sys::outjs(['e' => 'Игровой сервер времено не предоставляет услуги']);
205
    }
206

207
    $name = '';
208

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>';
212
    }
213

214
    $sql->query('SELECT  `data` FROM `privileges_list` WHERE `server`="' . $server['id'] . '" ORDER BY `id` ASC LIMIT 1');
215
    $list = $sql->get();
216

217
    $time = '';
218

219
    $data = sys::b64djs($list['data']);
220

221
    if (isset($data[0])) {
222
        $time = '<option value="0">Навсегда / ' . $data[0] . ' ' . $cfg['currency'] . '</option>';
223

224
        unset($data[0]);
225
    }
226

227
    foreach ($data as $days => $price) {
228
        $time .= '<option value="' . $days . '">' . $days . ' ' . sys::day($time) . ' / ' . $price . ' ' . $cfg['currency'] . '</option>';
229
    }
230

231
    $html->get('form', 'sections/services/privileges');
232

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);
238

239
    $html->pack('form');
240

241
    sys::outjs(['s' => $html->arr['form']]);
242
}
243

244
$html->get('index', 'sections/services/privileges');
245

246
$html->pack('main');
247

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.