|  |  | @ -60,8 +60,21 @@ public class NetworkService { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static URI calculateProxyUri(HttpServletRequest request) throws URISyntaxException { |  |  |  |     private static URI calculateProxyUri(HttpServletRequest request) throws URISyntaxException { | 
			
		
	
		
		
			
				
					
					|  |  |  |         String xForardedHost = request.getHeader(X_FORWARDED_HOST); |  |  |  |         String xForardedHost = request.getHeader(X_FORWARDED_HOST); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         // If the request has been through multiple reverse proxies,
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         // We need to return the original Host that the client used
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (xForardedHost != null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             xForardedHost = xForardedHost.split(",")[0]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(!isValidXForwardedHost(xForardedHost)) { |  |  |  |         if(!isValidXForwardedHost(xForardedHost)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             xForardedHost = request.getHeader(X_FORWARDED_SERVER); |  |  |  |             xForardedHost = request.getHeader(X_FORWARDED_SERVER); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // If the request has been through multiple reverse proxies,
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // We need to return the original Host that the client used
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (xForardedHost != null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 xForardedHost = xForardedHost.split(",")[0]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(!isValidXForwardedHost(xForardedHost)) { |  |  |  |             if(!isValidXForwardedHost(xForardedHost)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 throw new RuntimeException("Cannot calculate proxy uri without HTTP header " + X_FORWARDED_HOST); |  |  |  |                 throw new RuntimeException("Cannot calculate proxy uri without HTTP header " + X_FORWARDED_HOST); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |