Changeset 687


Ignore:
Timestamp:
22/03/06 11:36:47 (14 years ago)
Author:
pjkersha
Message:

Re-arranged directory structure to be more similar to that of an installation.

ndgSessionClient.py:

  • added callback setSessCookieFromStdin() for handling stdin cookie input

sessionMgrProperties.xml:

  • sessionMgr* tags shortened to sessMgr* names

SessionClient?.py:

  • fix - initialise clntPubKeyFilePath in init
  • new method retrieveSMpubKeyFromURI() converts URI to local temp file.

Session.py:

  • import tempfile for SessionMgr? pub key URI -> temp file download.
Location:
TI12-security/trunk/python
Files:
4 added
4 edited
6 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/NDG/Session.py

    r686 r687  
    5252# Use to pipe output from ZSI ServiceProxy 
    5353from cStringIO import StringIO 
     54 
     55# Use in SessionMgr __redirectAuthorisationReq to store Public key 
     56import tempfile 
     57 
    5458 
    5559#_____________________________________________________________________________ 
     
    989993        # Retrieve the public key from the URI 
    990994        try: 
    991             userSessMgrPubKey = NamedTemporaryFile() 
     995            userSessMgrPubKey = tempfile.NamedTemporaryFile() 
    992996            (fileName, httpResp) = urllib.urlretrieve(userSessMgrPubKeyURI, 
    993997                                                      userSessMgrPubKey.name) 
  • TI12-security/trunk/python/NDG/SessionClient.py

    r686 r687  
    2222from X509 import * 
    2323from SessionMgrIO import * 
     24 
     25import tempfile 
    2426 
    2527 
     
    6264        self.__smPubKeyFilePath = None 
    6365        self.__smPubKeyURI = None 
     66        self.__clntPubKeyFilePath = None 
    6467         
    6568        if smWSDL: 
     
    9295        self.__smWSDL = smWSDL 
    9396         
    94     smWSDL = property(fset=__setSMwsdl, 
    95                       doc="Set Session Manager WSDL URI") 
     97    smWSDL = property(fset=__setSMwsdl, doc="Set Session Manager WSDL URI") 
    9698                       
    9799     
     
    132134         
    133135        self.__clntPubKeyFilePath = clntPubKeyFilePath 
    134         self.__clntPubKeyFilePath = None 
    135136         
    136137    clntPubKeyFilePath = property(fset=__setClntPubKeyFilePath, 
    137138                                  doc="File path for client public key") 
    138139 
    139         
     140 
     141    #_________________________________________________________________________ 
     142    def __retrieveSMpubKeyFromURI(self): 
     143        """Retrieve the public key from the URI""" 
     144         
     145        # Don't proceed unless URI was set - user may have set public key via 
     146        # smPubKeyFilePath instead 
     147        if self.__smPubKeyURI is None: 
     148            return None 
     149         
     150        try: 
     151            smPubKey = tempfile.NamedTemporaryFile() 
     152            (fileName, httpResp) = urllib.urlretrieve(smMgrPubKeyURI, 
     153                                                      smMgrPubKey.name) 
     154        except Exception, e: 
     155            raise SessionClientError("Error retrieving Session Manager "+\ 
     156                                     "public key from \"%s\": %s" % \ 
     157                                     (self.__smPubkeyURI, str(e))) 
     158 
     159        # Expecting plain text format for returned public key file 
     160        # 404 error would come back as 'text/html' 
     161        if 'text/plain' not in httpResp['Content-type']: 
     162            raise SessionClientError("Error retrieving Session Manager "+\ 
     163                "public key from \"%s\": expecting \"plain/text\"" % \ 
     164                self.__smPubkeyURI) 
     165              
     166        # Return tempfile object as otherwise it will go out of scope and the  
     167        # temporary file will be deleted    
     168        return smPubKey 
     169     
     170         
    140171    #_________________________________________________________________________ 
    141172    def serviceProxy(self, smWSDL=None): 
     
    171202            except Exception, e: 
    172203                raise SessionClientError("Pass-phrase not defined: " + str(e)) 
     204 
     205 
     206        # If Public key was set by URI, retrieve otherwise get from  
     207        # smPubKeyFilePath 
     208        smPubKeyTmpFile = self.__retrieveSMpubKeyFromURI() 
     209        if smPubKeyTmpFile: 
     210            smPubKeyFilePath = smPubKeyTmpFile.name 
     211        else: 
     212            smPubKeyFilePath = self.__smPubKeyFilePath  
    173213             
    174214     
     
    225265            except Exception, e: 
    226266                raise SessionClientError("Pass-phrase not defined: " + str(e)) 
    227              
    228      
     267 
     268 
     269        # If Public key was set by URI, retrieve otherwise get from  
     270        # smPubKeyFilePath 
     271        smPubKeyTmpFile = self.__retrieveSMpubKeyFromURI() 
     272        if smPubKeyTmpFile: 
     273            smPubKeyFilePath = smPubKeyTmpFile.name 
     274        else: 
     275            smPubKeyFilePath = self.__smPubKeyFilePath  
     276 
     277         
    229278        # Make connection 
    230279        try:  
     
    234283                                createServerSess=createServerSess, 
    235284                                encrCert=self.__clntPubKeyFilePath, 
    236                                 encrPubKeyFilePath=self.__smPubKeyFilePath)  
     285                                encrPubKeyFilePath=smPubKeyFilePath)  
    237286     
    238287            # Pass encrypted request 
     
    299348                raise SessionClientError("Error parsing session cookie: " + \ 
    300349                                         str(e)) 
     350 
     351 
     352        # If Public key was set by URI, retrieve otherwise get from  
     353        # smPubKeyFilePath 
     354        smPubKeyTmpFile = self.__retrieveSMpubKeyFromURI() 
     355        if smPubKeyTmpFile: 
     356            smPubKeyFilePath = smPubKeyTmpFile.name 
     357        else: 
     358            smPubKeyFilePath = self.__smPubKeyFilePath  
     359 
    301360             
    302361        # Make authorisation request 
     
    313372                             extTrustedHostList=extTrustedHostList, 
    314373                             encrCert=self.__clntPubKeyFilePath, 
    315                              encrPubKeyFilePath=self.__smPubKeyFilePath)  
     374                             encrPubKeyFilePath=smPubKeyFilePath)  
    316375                                             
    317376            resp = self.__smSrv.reqAuthorisation(authorisationReq=authReq()) 
  • TI12-security/trunk/python/ndgSessionClient.py

    r686 r687  
    2626#_____________________________________________________________________________ 
    2727def setSoapDebug(option, optStr, value, parser): 
    28     """Callback function for parser""" 
     28    """Parser Callback function for enabling SOAP debug output""" 
    2929    parser.values.soapDebug = sys.stderr 
    3030 
     
    3232#_____________________________________________________________________________ 
    3333def setSessCookie(option, optStr, value, parser): 
    34     """Callback function for parser""" 
     34    """Parser Callback function for reading session cookie from command line 
     35    """ 
    3536    try: 
    3637        parser.values.sessCookie = SimpleCookie(open(value).read().strip()) 
     38         
    3739    except IOError, (errNo, errMsg): 
    3840        raise optparse.OptionValueError(\ 
    3941                    "Reading cookie from file \"%s\": %s" % (value, errMsg)) 
    40          
     42                            
    4143    except Exception, e: 
    4244        raise optparse.OptionValueError(\ 
    4345                    "Reading cookie from file \"%s\": %s" % (value, str(e))) 
    44        
     46 
     47 
     48#_____________________________________________________________________________ 
     49def setSessCookieFromStdin(option, optStr, value, parser): 
     50    """Parser Callback function for reading cookie from stdin""" 
     51    try: 
     52        # Read from standard input 
     53        parser.values.sessCookie = SimpleCookie(sys.stdin.read().strip()) 
     54 
     55    except KeyboardInterrupt: 
     56        raise optparse.OptionValueError(\ 
     57                    "option \"%s\": expecting cookie set from stdin" % optStr) 
     58           
     59    except Exception, e: 
     60        raise optparse.OptionValueError(\ 
     61                    "option %s: Reading cookie from file \"%s\": %s" % \ 
     62                    (optStr, value, str(e))) 
     63                     
     64                     
    4565#_____________________________________________________________________________ 
    4666if __name__ == '__main__': 
     
    118138"""Session cookie for --req-autho/-r call.  This is returned from a previous 
    119139connect call (-c USERNAME/--connect=USERNAME).  Note that connect and request 
    120 authoirsatino calls can be combined.  In this case, this arg is not needed as 
     140authoirsation calls can be combined.  In this case, this arg is not needed as 
    121141the cookie is passed directly from the connect call output to the 
    122142authorisation request e.g. ... -c username -r -s "http://..." -a 
     
    125145    parser.add_option("-e", 
    126146                      "--pass-cookie-from-stdin", 
    127                       action="store_true", 
    128                       dest="bCookieFromStdin", 
    129                       default=False, 
    130                       help="Take session cookie from stdin.") 
     147                      action="callback", 
     148                      callback=setSessCookieFromStdin, 
     149                      dest="sessCookie", 
     150                      help="Read session cookie from stdin.") 
    131151 
    132152    parser.add_option("-a", 
  • TI12-security/trunk/python/sessionMgrProperties.xml

    r686 r687  
    55    <keyFile></keyFile> 
    66    <keyPPhrase></keyPPhrase> 
    7     <sessionMgrEncrKey></sessionMgrEncrKey> 
    8     <sessionMgrWSDLuri></sessionMgrWSDLuri> 
    9     <sessionMgrPubKeyURI></sessionMgrPubKeyURI> 
     7    <sessMgrEncrKey></sessMgrEncrKey> 
     8    <sessMgrWSDLuri></sessMgrWSDLuri> 
     9    <sessMgrPubKeyURI></sessMgrPubKeyURI> 
    1010    <cookieDomain></cookieDomain> 
    1111    <myProxyProp> 
Note: See TracChangeset for help on using the changeset viewer.