Skip to main content
Documentation Status https://coveralls.io/repos/github/jonDel/xmlrpcssl/badge.svg?branch=master Code Health https://www.versioneye.com/user/projects/58233fdf613b6800422cb9b6/badge.svg?style=flat

xmlrpcssl

xmlprcssl is a Python library that provides secure communication (TLS) beetween clients and servers through xmlrpc protocol. It supports plugable handlers to provide user authentication. For now, it has as an example a ldap based authentication handler.

Server configuration

>>> from xmlrpcssl import SecureAuthenticatedXMLRPCServer
>>> from xmlrpcssl.handlers import LdapVerifyingRequestHandler
>>> from datetime import datetime
>>> keySsl='/tmp/server.key'
>>> crtSsl='/tmp/server.crt'
>>> tcpPort=433
>>> serverIp='10.0.0.1'
>>> ldapHost = 'ldapHost' # User must have access granted to this host in ldap
>>> ldapServer = 'ldapServer' # ip or name of ldap server
>>> gidNumber = 111 # User must be in this group in order to be authenticated
>>> isMasterUser = False # True if the user has write permissions in the ldap server
>>> baseUsrLoginDn = 'o=Organization,c=US' # user base DN to perform login in
 # the ldap server
>>> baseSearchDn = 'o=Organization,c=US' # search base DN to perform a search in
 # the ldap server base
>>> RequestHandler = LdapVerifyingRequestHandler # a handler that inherits from
 # BaseRequestHandler and performs user authentication
>>> optArgs={'isMasterUser':isMasterUser,'baseUsrLoginDn':baseUsrLoginDn,
...  'ldapServer':ldapServer,'gidNumber':gidNumber,'baseSearchDn':baseSearchDn,
...  'host':ldapHost,'RequestHandler':RequestHandler}
>>> serverSSL=SecureAuthenticatedXMLRPCServer((serverIp,tcpPort),keySsl,crtSsl,**optArgs)
>>> def test():
...  # toy test function
...  return datetime.now().strftime("%H:%M:%S")
>>> serverSSL.register_function(test)
>>> serverSSL.serve_forever()

Client configuration

>>> from xmlrpclib import ServerProxy
>>> userName = 'ldapUser'
>>> password = 'ldapUserPassword'
>>> tcpPort=433
>>> serverIp='10.0.0.1'
>>> clientXml=ServerProxy('https://'+userName+':'+password+'@'+serverIp+':'+str(tcpPort))
>>> response = clientXml.test()
>>> print response

Installation

To install xmlrpcssl, simply run:

$ pip install xmlrpcssl

xmlrpcssl is compatible with Python 2.6+

Documentation

https://xmlrpcssl.readthedocs.io

Source Code

Feel free to fork, evaluate and contribute to this project.

Source: https://github.com/jonDel/xmlrpcssl

License

GPLv3 licensed.

Credits

Release history Release notifications | RSS feed

This release

0.1.3 This release

0.1.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page