package li.druid; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import li.util.Reflect; import li.util.Verify; import com.alibaba.druid.wall.WallConfig; import com.alibaba.druid.wall.WallFilter; public class WallDruidFilter extends WallFilter { private static final String[] EMPTY_STRING_ARRAY = new String[0]; private static final List<String> EMPTY_STRING_LIST = new ArrayList<String>(0); private WallConfig wallConfig; public WallDruidFilter() { wallConfig = new WallConfig(); this.setConfig(wallConfig); } /** * 英文逗号分隔的列表 */ public void setDenyFunctions(String attrs) { wallConfig.getDenyFunctions().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的列表 */ public void setDenyObjects(String attrs) { wallConfig.getDenyObjects().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的列表 */ public void setDenySchemas(String attrs) { wallConfig.getDenySchemas().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的列表 */ public void setDenyTables(String attrs) { wallConfig.getDenyTables().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的列表 */ public void setDenyVariants(String attrs) { wallConfig.getDenyVariants().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的禁止使用的func列表 */ public void setPermitFunctions(String attrs) { wallConfig.getPermitFunctions().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的禁止访问的数据库列表 */ public void setPermitSchemas(String attrs) { wallConfig.getPermitSchemas().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的禁止访问的table列表 */ public void setPermitTables(String attrs) { wallConfig.getPermitTables().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * PermitVariants,英文逗号分隔的列表 */ public void setPermitVariants(String attrs) { wallConfig.getPermitVariants().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * 英文逗号分隔的只读table列表 */ public void setReadonlyTables(String attrs) { wallConfig.getReadOnlyTables().addAll(Verify.isEmpty(attrs) ? EMPTY_STRING_LIST : Arrays.asList(attrs.split("\\,"))); } /** * WallConfig中英文逗号分隔的设置为false的属性列表 */ public void setWallConfigFalse(String attrs) { String[] strs = Verify.isEmpty(attrs) ? EMPTY_STRING_ARRAY : attrs.split("\\,"); for (String attr : strs) { Reflect.set(wallConfig, attr, false); } } /** * WallConfig中英文逗号分隔的设置为true的属性列表 */ public void setWallConfigTrue(String attrs) { String[] strs = Verify.isEmpty(attrs) ? EMPTY_STRING_ARRAY : attrs.split("\\,"); for (String attr : strs) { Reflect.set(wallConfig, attr, true); } } }