Tryag File Manager
Home
-
Turbo Force
Current Path :
/
usr
/
share
/
doc
/
m2crypto-0.16
/
demo
/
Zope
/
utilities
/
Upload File :
New :
File
Dir
//usr/share/doc/m2crypto-0.16/demo/Zope/utilities/x509_user.py
#!/usr/bin/python """ This is a very simple program to manage the access_x509 database. The overriding goal is program portability, hence its use of 'anydbm'. Invoke it thusly: x509_user.py -u <username> [ -x <X.509 subject DN> ] [ -f <database> ] <username> is the Zope username; it must be present. <X.509 subject DN> is the X.509 certificate's subject distinguished name to associate with the user. If it is present, the association is created or updated. If it is absent, the association is removed. <database> defaults to 'access_x509'. (I told you this is a dumb program.) To read the subject distinguished name from the certificate 'client.pem', invoke 'openssl' thusly: openssl x509 -subject -noout -in client.pem This produces the output: subject=/C=SG/O=M2Crypto Client/CN=M2Crypto Client/Email=ngps@post1.com Next, invoke this tool: x509_user.py -u superuser \\ -f "/C=SG/O=M2Crypto Client/CN=M2Crypto Client/Email=ngps@post1.com" This associates the user who owns client.pem to the Zope "superuser". Copyright (c) 2000 Ng Pheng Siong. This program is released under the ZPL. """ import anydbm, getopt, sys x509_db = 'access_x509' username = subject_dn = None argerr='Usage' optlist, optarg=getopt.getopt(sys.argv[1:], 'f:u:x:') # ;-) for opt in optlist: if '-f' in opt: x509_db = opt[1] elif '-u' in opt: username = opt[1] elif '-x' in opt: subject_dn = opt[1] if username is None: raise argerr, '\n' + __doc__ db = anydbm.open(x509_db, 'cw') if subject_dn is None: # Remove the association... try: subject_dn = db[username] del db[subject_dn] del db[username] except: pass else: # Create/update the association. db[subject_dn] = username db[username] = subject_dn db.close()