Changeset 1210 for TI04-geosplat
- Timestamp:
- 16/06/06 14:17:07 (15 years ago)
- Location:
- TI04-geosplat/trunk
- Files:
-
- 5 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
TI04-geosplat/trunk/cgi/splatui
r798 r1210 19 19 # Import SOAP library 20 20 from ZSI.client import Binding 21 from ZSI.version import Version as zsiv 22 zsiv=float("%s.%s" % zsiv[:2]) 21 23 22 24 # Import package modules … … 40 42 on the configuration and arguments provided. 41 43 """ 42 self.username= None43 self.password= None44 self.secureToken= None44 self.username="undefined" 45 self.password="undefined" 46 self.secureToken="undefined" 45 47 self.userRoles=[] 46 48 self.loginStatus="out" … … 78 80 CGIErrorHandler("Security error: "+str(sys.exc_type), noheader=0) 79 81 else: 80 self.secureToken= None82 self.secureToken="undefined" 81 83 82 84 # Call the dx Web Service with the arguments provided … … 119 121 self.args[key]=args.getvalue(key) 120 122 121 if self.args.has_key("sessionID") and self.args["sessionID"]==" None":122 self.args["sessionID"]= None123 if self.args.has_key("sessionID") and self.args["sessionID"]=="undefined": 124 self.args["sessionID"]="undefined" 123 125 124 126 # Check for secure items, destroy if necessary and assign as instance variables … … 137 139 138 140 if not self.args.has_key("username"): 139 self.args["username"]= None141 self.args["username"]="undefined" 140 142 141 143 … … 186 188 187 189 #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 192 191 if CALL_METHOD.upper()=="WS": 193 192 self.server=WSCaller() … … 238 237 self.args["targetPage"]="VariableSelectionPage" 239 238 fileURIs=self.args["fileURIList"].split() 240 (optionCategories, options, optionStrings, secureToken)= \ 241 self.server.callServerMethod("provideFileURIs", 239 resp=self.server.callServerMethod("provideFileURIs", 242 240 [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 244 246 # Make sure instance and args sessionID are the same 245 247 self.args["sessionID"]=self.sessionID … … 265 267 """ 266 268 # 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"): 268 270 # 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 271 276 return 1 272 277 else: … … 295 300 isCompleteStatus=0 296 301 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 299 307 return isCompleteStatus 300 308 … … 347 355 return item[0].lower()+item[1:-4] 348 356 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 352 361 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]) 358 371 359 372 def _respondToOptionCategories(self, optionCategories, options, optionStrings): … … 391 404 self.displayer._displayMainTableFooter() 392 405 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]: 394 407 self.displayer._displayHTTPHeader() 395 408 self.displayer._displayHTMLHeader() … … 405 418 self.displayer._displayHTTPHeader() 406 419 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] 409 427 self.displayer._displayMainTableHeader(self.sessionID) 410 428 self.displayer._displayConfirmationSection(summaryString) … … 419 437 self.displayer._displayHTMLHeader() 420 438 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] 422 445 self.displayer._displayOutputFile(outputFilePath) 423 446 -
TI04-geosplat/trunk/gss/bin/GSWSInterface.py
r798 r1210 57 57 import re 58 58 import os, types 59 from ZSI import dispatch 60 #from ZSI.version import Version 61 Version=(2,0,0)#(1,6,1) # of client ZSI - not this one! 62 # Sort the ZSI version out 63 zsiversion=float("%s.%s" % Version[:2]) 59 64 60 65 # Import package modules … … 77 82 args[key]=value 78 83 return GSController(args) 79 80 81 82 def startSession(username=None, password=None, secureToken=None): 84 85 86 def startSession(username="undefined", password="undefined", secureToken="undefined"): 83 87 """ 84 88 Logs a user in and supplies them with a session ID as well 85 89 as an encoded security token. The session ID connects them to their 86 90 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. 89 92 Returns: sessionID, secureToken 90 93 """ … … 92 95 args={"username":deUnicodeObject(username), "password":deUnicodeObject(password), 93 96 "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) 99 101 100 102 sessionID=controller.bag["sessionID"] 101 103 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 105 113 106 114 def provideFileURIs(sessionID, secureToken, fileURIList): … … 138 146 139 147 140 def getOptions(sessionID, secureToken= None, optionCategoryRequested=None):148 def getOptions(sessionID, secureToken="undefined", optionCategoryRequested="undefined"): 141 149 """ 142 150 Returns a category description of the next set of options (or the option category … … 157 165 args={"sessionID":sessionID, "secureToken":secureToken, "optionCategoryRequested":optionCategoryRequested} 158 166 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) 162 171 163 172 optionsObject=controller.options … … 176 185 print "Method called: selectOptions\n" 177 186 print sessionID 178 179 180 187 181 188 args={"sessionID":sessionID} … … 213 220 214 221 215 def isComplete(sessionID, secureToken= None):222 def isComplete(sessionID, secureToken="undefined"): 216 223 """ 217 224 Returns 1 if the request is complete (i.e. ready to create output file(s)) … … 232 239 233 240 234 def createOutput(sessionID, secureToken= None):241 def createOutput(sessionID, secureToken="undefined"): 235 242 """ 236 243 Creates the outputs specified by user selections. It writes these files … … 272 279 273 280 274 def newSession(sessionID, secureToken= None):281 def newSession(sessionID, secureToken="undefined"): 275 282 """ 276 283 Deletes content of current request. … … 280 287 args={"sessionID":sessionID, "secureToken":secureToken, "clearSession":"clearSession"} 281 288 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) 285 293 286 294 secureToken=controller.secureToken … … 288 296 289 297 290 def summariseRequest(sessionID, secureToken=None): 291 """ 298 def summariseRequest(sessionID, secureToken="undefined"): 299 """find /home/as56/abstractWebService/releases/ -type d -name .svn -exec rm -rf {} 300 \; # is untested 301 292 302 Returns a listing of the current request in a string and a security token. 293 303 """ … … 337 347 338 348 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): 349 def getExtractionCosts(sessionID, secureToken="undefined"): 356 350 """ 357 351 Returns an estimated duration for the creation of the output data and the … … 373 367 Serve all functions as Web Service methods. 374 368 """ 375 print "Importing SOAP library (ZSI)."376 from ZSI import dispatch377 369 print "Setting up server" 378 370 portNumber=SOAP_SERVER_PORT 379 371 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"1 v="0.3.0" 2 2 rm -rR *tar *gz README.txt *conf gs? pygs? pygs?-?.? pygs?-?-?.? cgi web_extras 3 3 … … 15 15 cd pygss-${v} 16 16 17 python setup.py install 17 python setup.py install --overwrite 18 18 19 19 -
TI04-geosplat/trunk/pygsc/SecurityViaCGI.py
r798 r1210 36 36 self.username=username 37 37 self.password=password 38 # Note secureToken is not used by browser client which gets input from 39 # os.environ["HTTP_COOKIE"] 38 40 self.secureToken=secureToken 39 41 … … 45 47 # First check if the user is valid via a cookie 46 48 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() 48 50 49 51 if type(cookieCheck)==type(""): … … 78 80 else: 79 81 return "Username '%s' unknown." % self.username 82 80 83 81 84 def _createCookie(self, username, userRoles, expiryTime=None): … … 84 87 """ 85 88 # 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) 87 92 cookieMaker=Cookie.SimpleCookie() 88 93 cookieMaker[COOKIE_NAME]=cookieString 89 cookieMaker[COOKIE_NAME]["domain"]=TOKEN_DOMAIN 94 #cookieMaker[COOKIE_NAME]["domain"]=TOKEN_DOMAIN 95 cookieMaker[COOKIE_NAME]["path"]="/" 90 96 91 97 # 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 94 102 95 103 # Set the cookie 96 104 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() 98 106 99 107 return cookieString … … 142 150 if not os.environ.has_key("HTTP_COOKIE"): 143 151 cookieString=None 152 #out=open("/tmp/tmp/iscookie.txt","w");out.write("%s" % cookieString); out.close() 144 153 else: 145 154 cookieReader.load(os.environ["HTTP_COOKIE"]) -
TI04-geosplat/trunk/pygsc/WSCaller.py
r798 r1210 13 13 14 14 # Import standard library modules 15 import os, sys 15 import os, sys, re 16 16 17 17 # Import SOAP library … … 35 35 # Set up SOAP bindings 36 36 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) 38 46 39 47 … … 49 57 try: 50 58 response=apply(getattr(self.server, methodName), args) 59 response=deUnicodeObject(response) 51 60 except Exception, error: 52 61 if str(error)=="(111, 'Connection refused')": -
TI04-geosplat/trunk/pygsc/clientConfig.py
r798 r1210 87 87 ADMIN_NOTIFICATION=0 88 88 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> 91 SOAP_SERVER_URL="http://localhost:8407/GSController.py" 96 92 97 93 # LOCAL_SERVER_PACKAGE -
TI04-geosplat/trunk/pygsc/version.py
r798 r1210 11 11 """ 12 12 13 version="0. 0.3.1"13 version="0.3.0" -
TI04-geosplat/trunk/pygss/GSController.py
r798 r1210 43 43 methods to process the user request. 44 44 """ 45 self.username= None46 self.password= None45 self.username="undefined" 46 self.password="undefined" 47 47 self.userRoles=[] 48 48 self.sessionID=None 49 49 self.sessionObj=None 50 50 self.bag=self.sessionObj # alias 51 self.secureToken= None51 self.secureToken="undefined" 52 52 self.error=None 53 53 … … 66 66 raise Exception, error 67 67 else: 68 self.secureToken= None68 self.secureToken="undefined" 69 69 70 70 # Construct the session object -
TI04-geosplat/trunk/pygss/version.py
r798 r1210 11 11 """ 12 12 13 version="0. 1.3.1"13 version="0.3.0" -
TI04-geosplat/trunk/setup.py
r798 r1210 38 38 import sys, os, shutil, time, re 39 39 from ConfigParser import ConfigParser 40 version="0. 2.1"40 version="0.3.0" 41 41 overwrite="OFF" 42 42
Note: See TracChangeset
for help on using the changeset viewer.