GNServer 0.0.0.0.57__py3-none-any.whl → 0.0.0.0.59__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/__init__.py CHANGED
@@ -33,10 +33,26 @@ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
33
33
  DEALINGS IN THE SOFTWARE.
34
34
  """
35
35
 
36
+ __all__ = [
37
+ 'App',
38
+ 'Url',
39
+ 'GNRequest',
40
+ 'GNResponse',
41
+ 'CommandObject',
42
+ 'CORSObject',
43
+ 'FileObject',
44
+ 'TemplateObject',
45
+ 'GNTransportProtocol',
46
+ 'AsyncClient',
47
+ 'response'
48
+ ]
49
+
50
+
36
51
  from ._app import App
37
52
 
38
53
  from gnobjects.net.objects import Url, GNRequest, GNResponse, CommandObject, CORSObject, FileObject, TemplateObject, GNTransportProtocol
39
- from gnobjects.net.objects import AllGNFastCommands as responses
54
+ from gnobjects.net.objects import AllGNFastCommands as response
40
55
 
56
+ responses = response
41
57
 
42
58
  from ._client import AsyncClient
GNServer/_app.py CHANGED
@@ -42,7 +42,7 @@ logger.setLevel(logging.DEBUG)
42
42
 
43
43
  console = logging.StreamHandler(sys.stdout)
44
44
  console.setLevel(logging.DEBUG)
45
- console.setFormatter(logging.Formatter("[GNServer] %(name)s: %(levelname)s: %(message)s"))
45
+ console.setFormatter(logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
46
46
  logger.addHandler(console)
47
47
 
48
48
 
@@ -227,8 +227,11 @@ class App:
227
227
  for qn, qvals in request.url.params.items():
228
228
  if qn in kw:
229
229
  continue
230
- raw = qvals if len(qvals) > 1 else qvals[0]
231
- kw[qn] = _convert_value(raw, _ann(qn), str)
230
+ if isinstance(qvals, int):
231
+ kw[qn] = qvals
232
+ else:
233
+ raw = qvals if len(qvals) > 1 else qvals[0]
234
+ kw[qn] = _convert_value(raw, _ann(qn), str)
232
235
 
233
236
 
234
237
  params = set(sig.parameters.keys())
@@ -349,13 +352,15 @@ class App:
349
352
  request.client._data['domain'] = domain
350
353
  except:
351
354
  asyncio.create_task(self.sendRawResponse(stream_id, AllGNFastCommands.KDCDecryptRequestFailed().serialize(mode=mode)))
355
+ self._buffer.pop(event.stream_id, None)
356
+ return
352
357
 
353
358
  else:
354
359
  raise Exception('Не удалось расшифровать от KDC')
355
360
 
356
361
  request.stream_id = stream_id # type: ignore
362
+ logger.debug(f'Request: {request.method} {request.url}')
357
363
  asyncio.create_task(self._handle_request(request, mode))
358
- logger.debug(f'Отправлена задача разрешения пакета {request} route -> {request.route}')
359
364
 
360
365
  self._buffer.pop(event.stream_id, None)
361
366
  return
@@ -397,7 +402,6 @@ class App:
397
402
  queue.put_nowait(None)
398
403
  self._buffer.pop(event.stream_id)
399
404
  self._streams.pop(event.stream_id)
400
- logger.debug(f'Закрываем стрим [{event.stream_id}]')
401
405
  return
402
406
 
403
407
  queue.put_nowait(request)
@@ -439,12 +443,11 @@ class App:
439
443
  return
440
444
 
441
445
  await self.sendResponse(request, response, mode)
442
- logger.debug(f'Отправлен на сервер ответ -> {response.command} {response.payload if response.payload and len(str(response.payload)) < 200 else ''}')
443
446
  except Exception as e:
444
447
  if isinstance(e, (GNRequest, GNFastCommand)):
445
448
  await self.sendResponse(request, e, mode)
446
449
  else:
447
- logger.error('GNServer: error\n' + traceback.format_exc())
450
+ logger.error('InternalServerError:\n' + traceback.format_exc())
448
451
 
449
452
  await self.sendResponse(request, AllGNFastCommands.InternalServerError(), mode)
450
453
 
@@ -452,6 +455,9 @@ class App:
452
455
 
453
456
  async def sendResponse(self, request: GNRequest, response: GNResponse, mode: int, end_stream: bool = True):
454
457
  await response.assembly()
458
+
459
+
460
+ logger.debug(f'Response: {request.method} {request.url} -> {response.command} {response.payload if len(str(response.payload)) < 256 else ''}')
455
461
 
456
462
  blob = response.serialize(mode)
457
463
 
@@ -508,7 +514,7 @@ class App:
508
514
  if run is not None:
509
515
  await run()
510
516
 
511
-
517
+ logger.debug('Server startup completed')
512
518
  if wait:
513
519
  await asyncio.Event().wait()
514
520
 
GNServer/_client.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import sys
2
3
  import time
3
4
  import httpx
4
5
  import asyncio
@@ -87,6 +88,21 @@ from ._crt import crt_client
87
88
  from .models import KDCObject
88
89
 
89
90
 
91
+
92
+
93
+ import logging
94
+
95
+ logger = logging.getLogger("GNClient")
96
+ logger.setLevel(logging.DEBUG)
97
+
98
+ console = logging.StreamHandler(sys.stdout)
99
+ console.setLevel(logging.DEBUG)
100
+ console.setFormatter(logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
101
+ logger.addHandler(console)
102
+
103
+
104
+
105
+
90
106
  _log_levels: dict[str, int] = {
91
107
  "NOTSET": 0,
92
108
  "DEBUG": 10,
@@ -122,7 +138,7 @@ def devLog(request: GNRequest, point: str, level: int, log: str):
122
138
 
123
139
 
124
140
 
125
-
141
+ _sys_s_mode = 2
126
142
 
127
143
  async def chain_async(first_item, rest: AsyncIterable) -> AsyncGenerator:
128
144
  yield first_item
@@ -263,8 +279,9 @@ class AsyncClient:
263
279
 
264
280
  for f in self.__request_callbacks.values():
265
281
  asyncio.create_task(f(request))
266
-
282
+ logger.debug(f'Request: {request.method} {request.url}')
267
283
  r = await c.asyncRequest(request)
284
+ logger.debug(f'Response: {request.method} {request.url} -> {r.command} {r.payload if len(str(r.payload)) < 256 else ''}')
268
285
 
269
286
  for f in self.__response_callbacks.values():
270
287
  asyncio.create_task(f(r))
@@ -516,7 +533,7 @@ class RawQuicClient(QuicConnectionProtocol):
516
533
  del buf[:lenght]
517
534
 
518
535
 
519
- r = GNResponse.deserialize(data, 2)
536
+ r = GNResponse.deserialize(data, _sys_s_mode)
520
537
  handler.put_nowait(r)
521
538
  if event.end_stream:
522
539
  handler.put_nowait(None)
@@ -574,7 +591,6 @@ class RawQuicClient(QuicConnectionProtocol):
574
591
  if q is None:
575
592
  break
576
593
  sid, blob, end_stream = q.popleft()
577
- print(f'Отправка стрима {sid}')
578
594
  self._quic.send_stream_data(sid, blob, end_stream=end_stream)
579
595
  self.transmit()
580
596
  self._activity()
@@ -590,7 +606,7 @@ class RawQuicClient(QuicConnectionProtocol):
590
606
  await self.ensure_sys_stream()
591
607
  if response:
592
608
  msg_id = next(self._sys_id_gen)
593
- blob = request.serialize(2)
609
+ blob = request.serialize(_sys_s_mode)
594
610
  payload = (
595
611
  msg_id.to_bytes(8, "little") + len(blob).to_bytes(4, "little") + blob
596
612
  )
@@ -606,7 +622,7 @@ class RawQuicClient(QuicConnectionProtocol):
606
622
 
607
623
  async def request(self, request: Union[GNRequest, AsyncGenerator[GNRequest, Any]]):
608
624
  if isinstance(request, GNRequest):
609
- blob = request.serialize(2)
625
+ blob = request.serialize(_sys_s_mode)
610
626
 
611
627
  if self.quicClient._client._kdc is not None:
612
628
  blob = self.quicClient._client._kdc.encode(request.url.hostname, blob)
@@ -624,7 +640,7 @@ class RawQuicClient(QuicConnectionProtocol):
624
640
  data, domain = self.quicClient._client._kdc.decode(data)
625
641
 
626
642
  if data is not None:
627
- r = GNResponse.deserialize(data, 2)
643
+ r = GNResponse.deserialize(data, _sys_s_mode)
628
644
  return r
629
645
  else:
630
646
  return GNResponse('gn:client:0')
@@ -637,7 +653,7 @@ class RawQuicClient(QuicConnectionProtocol):
637
653
  _last = None
638
654
  async for req in request:
639
655
  _last = req
640
- blob = req.serialize(2)
656
+ blob = req.serialize(_sys_s_mode)
641
657
  self._enqueue(sid, blob, False, False)
642
658
 
643
659
 
@@ -648,7 +664,7 @@ class RawQuicClient(QuicConnectionProtocol):
648
664
 
649
665
  _last.setPayload(None)
650
666
  _last.setMethod('gn:end-stream')
651
- blob = _last.serialize(2)
667
+ blob = _last.serialize(_sys_s_mode)
652
668
  self._enqueue(sid, blob, True, False)
653
669
  self._schedule_flush()
654
670
 
@@ -661,7 +677,7 @@ class RawQuicClient(QuicConnectionProtocol):
661
677
 
662
678
  async def requestStream(self, request: Union[GNRequest, AsyncGenerator[GNRequest, Any]]) -> asyncio.Queue[GNResponse]:
663
679
  if isinstance(request, GNRequest):
664
- blob = request.serialize(2)
680
+ blob = request.serialize(_sys_s_mode)
665
681
  sid = self._quic.get_next_available_stream_id()
666
682
  self._enqueue(sid, blob, False, False)
667
683
  self._schedule_flush()
@@ -678,7 +694,7 @@ class RawQuicClient(QuicConnectionProtocol):
678
694
  _last = None
679
695
  async for req in request:
680
696
  _last = req
681
- blob = req.serialize(2)
697
+ blob = req.serialize(_sys_s_mode)
682
698
  self._enqueue(sid, blob, False, False)
683
699
 
684
700
 
@@ -689,7 +705,7 @@ class RawQuicClient(QuicConnectionProtocol):
689
705
 
690
706
  _last.setPayload(None)
691
707
  _last.setMethod('gn:end-stream')
692
- blob = _last.serialize(2)
708
+ blob = _last.serialize(_sys_s_mode)
693
709
  self._enqueue(sid, blob, True, False)
694
710
  self._schedule_flush()
695
711
 
GNServer/models.py CHANGED
@@ -39,6 +39,8 @@ class KDCObject:
39
39
  for i in self._requested_domains:
40
40
  if i in servers_keys:
41
41
  self._requested_domains.remove(i)
42
+ else:
43
+ servers_keys = {}
42
44
 
43
45
  if len(self._requested_domains) > 0:
44
46
  payload = self._requested_domains
@@ -48,11 +50,12 @@ class KDCObject:
48
50
  print(f'ERROR: {r.command} {r.payload}')
49
51
  raise r
50
52
 
51
- servers_keys = r.payload
52
-
53
53
  if servers_keys is None:
54
54
  print(f'ERROR: {r.command} {r.payload}')
55
55
  raise r
56
+
57
+ servers_keys.update(r.payload)
58
+
56
59
 
57
60
  self._servers_keys.update(servers_keys)
58
61
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GNServer
3
- Version: 0.0.0.0.57
3
+ Version: 0.0.0.0.59
4
4
  Summary: GNServer
5
5
  Home-page: https://github.com/KeyisB/libs/tree/main/GNServer
6
6
  Author: KeyisB
@@ -0,0 +1,14 @@
1
+ GNServer/__init__.py,sha256=QmvIIE5RWIv040_l216aWtYuiIPtLasdsFbH0Fya2SI,1793
2
+ GNServer/_app.py,sha256=bf5sXwimwgsSq51bK3YVq0e46p-0Hr9NY5wME2Okh54,19328
3
+ GNServer/_client.py,sha256=MDAVnMGc5QNweOt8Tbas7OF9d_0Z3upxtrA7PmIttVs,33163
4
+ GNServer/_cors_resolver.py,sha256=aDxk4ItaEK-6vlDbkno8FJZEjczGEe8vkOui6_kz5-Y,5950
5
+ GNServer/_crt.py,sha256=SOmyX7zBiCY9EhVSekksQtBHgTIZVvdqNZ8Ni-E5Zow,1390
6
+ GNServer/_func_params_validation.py,sha256=pDXRzPVTdPnDHFMMmKd014SConBjFOuaLeJTY0vldlM,11412
7
+ GNServer/_routes.py,sha256=bJnmQ8uEhPVQgy2tTqE5TEIM8aFXV-lVI7c2nG0rQwk,3384
8
+ GNServer/_template_resolver.py,sha256=vdJYb_7PjIeTWq-Clr7jyj7QIvPBxplU7EqeOuMJ64c,1409
9
+ GNServer/models.py,sha256=CXBJR_g3clIKKaMJ_zsUFLEG0EBa3g_Ik10te7whd30,3211
10
+ gnserver-0.0.0.0.59.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
11
+ gnserver-0.0.0.0.59.dist-info/METADATA,sha256=8x6eFAgjqAlpnOR29WUGyFwtj78jLfU0UARWXZMqTwM,830
12
+ gnserver-0.0.0.0.59.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
+ gnserver-0.0.0.0.59.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
14
+ gnserver-0.0.0.0.59.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- GNServer/__init__.py,sha256=6CMCZlkBO74PW8i8DAri5xz2fYM9EyPH8vdsLYBMmOo,1560
2
- GNServer/_app.py,sha256=fXPrxk-YiprBvjYQckAj3oSHLdWlAENPZ6WkqC8bFZ8,19242
3
- GNServer/_client.py,sha256=IEzben2zZfgpU9DhcnjB9uQLCInllZhdoLTZyM72ldA,32610
4
- GNServer/_cors_resolver.py,sha256=aDxk4ItaEK-6vlDbkno8FJZEjczGEe8vkOui6_kz5-Y,5950
5
- GNServer/_crt.py,sha256=SOmyX7zBiCY9EhVSekksQtBHgTIZVvdqNZ8Ni-E5Zow,1390
6
- GNServer/_func_params_validation.py,sha256=pDXRzPVTdPnDHFMMmKd014SConBjFOuaLeJTY0vldlM,11412
7
- GNServer/_routes.py,sha256=bJnmQ8uEhPVQgy2tTqE5TEIM8aFXV-lVI7c2nG0rQwk,3384
8
- GNServer/_template_resolver.py,sha256=vdJYb_7PjIeTWq-Clr7jyj7QIvPBxplU7EqeOuMJ64c,1409
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,,