Foydalanuvchi commited on
Commit
ef6cae2
·
1 Parent(s): dc6242c

Final network fix: DNS, CA-Cert, and IP Fallback (CLEAN)

Browse files
Files changed (4) hide show
  1. .gitignore +7 -4
  2. Dockerfile +1 -0
  3. main.py +42 -20
  4. requirements.txt +2 -0
.gitignore CHANGED
@@ -1,7 +1,10 @@
1
  .env
2
  __pycache__/
3
  *.db
4
- in_*.jpg
5
- out_*.jpg
6
- in_*.mp4
7
- out_*.mp4
 
 
 
 
1
  .env
2
  __pycache__/
3
  *.db
4
+ in_*
5
+ out_*
6
+ input_*
7
+ test_*
8
+ *.avi
9
+ *.exe
10
+ *.log
Dockerfile CHANGED
@@ -7,6 +7,7 @@ RUN apt-get update && apt-get install -y \
7
  libgl1 \
8
  libglib2.0-0 \
9
  ffmpeg \
 
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
  # Ishchi katalogini yaratish
 
7
  libgl1 \
8
  libglib2.0-0 \
9
  ffmpeg \
10
+ ca-certificates \
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
  # Ishchi katalogini yaratish
main.py CHANGED
@@ -1,6 +1,35 @@
1
  import os
 
 
2
  import logging
3
  import asyncio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  import collections
5
  import gc
6
  from datetime import datetime, timedelta
@@ -36,19 +65,6 @@ from database import db
36
  from concurrent.futures import ThreadPoolExecutor
37
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
38
 
39
- import socket
40
-
41
- # --- Hugging Face DNS Patch Start ---
42
- # Server DNS xatosini chetlab o'tish uchun Telegram IP manzillarini qattiq bog'laymiz
43
- _original_getaddrinfo = socket.getaddrinfo
44
- def _patched_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
45
- if host == "api.telegram.org":
46
- # Telegramning rasmiy IP manzillaridan biri
47
- return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('149.154.167.220', port))]
48
- return _original_getaddrinfo(host, port, family, type, proto, flags)
49
- socket.getaddrinfo = _patched_getaddrinfo
50
- # --- Hugging Face DNS Patch End ---
51
-
52
  # muhit o'zgaruvchilari
53
  load_dotenv()
54
  TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
@@ -429,16 +445,22 @@ def run_dummy_server():
429
  logger.error(f"Dummy server xatosi: {e}")
430
 
431
  def wait_for_internet(host="api.telegram.org", port=443, timeout=60):
432
- """Internet ulanishini va DNS ni kutish."""
433
  start_time = time.time()
434
  logger.info(f"Tarmoq kutilmoqda: {host}...")
 
 
 
 
435
  while time.time() - start_time < timeout:
436
- try:
437
- socket.create_connection((host, port), timeout=5)
438
- logger.info(f"Tarmoq tayyor! DNS hal qilindi.")
439
- return True
440
- except Exception:
441
- time.sleep(2)
 
 
442
  logger.warning("Tarmoq ulanishida muammo bo'lishi mumkin, lekin davom etamiz...")
443
  return False
444
 
 
1
  import os
2
+ import socket
3
+ import time
4
  import logging
5
  import asyncio
6
+
7
+ # --- Hugging Face Advanced Network Patch Start ---
8
+ # 1. DNS Resolution Fix using dnspython (Google/Cloudflare DNS)
9
+ try:
10
+ import dns.resolver
11
+ def custom_resolve(host):
12
+ resolver = dns.resolver.Resolver()
13
+ resolver.nameservers = ['8.8.8.8', '1.1.1.1'] # Google va Cloudflare DNS
14
+ try:
15
+ answers = resolver.resolve(host, 'A')
16
+ return [str(rdata) for rdata in answers]
17
+ except:
18
+ return None
19
+ except ImportError:
20
+ custom_resolve = lambda x: None
21
+
22
+ TELEGRAM_IPS = ['149.154.167.220', '149.154.167.189', '149.154.167.50']
23
+
24
+ _original_getaddrinfo = socket.getaddrinfo
25
+ def _patched_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
26
+ if host == "api.telegram.org":
27
+ resolved_ips = custom_resolve(host) or TELEGRAM_IPS
28
+ return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (ip, port)) for ip in resolved_ips]
29
+ return _original_getaddrinfo(host, port, family, type, proto, flags)
30
+ socket.getaddrinfo = _patched_getaddrinfo
31
+ # --- Hugging Face Advanced Network Patch End ---
32
+
33
  import collections
34
  import gc
35
  from datetime import datetime, timedelta
 
65
  from concurrent.futures import ThreadPoolExecutor
66
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  # muhit o'zgaruvchilari
69
  load_dotenv()
70
  TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
 
445
  logger.error(f"Dummy server xatosi: {e}")
446
 
447
  def wait_for_internet(host="api.telegram.org", port=443, timeout=60):
448
+ """Internet ulanishini, DNS va IP orqali ulanishni kutish."""
449
  start_time = time.time()
450
  logger.info(f"Tarmoq kutilmoqda: {host}...")
451
+
452
+ # Sinab ko'rish uchun manzillar ro'yxati
453
+ targets = [(host, port)] + [(ip, port) for ip in TELEGRAM_IPS]
454
+
455
  while time.time() - start_time < timeout:
456
+ for target_host, target_port in targets:
457
+ try:
458
+ socket.create_connection((target_host, target_port), timeout=5)
459
+ logger.info(f"Tarmoq tayyor! {target_host} ga ulanish muvaffaqiyatli.")
460
+ return True
461
+ except Exception:
462
+ continue
463
+ time.sleep(2)
464
  logger.warning("Tarmoq ulanishida muammo bo'lishi mumkin, lekin davom etamiz...")
465
  return False
466
 
requirements.txt CHANGED
@@ -7,3 +7,5 @@ torchvision
7
  numpy
8
  python-dotenv
9
  apscheduler
 
 
 
7
  numpy
8
  python-dotenv
9
  apscheduler
10
+ dnspython
11
+ httpx[socks]