PinkSky / server /config.py
FreshPixels's picture
Rename config.py to server/config.py
0485cec verified
Raw
History Blame Contribute Delete
2.3 kB
"""Конфигурация приложения и 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)