fix adv upload
This commit is contained in:
parent
e68000d97c
commit
f70349560d
1 changed files with 12 additions and 1 deletions
13
main.py
13
main.py
|
|
@ -8,6 +8,7 @@ import os
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
import io
|
import io
|
||||||
|
import socket
|
||||||
import stat as stat_mod
|
import stat as stat_mod
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
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_USER = os.getenv("ADV_SFTP_USER", "fssservice")
|
||||||
ADV_SFTP_PASSWORD = os.getenv("ADV_SFTP_PASSWORD", "")
|
ADV_SFTP_PASSWORD = os.getenv("ADV_SFTP_PASSWORD", "")
|
||||||
ADV_SFTP_REMOTE_DIR = os.getenv("ADV_SFTP_REMOTE_DIR")
|
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.
|
# 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
|
# 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')}")
|
raise HTTPException(500, f"ADV SFTP remote_dir not configured for host {cfg.get('host')}")
|
||||||
if not cfg.get("password"):
|
if not cfg.get("password"):
|
||||||
raise HTTPException(500, f"ADV SFTP password not configured for host {cfg.get('host')}")
|
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)
|
_enable_legacy_ssh(transport)
|
||||||
transport.connect(username=cfg["user"], password=cfg["password"])
|
transport.connect(username=cfg["user"], password=cfg["password"])
|
||||||
sftp = paramiko.SFTPClient.from_transport(transport)
|
sftp = paramiko.SFTPClient.from_transport(transport)
|
||||||
|
print(f"[ADV SFTP] Connected to {cfg['host']}:{cfg['port']}", flush=True)
|
||||||
return transport, sftp
|
return transport, sftp
|
||||||
|
|
||||||
def sftp_ensure_dir(sftp, remote_dir: str):
|
def sftp_ensure_dir(sftp, remote_dir: str):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue