X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=faca8a62fa1d3c6dc672fc5febcb2a8e429389f2;hb=4362d8f9712a071fb5466f416b6593a61a67ebfc;hp=9cf655191b3b728787636ff174e33ce59cd7aeb4;hpb=611096d4c778281585f73b4edef458adad81ea2c;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index 9cf65519..faca8a62 100644 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -9,6 +9,7 @@ sys.path.append('.') import os, os.path import socket +import re import datetime import codecs import pickle @@ -23,6 +24,7 @@ from sfa.trust.gid import GID from sfa.trust.credential import Credential from sfa.trust.sfaticket import SfaTicket +from sfa.util.faults import SfaInvalidArgument from sfa.util.sfalogging import sfi_logger from sfa.util.xrn import get_leaf, get_authority, hrn_to_urn, Xrn from sfa.util.config import Config @@ -157,6 +159,10 @@ def save_record_to_file(filename, record_dict): f.close() return +# minimally check a key argument +def check_ssh_key (key): + good_ssh_key = r'^.*(?:ssh-dss|ssh-rsa)[ ]+[A-Za-z0-9+/=]+(?: .*)?$' + return re.match(good_ssh_key, key, re.IGNORECASE) # load methods def load_record_from_opts(options): @@ -178,6 +184,8 @@ def load_record_from_opts(options): pubkey = open(options.key, 'r').read() except IOError: pubkey = options.key + if not check_ssh_key (pubkey): + raise SfaInvalidArgument(name='key',msg="Could not find file, or wrong key format") record_dict['keys'] = [pubkey] if hasattr(options, 'slices') and options.slices: record_dict['slices'] = options.slices @@ -189,7 +197,7 @@ def load_record_from_opts(options): record_dict['pi'] = options.pis # fill in the blanks - if record_dict['type'] == 'user': + if 'type' in record_dict and record_dict['type'] == 'user': if not 'first_name' in record_dict: record_dict['first_name'] = record_dict['hrn'] if 'last_name' not in record_dict: