# # config.py # # Default config values and basic wrapper for PyYaml. New config options # should be added to the dictionary below, along with appropriate defaults. # import yaml import types import os from pkg_resources import Requirement, resource_filename import logparse import logging logger = logging.getLogger(__name__) def locate(filename): logger.debug("Searching for {0}".format(filename)) loc = resource_filename(Requirement.parse(__package__), filename) logger.debug("Found {0}".format(loc)) return loc prefs = { 'output': '/var/www/logparse/summary.html', 'header': '/etc/logparse/header.html', 'css': '/etc/logparse/main.css', 'title': logparse.__name__, 'maxlist': 10, 'maxcmd': 3, 'resolve-domains': 'fqdn', 'mail': { 'to': '', 'from': '', 'subject': 'logparse from $hostname$', 'mailbin': '/usr/bin/mail', }, 'rotate': 'n', 'verbose': 'n', 'hddtemp': { 'drives': ['/dev/sda'], 'host': 'localhost', 'separator': '|', 'timeout': 10, 'port': 7634, 'show-model': False, }, 'apache': { 'resolve-domains': '', }, 'sshd': { 'resolve-domains': '', }, 'smbd': { 'resolve-domains': '', }, 'httpd': { 'resolve-domains': '', }, 'du': { 'paths': ['/', '/etc', '/home'], 'force-write': 'n', }, 'hostname-path': '/etc/hostname', 'logs': { 'auth': '/var/log/auth.log', 'cron': '/var/log/cron.log', 'sys': '/var/log/syslog', 'smb': '/var/log/samba', 'zfs': '/var/log/zpool.log', 'alloc': '/var/log/du.log', 'postfix': '/var/log/mail.log', 'httpd': '/var/log/apache2' } } def loadconf(argparser, configfile = "/etc/logparse/logparse.conf"): logger.debug("getting config from {0}".format(configfile)) try: data = yaml.safe_load(open(configfile)) for value in data: if(isinstance(data[value], dict)): for key in data[value].items(): prefs[value][key[0]] = key[1] else: prefs[value] = data[value] # config['dest'] = paths.dirname(config['output']) if argparser.parse_args().to is not None: prefs['mail']['to'] = argparser.parse_args().to if not prefs['mail']['to']: logger.info("no recipient address provided, outputting to stdout") else: logger.info("email will be sent to " + prefs['mail']['to']) return prefs except Exception as e: logger.warning("error processing config: " + str(e))