Code

Fix 'check_manifest()' import; Enable logging.
[roundup.git] / roundup / scripts / roundup_xmlrpc_server.py
1 #! /usr/bin/env python
2 #
3 # Copyright (C) 2007 Stefan Seefeld
4 # All rights reserved.
5 # For license terms see the file COPYING.txt.
6 #
8 import getopt, os, sys, socket
9 from roundup.xmlrpc import RoundupServer, RoundupRequestHandler
10 from roundup.instance import TrackerError
11 from SimpleXMLRPCServer import SimpleXMLRPCServer
13 def usage():
14     print """
16 Options:
17  -i instance home  -- specify the issue tracker "home directory" to administer
18  -V                -- be verbose when importing
19  -p, --port <port> -- port to listen on
21 """
23 def run():
25     try:
26         opts, args = getopt.getopt(sys.argv[1:],
27                                    'e:i:p:V', ['encoding=', 'port='])
28     except getopt.GetoptError, e:
29         usage()
30         return 1
32     verbose = False
33     tracker = ''
34     port = 8000
35     encoding = None
37     for opt, arg in opts:
38         if opt == '-V':
39             verbose = True
40         elif opt == '-i':
41             tracker = arg
42         elif opt in ['-p', '--port']:
43             port = int(arg)
44         elif opt in ['-e', '--encoding']:
45             encoding = encoding
47         if sys.version_info[0:2] < (2,5):
48             if encoding:
49                 print 'encodings not supported with python < 2.5'
50                 sys.exit(-1)
51             server = SimpleXMLRPCServer(('', port), RoundupRequestHandler)
52         else:
53             server = SimpleXMLRPCServer(('', port), RoundupRequestHandler,
54                                         allow_none=True, encoding=encoding)
55     if not os.path.exists(tracker):
56         print 'Instance home does not exist.'
57         sys.exit(-1)
58     try:
59         object = RoundupServer(tracker, verbose)
60     except TrackerError:
61         print 'Instance home does not exist.'
62         sys.exit(-1)
64     server.register_instance(object)
66     # Go into the main listener loop
67     print 'Roundup XMLRPC server started on %s:%d' \
68           % (socket.gethostname(), port)
69     try:
70         server.serve_forever()
71     except KeyboardInterrupt:
72         print 'Keyboard Interrupt: exiting'
74 if __name__ == '__main__':
75     run()