GNServer 0.0.0.0.55__py3-none-any.whl → 0.0.0.0.57__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- GNServer/_app.py +15 -9
- GNServer/models.py +9 -2
- {gnserver-0.0.0.0.55.dist-info → gnserver-0.0.0.0.57.dist-info}/METADATA +1 -1
- {gnserver-0.0.0.0.55.dist-info → gnserver-0.0.0.0.57.dist-info}/RECORD +7 -7
- {gnserver-0.0.0.0.55.dist-info → gnserver-0.0.0.0.57.dist-info}/WHEEL +0 -0
- {gnserver-0.0.0.0.55.dist-info → gnserver-0.0.0.0.57.dist-info}/licenses/LICENSE +0 -0
- {gnserver-0.0.0.0.55.dist-info → gnserver-0.0.0.0.57.dist-info}/top_level.txt +0 -0
GNServer/_app.py
CHANGED
@@ -35,15 +35,12 @@ except ImportError:
|
|
35
35
|
print("uvloop не установлен")
|
36
36
|
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
38
|
import logging
|
42
39
|
|
43
40
|
logger = logging.getLogger("GNServer")
|
44
41
|
logger.setLevel(logging.DEBUG)
|
45
42
|
|
46
|
-
console = logging.StreamHandler()
|
43
|
+
console = logging.StreamHandler(sys.stdout)
|
47
44
|
console.setLevel(logging.DEBUG)
|
48
45
|
console.setFormatter(logging.Formatter("[GNServer] %(name)s: %(levelname)s: %(message)s"))
|
49
46
|
logger.addHandler(console)
|
@@ -335,6 +332,8 @@ class App:
|
|
335
332
|
logger.debug(f'Пакет отклонен: mode пакета {mode}. Разрешен 1, 2, 4')
|
336
333
|
return
|
337
334
|
|
335
|
+
stream_id = event.stream_id
|
336
|
+
|
338
337
|
if not stream: # если не стрим, то ждем конец quic стрима и запускаем обработку ответа
|
339
338
|
if event.end_stream:
|
340
339
|
|
@@ -344,13 +343,17 @@ class App:
|
|
344
343
|
domain = None
|
345
344
|
|
346
345
|
if buf is not None:
|
347
|
-
|
348
|
-
|
349
|
-
|
346
|
+
try:
|
347
|
+
request = GNRequest.deserialize(buf, mode)
|
348
|
+
if domain is not None:
|
349
|
+
request.client._data['domain'] = domain
|
350
|
+
except:
|
351
|
+
asyncio.create_task(self.sendRawResponse(stream_id, AllGNFastCommands.KDCDecryptRequestFailed().serialize(mode=mode)))
|
352
|
+
|
350
353
|
else:
|
351
354
|
raise Exception('Не удалось расшифровать от KDC')
|
352
355
|
|
353
|
-
request.stream_id =
|
356
|
+
request.stream_id = stream_id # type: ignore
|
354
357
|
asyncio.create_task(self._handle_request(request, mode))
|
355
358
|
logger.debug(f'Отправлена задача разрешения пакета {request} route -> {request.route}')
|
356
359
|
|
@@ -456,7 +459,10 @@ class App:
|
|
456
459
|
if self._api._kdc is not None:
|
457
460
|
blob = self._api._kdc.encode(request.client.domain, blob)
|
458
461
|
|
459
|
-
self.
|
462
|
+
await self.sendRawResponse(request.stream_id, blob=blob, end_stream=end_stream)
|
463
|
+
|
464
|
+
async def sendRawResponse(self, stream_id: int, blob: bytes, end_stream: bool = True):
|
465
|
+
self._quic.send_stream_data(stream_id, blob, end_stream=end_stream) # type: ignore
|
460
466
|
self.transmit()
|
461
467
|
|
462
468
|
def run(
|
GNServer/models.py
CHANGED
@@ -34,17 +34,24 @@ class KDCObject:
|
|
34
34
|
self._servers_keys_hash_domain[h] = self._kdc_domain
|
35
35
|
self._servers_keys_domain_hash[self._kdc_domain] = h
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
|
38
|
+
if servers_keys is not None:
|
39
|
+
for i in self._requested_domains:
|
40
|
+
if i in servers_keys:
|
41
|
+
self._requested_domains.remove(i)
|
42
|
+
|
43
|
+
if len(self._requested_domains) > 0:
|
39
44
|
payload = self._requested_domains
|
40
45
|
r = await self._client.request(GNRequest('GET', Url(f'gn://{self._kdc_domain}/api/sys/server/keys'), payload=payload))
|
41
46
|
|
42
47
|
if not r.command.ok:
|
48
|
+
print(f'ERROR: {r.command} {r.payload}')
|
43
49
|
raise r
|
44
50
|
|
45
51
|
servers_keys = r.payload
|
46
52
|
|
47
53
|
if servers_keys is None:
|
54
|
+
print(f'ERROR: {r.command} {r.payload}')
|
48
55
|
raise r
|
49
56
|
|
50
57
|
self._servers_keys.update(servers_keys)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
GNServer/__init__.py,sha256=6CMCZlkBO74PW8i8DAri5xz2fYM9EyPH8vdsLYBMmOo,1560
|
2
|
-
GNServer/_app.py,sha256=
|
2
|
+
GNServer/_app.py,sha256=fXPrxk-YiprBvjYQckAj3oSHLdWlAENPZ6WkqC8bFZ8,19242
|
3
3
|
GNServer/_client.py,sha256=IEzben2zZfgpU9DhcnjB9uQLCInllZhdoLTZyM72ldA,32610
|
4
4
|
GNServer/_cors_resolver.py,sha256=aDxk4ItaEK-6vlDbkno8FJZEjczGEe8vkOui6_kz5-Y,5950
|
5
5
|
GNServer/_crt.py,sha256=SOmyX7zBiCY9EhVSekksQtBHgTIZVvdqNZ8Ni-E5Zow,1390
|
6
6
|
GNServer/_func_params_validation.py,sha256=pDXRzPVTdPnDHFMMmKd014SConBjFOuaLeJTY0vldlM,11412
|
7
7
|
GNServer/_routes.py,sha256=bJnmQ8uEhPVQgy2tTqE5TEIM8aFXV-lVI7c2nG0rQwk,3384
|
8
8
|
GNServer/_template_resolver.py,sha256=vdJYb_7PjIeTWq-Clr7jyj7QIvPBxplU7EqeOuMJ64c,1409
|
9
|
-
GNServer/models.py,sha256=
|
10
|
-
gnserver-0.0.0.0.
|
11
|
-
gnserver-0.0.0.0.
|
12
|
-
gnserver-0.0.0.0.
|
13
|
-
gnserver-0.0.0.0.
|
14
|
-
gnserver-0.0.0.0.
|
9
|
+
GNServer/models.py,sha256=Te9Fyw-EsMnEZt0TPE9H0Zc_atjq2X94VsLSQH_k1Kk,3145
|
10
|
+
gnserver-0.0.0.0.57.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
|
11
|
+
gnserver-0.0.0.0.57.dist-info/METADATA,sha256=0-K5kQ60Cyj5nwSYGxHYCa5FvGDJZxU6-PQwaTaE4ks,830
|
12
|
+
gnserver-0.0.0.0.57.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
13
|
+
gnserver-0.0.0.0.57.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
|
14
|
+
gnserver-0.0.0.0.57.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|