X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfadump.py;h=52a910556f3d99fd75bd5f6792cc014450023863;hb=9277a03fd5b813e866746eae78b633d5f614a375;hp=6496ca6428be09788812f428b937a496c08c2344;hpb=3d7237fa0b5f2b4a60cb97c7fb3b6aecfd94558a;p=sfa.git diff --git a/sfa/client/sfadump.py b/sfa/client/sfadump.py old mode 100644 new mode 100755 index 6496ca64..52a91055 --- a/sfa/client/sfadump.py +++ b/sfa/client/sfadump.py @@ -1,6 +1,4 @@ #! /usr/bin/env python -# $Id$ -# $URL$ from __future__ import with_statement import sys @@ -12,23 +10,37 @@ from optparse import OptionParser from sfa.trust.certificate import Certificate from sfa.trust.credential import Credential +from sfa.trust.gid import GID from sfa.util.record import SfaRecord -from sfa.util.rspec import RSpec +from sfa.util.sfalogging import logger def determine_sfa_filekind(fn): - cert = Certificate(filename = fn) - data = cert.get_data() - if data: - dict = xmlrpclib.loads(data)[0][0] - else: - dict = {} + if fn.endswith('.gid'): return 'gid' + elif fn.endswith('.cert'): return 'certificate' + elif fn.endswith('cred'): return 'credential' + + try: + cred=Credential(filename=fn) + return 'credential' + except: pass - if "gidCaller" in dict: - return "credential" + try: + gid=GID(filename=fn) + if gid.uuid: return 'gid' + except: pass - if "uuid" in dict: - return "gid" + try: + cert = Certificate(filename = fn) + return 'certificate' + except: pass + + # to be completed +# if "gidCaller" in dict: +# return "credential" +# +# if "uuid" in dict: +# return "gid" return "unknown" @@ -54,41 +66,55 @@ def extract_gids(cred, extract_parents): if gidObject and ((gidCaller == None) or (gidCaller.get_hrn() != gidObject.get_hrn())): save_gid(gidObject) - if extract_parents: - parent = cred.get_parent() - if parent: - extract_gids(parent, extract_parents) - -def create_parser(): - # Generate command line parser - parser = OptionParser(usage="%prog [options] filename") - - parser.add_option("-e", "--extractgids", action="store_true", dest="extract_gids", default=False, help="Extract GIDs from credentials") - parser.add_option("-p", "--dumpparents", action="store_true", dest="dump_parents", default=False, help="Show parents") - - return parser + # no such method Credential.get_parent +# if extract_parents: +# parent = cred.get_parent() +# if parent: +# extract_gids(parent, extract_parents) + +def handle_input (filename, options): + kind = determine_sfa_filekind(filename) + handle_input_kind (filename,options,kind) + +def handle_input_kind (filename, options, kind): + + +# dump methods current do 'print' so let's go this road for now + if kind=="certificate": + cert=Certificate (filename=filename) + print '--------------------',filename,'IS A',kind + cert.dump(show_extensions=options.show_extensions) + elif kind=="credential": + cred = Credential(filename = filename) + print '--------------------',filename,'IS A',kind + cred.dump(dump_parents = options.dump_parents) + if options.extract_gids: + print '--------------------',filename,'embedded GIDS' + extract_gids(cred, extract_parents = options.dump_parents) + elif kind=="gid": + gid = GID(filename = filename) + print '--------------------',filename,'IS A',kind + gid.dump(dump_parents = options.dump_parents) + else: + print "%s: unknown filekind '%s'"% (filename,kind) def main(): - parser = create_parser() - (options, args) = parser.parse_args() - - if len(args) <= 0: - print "No filename given. Use -h for help." - return -1 - - filename = args[0] - kind = determine_sfa_filekind(filename) - - if kind=="credential": - cred = Credential(filename = filename) - cred.dump(dump_parents = options.dump_parents) - if options.extract_gids: - extract_gids(cred, extract_parents = options.dump_parents) - elif kind=="gid": - gid = Gid(filename = filename) - gid.dump(dump_parents = options.dump_parents) - else: - print "unknown filekind", kind + usage = """%prog file1 [ .. filen] +display info on input files""" + parser = OptionParser(usage=usage) + + parser.add_option("-g", "--extract-gids", action="store_true", dest="extract_gids", default=False, help="Extract GIDs from credentials") + parser.add_option("-p", "--dump-parents", action="store_true", dest="dump_parents", default=False, help="Show parents") + parser.add_option("-e", "--extensions", action="store_true", dest="show_extensions", default="False", help="Show certificate extensions") + parser.add_option("-v", "--verbose", action='count', dest='verbose', default=0) + (options, args) = parser.parse_args() + + logger.setLevelFromOptVerbose(options.verbose) + if len(args) <= 0: + parser.print_help() + sys.exit(1) + for f in args: + handle_input(f,options) if __name__=="__main__": main()