norah-sudo commited on
Commit
24dc042
·
verified ·
1 Parent(s): 39c6721

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +25 -1
server.py CHANGED
@@ -2,6 +2,7 @@ from fastapi import FastAPI
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from pydantic import BaseModel
4
  import os
 
5
 
6
  from blacklist_layer_mobile import BlacklistLayer
7
  from ai_layer_mobile import AIAnalyzer
@@ -21,7 +22,6 @@ GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "")
21
  blacklist = BlacklistLayer(api_key=GOOGLE_API_KEY)
22
  print("[OK] Blacklist Layer Ready")
23
 
24
-
25
  ai = AIAnalyzer(model_path="/app")
26
  print("[OK] AI Analyzer Ready")
27
 
@@ -32,6 +32,25 @@ class URLRequest(BaseModel):
32
  url: str
33
 
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  @app.get("/")
36
  def root():
37
  return {
@@ -46,6 +65,11 @@ def scan(req: URLRequest):
46
  url = req.url
47
  print(f"[SCAN] {url}")
48
 
 
 
 
 
 
49
  is_bad, msg = blacklist.check_url(url)
50
  print(f"[Layer 1] Blacklist: {msg}")
51
 
 
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from pydantic import BaseModel
4
  import os
5
+ import re
6
 
7
  from blacklist_layer_mobile import BlacklistLayer
8
  from ai_layer_mobile import AIAnalyzer
 
22
  blacklist = BlacklistLayer(api_key=GOOGLE_API_KEY)
23
  print("[OK] Blacklist Layer Ready")
24
 
 
25
  ai = AIAnalyzer(model_path="/app")
26
  print("[OK] AI Analyzer Ready")
27
 
 
32
  url: str
33
 
34
 
35
+ def validate_url(url: str) -> bool:
36
+ # حد أقصى للطول (مثال 255 حرف)
37
+ if len(url) > 255:
38
+ return False
39
+
40
+ # تعبير نمطي للتأكد من تنسيق URL (http أو https)
41
+ url_pattern = re.compile(
42
+ r'^(https?://)' # بداية http أو https
43
+ r'([\w\-]+\.)+[\w\-]+' # دومين
44
+ r'(:\d+)?' # منفذ اختياري
45
+ r'(/[\w\-.~:/?#[\$@!$&\'()*+,;=%]*)?$' # مسار URL اختياري
46
+ )
47
+
48
+ if not url_pattern.match(url):
49
+ return False
50
+
51
+ return True
52
+
53
+
54
  @app.get("/")
55
  def root():
56
  return {
 
65
  url = req.url
66
  print(f"[SCAN] {url}")
67
 
68
+ # التحقق من صحة الـ URL قبل المراقبة
69
+ if not validate_url(url):
70
+ print("[ERROR] Invalid URL format")
71
+ return {"error": "Invalid URL format", "safe": False}
72
+
73
  is_bad, msg = blacklist.check_url(url)
74
  print(f"[Layer 1] Blacklist: {msg}")
75