Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha 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)
commit2c3f4ddb36c4ca55367a0b791b5eb4e8d0017f6c (patch)
treefbda7adc760505a19a148d94739f377098227fc0
parent9976082aba4670e5f17c62b335d87a276cedee30 (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-xjournal2webdav.py59
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: