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 io
import logging import logging
import posixpath import posixpath
import socket
import stat import stat
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
import paramiko import paramiko
CONNECT_TIMEOUT = 30 # seconds for TCP + SSH handshake
import db import db
from config import SFTPConfig from config import SFTPConfig
@@ -46,12 +49,18 @@ def get_key_fingerprint(pem: str) -> str | None:
def _make_transport(cfg: SFTPConfig) -> paramiko.Transport: 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: if cfg.auth_method == "key" and cfg.key:
key = _load_private_key(cfg.key) key = _load_private_key(cfg.key)
transport.connect(username=cfg.user, pkey=key) transport.connect(username=cfg.user, pkey=key)
else: else:
transport.connect(username=cfg.user, password=cfg.password) transport.connect(username=cfg.user, password=cfg.password)
log.debug("SSH authenticated")
return transport 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) counters = dict(zips_found=0, zips_new=0, books_uploaded=0, books_skipped=0, books_errored=0)
try: try:
log.info("Sync started (limit=%s)", limit)
cfg = config.load() cfg = config.load()
_validate_config(cfg) _validate_config(cfg)
log.info("Config OK — work dir: %s", cfg.local_work_dir)
work_dir = Path(cfg.local_work_dir) work_dir = Path(cfg.local_work_dir)
work_dir.mkdir(parents=True, exist_ok=True) 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) new_zips = sftp_module.list_new_zips(cfg.sftp)
counters["zips_found"] = len(new_zips) counters["zips_found"] = len(new_zips)