rule.setChain(true); } else if (flag.startsWith("cookie=") || flag.startsWith("C=")) { rule.setCookie(true); if (flag.startsWith("cookie")) { flag = flag.substring("cookie=".length()); rule.setCookieName(tokenizer.nextToken()); rule.setCookieValue(tokenizer.nextToken()); if (tokenizer.hasMoreTokens()) { rule.setCookieDomain(tokenizer.nextToken()); rule.setCookieLifetime(Integer.parseInt(tokenizer.nextToken())); } catch (NumberFormatException e) { throw new IllegalArgumentException("Invalid flag in: " + line, e); rule.setCookiePath(tokenizer.nextToken()); rule.setCookieSecure(Boolean.parseBoolean(tokenizer.nextToken())); rule.setCookieHttpOnly(Boolean.parseBoolean(tokenizer.nextToken())); rule.setEnv(true); if (flag.startsWith("env=")) { flag = flag.substring("env=".length()); rule.addEnvName(flag.substring(0, pos)); rule.addEnvValue(flag.substring(pos + 1)); } else if (flag.startsWith("forbidden") || flag.startsWith("F")) { rule.setForbidden(true);
public String getConfiguration() { StringBuffer buffer = new StringBuffer(); // FIXME: Output maps if possible for (int i = 0; i < rules.length; i++) { for (int j = 0; j < rules[i].getConditions().length; j++) { buffer.append(rules[i].getConditions()[j].toString()).append("\r\n"); } buffer.append(rules[i].toString()).append("\r\n").append("\r\n"); } return buffer.toString(); }
boolean done = false; for (int i = 0; i < rules.length; i++) { CharSequence test = (rules[i].isHost()) ? host : url; CharSequence newtest = rules[i].evaluate(test, resolver); if (newtest != null && !test.equals(newtest.toString())) { if (container.getLogger().isDebugEnabled()) { container.getLogger().debug("Rewrote " + test + " as " + newtest + " with rule pattern " + rules[i].getPatternString()); if (rules[i].isHost()) { host = newtest; } else { if (rules[i].isForbidden() && newtest != null) { response.sendError(HttpServletResponse.SC_FORBIDDEN); done = true; if (rules[i].isGone() && newtest != null) { response.sendError(HttpServletResponse.SC_GONE); done = true; if (rules[i].isRedirect() && newtest != null) { if (rules[i].isQsappend()) { urlString.append('&'); urlString.append(queryString); response.setStatus(rules[i].getRedirectCode()); done = true;
RewriteRule rule = (RewriteRule) result; if (container.getLogger().isDebugEnabled()) { container.getLogger().debug("Add rule with pattern " + rule.getPatternString() + " and substitution " + rule.getSubstitutionString()); container.getLogger().debug("Add condition " + cond.getCondPattern() + " test " + cond.getTestString() + " to rule with pattern " + rule.getPatternString() + " and substitution " + rule.getSubstitutionString() + (cond.isOrnext() ? " [OR]" : "") + (cond.isNocase() ? " [NC]" : "")); rule.addCondition(conditions.get(i)); this.rules[i].parse(maps);
} else if (token.equals("RewriteRule")) { RewriteRule rule = new RewriteRule(); if (tokenizer.countTokens() < 2) { throw new IllegalArgumentException("Invalid line: " + line); rule.setPatternString(tokenizer.nextToken()); rule.setSubstitutionString(tokenizer.nextToken()); if (tokenizer.hasMoreTokens()) { String flags = tokenizer.nextToken();
boolean done = false; for (int i = 0; i < rules.length; i++) { CharSequence test = (rules[i].isHost()) ? host : url; CharSequence newtest = rules[i].evaluate(test, resolver); if (newtest != null && !test.equals(newtest.toString())) { if (container.getLogger().isDebugEnabled()) { container.getLogger().debug("Rewrote " + test + " as " + newtest + " with rule pattern " + rules[i].getPatternString()); if (rules[i].isHost()) { host = newtest; } else { if (rules[i].isForbidden() && newtest != null) { response.sendError(HttpServletResponse.SC_FORBIDDEN); done = true; if (rules[i].isGone() && newtest != null) { response.sendError(HttpServletResponse.SC_GONE); done = true; if (rules[i].isRedirect() && newtest != null) { if (rules[i].isQsappend()) { urlString.append('&'); urlString.append(queryString); response.setStatus(rules[i].getRedirectCode()); done = true;
RewriteRule rule = (RewriteRule) result; if (container.getLogger().isDebugEnabled()) { container.getLogger().debug("Add rule with pattern " + rule.getPatternString() + " and substitution " + rule.getSubstitutionString()); container.getLogger().debug("Add condition " + cond.getCondPattern() + " test " + cond.getTestString() + " to rule with pattern " + rule.getPatternString() + " and substitution " + rule.getSubstitutionString() + (cond.isOrnext() ? " [OR]" : "") + (cond.isNocase() ? " [NC]" : "")); rule.addCondition(conditions.get(i)); this.rules[i].parse(maps);
} else if (token.equals("RewriteRule")) { RewriteRule rule = new RewriteRule(); if (tokenizer.countTokens() < 2) { throw MESSAGES.invalidRewriteConfiguration(line); rule.setPatternString(tokenizer.nextToken()); rule.setSubstitutionString(tokenizer.nextToken()); if (tokenizer.hasMoreTokens()) { String flags = tokenizer.nextToken();
rule.setChain(true); } else if (flag.startsWith("cookie=") || flag.startsWith("CO=")) { rule.setCookie(true); if (flag.startsWith("cookie")) { flag = flag.substring("cookie=".length()); rule.setCookieName(tokenizer.nextToken()); rule.setCookieValue(tokenizer.nextToken()); if (tokenizer.hasMoreTokens()) { rule.setCookieDomain(tokenizer.nextToken()); rule.setCookieLifetime(Integer.parseInt(tokenizer.nextToken())); } catch (NumberFormatException e) { throw MESSAGES.invalidRewriteFlags(line); rule.setCookiePath(tokenizer.nextToken()); rule.setCookieSecure(Boolean.parseBoolean(tokenizer.nextToken())); rule.setCookieHttpOnly(Boolean.parseBoolean(tokenizer.nextToken())); rule.setEnv(true); if (flag.startsWith("env=")) { flag = flag.substring("env=".length()); rule.addEnvName(flag.substring(0, pos)); rule.addEnvValue(flag.substring(pos + 1)); } else if (flag.startsWith("forbidden") || flag.startsWith("F")) { rule.setForbidden(true);
public String getConfiguration() { StringBuffer buffer = new StringBuffer(); // FIXME: Output maps if possible for (int i = 0; i < rules.length; i++) { for (int j = 0; j < rules[i].getConditions().length; j++) { buffer.append(rules[i].getConditions()[j].toString()).append("\r\n"); } buffer.append(rules[i].toString()).append("\r\n").append("\r\n"); } return buffer.toString(); }