diff --git a/src/main/java/com/alibaba/druid/filter/wall/WallFilter.java b/src/main/java/com/alibaba/druid/filter/wall/WallFilter.java index ce54acf4c2..6423f9f4a7 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/WallFilter.java +++ b/src/main/java/com/alibaba/druid/filter/wall/WallFilter.java @@ -18,7 +18,7 @@ import com.alibaba.druid.util.JdbcUtils; public class WallFilter extends FilterAdapter { - private boolean inited = false; + private boolean inited = false; private WallProvider provider; @@ -26,6 +26,8 @@ public class WallFilter extends FilterAdapter { private boolean loadExtend; + private boolean checkSelectAlwayTrueCondition = true; + @Override public void init(DataSourceProxy dataSource) { this.dataSource = dataSource; @@ -35,10 +37,14 @@ public class WallFilter extends FilterAdapter { this.inited = true; } + public WallProvider getProvider() { + return provider; + } + public boolean isLoadDefault() { return loadDefault; } - + public void checkInit() { if (inited) { throw new DruidRuntimeException("wall filter is inited"); @@ -200,15 +206,18 @@ public class WallFilter extends FilterAdapter { } public WallProvider createWallProvider(String dbType) { + WallProvider provider; if (JdbcUtils.MYSQL.equals(dbType)) { - return new MySqlWallProvider(this.loadDefault, this.loadExtend); + provider = new MySqlWallProvider(this.loadDefault, this.loadExtend); + } else if (JdbcUtils.ORACLE.equals(dbType)) { + provider = new OracleWallProvider(this.loadDefault, this.loadExtend); + } else { + throw new IllegalStateException("dbType not support : " + dbType); } - if (JdbcUtils.ORACLE.equals(dbType)) { - return new OracleWallProvider(this.loadDefault, this.loadExtend); - } + provider.setCheckSelectAlwayTrueCondition(this.checkSelectAlwayTrueCondition); - throw new IllegalStateException("dbType not support : " + dbType); + return provider; } } diff --git a/src/main/java/com/alibaba/druid/filter/wall/WallVisitor.java b/src/main/java/com/alibaba/druid/filter/wall/WallVisitor.java index 6126578e04..7886346d26 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/WallVisitor.java +++ b/src/main/java/com/alibaba/druid/filter/wall/WallVisitor.java @@ -7,7 +7,7 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor; public interface WallVisitor extends SQLASTVisitor { - WallProvider getWallProvider(); + WallProvider getProvider(); List getViolations(); diff --git a/src/main/java/com/alibaba/druid/filter/wall/spi/MySqlWallVisitor.java b/src/main/java/com/alibaba/druid/filter/wall/spi/MySqlWallVisitor.java index 779e356cc6..b499b33a17 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/spi/MySqlWallVisitor.java +++ b/src/main/java/com/alibaba/druid/filter/wall/spi/MySqlWallVisitor.java @@ -41,7 +41,7 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi this.provider = provider; } - public WallProvider getWallProvider() { + public WallProvider getProvider() { return provider; } diff --git a/src/main/java/com/alibaba/druid/filter/wall/spi/OracleWallVisitor.java b/src/main/java/com/alibaba/druid/filter/wall/spi/OracleWallVisitor.java index fca3df446a..90c1b14f39 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/spi/OracleWallVisitor.java +++ b/src/main/java/com/alibaba/druid/filter/wall/spi/OracleWallVisitor.java @@ -179,7 +179,7 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi } @Override - public WallProvider getWallProvider() { + public WallProvider getProvider() { return this.provider; } } diff --git a/src/main/java/com/alibaba/druid/filter/wall/spi/WallVisitorUtils.java b/src/main/java/com/alibaba/druid/filter/wall/spi/WallVisitorUtils.java index 37bbfc88da..efa6757731 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/filter/wall/spi/WallVisitorUtils.java @@ -59,7 +59,7 @@ public class WallVisitorUtils { return; } - WallProvider provider = visitor.getWallProvider(); + WallProvider provider = visitor.getProvider(); if (!provider.isCheckSelectAlwayTrueCondition()) { return; } @@ -366,7 +366,7 @@ public class WallVisitorUtils { String methodName = x.getMethodName(); - if (visitor.getWallProvider().getPermitFunctions().contains(methodName.toLowerCase())) { + if (visitor.getProvider().getPermitFunctions().contains(methodName.toLowerCase())) { visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x))); } @@ -384,7 +384,7 @@ public class WallVisitorUtils { ownerName = form(ownerName); - if (visitor.getWallProvider().getPermitSchemas().contains(ownerName.toLowerCase())) { + if (visitor.getProvider().getPermitSchemas().contains(ownerName.toLowerCase())) { visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x))); } }