Пример #1
0
#     * store <acl> and <nat> identifier
#     * acl and nat identifier is now composed of two parts:
#       (rule identifier, ruleset identifier)
#     * <duration> rename attribute "duration" to "seconds"
#     * <periodicity> rename attributes date_from, date_to, time_from,
#       time_to to day_from, day_to, hour_from, hour_to
#  - "3.0dev4"
#  - "3.0m3": add custom rules
#
# Old versions, no more supported:
#  - "3.0": first file format version
RULESET_VERSION = "3.0.1"
VALID_VERSIONS = ("3.0m3", "3.0dev4", "3.0dev5", "3.0dev6", "3.0.0", RULESET_VERSION)

# Ruleset name have to be a valid filename
RULESET_NAME_REGEX = safeFilenameRegex(1, 100)

DIRECTORIES = {
    "ruleset": ACL_DIR,
    "template": TEMPLATE_DIR,
}

def checkRulesetName(name):
    if not RULESET_NAME_REGEX.match(name):
        raise RulesetError(
            tr("Invalid rule set name: invalid length or characters (%s)!"),
            name)

def rulesetFilename(filetype, name, check_existing=False):
    checkRulesetName(name)
    directory = DIRECTORIES[filetype]
Пример #2
0
from os import unlink
import weakref
import threading
from glob import glob

from ufwi_rpcd.common import tr
from ufwi_rpcd.common.error import exceptionAsUnicode
from ufwi_rpcd.common.tools import abstractmethod, safeFilenameRegex

from ufwi_rpcd.backend import RpcdError
from ufwi_rpcd.backend.component import Component
from ufwi_rpcd.backend.cron import scheduleRepeat
from ufwi_rpcd.backend.exceptions import ConfigError

# Should be a valid filename
KEY_REGEX = safeFilenameRegex(3)

DEFAULT_VOLATILE_TIMEOUT = 60   # seconds

CLEANUP_PERIOD = 60 # seconds

class LockError(RpcdError):
    pass

class AlreadyAcquired(LockError):
    """
    by_other is True if lock have been acquired by other
    """
    def __init__(self, by_other, *args, **kwargs):
        self.by_other = by_other
        LockError.__init__(self, *args, **kwargs)