#!/usr/bin/env python # -*- python -*- # -*- coding: utf-8 -*- # # Copyright (C) 2008, 2009 by Jan Dittberner. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # Version: $Id$ import sys, os, logging.config, socket from gnuviechadmin.util.passwordutils import md5_crypt_password from SimpleXMLRPCServer import SimpleXMLRPCServer logcfgs = ('gnuviechadmin/logging.cfg', '/etc/gnuviechadmin/logging.cfg', os.path.expanduser('~/.gva-logging.cfg')) for cfg in [x for x in logcfgs if os.path.exists(x)]: logging.config.fileConfig(cfg) def usage(): print """%s where host and port specify the connection parameters. Host is the hostname or ip address to listen on. """ % sys.argv[0] class GnuviechAdminXMLRPCServer(SimpleXMLRPCServer): def __init__(self, server_address, **kwargs): try: SimpleXMLRPCServer.__init__(self, server_address, **kwargs) except socket.gaierror, e: self.address_family = socket.AF_INET6 SimpleXMLRPCServer.__init__(self, server_address, **kwargs) def main(): if (sys.argv.__len__() < 3): usage() sys.exit() server = GnuviechAdminXMLRPCServer((sys.argv[1], int(sys.argv[2])), allow_none=True) server.register_introspection_functions() from gnuviechadmin.xmlrpc import XMLRPCFacade from gnuviechadmin.xmlrpc.users import \ ClientUserProvider, MailuserUserProvider, SysuserUserProvider server.register_instance(XMLRPCFacade('data', [ClientUserProvider, MailuserUserProvider, SysuserUserProvider], md5_crypt_password)) server.serve_forever() if __name__ == '__main__': main()