File size: 2,300 Bytes
896124d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""Конфигурация приложения и DNS resolver"""

import os
import json
import urllib.request
import socket

# === ENVIRONMENT CONFIG ===
PORT = 7860
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
ALLOWED_USER = os.environ.get("TELEGRAM_ALLOWED_USERS", "").strip()
CF_URL = os.environ.get("CF_WORKER_URL", "").rstrip('/')

# NVIDIA API
API_KEY = os.environ.get("NVIDIA_API_KEY", os.environ.get("OPENAI_API_KEY", "")).strip()
API_BASE = os.environ.get("NVIDIA_API_BASE", os.environ.get("OPENAI_API_BASE", "")).strip().rstrip('/')
if API_BASE and not API_BASE.endswith("/v1"):
    API_BASE += "/v1"

HF_TOKEN = os.environ.get("HF_TOKEN", "").strip()
HF_FALLBACK_MODEL = "Qwen/Qwen2.5-72B-Instruct"

# === FILE PATHS ===
ROLES_FILE = "prompts/roles.json"
MODELS_FILE = "prompts/models.json"
CONDUCTORS_FILE = "prompts/conductors.json"
HISTORY_FILE = "prompts/history.json"
BUILD_MODES_FILE = "prompts/build_modes.json"

# === CUSTOM DNS RESOLVER ===
HF_DOMAIN = "api-inference.huggingface.co"
resolved_hf_ip = None

def get_hf_ip_via_google():
    global resolved_hf_ip
    if resolved_hf_ip:
        return resolved_hf_ip
    try:
        req = urllib.request.Request(f"https://dns.google/resolve?name={HF_DOMAIN}&type=A")
        with urllib.request.urlopen(req, timeout=5) as response:
            data = json.loads(response.read().decode('utf-8'))
            for answer in data.get("Answer", []):
                if answer.get("type") == 1:
                    resolved_hf_ip = answer.get("data")
                    print(f"[DNS] Got HF IP via Google: {resolved_hf_ip}")
                    return resolved_hf_ip
    except Exception as e:
        print(f"[DNS] Google DoH failed: {e}")
    return None

original_getaddrinfo = socket.getaddrinfo

def custom_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
    if host == HF_DOMAIN:
        ip = get_hf_ip_via_google()
        if ip:
            return [(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP, '', (ip, port))]
    return original_getaddrinfo(host, port, family, type, proto, flags)

socket.getaddrinfo = custom_getaddrinfo

# === FOLDERS ===
def ensure_folders():
    for folder in ["skills", "projects", "downloads", "prompts", "build_modes"]:
        os.makedirs(folder, exist_ok=True)