GNServer 0.0.0.0.42__tar.gz → 0.0.0.0.44__tar.gz

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.
Files changed (20) hide show
  1. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_app.py +5 -23
  2. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_client.py +1 -1
  3. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_cors_resolver.py +29 -2
  4. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer.egg-info/PKG-INFO +1 -1
  5. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/PKG-INFO +1 -1
  6. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/setup.py +1 -1
  7. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/__init__.py +0 -0
  8. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_crt.py +0 -0
  9. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_func_params_validation.py +0 -0
  10. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_routes.py +0 -0
  11. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer/_template_resolver.py +0 -0
  12. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer.egg-info/SOURCES.txt +0 -0
  13. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer.egg-info/dependency_links.txt +0 -0
  14. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer.egg-info/requires.txt +0 -0
  15. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/GNServer.egg-info/top_level.txt +0 -0
  16. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/LICENSE +0 -0
  17. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/GNServer/mmbConfig.json +0 -0
  18. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/LICENSE +0 -0
  19. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/MANIFEST.in +0 -0
  20. {gnserver-0.0.0.0.42 → gnserver-0.0.0.0.44}/setup.cfg +0 -0
@@ -113,9 +113,6 @@ def guess_type(filename: str) -> str:
113
113
 
114
114
 
115
115
 
116
-
117
-
118
-
119
116
  class App:
120
117
  def __init__(self):
121
118
  self._routes: List[Route] = []
@@ -192,9 +189,6 @@ class App:
192
189
  else:
193
190
  await func()
194
191
 
195
-
196
-
197
-
198
192
 
199
193
 
200
194
  async def dispatchRequest(
@@ -214,13 +208,7 @@ class App:
214
208
  if r.method != method:
215
209
  continue
216
210
 
217
- if r.cors is not None and r.cors.allow_origins is not None:
218
- if request._origin is None:
219
- return GNResponse("gn:backend:801", {'error': 'Cors error. Route has cors but request has no origin url.'})
220
- if not resolve_cors(request._origin, r.cors.allow_origins):
221
- return GNResponse("gn:backend:802", {'error': 'Cors error: origin'})
222
- if r.cors.allow_methods is not None and request.method not in r.cors.allow_methods and '*' not in r.cors.allow_methods:
223
- return GNResponse("gn:backend:803", {'error': 'Cors error: method'})
211
+ _resolve_cors(request, r.cors)
224
212
 
225
213
  sig = inspect.signature(r.handler)
226
214
  def _ann(name: str):
@@ -261,14 +249,8 @@ class App:
261
249
  else:
262
250
  result._cors = r.cors
263
251
 
264
- if result._cors is not None and result._cors != r.cors and result._cors.allow_origins is not None:
265
- if request._origin is None:
266
- print(result._cors.allow_origins)
267
- return GNResponse("gn:backend:801", {'error': 'Cors error. Route has cors but request has no origin url. [2]'})
268
- if not resolve_cors(request._origin, result._cors.allow_origins):
269
- return GNResponse("gn:backend:802", {'error': 'Cors error: origin'})
270
- if result._cors.allow_methods is not None and request.method not in result._cors.allow_methods and '*' not in result._cors.allow_methods:
271
- return GNResponse("gn:backend:803", {'error': 'Cors error: method'})
252
+ _resolve_cors(request, result._cors)
253
+
272
254
  return result
273
255
  else:
274
256
  raise TypeError(
@@ -342,8 +324,8 @@ class App:
342
324
  # получаем длинну пакета
343
325
  mode, stream, lenght = GNRequest.type(buf)
344
326
 
345
- if mode not in (1, 2): # не наш пакет
346
- logger.debug(f'Пакет отклонен: mode пакета {mode}. Разрешен 1, 2')
327
+ if mode not in (1, 2, 4): # не наш пакет
328
+ logger.debug(f'Пакет отклонен: mode пакета {mode}. Разрешен 1, 2, 3')
347
329
  return
348
330
 
349
331
  if not stream: # если не стрим, то ждем конец quic стрима и запускаем обработку ответа
@@ -299,7 +299,7 @@ class AsyncClient:
299
299
 
300
300
 
301
301
 
302
- async def isDNSCore(self, domain: str) -> bool:
302
+ def isDNSCore(self, domain: str) -> bool:
303
303
  return domain.endswith(('.core', '.gw', '.gn', '.cdn', '.sys', '.gwis', '.abs'))
304
304
 
305
305
  @overload
@@ -1,8 +1,11 @@
1
1
 
2
2
  import re
3
+ from typing import Optional
3
4
  from urllib.parse import urlparse
5
+ from gnobjects.net.objects import GNRequest, CORSObject
6
+ from gnobjects.net.fastcommands import AllGNFastCommands
4
7
 
5
- def resolve_cors(origin_url: str, rules: list[str]) -> bool:
8
+ def _resolve_cors(origin_url: str, rules: list[str]) -> bool:
6
9
  """
7
10
  Возвращает origin_url если он матчится хотя бы с одним правилом.
8
11
  Правила:
@@ -126,4 +129,28 @@ def _host_matches_pattern(host: str, pattern: str) -> bool:
126
129
  return match(hi + 1, pi + 1)
127
130
  return False
128
131
 
129
- return match(0, 0)
132
+ return match(0, 0)
133
+
134
+
135
+
136
+ def resolve_cors(request: GNRequest, cors: Optional[CORSObject]):
137
+ if cors is None:
138
+ return
139
+
140
+ if request.client.type not in cors.allow_client_types:
141
+ raise AllGNFastCommands.CorsClientTypeNotAllowed()
142
+
143
+ if cors.allow_origins is not None:
144
+ if request._origin is None:
145
+ raise AllGNFastCommands.CorsOriginNotAllowed('Route has cors but request has no origin url')
146
+
147
+ if not _resolve_cors(request._origin, cors.allow_origins):
148
+ raise AllGNFastCommands.CorsOriginNotAllowed()
149
+
150
+ if cors.allow_methods is not None:
151
+ if request.method not in cors.allow_methods:
152
+ raise AllGNFastCommands.CorsMethodNotAllowed()
153
+
154
+ if cors.allow_transport_protocols is not None:
155
+ if request.transport in ('gn:quik:real', 'gn:quik:dev') and request.transport not in cors.allow_transport_protocols:
156
+ raise AllGNFastCommands.CorsTransportProtocolNotAllowed()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GNServer
3
- Version: 0.0.0.0.42
3
+ Version: 0.0.0.0.44
4
4
  Summary: GNServer
5
5
  Home-page: https://github.com/KeyisB/libs/tree/main/GNServer
6
6
  Author: KeyisB
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GNServer
3
- Version: 0.0.0.0.42
3
+ Version: 0.0.0.0.44
4
4
  Summary: GNServer
5
5
  Home-page: https://github.com/KeyisB/libs/tree/main/GNServer
6
6
  Author: KeyisB
@@ -5,7 +5,7 @@ filesName = 'GNServer'
5
5
 
6
6
  setup(
7
7
  name=name,
8
- version='0.0.0.0.42',
8
+ version='0.0.0.0.44',
9
9
  author="KeyisB",
10
10
  author_email="keyisb.pip@gmail.com",
11
11
  description=name,
File without changes
File without changes
File without changes