diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/mdexport.py | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/tools/mdexport.py b/tools/mdexport.py index 1231d381..4f5213dd 100755 --- a/tools/mdexport.py +++ b/tools/mdexport.py @@ -1,16 +1,22 @@ #!/usr/bin/env python import sys +from saml2.httpbase import HTTPBase from saml2 import saml from saml2 import md -from saml2.extension import mdui -from saml2.extension import idpdisc +from saml2.attribute_converter import ac_factory from saml2.extension import dri +from saml2.extension import idpdisc from saml2.extension import mdattr +from saml2.extension import mdrpi +from saml2.extension import mdui +from saml2.extension import shibmd from saml2.extension import ui import xmldsig import xmlenc +import argparse + from saml2.mdstore import MetaDataFile, MetaDataExtern __author__ = 'rolandh' @@ -20,45 +26,49 @@ A script that imports and verifies metadata and then dumps it in a basic dictionary format. """ -MDIMPORT = { - "swamid": { - "url": "https://kalmar2.org/simplesaml/module.php/aggregator/?id=kalmarcentral2&set=saml2", - "cert":"kalmar2.pem", - "type": "external" - }, - "incommon": { - "file": "InCommon-metadata.xml", - "type": "local" - }, - "test": { - "file": "mdtest.xml", - "type": "local" - } -} ONTS = { saml.NAMESPACE: saml, mdui.NAMESPACE: mdui, mdattr.NAMESPACE: mdattr, + mdrpi.NAMESPACE: mdrpi, dri.NAMESPACE: dri, ui.NAMESPACE: ui, idpdisc.NAMESPACE: idpdisc, md.NAMESPACE: md, xmldsig.NAMESPACE: xmldsig, - xmlenc.NAMESPACE: xmlenc + xmlenc.NAMESPACE: xmlenc, + shibmd.NAMESPACE: shibmd } -item = MDIMPORT[sys.argv[1]] + +parser = argparse.ArgumentParser() +parser.add_argument('-t', dest='type') +parser.add_argument('-u', dest='url') +parser.add_argument('-c', dest='cert') +parser.add_argument('-a', dest='attrsmap') +parser.add_argument('-o', dest='output') +parser.add_argument(dest="item") +args = parser.parse_args() + metad = None -if item["type"] == "local": - metad = MetaDataFile(sys.argv[1], ONTS.values(), item["file"]) -elif item["type"] == "external": - metad = MetaDataExtern(sys.argv[1], ONTS.values(), - item["url"], "/opt/local/bin/xmlsec1", item["cert"]) +if args.type == "local": + metad = MetaDataFile(ONTS.values(), args.item, args.item) +elif args.type == "external": + ATTRCONV = ac_factory(args.attrsmap) + httpc = HTTPBase() + metad = MetaDataExtern(ONTS.values(), ATTRCONV, args.url, + "/opt/local/bin/xmlsec1", + args.cert, httpc) if metad: metad.load() - print metad.dumps() - + txt = metad.dumps() + if args.output: + f = open(args.output, "w") + f.write(txt) + f.close() + else: + print txt |