GNServer 0.0.0.0.50__py3-none-any.whl → 0.0.0.0.52__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 CHANGED
@@ -339,10 +339,14 @@ class App:
339
339
  if event.end_stream:
340
340
 
341
341
  if self._api._kdc is not None:
342
- buf = self._api._kdc.decode(buf)
342
+ buf, domain = self._api._kdc.decode(buf)
343
+ else:
344
+ domain = None
343
345
 
344
346
  if buf is not None:
345
347
  request = GNRequest.deserialize(buf, mode)
348
+ if domain is not None:
349
+ request.client._data['domain'] = domain
346
350
  else:
347
351
  raise Exception('Не удалось расшифровать от KDC')
348
352
 
@@ -368,8 +372,12 @@ class App:
368
372
  # формируем запрос
369
373
 
370
374
  if self._api._kdc is not None:
371
- data = self._api._kdc.decode(data)
375
+ data, domain = self._api._kdc.decode(data)
376
+ else:
377
+ domain = None
372
378
  request = GNRequest.deserialize(data, mode)
379
+ if domain is not None:
380
+ request.client._data['domain'] = domain
373
381
 
374
382
  logger.debug(request, f'event.stream_id -> {event.stream_id}')
375
383
 
@@ -446,7 +454,7 @@ class App:
446
454
 
447
455
 
448
456
  if self._api._kdc is not None:
449
- blob = self._api._kdc.encode(blob)
457
+ blob = self._api._kdc.encode(request.url.hostname, blob)
450
458
 
451
459
  self._quic.send_stream_data(request.stream_id, blob, end_stream=end_stream) # type: ignore
452
460
  self.transmit()
GNServer/_client.py CHANGED
@@ -620,10 +620,11 @@ class RawQuicClient(QuicConnectionProtocol):
620
620
  data = await fut
621
621
 
622
622
  if self.quicClient._client._kdc is not None:
623
- data = self.quicClient._client._kdc.decode(request.url.hostname, data)
623
+ data, domain = self.quicClient._client._kdc.decode(request.url.hostname, data)
624
624
 
625
625
  if data is not None:
626
- return GNResponse.deserialize(data, 2)
626
+ r = GNResponse.deserialize(data, 2)
627
+ return r
627
628
  else:
628
629
  return GNResponse('gn:client:0')
629
630
 
GNServer/models.py CHANGED
@@ -3,7 +3,6 @@ from typing import List, Optional, Dict
3
3
  from KeyisBTools.cryptography.sign import s2
4
4
  from KeyisBTools.cryptography import m1
5
5
 
6
- from ._client import AsyncClient
7
6
  from ._app import GNRequest, GNResponse
8
7
  from gnobjects.net.objects import Url
9
8
 
@@ -16,6 +15,7 @@ class KDCObject:
16
15
  self._kdc_key = kdc_key
17
16
  self._requested_domains = requested_domains
18
17
 
18
+ from ._client import AsyncClient
19
19
  self._client = AsyncClient(domain)
20
20
 
21
21
  self._servers_keys: Optional[Dict[str, bytes]] = None
@@ -60,14 +60,15 @@ class KDCObject:
60
60
 
61
61
  def decode(self, response: bytes):
62
62
  if len(response) < 164+64:
63
- return response
63
+ return response, None
64
64
 
65
65
  sig, domain_h, data = response[:164], response[164:164+64], response[164+64:]
66
66
 
67
67
  if domain_h not in self._servers_keys_hash_domain:
68
- return response
69
-
70
- key = self._servers_keys[self._servers_keys_hash_domain[domain_h]]
68
+ return response, None
69
+ d = self._servers_keys_hash_domain[domain_h]
70
+ key = self._servers_keys[d]
71
+
71
72
  if not s2.verify(key, sig):
72
- return None
73
- return m1.decrypt(self._domain.encode(), sig, data, key)
73
+ return None, None
74
+ return m1.decrypt(self._domain.encode(), sig, data, key), d
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GNServer
3
- Version: 0.0.0.0.50
3
+ Version: 0.0.0.0.52
4
4
  Summary: GNServer
5
5
  Home-page: https://github.com/KeyisB/libs/tree/main/GNServer
6
6
  Author: KeyisB
@@ -1,14 +1,14 @@
1
1
  GNServer/__init__.py,sha256=6CMCZlkBO74PW8i8DAri5xz2fYM9EyPH8vdsLYBMmOo,1560
2
- GNServer/_app.py,sha256=tXaeAZPfibuNSNCgebJnA9MGlk4nYTkPWcdxMcuXrlI,18369
3
- GNServer/_client.py,sha256=UISxnk6lhU90knh0okWA7aAlvTNiEvxZf7D472Y7eEM,32567
2
+ GNServer/_app.py,sha256=Tmdfzx-H0UqoIdX1RiWC1BV-NSu2dk-cve4eu2i6rE8,18757
3
+ GNServer/_client.py,sha256=JzWFdiZn5sdI-fzn3ljh_1V-B9p_a7hYJ5Xx5gnrvRg,32598
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=kVDInFDTHUiQIaYPSWFqRp2o0G6S7AC6Jb5eWhSZ6Fc,2592
10
- gnserver-0.0.0.0.50.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
11
- gnserver-0.0.0.0.50.dist-info/METADATA,sha256=E0dXGPd2uj9FmCLddp0bELPLIuFK3by44dHA_PSAUAI,830
12
- gnserver-0.0.0.0.50.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
- gnserver-0.0.0.0.50.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
14
- gnserver-0.0.0.0.50.dist-info/RECORD,,
9
+ GNServer/models.py,sha256=F50tgBbjDvarS1DEOIxHrpWK3o3BsKABHgF569eig84,2644
10
+ gnserver-0.0.0.0.52.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
11
+ gnserver-0.0.0.0.52.dist-info/METADATA,sha256=MqrmkZw13bbRmV6UAULXD0u4NM2vs3VExHKqSr6zheA,830
12
+ gnserver-0.0.0.0.52.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
+ gnserver-0.0.0.0.52.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
14
+ gnserver-0.0.0.0.52.dist-info/RECORD,,