From 406e413594d34c3ecee9e6b451d2792cca5df84a Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 15 Aug 2023 01:42:13 +0200 Subject: [PATCH] hint at additional context in exceptions --- copyparty/authsrv.py | 24 ++++++++++++++---------- copyparty/svchub.py | 4 ++-- copyparty/up2k.py | 4 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/copyparty/authsrv.py b/copyparty/authsrv.py index dd98fb57..a4d62c20 100644 --- a/copyparty/authsrv.py +++ b/copyparty/authsrv.py @@ -52,6 +52,10 @@ if TYPE_CHECKING: LEELOO_DALLAS = "leeloo_dallas" +SEE_LOG = "see log for details" +SSEELOG = " ({})".format(SEE_LOG) +BAD_CFG = "invalid config; {}".format(SEE_LOG) +SBADCFG = " ({})".format(BAD_CFG) class AXS(object): def __init__( @@ -795,7 +799,7 @@ class AuthSrv(object): if dst in mount: t = "multiple filesystem-paths mounted at [/{}]:\n [{}]\n [{}]" self.log(t.format(dst, mount[dst], src), c=1) - raise Exception("invalid config") + raise Exception(BAD_CFG) if src in mount.values(): t = "filesystem-path [{}] mounted in multiple locations:" @@ -804,7 +808,7 @@ class AuthSrv(object): t += "\n /{}".format(v) self.log(t, c=3) - raise Exception("invalid config") + raise Exception(BAD_CFG) if not bos.path.isdir(src): self.log("warning: filesystem-path does not exist: {}".format(src), 3) @@ -903,7 +907,7 @@ class AuthSrv(object): t = "volume-specific config (anything from --help-flags)" self._l(ln, 6, t) else: - raise Exception("invalid section header") + raise Exception("invalid section header" + SBADCFG) self.indent = " " if subsection else " " continue @@ -926,7 +930,7 @@ class AuthSrv(object): acct[u] = p except: t = 'lines inside the [accounts] section must be "username: password"' - raise Exception(t) + raise Exception(t + SBADCFG) continue if vp is not None and ap is None: @@ -954,7 +958,7 @@ class AuthSrv(object): continue except: err += "accs entries must be 'rwmdgGa: user1, user2, ...'" - raise Exception(err) + raise Exception(err + SBADCFG) if cat == catf: err = "" @@ -967,7 +971,7 @@ class AuthSrv(object): if bad: err = "bad characters [{}] in volflag name [{}]; " err = err.format(bad, sk) - raise Exception(err) + raise Exception(err + SBADCFG) if sv is True: fstr += "," + sk else: @@ -979,9 +983,9 @@ class AuthSrv(object): continue except: err += "flags entries (volflags) must be one of the following:\n 'flag1, flag2, ...'\n 'key: value'\n 'flag1, flag2, key: value'" - raise Exception(err) + raise Exception(err + SBADCFG) - raise Exception("unprocessable line in config") + raise Exception("unprocessable line in config" + SBADCFG) self._e() self.line_ctr = 0 @@ -1218,7 +1222,7 @@ class AuthSrv(object): + ", ".join(k for k in sorted(missing_users)), c=1, ) - raise Exception("invalid config") + raise Exception(BAD_CFG) if LEELOO_DALLAS in all_users: raise Exception("sorry, reserved username: " + LEELOO_DALLAS) @@ -1228,7 +1232,7 @@ class AuthSrv(object): if pwd in seenpwds: t = "accounts [{}] and [{}] have the same password; this is not supported" self.log(t.format(seenpwds[pwd], usr), 1) - raise Exception("invalid config") + raise Exception(BAD_CFG) seenpwds[pwd] = usr promote = [] diff --git a/copyparty/svchub.py b/copyparty/svchub.py index 28f63166..082e3f70 100644 --- a/copyparty/svchub.py +++ b/copyparty/svchub.py @@ -29,7 +29,7 @@ if True: # pylint: disable=using-constant-test from typing import Any, Optional, Union from .__init__ import ANYWIN, EXE, MACOS, TYPE_CHECKING, EnvParams, unicode -from .authsrv import AuthSrv +from .authsrv import BAD_CFG, AuthSrv from .cert import ensure_cert from .mtag import HAVE_FFMPEG, HAVE_FFPROBE from .tcpsrv import TcpSrv @@ -131,7 +131,7 @@ class SvcHub(object): args.force_js = True if not self._process_config(): - raise Exception("bad config") + raise Exception(BAD_CFG) self.log_div = 10 ** (6 - args.log_tdec) self.log_efmt = "%02d:%02d:%02d.%0{}d".format(args.log_tdec) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 08d83b70..8f61632b 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -22,7 +22,7 @@ from copy import deepcopy from queue import Queue from .__init__ import ANYWIN, PY2, TYPE_CHECKING, WINDOWS -from .authsrv import LEELOO_DALLAS, VFS, AuthSrv +from .authsrv import LEELOO_DALLAS, SSEELOG, VFS, AuthSrv from .bos import bos from .cfg import vf_bmap, vf_vmap from .fsutil import Fstab @@ -2660,7 +2660,7 @@ class Up2k(object): if not job: known = " ".join([x for x in self.registry[ptop].keys()]) self.log("unknown wark [{}], known: {}".format(wark, known)) - raise Pebkac(400, "unknown wark") + raise Pebkac(400, "unknown wark" + SSEELOG) if chash not in job["need"]: msg = "chash = {} , need:\n".format(chash)