From a0ce7efe1a95ba06ff7e7985514ea2769cb24d0d Mon Sep 17 00:00:00 2001 From: yakolee Date: Tue, 4 Mar 2014 14:45:41 +0800 Subject: [PATCH] sql wall allow rename table --- src/main/java/com/alibaba/druid/wall/WallConfig.java | 9 +++++++++ .../com/alibaba/druid/wall/spi/WallVisitorUtils.java | 5 +++++ .../java/com/alibaba/druid/wall/violation/ErrorCode.java | 1 + 3 files changed, 15 insertions(+) diff --git a/src/main/java/com/alibaba/druid/wall/WallConfig.java b/src/main/java/com/alibaba/druid/wall/WallConfig.java index 07438d29be..fe96a03fe7 100644 --- a/src/main/java/com/alibaba/druid/wall/WallConfig.java +++ b/src/main/java/com/alibaba/druid/wall/WallConfig.java @@ -39,6 +39,7 @@ public class WallConfig implements WallConfigMBean { private boolean createTableAllow = true; private boolean dropTableAllow = true; private boolean alterTableAllow = true; + private boolean renameTableAllow = true; private boolean conditionAndAlwayTrueAllow = false; private boolean conditionAndAlwayFalseAllow = false; @@ -411,6 +412,14 @@ public class WallConfig implements WallConfigMBean { this.alterTableAllow = alterTableAllow; } + public boolean isRenameTableAllow() { + return renameTableAllow; + } + + public void setRenameTableAllow(boolean renameTableAllow) { + this.renameTableAllow = renameTableAllow; + } + public boolean isSelectUnionCheck() { return selectUnionCheck; } diff --git a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java index 24b8abf039..3f1c2c2f5d 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -97,6 +97,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCommitStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDescribeStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement; +import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlReplaceStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSetCharSetStatement; @@ -2370,6 +2371,10 @@ public class WallVisitorUtils { allow = config.isUseAllow(); denyMessage = "show not allow"; errorCode = ErrorCode.USE_NOT_ALLOW; + } else if (x instanceof MySqlRenameTableStatement) { + allow = config.isRenameTableAllow(); + denyMessage = "rename table not allow"; + errorCode = ErrorCode.RENAME_TABLE_NOT_ALLOW; } else { allow = config.isNoneBaseStatementAllow(); errorCode = ErrorCode.NONE_BASE_STATEMENT_NOT_ALLOW; diff --git a/src/main/java/com/alibaba/druid/wall/violation/ErrorCode.java b/src/main/java/com/alibaba/druid/wall/violation/ErrorCode.java index eeb9add391..d1598a9cf3 100644 --- a/src/main/java/com/alibaba/druid/wall/violation/ErrorCode.java +++ b/src/main/java/com/alibaba/druid/wall/violation/ErrorCode.java @@ -44,6 +44,7 @@ public interface ErrorCode { public final static int ALTER_TABLE_NOT_ALLOW = 1102; public final static int DROP_TABLE_NOT_ALLOW = 1103; public final static int COMMENT_STATEMENT_NOT_ALLOW = 1104; + public final static int RENAME_TABLE_NOT_ALLOW = 1105; public final static int LIMIT_ZERO = 2200; public final static int MULTI_STATEMENT = 2201;