Changeset 1210 for TI04-geosplat


Ignore:
Timestamp:
16/06/06 14:17:07 (13 years ago)
Author:
astephen
Message:

Updated lots of stuff to get zsi working with version 2.0 or lower.

Location:
TI04-geosplat/trunk
Files:
5 added
10 edited

Legend:

Unmodified
Added
Removed
  • TI04-geosplat/trunk/cgi/splatui

    r798 r1210  
    1919# Import SOAP library 
    2020from ZSI.client import Binding 
     21from ZSI.version import Version as zsiv 
     22zsiv=float("%s.%s" % zsiv[:2]) 
    2123         
    2224# Import package modules 
     
    4042        on the configuration and arguments provided. 
    4143        """ 
    42         self.username=None 
    43         self.password=None 
    44         self.secureToken=None 
     44        self.username="undefined" 
     45        self.password="undefined" 
     46        self.secureToken="undefined" 
    4547        self.userRoles=[] 
    4648        self.loginStatus="out" 
     
    7880                    CGIErrorHandler("Security error: "+str(sys.exc_type), noheader=0) 
    7981        else: 
    80             self.secureToken=None              
     82            self.secureToken="undefined"               
    8183             
    8284        # Call the dx Web Service with the arguments provided        
     
    119121            self.args[key]=args.getvalue(key)  
    120122                    
    121         if self.args.has_key("sessionID") and self.args["sessionID"]=="None": 
    122             self.args["sessionID"]=None      
     123        if self.args.has_key("sessionID") and self.args["sessionID"]=="undefined": 
     124            self.args["sessionID"]="undefined"       
    123125          
    124126        # Check for secure items, destroy if necessary and assign as instance variables     
     
    137139         
    138140        if not self.args.has_key("username"): 
    139             self.args["username"]=None 
     141            self.args["username"]="undefined" 
    140142                                     
    141143 
     
    186188         
    187189        #print "Content-Type: text/html\n\n" 
    188         #print self.args                       
    189         # Set up SOAP bindings 
    190         #trace=open('/tmp/tracefile.txt','w') 
    191         #self.server=Binding(url='', host=SOAP_SERVER_NAME, port=SOAP_SERVER_PORT, tracefile=trace)      
     190 
    192191        if CALL_METHOD.upper()=="WS": 
    193192            self.server=WSCaller() 
     
    238237                    self.args["targetPage"]="VariableSelectionPage" 
    239238                    fileURIs=self.args["fileURIList"].split() 
    240                     (optionCategories, options, optionStrings, secureToken)= \ 
    241                                  self.server.callServerMethod("provideFileURIs",  
     239                    resp=self.server.callServerMethod("provideFileURIs",  
    242240                                     [self.sessionID, self.secureToken, fileURIs]) 
    243                                                          
     241                 
     242                    if zsiv>=2.0: 
     243                        resp=resp[0] 
     244                    (optionCategories, options, optionStrings, secureToken)=apply(self._cleanOptsTuple, resp) 
     245                                 
    244246        # Make sure instance and args sessionID are the same 
    245247        self.args["sessionID"]=self.sessionID 
     
    265267        """            
    266268        # If no session then start a session and get a sessionID 
    267         if not self.args.has_key("sessionID") or self.args["sessionID"] in (None, "None"): 
     269        if not self.args.has_key("sessionID") or self.args["sessionID"] in ("undefined", None, "None"): 
    268270            # Start session if not known about 
    269             self.sessionID, self.secureToken=self.server.callServerMethod("startSession", 
    270                                                  [self.username, self.password, self.secureToken]) 
     271            resp=self.server.callServerMethod("startSession", [self.username, self.password, self.secureToken]) 
     272            #print resp 
     273            if zsiv>=2.0: 
     274                resp=resp[0] 
     275            self.sessionID, self.secureToken=resp 
    271276            return 1 
    272277        else: 
     
    295300        isCompleteStatus=0         
    296301        if self.args.has_key("isComplete"):      
    297             isCompleteStatus, self.secureToken=self.server.callServerMethod("isComplete",  
    298                                                       [self.sessionID, self.secureToken])      
     302            resp=self.server.callServerMethod("isComplete",                                            [self.sessionID, self.secureToken])   
     303            if zsiv>=2.0: 
     304                resp=resp[0]             
     305            isCompleteStatus, self.secureToken=resp 
     306    
    299307        return isCompleteStatus 
    300308         
     
    347355                return item[0].lower()+item[1:-4]            
    348356            optionCategory=tp2catMap(tp) 
    349             (optionCategories, options, optionStrings, secureToken)=self.server.callServerMethod("getOptions",  
    350                                                                          [self.sessionID, self.secureToken,  
    351                                                                          optionCategory]) 
     357            resp=self.server.callServerMethod("getOptions",                            [self.sessionID, self.secureToken, optionCategory]) 
     358            if zsiv>=2.0: 
     359                resp=resp[0] 
     360            (optionCategories, options, optionStrings, secureToken)=resp 
    352361        else:   
    353             (optionCategories, options, optionStrings, secureToken)=self.server.callServerMethod("selectOptions", 
    354                                                                        [self.sessionID, self._packArgsAsList(self.args)]) 
    355          
    356         return (optionCategories, options, optionStrings, secureToken) 
    357  
     362            resp=self.server.callServerMethod("selectOptions", [self.sessionID,                 self._packArgsAsList(self.args)]) 
     363            if zsiv>=2.0: 
     364                resp=resp[0] 
     365            (optionCategories, options, optionStrings, secureToken)=resp         
     366        return self._cleanOptsTuple(optionCategories, options, optionStrings, secureToken) 
     367 
     368 
     369    def _cleanOptsTuple(self, a,b,c,d): 
     370        return (a[0],b[0],c[0],d[0]) 
    358371 
    359372    def _respondToOptionCategories(self, optionCategories, options, optionStrings): 
     
    391404            self.displayer._displayMainTableFooter()     
    392405                 
    393         elif "plotType" in [i.split("_")[0] for i in optionCategories]: 
     406        elif optionCategories!=None and "plotType" in [i.split("_")[0] for i in optionCategories]: 
    394407            self.displayer._displayHTTPHeader()  
    395408            self.displayer._displayHTMLHeader() 
     
    405418                self.displayer._displayHTTPHeader()  
    406419                self.displayer._displayHTMLHeader() 
    407                 (summaryString, self.secureToken)=self.server.callServerMethod("summariseRequest",  
    408                                                           [self.sessionID, self.secureToken])        
     420                #(summaryString, self.secureToken) 
     421                resp=self.server.callServerMethod("summariseRequest",  
     422                                                          [self.sessionID, self.secureToken]) 
     423                if zsiv>=2.0: 
     424                    resp=resp[0] 
     425                summaryString, self.secureToken=resp 
     426                summaryString=summaryString[0] 
    409427                self.displayer._displayMainTableHeader(self.sessionID)    
    410428                self.displayer._displayConfirmationSection(summaryString) 
     
    419437                self.displayer._displayHTMLHeader()              
    420438                self.displayer._displayProcessingWaiter()    
    421                 outputFilePath, self.secureToken=self.server.callServerMethod("createOutput", [self.sessionID, self.secureToken]) 
     439                #outputFilePath, self.secureToken 
     440                resp=self.server.callServerMethod("createOutput", [self.sessionID, self.secureToken]) 
     441                if zsiv>=2.0: 
     442                    resp=resp[0] 
     443                outputFilePath, self.secureToken=resp 
     444                outputFilePath=outputFilePath[0] 
    422445                self.displayer._displayOutputFile(outputFilePath)                
    423446 
  • TI04-geosplat/trunk/gss/bin/GSWSInterface.py

    r798 r1210  
    5757import re 
    5858import os, types 
     59from ZSI import dispatch 
     60#from ZSI.version import Version 
     61Version=(2,0,0)#(1,6,1) # of client ZSI - not this one! 
     62# Sort the ZSI version out 
     63zsiversion=float("%s.%s" % Version[:2]) 
    5964 
    6065# Import package modules 
     
    7782        args[key]=value 
    7883    return GSController(args) 
    79  
    80  
    81  
    82 def startSession(username=None, password=None, secureToken=None): 
     84                                                    
     85 
     86def startSession(username="undefined", password="undefined", secureToken="undefined"): 
    8387    """ 
    8488    Logs a user in and supplies them with a session ID as well 
    8589    as an encoded security token. The session ID connects them to their 
    8690    current request serverside whilst the security token is used to  
    87     authorise their access. Also takes the list of files being provided 
    88     by the user for visualising from. 
     91    authorise their access.  
    8992    Returns: sessionID, secureToken 
    9093    """ 
     
    9295    args={"username":deUnicodeObject(username), "password":deUnicodeObject(password),  
    9396             "secureToken":deUnicodeObject(secureToken)}        
    94  
    95     controller=GSController(args) 
    96  
    97     if controller.error!=None: 
    98         return controller.error 
     97    try: 
     98        controller=GSController(args) 
     99    except Exception, error: 
     100        return str(error)            
    99101         
    100102    sessionID=controller.bag["sessionID"] 
    101103    secureToken=controller.secureToken 
    102  
    103     return [[sessionID], [secureToken]] 
    104      
     104    # Have to return list of lists for ZSI to work (?!) 
     105 
     106    if zsiversion<2.0: 
     107        sessionID=[sessionID] 
     108        secureToken=[secureToken] 
     109    print "Sending back:", sessionID, secureToken 
     110     
     111    return [sessionID, secureToken] 
     112 
    105113 
    106114def provideFileURIs(sessionID, secureToken, fileURIList): 
     
    138146        
    139147         
    140 def getOptions(sessionID, secureToken=None, optionCategoryRequested=None): 
     148def getOptions(sessionID, secureToken="undefined", optionCategoryRequested="undefined"): 
    141149    """ 
    142150    Returns a category description of the next set of options (or the option category  
     
    157165    args={"sessionID":sessionID, "secureToken":secureToken, "optionCategoryRequested":optionCategoryRequested} 
    158166  
    159     controller=GSController(args) 
    160     if controller.error!=None: 
    161         return controller.error         
     167    try: 
     168        controller=GSController(args) 
     169    except Exception, error: 
     170        return str(error)    
    162171 
    163172    optionsObject=controller.options 
     
    176185    print "Method called: selectOptions\n"     
    177186    print sessionID 
    178      
    179      
    180187     
    181188    args={"sessionID":sessionID} 
     
    213220     
    214221     
    215 def isComplete(sessionID, secureToken=None): 
     222def isComplete(sessionID, secureToken="undefined"): 
    216223    """ 
    217224    Returns 1 if the request is complete (i.e. ready to create output file(s)) 
     
    232239     
    233240 
    234 def createOutput(sessionID, secureToken=None): 
     241def createOutput(sessionID, secureToken="undefined"): 
    235242    """ 
    236243    Creates the outputs specified by user selections. It writes these files 
     
    272279     
    273280 
    274 def newSession(sessionID, secureToken=None): 
     281def newSession(sessionID, secureToken="undefined"): 
    275282    """ 
    276283    Deletes content of current request. 
     
    280287    args={"sessionID":sessionID, "secureToken":secureToken, "clearSession":"clearSession"} 
    281288      
    282     controller=GSController(args) 
    283     if controller.error!=None: 
    284         return controller.error     
     289    try: 
     290        controller=GSController(args) 
     291    except Exception, error: 
     292        return str(error)  
    285293     
    286294    secureToken=controller.secureToken 
     
    288296 
    289297         
    290 def summariseRequest(sessionID, secureToken=None): 
    291     """ 
     298def summariseRequest(sessionID, secureToken="undefined"): 
     299    """find /home/as56/abstractWebService/releases/ -type d -name .svn -exec rm -rf {} 
     300\; # is untested 
     301 
    292302    Returns a listing of the current request in a string and a security token. 
    293303    """     
     
    337347 
    338348 
    339 def getDataSubsetSpecifier(sessionID, secureToken=None): 
    340     """ 
    341     Returns the dataSubsetSpecifier XML document (which might be S-metadata) 
    342     required by a Delivery Service to describe the subset requested, and a 
    343     security token. 
    344     """ 
    345     print "Method called: getDataSubsetSpecifier\n" 
    346     args={"sessionID":sessionID, "secureToken":secureToken} 
    347     controller=GSController(args) 
    348     secureToken=controller.secureToken 
    349     sessionObj=controller.bag 
    350     dataSubsetSpecifierXMLString=dxrmlHandler.DXRMLGenerator(sessionObj).xmlString 
    351     print dataSubsetSpecifierXMLString 
    352     return [[dataSubsetSpecifierXMLString], [secureToken]] 
    353  
    354  
    355 def getExtractionCosts(sessionID, secureToken=None): 
     349def getExtractionCosts(sessionID, secureToken="undefined"): 
    356350    """ 
    357351    Returns an estimated duration for the creation of the output data and the  
     
    373367    Serve all functions as Web Service methods. 
    374368    """ 
    375     print "Importing SOAP library (ZSI)." 
    376     from ZSI import dispatch 
    377369    print "Setting up server" 
    378370    portNumber=SOAP_SERVER_PORT 
    379371    print "Serving Web Service on port: %s" % portNumber     
    380     dispatch.AsServer(port=portNumber)    
    381  
    382  
    383  
     372    dispatch.AsServer(port=portNumber, rpc=True) 
     373 
     374 
     375 
  • TI04-geosplat/trunk/install.sh

    r798 r1210  
    1 v="0.2.1" 
     1v="0.3.0" 
    22rm -rR *tar *gz README.txt *conf gs? pygs? pygs?-?.? pygs?-?-?.? cgi web_extras 
    33 
     
    1515cd pygss-${v} 
    1616 
    17 python setup.py install 
     17python setup.py install --overwrite 
    1818 
    1919 
  • TI04-geosplat/trunk/pygsc/SecurityViaCGI.py

    r798 r1210  
    3636        self.username=username 
    3737        self.password=password 
     38        # Note secureToken is not used by browser client which gets input from  
     39        # os.environ["HTTP_COOKIE"] 
    3840        self.secureToken=secureToken 
    3941 
     
    4547        # First check if the user is valid via a cookie 
    4648        cookieCheck=self._checkCookie() 
    47 #       o=open('/tmp/tmp/cook.txt','w'); o.write(str(cookieCheck)) ; o.close() 
     49        #o=open('/tmp/tmp/cook.txt','w'); o.write(str(cookieCheck)) ; o.close() 
    4850 
    4951        if type(cookieCheck)==type(""): 
     
    7880        else: 
    7981            return "Username '%s' unknown." % self.username 
     82  
    8083 
    8184    def _createCookie(self, username, userRoles, expiryTime=None): 
     
    8487        """ 
    8588        # NOTE: This should be brought up to date with W3C spec on Cookies 
    86         cookieString="%s:%s:%s" % (username, string.join(userRoles, ","), time.time()+TOKEN_VALID_LIFETIME) 
     89        endTime=time.time()+TOKEN_VALID_LIFETIME 
     90        endTimeString=time.strftime("%d/%m/%y %H:%M%S", time.localtime(endTime)) 
     91        cookieString="%s:%s:%s" % (username, string.join(userRoles, ","), endTime) 
    8792        cookieMaker=Cookie.SimpleCookie() 
    8893        cookieMaker[COOKIE_NAME]=cookieString 
    89         cookieMaker[COOKIE_NAME]["domain"]=TOKEN_DOMAIN 
     94        #cookieMaker[COOKIE_NAME]["domain"]=TOKEN_DOMAIN 
     95        cookieMaker[COOKIE_NAME]["path"]="/" 
    9096 
    9197        # Use expiry time of zero to delete a cookie, or other time if used 
    92         if expiryTime!=None: 
    93             cookieMaker[COOKIE_NAME]["expires"]=expiryTime 
     98        if expiryTime==None: 
     99            expiryTime=endTimeString 
     100                 
     101        cookieMaker[COOKIE_NAME]["expires"]=expiryTime 
    94102 
    95103        # Set the cookie 
    96104        print cookieMaker 
    97         #o=open('/tmp/tmp/out.txt', 'w'); o.write("%s" % cookieString) ; o.close() 
     105        #o=open('/tmp/tmp/out.txt', 'w'); o.write("%s" % (cookieString+"\n"+TOKEN_DOMAIN)) ; o.close() 
    98106         
    99107        return cookieString 
     
    142150        if not os.environ.has_key("HTTP_COOKIE"): 
    143151            cookieString=None 
     152            #out=open("/tmp/tmp/iscookie.txt","w");out.write("%s" % cookieString); out.close() 
    144153        else: 
    145154            cookieReader.load(os.environ["HTTP_COOKIE"]) 
  • TI04-geosplat/trunk/pygsc/WSCaller.py

    r798 r1210  
    1313 
    1414# Import standard library modules 
    15 import os, sys 
     15import os, sys, re 
    1616 
    1717# Import SOAP library 
     
    3535        # Set up SOAP bindings 
    3636        trace=open('/tmp/tracefile.txt','w') 
    37         self.server=Binding(url='', host=SOAP_SERVER_NAME, port=SOAP_SERVER_PORT, tracefile=trace)               
     37        urlPattern=re.compile(r"(\w+)://([\w.]+):(\d+)/(.*)$") 
     38        (transport, soap_server_host, soap_server_port, cmd)=urlPattern.match(SOAP_SERVER_URL).groups() 
     39        from ZSI.version import Version as zsiv 
     40        zsiv=float("%s.%s" % zsiv[:2]) 
     41        if zsiv<2.0: 
     42            self.server=Binding(url="", host=soap_server_host, port=soap_server_port) 
     43        else: 
     44            self.server = Binding(url=SOAP_SERVER_URL)   
     45#       self.server=Binding(url='', host=SOAP_SERVER_NAME, port=SOAP_SERVER_PORT, tracefile=trace)               
    3846 
    3947 
     
    4957        try: 
    5058            response=apply(getattr(self.server, methodName), args)  
     59            response=deUnicodeObject(response)       
    5160        except Exception, error: 
    5261            if str(error)=="(111, 'Connection refused')": 
  • TI04-geosplat/trunk/pygsc/clientConfig.py

    r798 r1210  
    8787ADMIN_NOTIFICATION=0 
    8888 
    89 # SOAP_SERVER_PORT: 
    90 # Port over which the Web Service will run. 
    91 SOAP_SERVER_PORT=8407 
    92  
    93 # SOAP_SERVER_NAME: 
    94 # URL of server. 
    95 SOAP_SERVER_NAME="localhost" 
     89# SOAP_SERVER_URL: 
     90# URL to Web Service of the form: "http://<host>:<port>/<script> 
     91SOAP_SERVER_URL="http://localhost:8407/GSController.py" 
    9692 
    9793# LOCAL_SERVER_PACKAGE 
  • TI04-geosplat/trunk/pygsc/version.py

    r798 r1210  
    1111""" 
    1212 
    13 version="0.0.3.1" 
     13version="0.3.0" 
  • TI04-geosplat/trunk/pygss/GSController.py

    r798 r1210  
    4343        methods to process the user request. 
    4444        """ 
    45         self.username=None  
    46         self.password=None 
     45        self.username="undefined"  
     46        self.password="undefined" 
    4747        self.userRoles=[] 
    4848        self.sessionID=None 
    4949        self.sessionObj=None 
    5050        self.bag=self.sessionObj # alias         
    51         self.secureToken=None 
     51        self.secureToken="undefined" 
    5252        self.error=None 
    5353     
     
    6666                    raise Exception, error     
    6767            else: 
    68                 self.secureToken=None 
     68                self.secureToken="undefined" 
    6969                     
    7070        # Construct the session object 
  • TI04-geosplat/trunk/pygss/version.py

    r798 r1210  
    1111""" 
    1212 
    13 version="0.1.3.1" 
     13version="0.3.0" 
  • TI04-geosplat/trunk/setup.py

    r798 r1210  
    3838import sys, os, shutil, time, re 
    3939from ConfigParser import ConfigParser 
    40 version="0.2.1" 
     40version="0.3.0" 
    4141overwrite="OFF" 
    4242 
Note: See TracChangeset for help on using the changeset viewer.