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] == "-"
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)
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] == "-"
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))
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
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()
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])
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)
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