diff --git a/src/borg/archiver/serve_cmd.py b/src/borg/archiver/serve_cmd.py index 416ca7500..70a05298d 100644 --- a/src/borg/archiver/serve_cmd.py +++ b/src/borg/archiver/serve_cmd.py @@ -1,7 +1,7 @@ import os from ..constants import * # NOQA -from ..helpers import Error +from ..helpers import Error, PathNotAllowed from ..legacy.remote import RepositoryServer from ..logger import create_logger @@ -38,8 +38,6 @@ class ServeMixIn: @staticmethod def check_rest_restrictions(backend, restrict_to_paths, restrict_to_repositories): - from ..legacy.remote import PathNotAllowed - if not (restrict_to_paths or restrict_to_repositories): return if not backend.startswith("FILE:"): diff --git a/src/borg/helpers/__init__.py b/src/borg/helpers/__init__.py index 12db71b2a..2d7258e26 100644 --- a/src/borg/helpers/__init__.py +++ b/src/borg/helpers/__init__.py @@ -13,7 +13,7 @@ from ..constants import * # NOQA from .datastruct import StableDict, Buffer, EfficientCollectionQueue from .errors import Error, ErrorWithTraceback, IntegrityError, DecompressionError, CancelledByUser, CommandError -from .errors import RTError, modern_ec +from .errors import RTError, PathNotAllowed, modern_ec from .errors import BorgWarning, FileChangedWarning, BackupWarning, IncludePatternNeverMatchedWarning from .errors import BackupError, BackupOSError, BackupRaceConditionError, BackupItemExcluded from .errors import BackupPermissionError, BackupIOError, BackupFileNotFoundError diff --git a/src/borg/helpers/errors.py b/src/borg/helpers/errors.py index 7199177f7..4ea42607f 100644 --- a/src/borg/helpers/errors.py +++ b/src/borg/helpers/errors.py @@ -76,6 +76,12 @@ class CommandError(Error): exit_mcode = 4 +class PathNotAllowed(Error): + """Repository path not allowed: {}.""" + + exit_mcode = 83 + + class BorgWarning: """Warning: {}""" diff --git a/src/borg/legacy/remote.py b/src/borg/legacy/remote.py index abcc7fc85..2b7057321 100644 --- a/src/borg/legacy/remote.py +++ b/src/borg/legacy/remote.py @@ -16,7 +16,7 @@ from subprocess import Popen, PIPE import borg.logger from .. import __version__ from ..constants import * # NOQA -from ..helpers import Error, ErrorWithTraceback, IntegrityError +from ..helpers import Error, ErrorWithTraceback, IntegrityError, PathNotAllowed from ..helpers import bin_to_hex from ..helpers import get_limited_unpacker from ..helpers import replace_placeholders @@ -55,12 +55,6 @@ class ConnectionClosedWithHint(ConnectionClosed): exit_mcode = 81 -class PathNotAllowed(Error): - """Repository path not allowed: {}.""" - - exit_mcode = 83 - - class InvalidRPCMethod(Error): """RPC method {} is not valid.""" diff --git a/src/borg/testsuite/legacyrepository_test.py b/src/borg/testsuite/legacyrepository_test.py index 338a1f3fe..eae031535 100644 --- a/src/borg/testsuite/legacyrepository_test.py +++ b/src/borg/testsuite/legacyrepository_test.py @@ -8,10 +8,11 @@ import pytest from ..legacy.hashindex import NSIndex1 from ..helpers import Location from ..helpers import IntegrityError +from ..helpers import PathNotAllowed from ..helpers import msgpack from ..fslocking import Lock, LockFailed from ..platformflags import is_win32 -from ..legacy.remote import LegacyRemoteRepository, InvalidRPCMethod, PathNotAllowed +from ..legacy.remote import LegacyRemoteRepository, InvalidRPCMethod from ..legacy.repository import LegacyRepository, LoggedIO from ..legacy.repository import MAGIC, MAX_DATA_SIZE, TAG_DELETE, TAG_PUT, TAG_COMMIT from ..compress import CNONE