Ignore:
Timestamp:
03/09/07 13:57:18 (12 years ago)
Author:
lawrence
Message:

Better use of html response headers 400 and 401.

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/login.py

    r2867 r2871  
    3131        # Try request.params - above method skips 'r' when passed in a hidden 
    3232        # field in a HTTP POST 
    33         if 'r' in request.params: 
    34             c.returnTo = request.params['r'] 
    35         else: 
    36             c.returnTo='' 
     33        c.returnTo=request.params.get('r','') 
    3734             
    3835 
     
    8380         
    8481        self.__setup() 
    85         self.__securitySetup() 
    86  
    87         smURI = self.ndgCfg.get('NDG_SECURITY', 'sessionMgrURI') 
    88  
    89         # May be better as a 'g' global set-up at start-up? 
    90         # 
    91         # tracefile could be removed for production use 
    92         smClnt = SessionMgrClient(uri=smURI, 
    93                             sslCACertFilePathList=self.sslCACertFilePathList, 
    94                             sslPeerCertCN=self.sslPeerCertCN, 
    95                             signingCertFilePath=self.wssCertFilePath, 
    96                             signingPriKeyFilePath=self.wssPriKeyFilePath, 
    97                             signingPriKeyPwd=self.wssPriKeyPwd, 
    98                             caCertFilePathList=self.wssCACertFilePathList, 
    99                             tracefile=self.tracefile)        
    100          
    101         username = request.params['username'] 
    102         passphrase = request.params['passphrase'] 
     82         
     83        try: 
     84            self.__securitySetup() 
     85     
     86            smURI = self.ndgCfg.get('NDG_SECURITY', 'sessionMgrURI') 
     87     
     88            # May be better as a 'g' global set-up at start-up? 
     89            # 
     90            # tracefile could be removed for production use 
     91            smClnt = SessionMgrClient(uri=smURI, 
     92                                sslCACertFilePathList=self.sslCACertFilePathList, 
     93                                sslPeerCertCN=self.sslPeerCertCN, 
     94                                signingCertFilePath=self.wssCertFilePath, 
     95                                signingPriKeyFilePath=self.wssPriKeyFilePath, 
     96                                signingPriKeyPwd=self.wssPriKeyPwd, 
     97                                caCertFilePathList=self.wssCACertFilePathList, 
     98                                tracefile=self.tracefile) 
     99                                 
     100            username = request.params['username'] 
     101            passphrase = request.params['passphrase']                      
     102                                 
     103        except Exception,e: 
     104            c.xml='Error establishing security context [%s]'%cgi.escape(e) 
     105            return Response(render('content'),code=400) 
    103106         
    104107        # Connect to Session Manager 
     
    110113    "Error logging in.  Please check your username/pass-phrase and try again." 
    111114            log.error("Session Manager connect returned: %s" % e) 
    112             return render_response('login') 
     115            return Response(render('login'),code=401) 
    113116         
    114117        # Cache user attributes in Session Manager 
     
    124127            log.info("Session expired getting Attribute Certificate: %s" % e) 
    125128            c.xml = "Session has expired, please re-login" 
    126             render_response('login') 
     129            return Response(render('login'),code=401) 
    127130             
    128131        except AttributeRequestDenied, e: 
     
    130133            c.xml = "No authorisation roles are available for your " + \ 
    131134                    "account.  Please check with your site administrator." 
    132             return render_response('login') 
     135            return Response(render('login'),code=401) 
    133136             
    134137        except Exception, e: 
     
    136139            c.xml = "An internal error occured.  Please report this to " + \ 
    137140                    "your site administrator." 
    138             return render_response('login') 
     141            return Response(render('login'),code=400) 
    139142 
    140143        # Make session 
     
    213216            h.redirect_to(cc) 
    214217        else: 
     218            c.xml='<p> Logged in </p>' 
    215219            return render_response('content') 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r2852 r2871  
    4040        if status: 
    4141            c.xml='<p>%s</p>'%status 
    42             return render_response('error') 
     42            return Response(render('error'),code=400) 
     43         
    4344        status,x=interface.GetXML(uri,outputSchema=self.outputSchema) 
    44          
    4545        if status: 
    4646            #(the return object x is an xmlHandler object) 
     
    4848            return Response(c.xml,'application/xml') 
    4949        else: 
    50             return Response(x)  
     50            e=404 
     51            if x.startswith('<p> Access'): e=401 
     52            return Response(render('error'),code=e) 
    5153         
    5254    def view(self,uri): 
     
    5759        if status: 
    5860            c.xml='<p>%s</p>'%status  
    59             return render_response('error') 
     61            return Response(render('error'),code=400) 
    6062        status,x=interface.GetXML(uri,outputSchema=self.outputSchema) 
    6163        c.title='Viewing [%s]'%self.uri 
     
    117119                    session['history']=rb.tolist() 
    118120            session.save() 
    119         else:  
     121            code=200 
     122        else: 
     123            if x.startswith('<p> Access Denied'): 
     124                code=401 
     125            else: code=400 
    120126            c.xml='<div class="error">%s</div>'%x 
    121127            r='error' 
    122          
     128            print c.xml 
     129             
    123130        if r=='content': 
    124131            #we're showing an xml document ... but it could go wrong if 
    125132            #we have crap content ... 
    126133            try: 
    127                 resp=render_response(r) 
     134                resp=render(r) 
    128135            except ExpatError,e: 
    129136                c.xml='<p> XML content is not well formed </p>' 
    130137                c.doc=str(x) 
    131                 resp=render_response('error') 
     138                resp=render('error') 
     139                code=400 
     140            resp=Response(resp,code=code) 
    132141        else: 
    133142            try: 
    134                 resp=render_response(r) 
     143                resp=Response(render(r),code=code) 
    135144            except Exception,e: 
    136145                c.xml='<p> Unexpected error [%s] viewing [%s] </p>'%(str(e),uri) 
    137146                c.doc='' 
    138                 resp=render_response('error') 
     147                code=400 
     148                resp=Reponse(render('error'),code=code) 
    139149        return resp 
    140150     
Note: See TracChangeset for help on using the changeset viewer.