summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2013-05-23 15:13:17 +0200
committerRoland Hedberg <roland.hedberg@adm.umu.se>2013-05-23 15:13:17 +0200
commitb0848c108c0ac35d943b3d4937e6bfdfe55a6090 (patch)
tree7e6ddd8b10f419973185a13d9a248b31e5be7208 /tools
parent1703b4f4903b357b291c7987ceb888b3acabde62 (diff)
downloadpysaml2-b0848c108c0ac35d943b3d4937e6bfdfe55a6090.tar.gz
Read metadata from somewhere and dump it in the MD format.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/mdexport.py62
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