fix reading of ippattern config array in URLProxy

pull/37/head
reger 9 years ago
parent b7e8358645
commit d5fd031449

@ -8,7 +8,7 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.StringTokenizer; import java.util.regex.PatternSyntaxException;
import javax.servlet.Servlet; import javax.servlet.Servlet;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -122,22 +122,18 @@ public class UrlProxyServlet extends ProxyServlet implements Servlet {
} }
// 2 - get target url // 2 - get target url
URL proxyurl = null; URL proxyurl = null;
String strARGS = request.getQueryString(); final String strUrl = request.getParameter("url");
if (strARGS == null) { if (strUrl == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND,"url parameter missing"); response.sendError(HttpServletResponse.SC_NOT_FOUND,"url parameter missing");
return; return;
} }
if (strARGS.startsWith("url=")) { try {
final String strUrl = strARGS.substring(4); // strip "url=" proxyurl = new URL(strUrl);
} catch (final MalformedURLException e) {
try { proxyurl = new URL(URLDecoder.decode(strUrl, UTF8.charset.name()));
proxyurl = new URL(strUrl);
} catch (final MalformedURLException e) {
proxyurl = new URL(URLDecoder.decode(strUrl, UTF8.charset.name()));
}
} }
if (proxyurl == null) { if (proxyurl == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND,"url parameter missing"); response.sendError(HttpServletResponse.SC_NOT_FOUND,"url parameter missing");
return; return;
@ -334,16 +330,17 @@ public class UrlProxyServlet extends ProxyServlet implements Servlet {
private boolean proxyippatternmatch(final String key) { private boolean proxyippatternmatch(final String key) {
// the cfgippattern is a comma-separated list of patterns // the cfgippattern is a comma-separated list of patterns
// each pattern may contain one wildcard-character '*' which matches anything // each pattern may contain one wildcard-character '*' which matches anything
final String cfgippattern = Switchboard.getSwitchboard().getConfig("proxyURL.access", "*"); final String[] cfgippattern = Switchboard.getSwitchboard().getConfigArray("proxyURL.access", "*");
if (cfgippattern.equals("*")) { if (cfgippattern[0].equals("*")) {
return true; return true;
} }
final StringTokenizer st = new StringTokenizer(cfgippattern, ","); for (String pattern : cfgippattern) {
String pattern; try {
while (st.hasMoreTokens()) { if (key.matches(pattern)) {
pattern = st.nextToken(); return true;
if (key.matches(pattern)) { }
return true; } catch (PatternSyntaxException ex) {
this._log.warn("wrong ip pattern in url proxy config", ex.getMessage() );
} }
} }
return false; return false;

Loading…
Cancel
Save