diff --git a/copyparty/__main__.py b/copyparty/__main__.py index f5b7e85f..6337f6f4 100644 --- a/copyparty/__main__.py +++ b/copyparty/__main__.py @@ -24,6 +24,7 @@ from .__init__ import E, WINDOWS, VT100, PY2, unicode from .__version__ import S_VERSION, S_BUILD_DT, CODENAME from .svchub import SvcHub from .util import py_desc, align_tab, IMPLICATIONS +from .authsrv import re_vol HAVE_SSL = True try: @@ -326,7 +327,7 @@ def run_argparse(argv, formatter): ap2.add_argument("-e2d", action="store_true", help="enable up2k database") ap2.add_argument("-e2ds", action="store_true", help="enable up2k db-scanner, sets -e2d") ap2.add_argument("-e2dsa", action="store_true", help="scan all folders (for search), sets -e2ds") - ap2.add_argument("--hist", metavar="PATH", type=u, help="where to store volume state") + ap2.add_argument("--hist", metavar="PATH", type=u, help="where to store volume data (db, thumbs)") ap2.add_argument("--no-hash", action="store_true", help="disable hashing during e2ds folder scans") ap2.add_argument("--re-int", metavar="SEC", type=int, default=30, help="disk rescan check interval") ap2.add_argument("--re-maxage", metavar="SEC", type=int, default=0, help="disk rescan volume interval (0=off)") @@ -398,10 +399,16 @@ def main(argv=None): nstrs = [] anymod = False for ostr in al.v or []: + m = re_vol.match(ostr) + if not m: + # not our problem + nstrs.append(ostr) + continue + + src, dst, perms = m.groups() + na = [src, dst] mod = False - oa = ostr.split(":") - na = oa[:2] - for opt in oa[2:]: + for opt in perms.split(":"): if re.match("c[^,]", opt): mod = True na.append("c," + opt[1:]) diff --git a/copyparty/authsrv.py b/copyparty/authsrv.py index 3c786df6..c3fdfa1f 100644 --- a/copyparty/authsrv.py +++ b/copyparty/authsrv.py @@ -310,6 +310,12 @@ class VFS(object): yield f +if WINDOWS: + re_vol = re.compile(r"^([a-zA-Z]:[\\/][^:]*|[^:]*):([^:]*):(.*)$") +else: + re_vol = re.compile(r"^([^:]*):([^:]*):(.*)$") + + class AuthSrv(object): """verifies users against given paths""" @@ -319,11 +325,6 @@ class AuthSrv(object): self.warn_anonwrite = warn_anonwrite self.line_ctr = 0 - if WINDOWS: - self.re_vol = re.compile(r"^([a-zA-Z]:[\\/][^:]*|[^:]*):([^:]*):(.*)$") - else: - self.re_vol = re.compile(r"^([^:]*):([^:]*):(.*)$") - self.mutex = threading.Lock() self.reload() @@ -453,7 +454,7 @@ class AuthSrv(object): # list of src:dst:permset:permset:... # permset is [,username][,username] or ,[=args] for v_str in self.args.v: - m = self.re_vol.match(v_str) + m = re_vol.match(v_str) if not m: raise Exception("invalid -v argument: [{}]".format(v_str)) diff --git a/copyparty/broker_mpw.py b/copyparty/broker_mpw.py index 658ce56b..a5d14878 100644 --- a/copyparty/broker_mpw.py +++ b/copyparty/broker_mpw.py @@ -1,6 +1,5 @@ # coding: utf-8 from __future__ import print_function, unicode_literals -from copyparty.authsrv import AuthSrv import sys import signal @@ -9,6 +8,7 @@ import threading from .broker_util import ExceptionalQueue from .httpsrv import HttpSrv from .util import FAKE_MP +from copyparty.authsrv import AuthSrv class MpWorker(object):