sync errors
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user