use of com.tremolosecurity.proxy.postProcess.PushRequestProcess in project OpenUnison by TremoloSecurity.
the class ProxySys method doPush.
public void doPush(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
UrlHolder holder = (UrlHolder) req.getAttribute(ProxyConstants.AUTOIDM_CFG);
HttpFilterRequest filterReq = new HttpFilterRequestImpl(req, null);
HttpFilterResponse filterResp = new HttpFilterResponseImpl(resp);
HashMap<String, String> uriParams = (HashMap<String, String>) req.getAttribute("TREMOLO_URI_PARAMS");
if (uriParams == null) {
uriParams = new HashMap<String, String>();
req.setAttribute("TREMOLO_URI_PARAMS", uriParams);
}
uriParams.put("fullURI", req.getRequestURI());
HashSet<String> queryParams = new HashSet<String>();
req.setAttribute(ProxySys.QUERY_PARAMS, queryParams);
String qs = req.getQueryString();
if (qs != null) {
StringTokenizer toker = new StringTokenizer(qs, "&", false);
while (toker.hasMoreTokens()) {
String qsParam = toker.nextToken();
int eqIndex = qsParam.indexOf('=');
String paramName;
if (eqIndex == -1) {
paramName = qsParam;
} else {
paramName = qsParam.substring(0, eqIndex);
}
if (!queryParams.contains(paramName)) {
queryParams.add(paramName);
}
}
}
PostProcess postProc = null;
if (holder.getUrl().getProxyTo() == null || holder.getUrl().getProxyTo().isEmpty()) {
FilterChain filterChain = (FilterChain) req.getAttribute(ProxyConstants.TREMOLO_FILTER_CHAIN);
if (filterChain == null) {
logger.warn("Could not find filter chain");
}
postProc = new EmbPostProc(filterChain);
} else {
postProc = new PushRequestProcess();
;
}
HttpFilterChain chain = new HttpFilterChainImpl(holder, postProc);
try {
chain.nextFilter(filterReq, filterResp, chain);
} catch (Exception e) {
throw new ServletException(e);
}
ProxyData pd = new ProxyData();
pd.setHolder(holder);
pd.setIns(chain.getIns());
pd.setPostProc(postProc);
pd.setRequest(filterReq);
pd.setResponse(filterResp);
pd.setText(chain.isText());
pd.setLogout(chain.isLogout());
pd.setHttpRequestBase(chain.getHttpRequestBase());
req.setAttribute(ProxyConstants.TREMOLO_PRXY_DATA, pd);
}
Aggregations