diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2012-04-03 10:21:49 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2012-04-03 10:21:49 (GMT) |
commit | 2c3f4ddb36c4ca55367a0b791b5eb4e8d0017f6c (patch) | |
tree | fbda7adc760505a19a148d94739f377098227fc0 | |
parent | 9976082aba4670e5f17c62b335d87a276cedee30 (diff) |
add CLI for host, port, root query and verbosity
Previously the user had to hack journal2webdav.py to adjust these, making
updates more cumbersome than necessary.
-rwxr-xr-x | journal2webdav.py | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/journal2webdav.py b/journal2webdav.py index 0fa29fb..8529664 100755 --- a/journal2webdav.py +++ b/journal2webdav.py @@ -16,6 +16,7 @@ from BaseHTTPServer import HTTPServer from SocketServer import ThreadingMixIn import logging +import optparse import os import sys import time @@ -192,8 +193,6 @@ class JournalHandler(dav_interface): # required by dav_interface self.baseuri = base_uri self.verbose = verbose -# self._root_query = {'keep': 1} - self._root_query = {} def exists(self, uri): log.debug('exists %r', uri) @@ -436,34 +435,58 @@ class RequestHandler(DAVAuthHandler): self.send_body_chunks_if_http11(DATA, '207','Multi-Status','Multiple responses') + def log_message(self, format, *args): + # pylint: disable=W0622 + log.info('%s - - [%s] %s', self.address_string(), + self.log_date_time_string(), format % args) + def main(my_name, args): global log - host, port = 'localhost', 8009 - verbose = True - - logging.basicConfig(level=logging.DEBUG) + parser = optparse.OptionParser() + parser.add_option('-d', '--debug', action='store_true', default=False, + help='enable additional debugging output') + parser.add_option('-H', '--host', default='localhost', metavar='HOST', + help='bind to HOST; use empty string to listen on all' + ' interfaces [default: %default]') + parser.add_option('-p', '--port', default=8009, metavar='PORT', type='int', + help='listen on PORT [default: %default]') + parser.add_option('-r', '--root-query', default="{'keep': '1'}", + metavar='QUERY', help='publish all data store entries' + ' matching the data store query QUERY' + ' [default: %default]') + parser.add_option('-q', '--quiet', action='store_false', dest='verbose', + help='only output warnings and errors') + parser.add_option('-v', '--verbose', action='store_true', default=True, + help='override a previous -q or --quiet option') + options, args = parser.parse_args() + if args: + parser.error('extra arguments passed') + + root_query = eval(options.root_query) + + if options.debug: + logging.basicConfig(level=logging.DEBUG) + elif options.verbose: + logging.basicConfig(level=logging.INFO) + else: + logging.basicConfig(level=logging.WARNING) log = logging.getLogger('journal2webdav') - emulated_fs = fsemulation.FSEmulation() + emulated_fs = fsemulation.FSEmulation(root_query) handler = RequestHandler - server = ThreadedHTTPServer - handler.IFACE_CLASS = JournalHandler(emulated_fs, 'http://%s:%s/' % (host, port), True) + base_url = 'http://%s:%d/' % (options.host, options.port) + handler.IFACE_CLASS = JournalHandler(emulated_fs, base_url, options.debug) handler.DO_AUTH = False handler.IFACE_CLASS.mimecheck = True # pylint: disable=W0201 - _dc = {'verbose': verbose, - 'port': port, - 'host': host, - 'noauth': True, - 'chunked_http_response': True, - } - - handler._config = setupDummyConfig(**_dc) + handler._config = setupDummyConfig(verbose=options.debug, + port=options.port, host=options.host, + noauth=True, chunked_http_response=True) - runner = server((host, port), handler) + runner = ThreadedHTTPServer((options.host, options.port), handler) log.info('Server running.') try: |