sync errors

This commit is contained in:
2026-05-10 16:22:43 +02:00
parent 0831ffed42
commit 08b99ab340
2 changed files with 14 additions and 2 deletions
+10 -1
View File
@@ -1,12 +1,15 @@
import io
import logging
import posixpath
import socket
import stat
from dataclasses import dataclass
from pathlib import Path
import paramiko
CONNECT_TIMEOUT = 30 # seconds for TCP + SSH handshake
import db
from config import SFTPConfig
@@ -46,12 +49,18 @@ def get_key_fingerprint(pem: str) -> str | None:
def _make_transport(cfg: SFTPConfig) -> paramiko.Transport:
transport = paramiko.Transport((cfg.host, cfg.port))
log.debug("Opening TCP connection to %s:%s", cfg.host, cfg.port)
sock = socket.create_connection((cfg.host, cfg.port), timeout=CONNECT_TIMEOUT)
transport = paramiko.Transport(sock)
transport.banner_timeout = CONNECT_TIMEOUT
transport.handshake_timeout = CONNECT_TIMEOUT
log.debug("Starting SSH handshake")
if cfg.auth_method == "key" and cfg.key:
key = _load_private_key(cfg.key)
transport.connect(username=cfg.user, pkey=key)
else:
transport.connect(username=cfg.user, password=cfg.password)
log.debug("SSH authenticated")
return transport
+4 -1
View File
@@ -35,13 +35,16 @@ def run_sync(limit: int | None = None) -> None:
counters = dict(zips_found=0, zips_new=0, books_uploaded=0, books_skipped=0, books_errored=0)
try:
log.info("Sync started (limit=%s)", limit)
cfg = config.load()
_validate_config(cfg)
log.info("Config OK — work dir: %s", cfg.local_work_dir)
work_dir = Path(cfg.local_work_dir)
work_dir.mkdir(parents=True, exist_ok=True)
log.info("Work dir ready: %s", work_dir)
log.info("Listing remote zips at %s@%s:%s", cfg.sftp.user, cfg.sftp.host, cfg.sftp.remote_path)
log.info("Connecting to SFTP %s@%s:%s ...", cfg.sftp.user, cfg.sftp.host, cfg.sftp.port)
new_zips = sftp_module.list_new_zips(cfg.sftp)
counters["zips_found"] = len(new_zips)