Esempio n. 1
0
    def __init__(self, item):
        import six

        assert isinstance(item, six.string_types)
        item_arr = item.split()
        self.permission = item_arr[0]
        self.hard_link_count = num.safe_int(item_arr[1])
        self.owner = item_arr[2]
        self.group = item_arr[3]
        self.size = num.safe_int(item_arr[4])

        # process date time
        from datetime import datetime
        if " ".join(item_arr[5:8]).index(":") > 0:
            # this year
            self.date = datetime.strptime(" ".join(item_arr[5:8]) + " " + str(datetime.now().year), "%b %d %H:%M %Y")
        else:
            # not this year
            self.date = datetime.strptime(" ".join(item_arr[5:8]), "%b %d %Y")
        temp = item
        for field in item_arr[:7]:
            temp = temp.lstrip(field)
            temp = temp.lstrip()
        temp = temp.lstrip(item_arr[7])[1:]
        self.filename = temp

        # set helper attributes
        self.is_dir = self.permission[0] == "d"
        self.is_file = self.permission[0] == "-"
Esempio n. 2
0
def initialize():
    import os
    import sys
    import logging
    import logging.handlers
    from utils import setting, num, strings

    global _logger

    conf = setting.conf.get("system")

    _fmt = '[%(asctime)s %(levelname)s] %(message)s'
    _formatter = logging.Formatter(_fmt)
    _logger = logging.getLogger()
    _log_level = num.safe_int(conf.get("log_level"), logging.NOTSET)

    # stream logger
    if num.safe_int(conf.get("log_stdout")) == 1:
        _stream_handler = logging.StreamHandler(sys.stdout)
        _stream_handler.setFormatter(_formatter)
        _stream_handler.setLevel(_log_level)
        _logger.addHandler(_stream_handler)

    # file logger
    if num.safe_int(conf.get("log_file")) == 1:
        if strings.is_blank(conf.get("log_file_path")):
            path = os.path.join(os.path.dirname(__file__), "..", conf.get("project_name") + ".log")
        else:
            path = conf.get("log_file_path")
        _file_handler = logging.handlers.TimedRotatingFileHandler(path, when='d', backupCount=5, encoding="utf-8")
        _file_handler.setFormatter(_formatter)
        _file_handler.setLevel(_log_level)
        _logger.addHandler(_file_handler)

    _logger.setLevel(_log_level)
Esempio n. 3
0
    def __init__(self, item):
        import six

        assert isinstance(item, six.string_types)
        item_arr = item.split()
        self.permission = item_arr[0]
        self.hard_link_count = num.safe_int(item_arr[1])
        self.owner = item_arr[2]
        self.group = item_arr[3]
        self.size = num.safe_int(item_arr[4])

        # process date time
        from datetime import datetime
        if " ".join(item_arr[5:8]).index(":") > 0:
            # this year
            self.date = datetime.strptime(
                " ".join(item_arr[5:8]) + " " + str(datetime.now().year),
                "%b %d %H:%M %Y")
        else:
            # not this year
            self.date = datetime.strptime(" ".join(item_arr[5:8]), "%b %d %Y")
        temp = item
        for field in item_arr[:7]:
            temp = temp.lstrip(field)
            temp = temp.lstrip()
        temp = temp.lstrip(item_arr[7])[1:]
        self.filename = temp

        # set helper attributes
        self.is_dir = self.permission[0] == "d"
        self.is_file = self.permission[0] == "-"
Esempio n. 4
0
def initialize():
    import os
    import sys
    import logging.handlers
    from collections import Iterable
    from utils import setting, num, strings

    conf = setting.conf.get('logging')
    _logger = logging.getLogger()

    # stream logger
    config_stdout = conf.get('stdout', {})
    if config_stdout.get('enable'):
        _stream_handler = logging.StreamHandler(sys.stdout)
        _stream_handler.setFormatter(
            logging.Formatter(
                strings.get_non_empty_str(config_stdout, 'format',
                                          DEFAULT_LOGGING_FMT)))
        _stream_handler.setLevel(
            num.safe_int(config_stdout.get('level'), DEFAULT_LOGGIN_LEVEL))
        _logger.addHandler(_stream_handler)

    # file logger
    config_file = conf.get('file', {})
    if config_file.get('enable'):
        path = strings.get_non_empty_str(
            config_file, 'path',
            os.path.join(
                os.path.dirname(__file__), '..',
                setting.conf.get('system').get('project_name') + ".log"))
        config_rotating = config_file.get('rotating', {})
        if config_rotating.get('enable'):
            _file_handler = logging.handlers.TimedRotatingFileHandler(
                path,
                when=config_rotating.get('when', 'H'),
                backupCount=config_rotating.get('backup_count', 0),
                encoding='utf-8')
        else:
            _file_handler = logging.handlers.RotatingFileHandler(
                path, encoding='utf-8')
        _file_handler.setFormatter(
            logging.Formatter(
                strings.get_non_empty_str(config_file, 'format',
                                          DEFAULT_LOGGING_FMT)))
        _file_handler.setLevel(
            num.safe_int(config_file.get('level'), DEFAULT_LOGGIN_LEVEL))
        _logger.addHandler(_file_handler)

    _logger.setLevel(DEFAULT_LOGGIN_LEVEL)

    loggers = conf.get('loggers')
    if loggers is not None:
        assert isinstance(loggers, Iterable)
        for item in loggers:
            _log = logging.getLogger(item.get('name'))
            if 'level' in item:
                _log.setLevel(
                    num.safe_int(item.get('level'), DEFAULT_LOGGIN_LEVEL))
Esempio n. 5
0
 def _check_srv(srv):
     arr = srv.split(' ')
     for i in range(3):
         nu = num.safe_int(arr[i])
         if str(nu) != arr[i]:
             return False
         if nu < 0:
             return False
     port = num.safe_int(arr[2])
     if 1 < port < 65535:
         return re.match(strings.REG_DOMAIN, arr[3])
     return False
Esempio n. 6
0
def main():
    import os.path

    # init setting
    from utils import setting, num
    with open(os.path.join(os.path.dirname(__file__), "conf.yaml")) as _f:
        setting.load(_f)

    # init logger
    from utils import logger
    logger.initialize()

    # pid file
    with open(
            os.path.join(
                os.path.dirname(__file__),
                setting.conf.get("system").get("project_name") + ".pid"),
            'w') as pid:
        pid.write(str(os.getpid()))

    conf = setting.conf.get("inotiftpsync")
    _Sync(path=conf.get("watch_path"),
          ftp_server=conf.get("ftp_server"),
          ftp_username=conf.get("ftp_username"),
          ftp_password=conf.get("ftp_password"),
          ftp_use_ssl=num.safe_int(conf.get("ftp_use_ssl")) == 1,
          ftp_port=conf.get("ftp_port"),
          ftp_root=conf.get("ftp_root")).start()
Esempio n. 7
0
 def _check_soa(soa):
     arr = soa.split(' ')
     for i in range(2, 7):
         nu = num.safe_int(arr[i])
         if str(nu) != arr[i]:
             return False
         if nu < 0:
             return False
     return re.match(strings.REG_DOMAIN, arr[0]) and re.match(strings.REG_DOMAIN, arr[1])
Esempio n. 8
0
def initialize():
    import os
    import sys
    import logging
    import logging.handlers
    from utils import setting, num, strings

    global _logger

    conf = setting.conf.get("system")

    _fmt = '[%(asctime)s %(levelname)s] %(message)s'
    _formatter = logging.Formatter(_fmt)
    _logger = logging.getLogger()
    _log_level = num.safe_int(conf.get("log_level"), logging.NOTSET)

    # stream logger
    if num.safe_int(conf.get("log_stdout")) == 1:
        _stream_handler = logging.StreamHandler(sys.stdout)
        _stream_handler.setFormatter(_formatter)
        _stream_handler.setLevel(_log_level)
        _logger.addHandler(_stream_handler)

    # file logger
    if num.safe_int(conf.get("log_file")) == 1:
        if strings.is_blank(conf.get("log_file_path")):
            path = os.path.join(os.path.dirname(__file__), "..",
                                conf.get("project_name") + ".log")
        else:
            path = conf.get("log_file_path")
        _file_handler = logging.handlers.TimedRotatingFileHandler(
            path, when='d', backupCount=5, encoding="utf-8")
        _file_handler.setFormatter(_formatter)
        _file_handler.setLevel(_log_level)
        _logger.addHandler(_file_handler)

    _logger.setLevel(_log_level)
Esempio n. 9
0
    def parse_server_config(server_config):
        import copy

        _server_config = copy.deepcopy(server_config)
        dns_servers = _server_config.get('dns_servers', [])
        for server in dns_servers:
            # parse url
            scheme, hostname, port = DNSServerLoader.parse_url(server['url'])
            server['scheme'] = scheme
            server['hostname'] = hostname
            server['port'] = port

            # parse rules
            for rule in server['rules']:
                rtype = rule['type']
                if rule['domain-type'] in ('FQDN', 'PREFIX', 'SUFFIX'):
                    rule['domain'] = DNSLabel(rule['domain'])
                if rtype == 'FORWARD':
                    _scheme, _hostname, _port = DNSServerLoader.parse_url(rule['value'])
                    rule['pvalue'] = {
                        'scheme': _scheme,
                        'hostname': _hostname,
                        'port': _port,
                        'url': _scheme + '://' + _hostname + ':' + str(_port)
                    }
                elif rtype in ('A', 'CNAME', 'MX', 'NS', 'PTR', 'AAAA', 'SRV', 'SOA'):
                    if isinstance(rule['value'], six.string_types):
                        rule['value'] = [rule['value']]
                    if rtype == 'A':
                        rule['pvalue'] = [dnslib.A(item) for item in rule['value']]
                    elif rtype == 'CNAME':
                        rule['pvalue'] = [dnslib.CNAME(DNSLabel(item)) for item in rule['value']]
                    elif rtype == 'MX':
                        rule['pvalue'] = [dnslib.MX(DNSLabel(item)) for item in rule['value']]
                    elif rtype == 'NS':
                        rule['pvalue'] = [dnslib.NS(DNSLabel(item)) for item in rule['value']]
                    elif rtype == 'PTR':
                        rule['pvalue'] = [dnslib.PTR(DNSLabel(item)) for item in rule['value']]
                    elif rtype == 'AAAA':
                        rule['pvalue'] = [dnslib.AAAA(item) for item in rule['value']]
                    elif rtype == 'SRV':
                        srv_arr = []
                        for item in rule['value']:
                            item_arr = item.split(' ')
                            srv_arr.append(dnslib.SRV(
                                priority=num.safe_int(item_arr[0]),
                                weight=num.safe_int(item_arr[1]),
                                port=num.safe_int(item_arr[2]),
                                target=item_arr[3]))
                        rule['pvalue'] = srv_arr
                    elif rtype == 'SOA':
                        soa_arr = []
                        for item in rule['value']:
                            item_arr = item.split(' ')
                            soa_arr.append(dnslib.SOA(
                                mname=DNSLabel(item_arr[0]),
                                rname=DNSLabel(item_arr[1]),
                                times=(num.safe_int(t) for t in item_arr[2:])  # serial, refresh, retry, expire, minimun
                            ))
                        rule['pvalue'] = soa_arr
        return dns_servers