X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=nagixsc_conf2http.py;h=7698d43a18cfb8811a300ecf730850e69cfe9010;hb=b0463dffec77b4885f26044b97eded3da55be0eb;hp=8738d044452471eebc855210e1334df50f4c02b7;hpb=d2b71c8b1397d05a7fb4b8ddee6bc434ef09684b;p=nagixsc.git diff --git a/nagixsc_conf2http.py b/nagixsc_conf2http.py index 8738d04..7698d43 100755 --- a/nagixsc_conf2http.py +++ b/nagixsc_conf2http.py @@ -37,18 +37,49 @@ if cfg_list == []: print 'Config file "%s" could not be read!' % options.cfgfile sys.exit(1) -config = {} +config = { + 'ip': '0.0.0.0', + 'port': '15666', + 'ssl': False, + 'sslcert': None, + 'conf_dir': '', + 'pidfile': '/var/run/nagixsc_conf2http.pid' + } + +if 'ip' in cfgread.options('server'): + config['ip'] = cfgread.get('server', 'ip') + +if 'port' in cfgread.options('server'): + config['port'] = cfgread.get('server', 'port') try: - config['ip'] = cfgread.get('server', 'ip') - config['port'] = cfgread.getint('server', 'port') - config['ssl'] = cfgread.getboolean('server', 'ssl') - config['cert'] = cfgread.get('server', 'sslcert') + config['port'] = int(config['port']) +except ValueError: + print 'Port "%s" not an integer!' % config['port'] + sys.exit(127) - config['conf_dir'] = cfgread.get('server', 'conf_dir') +if 'ssl' in cfgread.options('server'): + try: + config['ssl'] = cfgread.getboolean('server', 'ssl') + except ValueError: + print 'Value for "ssl" ("%s") not boolean!' % config['ssl'] + sys.exit(127) + +if config['ssl']: + if 'sslcert' in cfgread.options('server'): + config['sslcert'] = cfgread.get('server', 'sslcert') + else: + print 'SSL but no certificate file specified!' + sys.exit(127) + +try: + config['conf_dir'] = cfgread.get('server', 'conf_dir') +except ConfigParser.NoOptionError: + print 'No "conf_dir" specified!' + sys.exit(127) + +if 'pidfile' in cfgread.options('server'): + config['pidfile'] = cfgread.get('server', 'pidfile') -except ConfigParser.NoOptionError, e: - print 'Config file error: %s ' % e - sys.exit(1) users = {} for u in cfgread.options('users'): @@ -102,7 +133,7 @@ class Conf2HTTPHandler(MyHTTPRequestHandler): if re.search('\.\.', configfile): self.http_error(500, 'Found ".." in config file name') return - if not re.search('^[a-zA-Z0-9-_]+$', configfile): + if not re.search('^[a-zA-Z0-9-_]+.conf$', configfile): self.http_error(500, 'Config file name contains invalid characters') return @@ -129,14 +160,18 @@ def main(): if options.nossl: config['ssl'] = False - if config['ssl'] and not os.path.isfile(config['cert']): - print 'SSL certificate "%s" not found!' % config['cert'] + if config['ssl'] and not os.path.isfile(config['sslcert']): + print 'SSL certificate "%s" not found!' % config['sslcert'] + sys.exit(127) + + if not os.path.isdir(config['conf_dir']): + print 'Not a config file directory: "%s"' % config['conf_dir'] sys.exit(127) if options.daemon: - daemonize(pidfile='/var/run/nagixsc_conf2http.pid') + daemonize(pidfile=config['pidfile']) - server = MyHTTPServer((config['ip'], config['port']), Conf2HTTPHandler, ssl=config['ssl'], sslpemfile=config['cert']) + server = MyHTTPServer((config['ip'], config['port']), Conf2HTTPHandler, ssl=config['ssl'], sslpemfile=config['sslcert']) try: server.serve_forever() except: