X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=nagixsc_conf2http.py;h=1c5d28ff137af6c64218c6eb4bfb138d80bbdde0;hb=e9b31f439a14be0c6a562108ec947a2d78e06107;hp=640539fc98013311286c65ead7f022575501e282;hpb=855195b745afb64c34a89278a283a3fecb46f510;p=nagixsc.git diff --git a/nagixsc_conf2http.py b/nagixsc_conf2http.py index 640539f..1c5d28f 100755 --- a/nagixsc_conf2http.py +++ b/nagixsc_conf2http.py @@ -1,6 +1,5 @@ #!/usr/bin/python -import BaseHTTPServer import ConfigParser import base64 import optparse @@ -23,6 +22,8 @@ from nagixsc import * parser = optparse.OptionParser() parser.add_option('-c', '', dest='cfgfile', help='Config file') +parser.add_option('-d', '--daemon', action='store_true', dest='daemon', help='Daemonize, go to background') +parser.add_option('', '--nossl', action='store_true', dest='nossl', help='Disable SSL (overwrites config file)') parser.set_defaults(cfgfile='conf2http.cfg') @@ -40,9 +41,10 @@ config = {} 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['conf_dir'] = cfgread.get('server', 'conf_dir') - config['conf2xml_cmdline'] = cfgread.get('server', 'conf2xml_cmdline') except ConfigParser.NoOptionError, e: print 'Config file error: %s ' % e @@ -54,7 +56,7 @@ for u in cfgread.options('users'): ############################################################################## -class Conf2HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): +class Conf2HTTPHandler(MyHTTPRequestHandler): def http_error(self, code, output): self.send_response(code) @@ -65,8 +67,6 @@ class Conf2HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_GET(self): - cmdline = config['conf2xml_cmdline'] - path = self.path.split('/') # Check Basic Auth @@ -102,7 +102,7 @@ class Conf2HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): 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 @@ -126,8 +126,18 @@ class Conf2HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): 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'] + sys.exit(127) + + if options.daemon: + daemonize(pidfile='/var/run/nagixsc_conf2http.pid') + + server = MyHTTPServer((config['ip'], config['port']), Conf2HTTPHandler, ssl=config['ssl'], sslpemfile=config['cert']) try: - server = BaseHTTPServer.HTTPServer((config['ip'], config['port']), Conf2HTTPHandler) server.serve_forever() except: server.socket.close()