#!/usr/bin/env python import sys import getopt import xmlrpclib verbose = False def v_print(msg): global verbose if verbose: print msg def usage(): print "Automated DokuWiki updater" print "" print " -h | --help This help text" print " -v | --verbose Print some verbose output" print " -u | --user DokuWiki username" print " -p | --password DokuWiki password" print " --http-user User name for HTTP auth" print " --http-password Password for HTTP auth" print " --page Name of the page to update" def main(): server_name = 'HOSTNAME/URL' # no protocol global verbose try: opts, args = getopt.getopt(sys.argv[1:], "hmu:p:v", [ "user=", "password=", "http-user=", "http-password=", "page=", "verbose", "help" ]) except getopt.GetoptError, err: print str(err) usage() sys.exit(1) user = None passwd = None http_user = None http_passwd = None page = None for opt, arg in opts: if opt in [ "-h", "--help" ]: usage() sys.exit(0) elif opt == "-v": verbose = True elif opt == "--page": page = arg elif opt in [ "-u", "--user" ]: user = arg elif opt in [ "-p", "--password" ]: passwd = arg elif opt == "--http-user": http_user = arg elif opt == "--http-password": http_passwd = arg else: assert False, "unhandled option: %s" % opt if page is None: print "You must specify the page to update" sys.exit(1) if http_user is None: server_url = "https://%s" % server_name else: if http_passwd is None: assert False, "Need a password for HTTP auth" else: server_url = "https://%s:%s@%s" % (http_user, http_passwd, server_name) server_url = "%s/lib/exe/xmlrpc.php" % server_url v_print('Connecting to server: %s' % server_name) try: server = xmlrpclib.Server(server_url) except err: print "Failed to connect to server: %s" % str(err) sys.exit(2) if user is not None: result = server.dokuwiki.login(user, passwd) if result: v_print("Successfully logged in") else: print "Login to server failed" sys.exit(3) v_print("Getting data from server") data = server.wiki.getPage(page) print data if __name__ == "__main__": main()