Read metadata from somewhere and dump it in the MD format.
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user