예제 #1
0
    def __init__(self, cfgdir, tmpdir, debug=None, restore=False):
        self.__running = Event()
        self.__do_restart = False
        self.__do_exit = False
        self._ = lambda x: x

        self.cfgdir = fullpath(cfgdir)
        self.tmpdir = fullpath(tmpdir)

        os.chdir(self.cfgdir)

        # if self.tmpdir not in sys.path:
        # sys.path.append(self.tmpdir)

        # if refresh:
        # cleanpy(PACKDIR)

        self.config = ConfigParser(self.DEFAULT_CONFIGNAME)
        self.debug = self.config.get('log',
                                     'debug') if debug is None else debug
        self.log = LoggerFactory(self, self.debug)

        self._init_database(restore)
        self._init_managers()

        self.request = self.req = RequestFactory(self)

        self._init_api()

        atexit.register(self.exit)
예제 #2
0
파일: base.py 프로젝트: GammaC0de/pyload
    def __init__(self, cfgdir, tmpdir, debug=None, restore=False):
        self.__running = Event()
        self.__do_restart = False
        self.__do_exit = False
        self._ = lambda x: x

        self.cfgdir = fullpath(cfgdir)
        self.tmpdir = fullpath(tmpdir)

        os.chdir(self.cfgdir)

        # if self.tmpdir not in sys.path:
        # sys.path.append(self.tmpdir)

        # if refresh:
        # cleanpy(PACKDIR)

        self.config = ConfigParser(self.DEFAULT_CONFIGNAME)
        self.debug = self.config.get(
            'log', 'debug') if debug is None else debug
        self.log = LoggerFactory(self, self.debug)

        self._init_database(restore)
        self._init_managers()

        self.request = self.req = RequestFactory(self)

        self._init_api()

        atexit.register(self.exit)
예제 #3
0
    def __init__(self,
                 filename,
                 config=default.config,
                 version=__version_info__,
                 logger=None):
        super(ConfigParser, self).__init__()
        if config is not None:
            self.update(config)

        self.path = fullpath(filename)
        self.version, self.version_info = self._parse_version(version)

        if logger is None:
            self.log = logging.getLogger('null')
            self.log.addHandler(logging.NullHandler())
        else:
            self.log = logger

        try:
            self.retrieve()

        except VersionMismatchError:
            self._backup_fileconfig()

        except IOError:
            pass

        else:
            self.store()
            return
예제 #4
0
파일: parser.py 프로젝트: GammaC0de/pyload
    def __init__(
            self,
            filename,
            config=default.config,
            version=__version_info__,
            logger=None):
        super(ConfigParser, self).__init__()
        if config is not None:
            self.update(config)

        self.path = fullpath(filename)
        self.version, self.version_info = self._parse_version(version)

        if logger is None:
            self.log = logging.getLogger('null')
            self.log.addHandler(logging.NullHandler())
        else:
            self.log = logger

        try:
            self.retrieve()

        except VersionMismatchError:
            self._backup_fileconfig()

        except IOError:
            pass

        else:
            self.store()
            return
예제 #5
0
    def __init__(self, dirname, package, config):
        self.path = fullpath(dirname)
        self.package = package
        self.config = config
        self.log = logging.getLogger()
        self.plugins = {}

        self.create_index()
예제 #6
0
파일: loader.py 프로젝트: GammaC0de/pyload
    def __init__(self, dirname, package, config):
        self.path = fullpath(dirname)
        self.package = package
        self.config = config
        self.log = logging.getLogger()
        self.plugins = {}

        self.create_index()
예제 #7
0
파일: download.py 프로젝트: segelkma/pyload
    def set_path(self, filepath):
        path = fullpath(filepath)
        dirname, filename = os.path.split(path)
        filename = purge.name(filename)

        overflow = len(os.path.join(dirname, filename)) - self.PATH_MAXLEN
        if overflow > 0:
            name, ext = os.path.splitext(filename)
            name = purge.truncate(name, overflow)
            filename = name + ext

        self.path = os.path.join(dirname, filename)
예제 #8
0
    def set_path(self, filepath):
        path = fullpath(filepath)
        dirname, filename = os.path.split(path)
        filename = purge.name(filename)

        overflow = len(os.path.join(dirname, filename)) - self.PATH_MAXLEN
        if overflow > 0:
            name, ext = os.path.splitext(filename)
            name = purge.truncate(name, overflow)
            filename = name + ext

        self.path = os.path.join(dirname, filename)
예제 #9
0
파일: parser.py 프로젝트: pyblub/notpyload
    def __init__(self,
                 filename,
                 config=None,
                 version=__version_info__,
                 logger=None):
        self.path = fullpath(filename)
        self.version, self.version_info = self._parse_version(version)

        self.log = self._get_logger(logger)
        self.fp = open(filename, mode='a+')

        ConfigSection.__init__(self, self, config)
        self._retrieve_fileconfig()
예제 #10
0
    def setup(self):
        # cached modules (type, name)
        self.modules = {}
        # match history to speedup parsing (type, name)
        self.history = []

        # register for import addon
        sys.meta_path.append(self)

        # add to path, so we can import from userplugins
        sys.path.append(os.getcwd())  # TODO: Recheck...
        self.loader = LoaderFactory(
            PluginLoader(fullpath(self.LOCALROOT), self.LOCALROOT,
                         self.pyload.config),
            PluginLoader(resource_filename(__package__, 'core/plugin'),
                         self.ROOT, self.pyload.config),
        )

        self.loader.check_versions()

        # plugin matcher to overwrite some behaviour
        self.matcher = []
예제 #11
0
파일: plugin.py 프로젝트: GammaC0de/pyload
    def setup(self):
        # cached modules (type, name)
        self.modules = {}
        # match history to speedup parsing (type, name)
        self.history = []

        # register for import addon
        sys.meta_path.append(self)

        # add to path, so we can import from userplugins
        sys.path.append(os.getcwd())  # TODO: Recheck...
        self.loader = LoaderFactory(
            PluginLoader(fullpath(self.LOCALROOT),
                         self.LOCALROOT, self.pyload.config),
            PluginLoader(resource_filename(__package__, 'core/plugin'),
                         self.ROOT, self.pyload.config),
        )

        self.loader.check_versions()

        # plugin matcher to overwrite some behaviour
        self.matcher = []
예제 #12
0
파일: init.py 프로젝트: Prof222/pyload
 def _init_profile(self, profiledir):
     profiledir = fullpath(profiledir)
     os.chdir(profiledir)
     self.configdir, self.profile = os.path.split(profiledir)
예제 #13
0
파일: format.py 프로젝트: GammaC0de/pyload
def path(*paths):
    return os.path.normcase(fullpath(os.path.join(*paths)))
예제 #14
0
from pyload.utils.web.parse import endpoint, socket

standard_library.install_aliases()


def _parse_address(value):
    address = value.replace(',', ':')
    return (endpoint if isendpoint(address) else socket)(address)


convert_map = {
    InputType.NA: lambda x: x,
    InputType.Str: to_str,
    InputType.Int: int,
    InputType.File: fullpath,
    InputType.Folder: lambda x: os.path.dirname(fullpath(x)),
    InputType.Password: to_str,
    InputType.Bool: bool,
    InputType.Float: float,
    # InputType.Octal: lambda x: oct(int(x, 8)),
    InputType.Size: parse.bytesize,
    InputType.Address: _parse_address,
    InputType.Bytes: to_bytes,
    InputType.StrList: parse.entries
}


class ConfigOption(object):

    __slots__ = [
        'allowed_values', 'default', 'desc', 'label', 'parser', 'type', 'value'
예제 #15
0
파일: parser.py 프로젝트: pyblub/notpyload
class ConfigOption(object):

    __slots__ = [
        'allowed_values', 'default', 'desc', 'label', 'parser', 'type', 'value'
    ]

    DEFAULT_TYPE = InputType.Str

    _convert_map = {
        InputType.NA:
        lambda x: x,
        InputType.Str:
        lambda x: "" if x is None else str(x),
        InputType.Int:
        lambda x: 0 if x is None else int(x),
        InputType.File:
        lambda x: "" if x is None else fullpath(x),
        InputType.Folder:
        lambda x: "" if x is None else os.path.dirname(fullpath(x)),
        InputType.Password:
        lambda x: "" if x is None else str(x),
        InputType.Bool:
        lambda x: boolean(x) if isinstance(x, str) else bool(x),
        InputType.Float:
        lambda x: 0.0 if x is None else float(x),
        InputType.Tristate:
        lambda x: x if x is None else bool(x),
        InputType.Octal:
        lambda x: 0 if x is None else oct(x),
        InputType.Size:
        lambda x: 0 if x is None else (-1 if str(x) == '-1' else bytesize(x)),
        InputType.Address:
        lambda x: (None, None)
        if x is None else (endpoint if isendpoint(x) else socket)(x),
        InputType.Bytes:
        lambda x: b"" if x is None else bytes(x),
        InputType.StrList:
        lambda l: [str(x) for x in l] if isiterable(l) else entries(l)
    }

    def __init__(self,
                 parser,
                 value,
                 label=None,
                 desc=None,
                 allowed_values=None,
                 input_type=None):
        self.parser = parser

        self.type = None
        self.value = None
        self.default = None
        self.label = None
        self.desc = None
        self.allowed_values = ()

        self._set_type(input_type)
        self._set_value(value)
        self._set_allowed(allowed_values)
        self._set_info(label, desc)

    def _set_info(self, label, desc):
        self.label = "" if label is None else str(label)
        self.desc = "" if desc is None else str(desc)

    def _set_type(self, input_type):
        if not input_type:
            input_type = self.DEFAULT_TYPE
        if input_type not in InputType:
            raise InvalidValueError(input_type)
        self.type = input_type

    def _set_value(self, value):
        self.value = self.default = self._normalize_value(value)

    def _set_allowed(self, allowed):
        if not allowed:
            self.allowed_values = ()
            return

        self.allowed_values = tuple(self._normalize_value(v) for v in allowed)

    def _normalize_value(self, value):
        return self._convert_map[self.type](value)

    def reset(self):
        self.value = self.default

    def get(self):
        return self.value

    def get_default(self):
        return self.default

    def set(self, value, store=True):
        norm_value = self._normalize_value(value)
        if self.allowed_values and norm_value not in self.allowed_values:
            raise InvalidValueError(value)
        if self.value == norm_value:
            return None
        self.value = norm_value
        if store:
            self.parser.store()
예제 #16
0
파일: chunk.py 프로젝트: zach-morris/pyload
 def __init__(self, filename):
     self.path = fullpath(filename)
     self.size = 0
     self.resume = False
     self.chunks = []
예제 #17
0
def path(*paths):
    return os.path.normcase(fullpath(os.path.join(*paths)))
예제 #18
0
파일: parser.py 프로젝트: GammaC0de/pyload
from pyload.utils.web.parse import endpoint, socket

standard_library.install_aliases()


def _parse_address(value):
    address = value.replace(',', ':')
    return (endpoint if isendpoint(address) else socket)(address)


convert_map = {
    InputType.NA: lambda x: x,
    InputType.Str: to_str,
    InputType.Int: int,
    InputType.File: fullpath,
    InputType.Folder: lambda x: os.path.dirname(fullpath(x)),
    InputType.Password: to_str,
    InputType.Bool: bool,
    InputType.Float: float,
    # InputType.Octal: lambda x: oct(int(x, 8)),
    InputType.Size: parse.bytesize,
    InputType.Address: _parse_address,
    InputType.Bytes: to_bytes,
    InputType.StrList: parse.entries
}


class ConfigOption(object):

    __slots__ = ['allowed_values', 'default', 'desc', 'label', 'parser',
                 'type', 'value']