fix adv upload

This commit is contained in:
thanawat saiyota 2026-06-15 18:32:25 +07:00
parent e68000d97c
commit f70349560d

13
main.py
View file

@ -8,6 +8,7 @@ import os
import re
import json
import io
import socket
import stat as stat_mod
import time
from datetime import datetime
@ -112,6 +113,7 @@ ADV_SFTP_PORT = int(os.getenv("ADV_SFTP_PORT", "22"))
ADV_SFTP_USER = os.getenv("ADV_SFTP_USER", "fssservice")
ADV_SFTP_PASSWORD = os.getenv("ADV_SFTP_PASSWORD", "")
ADV_SFTP_REMOTE_DIR = os.getenv("ADV_SFTP_REMOTE_DIR")
ADV_SFTP_CONNECT_TIMEOUT = float(os.getenv("ADV_SFTP_CONNECT_TIMEOUT", "10"))
# Per-country SFTP overrides. Each country can target a different host.
# JSON map keyed by lowercase country code; any omitted field falls back to the
@ -183,10 +185,19 @@ def open_adv_sftp(cfg: dict):
raise HTTPException(500, f"ADV SFTP remote_dir not configured for host {cfg.get('host')}")
if not cfg.get("password"):
raise HTTPException(500, f"ADV SFTP password not configured for host {cfg.get('host')}")
transport = paramiko.Transport((cfg["host"], cfg["port"]))
print(
f"[ADV SFTP] Connecting to {cfg['host']}:{cfg['port']} "
f"as {cfg['user']} (timeout={ADV_SFTP_CONNECT_TIMEOUT}s)",
flush=True
)
sock = socket.create_connection((cfg["host"], cfg["port"]), timeout=ADV_SFTP_CONNECT_TIMEOUT)
transport = paramiko.Transport(sock)
transport.banner_timeout = ADV_SFTP_CONNECT_TIMEOUT
transport.auth_timeout = ADV_SFTP_CONNECT_TIMEOUT
_enable_legacy_ssh(transport)
transport.connect(username=cfg["user"], password=cfg["password"])
sftp = paramiko.SFTPClient.from_transport(transport)
print(f"[ADV SFTP] Connected to {cfg['host']}:{cfg['port']}", flush=True)
return transport, sftp
def sftp_ensure_dir(sftp, remote_dir: str):