35 lines
		
	
	
		
			988 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			988 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package application
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"html/template"
 | |
| 	"net/http"
 | |
| 
 | |
| 	log "github.com/sirupsen/logrus"
 | |
| )
 | |
| 
 | |
| // NewProxyErrorHandler creates a ProxyErrorHandler using the template given.
 | |
| func (a *Application) newProxyErrorHandler(errorTemplate *template.Template) func(http.ResponseWriter, *http.Request, error) {
 | |
| 	return func(rw http.ResponseWriter, req *http.Request, proxyErr error) {
 | |
| 		claims, _ := a.getClaims(req)
 | |
| 		log.WithError(proxyErr).Warning("Error proxying to upstream server")
 | |
| 		rw.WriteHeader(http.StatusBadGateway)
 | |
| 		data := struct {
 | |
| 			Title       string
 | |
| 			Message     string
 | |
| 			ProxyPrefix string
 | |
| 		}{
 | |
| 			Title:       "Bad Gateway",
 | |
| 			Message:     "Error proxying to upstream server",
 | |
| 			ProxyPrefix: "/akprox",
 | |
| 		}
 | |
| 		if claims != nil {
 | |
| 			data.Message = fmt.Sprintf("Error proxying to upstream server: %s", proxyErr.Error())
 | |
| 		}
 | |
| 		err := errorTemplate.Execute(rw, data)
 | |
| 		if err != nil {
 | |
| 			http.Error(rw, "Internal Server Error", http.StatusInternalServerError)
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
