diff --git a/dbapi-assembly/binary.xml b/dbapi-assembly/binary.xml index 7dc0052b44fa7cd067ed6bfeae17bdd3f9f085e2..24bd98abb5826fe55fe7ea1a469646a05e530147 100644 --- a/dbapi-assembly/binary.xml +++ b/dbapi-assembly/binary.xml @@ -1,6 +1,6 @@ - + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.1.1 http://maven.apache.org/xsd/assembly-2.1.1.xsd"> bin tar.gz diff --git a/dbapi-assembly/pom.xml b/dbapi-assembly/pom.xml index 578450abd277bc2bebd381737f9c83cfb86c6879..a0bcd6875b5cc100109159ffb5dd1c92366d9894 100644 --- a/dbapi-assembly/pom.xml +++ b/dbapi-assembly/pom.xml @@ -5,15 +5,15 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-assembly - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -50,7 +50,9 @@ + org.apache.maven.plugins maven-assembly-plugin + 3.5.0 binary.xml diff --git a/dbapi-cluster-apiServer/pom.xml b/dbapi-cluster-apiServer/pom.xml index d0bd9674064f5b8830e94cb44e05c246aa2eef77..15ca5cff09f4f880805dd471dd105484e67ca807 100644 --- a/dbapi-cluster-apiServer/pom.xml +++ b/dbapi-cluster-apiServer/pom.xml @@ -5,15 +5,15 @@ dbapi com.gitee.freakchicken.dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-cluster-apiServer - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -22,12 +22,6 @@ - - - com.gitee.freakchicken.dbapi dbapi-service @@ -48,6 +42,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 **/*.xml diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java index a505a8478f20db3a764172acb1bafd9d32eb5911..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java @@ -1,29 +0,0 @@ -package com.gitee.freakchicken.dbapi.apiserver; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.FilterType; -import org.springframework.scheduling.annotation.EnableAsync; - -@SpringBootApplication -@MapperScan("com.gitee.freakchicken.dbapi.basic.dao") -@EnableCaching -@EnableAsync -@ComponentScan(value = {"com.gitee.freakchicken.dbapi.basic", "com.gitee.freakchicken.dbapi.apiserver"}, - excludeFilters = { - @ComponentScan.Filter(type = FilterType.REGEX, pattern = { - "com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter", //filter会自动注册 - "com.gitee.freakchicken.dbapi.basic.conf.*",//安装包启动的时候排除controller相关 - "com.gitee.freakchicken.dbapi.basic.controller.*" //安装包启动的时候排除controller相关 - }) - }) -//@PropertySource("application-apiServer.properties") -public class DBApiApiServer { - public static void main(String[] args) { - System.setProperty("spring.profiles.active", "apiServer"); - SpringApplication.run(DBApiApiServer.class, args); - } -} diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java index 03db5e65aa8824f73bcf18a1a9a3ce64c65046ad..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java @@ -1,38 +0,0 @@ -package com.gitee.freakchicken.dbapi.apiserver.conf; - -import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @description: 用于注册Filter - * @program: dbApi - * @author: kensan - * @create: 2022-04-16 12:43 - */ -@Slf4j -@Configuration -public class FilterConfig { - @Value("${dbapi.api.context}") - String apiContext; - - @Autowired - private ApiAuthFilter apiAuthFilter; - - @Bean - public FilterRegistrationBean authFilter() { - int authFilterOrder = 2; - String format = String.format("/%s/*", apiContext); - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(apiAuthFilter); - registrationBean.addUrlPatterns(format); - registrationBean.setOrder(authFilterOrder); - registrationBean.setEnabled(true); - log.info("regist authFilter for {} UrlPatterns, and order is {}",format,authFilterOrder); - return registrationBean; - } -} diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java index e9fd1c5e81b885f7eb406f931bdeeb41e8def3b9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java @@ -1,48 +0,0 @@ -package com.gitee.freakchicken.dbapi.apiserver.conf; - -import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; -import com.gitee.freakchicken.dbapi.basic.servlet.TokenServlet; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @description: - * @program: dbApi - * @author: kensan - * @create: 2022-04-16 12:45 - */ -@Slf4j -@Configuration -public class ServletConfig { - @Value("${dbapi.api.context}") - String apiContext; - - @Autowired - private APIServlet apiServlet; - - @Autowired - private TokenServlet tokenServlet; - - - @Bean - public ServletRegistrationBean getServletRegistrationBean() { - String format = String.format("/%s/*", apiContext); - ServletRegistrationBean bean = new ServletRegistrationBean(apiServlet); - bean.addUrlMappings(format); - log.info("regist APIServlet servelet for {} urlMappings",format); - return bean; - } - - @Bean - public ServletRegistrationBean tokenServletRegistrationBean() { - ServletRegistrationBean bean = new ServletRegistrationBean(tokenServlet); - bean.addUrlMappings("/token/generate"); - log.info("regist tokenServlet servelet"); - return bean; - } -} diff --git a/dbapi-cluster-apiServer/src/main/resources/application-apiServer.properties b/dbapi-cluster-apiServer/src/main/resources/application-apiServer.properties index e072c114d00578cb7d325951195fe534c8af1173..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-apiServer/src/main/resources/application-apiServer.properties +++ b/dbapi-cluster-apiServer/src/main/resources/application-apiServer.properties @@ -1,21 +0,0 @@ -spring.application.name=${dbapi.cluster.api.name} -logging.config=classpath:logback-apiServer.xml -dbapi.mode=cluster -spring.cache.type=redis - -#################################### please modify config below ##################################### - -server.port=8524 - - - - - - - - - - - - - diff --git a/dbapi-cluster-apiServer/src/main/resources/logback-apiServer.xml b/dbapi-cluster-apiServer/src/main/resources/logback-apiServer.xml index d57ec689d43e4387a607ef4d04d28daa832b7479..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-apiServer/src/main/resources/logback-apiServer.xml +++ b/dbapi-cluster-apiServer/src/main/resources/logback-apiServer.xml @@ -1,55 +0,0 @@ - - - - - - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - ${log.base}/dbapi-apiServer.log - - ${log.base}/dbapi-apiServer.%d{yyyy-MM-dd}.%i.log - 168 - 200MB - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - ${log.base}/dbapi-access.log - - ${log.base}/dbapi-access.%d{yyyy-MM-dd}.%i.log - 168 - 200MB - - - %msg%n - UTF-8 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dbapi-cluster-gateway/pom.xml b/dbapi-cluster-gateway/pom.xml index 679893327b5b954f27e76c4ed23b29d517b02af0..b19d7c1c4a52c0146cc08c1193ea4ab4bc617628 100644 --- a/dbapi-cluster-gateway/pom.xml +++ b/dbapi-cluster-gateway/pom.xml @@ -5,15 +5,15 @@ dbapi com.gitee.freakchicken.dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-cluster-gateway - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -25,17 +25,6 @@ org.springframework.cloud spring-cloud-starter-gateway - - @@ -58,6 +47,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 **/*.xml diff --git a/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/DBApiGateWay.java b/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/DBApiGateWay.java index e3dbe9e913bac330eaae3f63c69e645bf646f4c5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/DBApiGateWay.java +++ b/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/DBApiGateWay.java @@ -1,30 +0,0 @@ -package com.gitee.freakchicken.dbapi.gateway; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.FilterType; - -@SpringBootApplication -@ComponentScan(value = {"com.gitee.freakchicken.dbapi.basic", "com.gitee.freakchicken.dbapi.gateway"}, - excludeFilters = { - @ComponentScan.Filter(type = FilterType.REGEX, pattern = { - "com.gitee.freakchicken.dbapi.basic.filter.*", //filter会自动注册,要排除 - "com.gitee.freakchicken.dbapi.basic.controller.*", //安装包启动的时候排除 controller.jar - "com.gitee.freakchicken.dbapi.basic.conf.*", //安装包启动的时候排除 controller.jar - "com.gitee.freakchicken.dbapi.basic.service.LoadPluginOnSpringReady" - }) - }) -@MapperScan("com.gitee.freakchicken.dbapi.basic.dao") -@EnableCaching -//@PropertySource("classpath:application-gateway.yml") -public class DBApiGateWay { - public static void main(String[] args) { - System.setProperty("spring.profiles.active", "gateway"); - System.setProperty("reactor.netty.http.server.accessLogEnabled","true"); - SpringApplication.run(DBApiGateWay.class, args); - } - -} diff --git a/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/filter/GatewayIPFilter.java b/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/filter/GatewayIPFilter.java index fb5f11efd9ab15d7bbd223e5e6113aa005052249..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/filter/GatewayIPFilter.java +++ b/dbapi-cluster-gateway/src/main/java/com/gitee/freakchicken/dbapi/gateway/filter/GatewayIPFilter.java @@ -1,47 +0,0 @@ -package com.gitee.freakchicken.dbapi.gateway.filter; - -import com.alibaba.fastjson.JSON; -import com.gitee.freakchicken.dbapi.basic.service.IPService; -import com.gitee.freakchicken.dbapi.common.ResponseDto; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.core.Ordered; -import org.springframework.core.io.buffer.DataBuffer; -import org.springframework.http.HttpStatus; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.stereotype.Component; -import org.springframework.web.server.ServerWebExchange; -import reactor.core.publisher.Mono; - -@Component -@Slf4j -public class GatewayIPFilter implements GlobalFilter, Ordered { - - @Autowired - IPService ipService; - - @Override - public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - ServerHttpRequest request = exchange.getRequest(); - ServerHttpResponse response = exchange.getResponse(); - // 从request对象中获取客户端ip - String clientIp = request.getRemoteAddress().getHostString(); - if (!ipService.checkIP(clientIp)) { - log.info("ip forbidden : {}", clientIp); -// response.setStatusCode(HttpStatus.UNAUTHORIZED); - String data = JSON.toJSONString(ResponseDto.fail("Illegal ip (" + clientIp + "), access forbidden")); - DataBuffer wrap = response.bufferFactory().wrap(data.getBytes()); - return response.writeWith(Mono.just(wrap)); - } - // 合法请求,放⾏,执⾏后续的过滤器 - return chain.filter(exchange); - } - - @Override - public int getOrder() { - return 0; - } -} diff --git a/dbapi-cluster-gateway/src/main/resources/application-gateway.yml b/dbapi-cluster-gateway/src/main/resources/application-gateway.yml index 113a9d46500f862c5e5c6e10cb2a74b639e9aa6d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-gateway/src/main/resources/application-gateway.yml +++ b/dbapi-cluster-gateway/src/main/resources/application-gateway.yml @@ -1,30 +0,0 @@ -spring: - application: - name: ${dbapi.cluster.gateway.name} - cloud: - gateway: - routes: - - id: api_route - uri: lb://${dbapi.cluster.api.name} - predicates: - - Path=/${dbapi.api.context}/** - - id: token_route - uri: lb://${dbapi.cluster.api.name} - predicates: - - Path=/token/generate - - globalcors: - cors-configurations: - '[/**]': - allowed-origins: '*' - allowed-methods: '*' - allowed-headers: "*" - cache: - type: redis -logging: - config: classpath:logback-gateway.xml - -#################################### please modify config below ##################################### - -server: - port: 8525 \ No newline at end of file diff --git a/dbapi-cluster-gateway/src/main/resources/logback-gateway.xml b/dbapi-cluster-gateway/src/main/resources/logback-gateway.xml index 89017e51b02319307bf550c760196d666ac7e483..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-gateway/src/main/resources/logback-gateway.xml +++ b/dbapi-cluster-gateway/src/main/resources/logback-gateway.xml @@ -1,64 +0,0 @@ - - - - - - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - ${log.base}/dbapi-gateway.log - - ${log.base}/dbapi-gateway.%d{yyyy-MM-dd}.%i.log - 168 - 200MB - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - - ${log.base}/dbapi-gateway-access.log - - ${log.base}/dbapi-gateway-access.%d{yyyy-MM-dd}.%i.log - 168 - 200MB - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n - - UTF-8 - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dbapi-cluster-manager/pom.xml b/dbapi-cluster-manager/pom.xml index e0e6b16be9edbdefff04064f287e35ed5df7cdb7..93cf2af77e75be0728b8825a8ebe148ca52191a3 100644 --- a/dbapi-cluster-manager/pom.xml +++ b/dbapi-cluster-manager/pom.xml @@ -5,15 +5,15 @@ dbapi com.gitee.freakchicken.dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-cluster-manager - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -43,6 +43,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 **/*.xml diff --git a/dbapi-cluster-manager/src/main/java/com/gitee/freakchicken/dbapi/manager/DBApiManager.java b/dbapi-cluster-manager/src/main/java/com/gitee/freakchicken/dbapi/manager/DBApiManager.java index 2afe60af14872f638191c4f6643b813ee5ea7379..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-manager/src/main/java/com/gitee/freakchicken/dbapi/manager/DBApiManager.java +++ b/dbapi-cluster-manager/src/main/java/com/gitee/freakchicken/dbapi/manager/DBApiManager.java @@ -1,27 +0,0 @@ -package com.gitee.freakchicken.dbapi.manager; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.FilterType; - -@SpringBootApplication -@ComponentScan(value = "com.gitee.freakchicken.dbapi.basic", excludeFilters = { - @ComponentScan.Filter(type = FilterType.REGEX, pattern = { - "com.gitee.freakchicken.dbapi.basic.filter.*" - }) -}) -@MapperScan("com.gitee.freakchicken.dbapi.basic.dao") -@EnableCaching -//@PropertySource("application-manager.properties") -@EnableDiscoveryClient -public class DBApiManager { - public static void main(String[] args) { - System.setProperty("spring.profiles.active","manager"); - SpringApplication.run(DBApiManager.class, args); - } - -} diff --git a/dbapi-cluster-manager/src/main/resources/application-manager.properties b/dbapi-cluster-manager/src/main/resources/application-manager.properties index 873a196fd7b79ba4f498f72715ac17bf0dfa046e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-manager/src/main/resources/application-manager.properties +++ b/dbapi-cluster-manager/src/main/resources/application-manager.properties @@ -1,12 +0,0 @@ -spring.application.name=${dbapi.cluster.manager.name} -logging.config=classpath:logback-manager.xml -dbapi.mode=cluster -spring.cache.type=redis - -#################################### please modify config below ##################################### - -server.port=8523 - - - - diff --git a/dbapi-cluster-manager/src/main/resources/logback-manager.xml b/dbapi-cluster-manager/src/main/resources/logback-manager.xml index a39a776acafd9f8e5598b0e762ef55e704845355..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/dbapi-cluster-manager/src/main/resources/logback-manager.xml +++ b/dbapi-cluster-manager/src/main/resources/logback-manager.xml @@ -1,39 +0,0 @@ - - - - - - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - ${log.base}/dbapi-manager.log - - ${log.base}/dbapi-manager.%d{yyyy-MM-dd}.%i.log - 168 - 200MB - - - - %date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{96}:[%line] - %msg%n - - UTF-8 - - - - - - - - - - - - - \ No newline at end of file diff --git a/dbapi-common/pom.xml b/dbapi-common/pom.xml index 9e02f2afe79cde6d1e9528ab1b995059c253763b..4ec1f293783b92f3977a47e5127ccacc97aa6a0c 100644 --- a/dbapi-common/pom.xml +++ b/dbapi-common/pom.xml @@ -5,7 +5,7 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-common @@ -14,8 +14,8 @@ https://gitee.com/freakchicken/db-api - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -25,7 +25,6 @@ com.baomidou mybatis-plus-annotation - 3.2.0 compile @@ -36,7 +35,6 @@ com.alibaba fastjson - 1.2.62 compile diff --git a/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfig.java b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfig.java index 95c815ad19fa40632dbd6d29b83a1af03fc5e449..b5e19d0124dc73aeab31058044d67f5ac11d0063 100644 --- a/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfig.java +++ b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfig.java @@ -31,8 +31,8 @@ public class ApiConfig implements Serializable { @TableField(value = "datasource_id") String datasourceId; - // @TableField(exist = false) - // List sqlList; + @TableField(exist = false) + List sqlList; /** * application/x-www-form-urlencoded 类API对应的参数 @@ -49,14 +49,14 @@ public class ApiConfig implements Serializable { @TableField("group_id") String groupId; - // @TableField(value = "cache_plugin", insertStrategy = FieldStrategy.NOT_EMPTY) - // String cachePlugin; + @TableField(value = "cache_plugin", insertStrategy = FieldStrategy.NOT_EMPTY) + String cachePlugin; /** * 缓存插件参数 */ - // @TableField(value = "cache_plugin_params", updateStrategy = FieldStrategy.IGNORED) - // String cachePluginParams; + @TableField(value = "cache_plugin_params", updateStrategy = FieldStrategy.IGNORED) + String cachePluginParams; @TableField(value = "create_time") String createTime; @@ -70,8 +70,8 @@ public class ApiConfig implements Serializable { /** * 是否打开事务,1-是;0-否 */ - // @TableField("open_trans") - // Integer openTrans; + @TableField("open_trans") + Integer openTrans; /** * application/json 类API对应的json参数示例 @@ -79,9 +79,9 @@ public class ApiConfig implements Serializable { @TableField(value = "json_param", updateStrategy = FieldStrategy.IGNORED) String jsonParam; - // @TableField(exist = false) - // String alarmPlugin; + @TableField(exist = false) + String alarmPlugin; - // @TableField(exist = false) - // String alarmPluginParam; + @TableField(exist = false) + String alarmPluginParam; } diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/SQLApiConfig.java b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfigVersion.java similarity index 36% rename from dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/SQLApiConfig.java rename to dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfigVersion.java index e35c1bb7cf49dc5a977d924c072ff710fd506963..2d5479bbd4f91fbddfc49257865d20b065fecbd1 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/SQLApiConfig.java +++ b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiConfigVersion.java @@ -1,26 +1,52 @@ -package com.gitee.freakchicken.dbapi.basic.domain; +package com.gitee.freakchicken.dbapi.common; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.List; + @Data -@TableName(value = "sql_api_config") -public class SQLApiConfig { - - @TableField("api_id") - String apiId; +@TableName(value = "api_config_version") +public class ApiConfigVersion implements Serializable { - @TableField("open_trans") - Integer openTrans; + + @TableId(value = "id") + String id; @TableField - String alarmPlugin; + String name; @TableField - String alarmPluginParam; + String note; + + @TableField + String path; + + @TableField(value = "datasource_id") + String datasourceId; + + @TableField(exist = false) + List sqlList; + + /** + * application/x-www-form-urlencoded 类API对应的参数 + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + String params; + + @TableField + Integer status; + + @TableField + Integer previlege; + + @TableField("group_id") + String groupId; @TableField(value = "cache_plugin", insertStrategy = FieldStrategy.NOT_EMPTY) String cachePlugin; @@ -37,6 +63,24 @@ public class SQLApiConfig { @TableField(value = "update_time") String updateTime; + @TableField(value = "content_type") + String contentType; + + /** + * 是否打开事务,1-是;0-否 + */ + @TableField("open_trans") + Integer openTrans; + + /** + * application/json 类API对应的json参数示例 + */ + @TableField(value = "json_param", updateStrategy = FieldStrategy.IGNORED) + String jsonParam; + @TableField(exist = false) - List sqlList; + String alarmPlugin; + + @TableField(exist = false) + String alarmPluginParam; } diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ApiSql.java b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiSql.java similarity index 92% rename from dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ApiSql.java rename to dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiSql.java index 4eb8bd9d471c29a5d973ace2e02bcb864f742301..181612be4f4db30d12971779d99a7ce2cf43ba30 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ApiSql.java +++ b/dbapi-common/src/main/java/com/gitee/freakchicken/dbapi/common/ApiSql.java @@ -1,4 +1,4 @@ -package com.gitee.freakchicken.dbapi.basic.domain; +package com.gitee.freakchicken.dbapi.common; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/dbapi-controller/pom.xml b/dbapi-controller/pom.xml index 3329709a0a2c7dc7f9209335485e0983898f0547..4bc913f0badb343e578e861ed11a2a074af2e69f 100644 --- a/dbapi-controller/pom.xml +++ b/dbapi-controller/pom.xml @@ -5,7 +5,7 @@ dbapi com.gitee.freakchicken.dbapi - 3.3.0 + 3.2.1 4.0.0 @@ -13,8 +13,8 @@ 包含controller和ui模块编译出来的html静态文件 - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -42,8 +42,9 @@ + org.apache.maven.plugins maven-clean-plugin - 3.1.0 + 3.2.0 true @@ -61,6 +62,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 **/*.xml @@ -103,7 +105,7 @@ - + diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/CrossConfig.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/CrossConfig.java index 8828282b00cfd20ac851b73d0932e7e1c8152141..5d5da962d163bc891ed88222c73802f20c868621 100644 --- a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/CrossConfig.java +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/CrossConfig.java @@ -9,7 +9,7 @@ public class CrossConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") - .allowedOrigins("*") + .allowedOriginPatterns("*") .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true) .maxAge(3600) diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/JwtAuthenticationInterceptor.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/JwtAuthenticationInterceptor.java index c04d28f6623bc95cefa7eb9248a29eb3b60611ae..7ec8f259fc8d496deda1d3320905546614821a0d 100644 --- a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/JwtAuthenticationInterceptor.java +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/conf/JwtAuthenticationInterceptor.java @@ -3,6 +3,8 @@ package com.gitee.freakchicken.dbapi.basic.conf; import com.gitee.freakchicken.dbapi.basic.service.UserService; import com.gitee.freakchicken.dbapi.basic.domain.User; import com.gitee.freakchicken.dbapi.basic.util.JwtUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; @@ -11,8 +13,6 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; @Component diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/ApiConfigController.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/ApiConfigController.java index 81c35fa8bc0f90e24601cf9b8a3f0b955e813bc8..cf7eda0c63a3e61dc6e1cedf790b1cca0f09647c 100644 --- a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/ApiConfigController.java +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/ApiConfigController.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; -import com.gitee.freakchicken.dbapi.basic.domain.ApiSql; import com.gitee.freakchicken.dbapi.basic.domain.DataSource; import com.gitee.freakchicken.dbapi.basic.domain.Group; import com.gitee.freakchicken.dbapi.basic.service.ApiConfigService; @@ -15,18 +14,19 @@ import com.gitee.freakchicken.dbapi.basic.util.JdbcUtil; import com.gitee.freakchicken.dbapi.basic.util.PoolManager; import com.gitee.freakchicken.dbapi.basic.util.SqlEngineUtil; import com.gitee.freakchicken.dbapi.common.ApiConfig; +import com.gitee.freakchicken.dbapi.common.ApiSql; import com.gitee.freakchicken.dbapi.common.ResponseDto; import com.github.freakchick.orange.SqlMeta; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.Arrays; import java.util.List; @@ -47,18 +47,22 @@ public class ApiConfigController { @Value("${dbapi.mode}") String mode; + @Value("${dbapi.api.context}") + String apiContext; - @Autowired - ApiConfigService apiConfigService; + private final ApiConfigService apiConfigService; - @Autowired - DataSourceService dataSourceService; + private final DataSourceService dataSourceService; - @Autowired - GroupService groupService; + private final GroupService groupService; - @Value("${dbapi.api.context}") - String apiContext; + + + public ApiConfigController(ApiConfigService apiConfigService, DataSourceService dataSourceService, GroupService groupService) { + this.apiConfigService = apiConfigService; + this.dataSourceService = dataSourceService; + this.groupService = groupService; + } @RequestMapping("/context") public String add() { @@ -142,7 +146,7 @@ public class ApiConfigController { OutputStream os = null; //输出流 try { os = response.getOutputStream(); - os.write(docs.getBytes("utf-8")); + os.write(docs.getBytes(StandardCharsets.UTF_8)); } catch (Exception e) { e.printStackTrace(); } finally { @@ -165,7 +169,7 @@ public class ApiConfigController { OutputStream os = null; try { os = response.getOutputStream(); - os.write(s.getBytes("utf-8")); + os.write(s.getBytes(StandardCharsets.UTF_8)); } catch (Exception e) { e.printStackTrace(); } finally { @@ -188,7 +192,7 @@ public class ApiConfigController { OutputStream os = null; try { os = response.getOutputStream(); - os.write(s.getBytes("utf-8")); + os.write(s.getBytes(StandardCharsets.UTF_8)); } catch (Exception e) { e.printStackTrace(); } finally { @@ -204,7 +208,7 @@ public class ApiConfigController { @RequestMapping(value = "/import", produces = "application/json;charset=UTF-8") public void uploadFile(@RequestParam("file") MultipartFile file) throws IOException { - String s = IOUtils.toString(file.getInputStream(), "utf-8"); + String s = IOUtils.toString(file.getInputStream(), StandardCharsets.UTF_8); JSONObject jsonObject = JSON.parseObject(s); List configs = JSON.parseArray(jsonObject.getJSONArray("api").toJSONString(), ApiConfig.class); List sqls = JSON.parseArray(jsonObject.getJSONArray("sql").toJSONString(), ApiSql.class); @@ -215,7 +219,7 @@ public class ApiConfigController { @RequestMapping(value = "/importGroup", produces = "application/json;charset=UTF-8") public void importGroup(@RequestParam("file") MultipartFile file) throws IOException { - String s = IOUtils.toString(file.getInputStream(), "utf-8"); + String s = IOUtils.toString(file.getInputStream(), StandardCharsets.UTF_8); List configs = JSON.parseArray(s, Group.class); groupService.insertBatch(configs); @@ -227,8 +231,7 @@ public class ApiConfigController { try { DataSource dataSource = dataSourceService.detail(datasourceId); connection = PoolManager.getPooledConnection(dataSource); - Map map = JSON.parseObject(params, Map.class); - SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(sql, map); + SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(sql, JSONObject.parseObject(params)); Object data = JdbcUtil.executeSql(connection, sqlMeta.getSql(), sqlMeta.getJdbcParamValues()); return ResponseDto.successWithData(data); } catch (Exception e) { @@ -247,8 +250,7 @@ public class ApiConfigController { @RequestMapping("/parseDynamicSql") public ResponseDto parseDynamicSql(String sql, String params) { try { - Map map = JSON.parseObject(params, Map.class); - SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(sql, map); + SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(sql, JSONObject.parseObject(params)); return ResponseDto.successWithData(sqlMeta); } catch (Exception e) { return ResponseDto.fail(e.getMessage()); diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/DataSourceController.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/DataSourceController.java index 30f3aeb4199f9bb87a02bb95836e226821afff52..6f717cff94c5d9e26f9ac0a8aa3c4638d75b761c 100644 --- a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/DataSourceController.java +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/DataSourceController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.gitee.freakchicken.dbapi.basic.domain.DataSource; import com.gitee.freakchicken.dbapi.basic.service.DataSourceService; import com.gitee.freakchicken.dbapi.basic.util.JdbcUtil; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.RestController; import com.gitee.freakchicken.dbapi.common.ResponseDto; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemController.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemController.java index f8f1eef5ad44a7e3299df5c82be70527d9f46724..52d6a8c7ab7d7cf9ec6bf2f2b1a08524c7eba682 100644 --- a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemController.java +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemController.java @@ -1,13 +1,11 @@ package com.gitee.freakchicken.dbapi.basic.controller; -import com.gitee.freakchicken.dbapi.basic.service.NacosService; +import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; @RestController @Slf4j @@ -19,8 +17,6 @@ public class SystemController { @Value("${dbapi.mode}") String mode; - @Autowired - NacosService nacosService; @Value("${dbapi.api.context}") String apiContext; @@ -42,25 +38,11 @@ public class SystemController { @RequestMapping("/getIPPort") public String getIPPort(HttpServletRequest request) { - - if ("standalone".equals(mode)) { - return request.getServerName() + ":" + request.getServerPort() + "/" + apiContext; - } else if ("cluster".equals(mode)) { - return nacosService.getGatewayAddress() + "/" + apiContext; - } else { - return null; - } + return request.getServerName() + ":" + request.getServerPort() + "/" + apiContext; } @RequestMapping("/getIP") public String getIP(HttpServletRequest request) { - - if ("standalone".equals(mode)) { - return request.getServerName() + ":" + request.getServerPort(); - } else if ("cluster".equals(mode)) { - return nacosService.getGatewayAddress(); - } else { - return null; - } + return request.getServerName() + ":" + request.getServerPort(); } } diff --git a/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemControllerBack.java b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemControllerBack.java new file mode 100644 index 0000000000000000000000000000000000000000..531250a7bc227120d7d2b0ad116db1e67a36dc90 --- /dev/null +++ b/dbapi-controller/src/main/java/com/gitee/freakchicken/dbapi/basic/controller/SystemControllerBack.java @@ -0,0 +1,68 @@ +/* +package com.gitee.freakchicken.dbapi.basic.controller; + +import com.gitee.freakchicken.dbapi.basic.service.NacosService; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@Slf4j +@RequestMapping("/system") +public class SystemControllerBack { + @Value("${version}") + String version; + + @Value("${dbapi.mode}") + String mode; + + @Autowired + NacosService nacosService; + + @Value("${dbapi.api.context}") + String apiContext; + + @RequestMapping("/version") + public String getVersion() { + return version; + } + + @RequestMapping("/mode") + public String mode() { + String docker = System.getenv("DOCKER"); + if ("true".equals(docker)) { + return mode + " in docker"; + } else { + return mode; + } + } + + @RequestMapping("/getIPPort") + public String getIPPort(HttpServletRequest request) { + + if ("standalone".equals(mode)) { + return request.getServerName() + ":" + request.getServerPort() + "/" + apiContext; + } else if ("cluster".equals(mode)) { + return nacosService.getGatewayAddress() + "/" + apiContext; + } else { + return null; + } + } + + @RequestMapping("/getIP") + public String getIP(HttpServletRequest request) { + + if ("standalone".equals(mode)) { + return request.getServerName() + ":" + request.getServerPort(); + } else if ("cluster".equals(mode)) { + return nacosService.getGatewayAddress(); + } else { + return null; + } + } +} +*/ diff --git a/dbapi-plugin/pom.xml b/dbapi-plugin/pom.xml index c61df3c01be7f2b8b3a25832ad5f1cd0d28ce329..4f376c212606a0a1284da2148e5c5f8b1232c2e6 100644 --- a/dbapi-plugin/pom.xml +++ b/dbapi-plugin/pom.xml @@ -5,7 +5,7 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 4.0.0 @@ -15,8 +15,8 @@ https://gitee.com/freakchicken/db-api - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -33,38 +33,32 @@ com.alibaba fastjson - 1.2.62 - + ch.qos.logback logback-core - 1.2.3 ch.qos.logback logback-access - 1.2.3 ch.qos.logback logback-classic - 1.2.3 - - - javax.servlet - javax.servlet-api org.apache.commons commons-email - 1.5 + + + org.apache.tomcat.embed + tomcat-embed-core @@ -80,41 +74,6 @@ - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - -Xdoclint:none - - - - - - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar - - - - - \ No newline at end of file diff --git a/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/AlarmPlugin.java b/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/AlarmPlugin.java index e217a8933f58920b1fce473989ae62cdcc14ea68..7efcd3e2460da722a6f1ca184ffe5d7206e45c19 100644 --- a/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/AlarmPlugin.java +++ b/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/AlarmPlugin.java @@ -2,10 +2,10 @@ package com.gitee.freakchicken.dbapi.plugin; import com.gitee.freakchicken.dbapi.common.ApiConfig; +import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.http.HttpServletRequest; public abstract class AlarmPlugin implements BasePlugin { diff --git a/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/impl/EmailAlarmPlugin.java b/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/impl/EmailAlarmPlugin.java index 30f5706e3cf0158ba7c479294f2b3a493df7aecb..6f3792523a77c5e5129793770a0d7f1951737b9b 100644 --- a/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/impl/EmailAlarmPlugin.java +++ b/dbapi-plugin/src/main/java/com/gitee/freakchicken/dbapi/plugin/impl/EmailAlarmPlugin.java @@ -3,12 +3,12 @@ package com.gitee.freakchicken.dbapi.plugin.impl; import com.gitee.freakchicken.dbapi.common.ApiConfig; import com.gitee.freakchicken.dbapi.plugin.AlarmPlugin; import com.gitee.freakchicken.dbapi.plugin.PluginConf; +import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.Email; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; -import javax.servlet.http.HttpServletRequest; import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/dbapi-service/pom.xml b/dbapi-service/pom.xml index d2e9a990c896e1364075ffc97db515b73ef8b0ee..0161de0514526a6b01df2278b7652dd47cd1c29f 100644 --- a/dbapi-service/pom.xml +++ b/dbapi-service/pom.xml @@ -5,15 +5,15 @@ dbapi com.gitee.freakchicken.dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-service - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -22,7 +22,6 @@ - com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery @@ -37,87 +36,23 @@ com.gitee.freakchicken.dbapi dbapi-plugin - - - javax.servlet - javax.servlet-api - 3.1.0 - - com.auth0 java-jwt 3.8.3 - - com.taosdata.jdbc - taos-jdbcdriver - 2.0.18 - - - - org.apache.hive - hive-jdbc - 1.1.0 - - - servlet-api - javax.servlet - - - derby - org.apache.derby - - - slf4j-log4j12 - org.slf4j - - - slf4j-api - org.slf4j - - - jetty-all - org.eclipse.jetty.aggregate - - - - - - org.apache.hadoop - hadoop-common - 2.7.5 - - - servlet-api - javax.servlet - - - slf4j-log4j12 - org.slf4j - - - slf4j-api - org.slf4j - - - - mysql mysql-connector-java - 8.0.15 org.postgresql postgresql - 42.1.4 com.microsoft.sqlserver mssql-jdbc - 6.1.0.jre8 slf4j-api @@ -128,7 +63,6 @@ ru.yandex.clickhouse clickhouse-jdbc - 0.2.4 slf4j-api @@ -137,34 +71,29 @@ - org.apache.kylin - kylin-jdbc - 3.1.1 + com.baomidou + mybatis-plus-boot-starter - slf4j-api - org.slf4j + org.springframework.boot + spring-boot-dependencies + + + org.mybatis + mybatis-spring - + - org.xerial - sqlite-jdbc - 3.23.1 + org.mybatis + mybatis-spring + 3.0.1 - - - - - - - com.baomidou - mybatis-plus-boot-starter - 3.2.0 + dynamic-datasource-spring-boot-starter slf4j-api @@ -172,23 +101,13 @@ - - com.baomidou - dynamic-datasource-spring-boot-starter - 3.2.0 - - - slf4j-api - org.slf4j - - + org.xerial + sqlite-jdbc - com.alibaba druid - 1.1.9 @@ -200,12 +119,10 @@ com.alibaba fastjson - 1.2.62 commons-io commons-io - 2.6 @@ -233,7 +150,6 @@ net.sf.ehcache ehcache - 2.10.6 slf4j-api @@ -245,40 +161,20 @@ io.github.freakchick orange - 1.0 commons-codec commons-codec - 1.15 - org.springframework - spring-web + org.springframework.boot + spring-boot-starter-web - org.springframework.kafka spring-kafka - - - org.elasticsearch.client - elasticsearch-rest-client - 8.5.3 - - - - org.apache.commons - commons-text - 1.9 - - @@ -289,8 +185,9 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 - + **/*.xml **/*.properties **/*.db diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/dao/ApiSqlMapper.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/dao/ApiSqlMapper.java index 6a852f2f6df38e992f444fe9a5143594e3fe6a05..eb995efc04c4c376fca5023640a5171fc3e60e12 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/dao/ApiSqlMapper.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/dao/ApiSqlMapper.java @@ -1,8 +1,7 @@ package com.gitee.freakchicken.dbapi.basic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gitee.freakchicken.dbapi.basic.domain.ApiSql; - +import com.gitee.freakchicken.dbapi.common.ApiSql; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ESApiConfig.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ESApiConfig.java deleted file mode 100644 index 1dee19faccb4aebdd7b06618d7934cce1c76508c..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/domain/ESApiConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.domain; - -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.io.Serializable; - -@Data -@TableName(value = "es_api_config") -public class ESApiConfig implements Serializable { - - @TableField("api_id") - String apiId; - - @TableField - String method; - - @TableField - String endpoint; - - @TableField - String body; - - @TableField - String alarmPlugin; - - @TableField - String alarmPluginParam; - - @TableField(value = "cache_plugin", insertStrategy = FieldStrategy.NOT_EMPTY) - String cachePlugin; - - @TableField(value = "cache_plugin_params", updateStrategy = FieldStrategy.IGNORED) - String cachePluginParams; - - @TableField(value = "transform_plugin", insertStrategy = FieldStrategy.NOT_EMPTY) - String transformPlugin; - - @TableField(value = "transform_plugin_params") - String transformPluginParams; - -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESClientPool.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESClientPool.java deleted file mode 100644 index 4e7b49d6667f32ee623ab07bc3684a82fe51aa84..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESClientPool.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.es; - -import org.apache.commons.pool2.impl.GenericObjectPool; -import org.apache.commons.pool2.impl.GenericObjectPoolConfig; -import org.elasticsearch.client.RestClient; - -public class ESClientPool { - - GenericObjectPool pool; - - public ESClientPool(String address) { - GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); - poolConfig.setMinEvictableIdleTimeMillis(10000); - poolConfig.setNumTestsPerEvictionRun(3); - poolConfig.setMaxIdle(3); - poolConfig.setMaxTotal(5); - poolConfig.setMinIdle(1); - poolConfig.setMinEvictableIdleTimeMillis(-1); - poolConfig.setTestOnBorrow(false); - poolConfig.setTestOnReturn(false); - pool = new GenericObjectPool(new RestClientFactory(address), poolConfig); - } - - public RestClient getConnection() throws Exception { - return pool.borrowObject(); - } - - public void closeConnection(RestClient client){ - pool.returnObject(client); - } - - public void close(){ - pool.close(); - } - -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESPoolManager.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESPoolManager.java deleted file mode 100644 index ba164df268944f0d228d2f2ac4f0767fb644cd3a..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/ESPoolManager.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.es; -import org.elasticsearch.client.RestClient; - -import com.gitee.freakchicken.dbapi.basic.domain.DataSource; - -import java.util.concurrent.ConcurrentHashMap; - -/** - * @program: api - * @description: - * @author: jiangqiang - * @create: 2020-12-11 10:51 - **/ - -public class ESPoolManager { - - //所有数据源的连接池存在map里 - static ConcurrentHashMap map = new ConcurrentHashMap<>(); - - public static RestClient getJdbcConnectionPool(DataSource dataSource) throws Exception { - ESClientPool pool = new ESClientPool(dataSource.getUrl()); - map.put(dataSource.getId(),pool); - return pool.getConnection(); - } - - //删除数据库连接池 - public static void removeJdbcConnectionPool(String id) { - ESClientPool pool = map.get(id); - pool.close(); - - } - - public static RestClient getPooledConnection(DataSource dataSource) throws Exception { - ESClientPool pool = map.get(dataSource.getId()); - RestClient connection = pool.getConnection(); - return connection; - } -} \ No newline at end of file diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/RestClientFactory.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/RestClientFactory.java deleted file mode 100644 index c573b7c6d72df1e1f64cffce4a6fb3b0a37a8bdf..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/es/RestClientFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.es; - -import org.apache.commons.pool2.PooledObject; -import org.apache.commons.pool2.PooledObjectFactory; -import org.apache.commons.pool2.impl.DefaultPooledObject; -import org.apache.http.HttpHost; -import org.elasticsearch.client.RestClient; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class RestClientFactory implements PooledObjectFactory { - - HttpHost[] httpHosts; - - public RestClientFactory(String address) { - String[] hosts = address.split(","); - List list = Arrays.asList(hosts).stream().map(t -> { - String[] hostPort = t.split(";"); - return new HttpHost(hostPort[0], Integer.parseInt(hostPort[1]), "http"); - }).collect(Collectors.toList()); - httpHosts = list.toArray(new HttpHost[list.size()]); - } - - @Override - public PooledObject makeObject() throws Exception { - RestClient restClient = RestClient.builder(httpHosts).build(); - return new DefaultPooledObject<>(restClient); - } - - @Override - public void destroyObject(PooledObject pooledObject) throws Exception { - pooledObject.getObject().close(); - } - - @Override - public boolean validateObject(PooledObject pooledObject) { - return false; - } - - @Override - public void activateObject(PooledObject pooledObject) throws Exception { - - } - - @Override - public void passivateObject(PooledObject pooledObject) throws Exception { - - } -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/ESExecutor.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/ESExecutor.java deleted file mode 100644 index 460030b0cd70953f90d9ade73d643cf5935f8a89..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/ESExecutor.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.executor; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.gitee.freakchicken.dbapi.basic.domain.DataSource; - -import com.gitee.freakchicken.dbapi.common.ApiConfig; -import com.gitee.freakchicken.dbapi.common.ResponseDto; -import com.gitee.freakchicken.dbapi.plugin.CachePlugin; - -import org.elasticsearch.client.Request; -import org.elasticsearch.client.RestClient; -import org.springframework.stereotype.Component; - -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -import org.elasticsearch.client.Response; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.text.StringSubstitutor; -import org.apache.http.HttpEntity; -import org.springframework.beans.factory.annotation.Autowired; -import org.apache.http.util.EntityUtils; -import com.gitee.freakchicken.dbapi.basic.service.ESApiConfigService; -import com.gitee.freakchicken.dbapi.basic.domain.ESApiConfig; -import com.gitee.freakchicken.dbapi.basic.es.ESPoolManager; -import com.gitee.freakchicken.dbapi.basic.util.ThreadUtils; - -import com.gitee.freakchicken.dbapi.plugin.PluginManager; - -import com.gitee.freakchicken.dbapi.plugin.AlarmPlugin; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class ESExecutor { - - @Autowired - ESApiConfigService ESApiConfigService; - - public ResponseDto execute(ApiConfig config, DataSource datasource, Map param, - HttpServletRequest servletRequest) - throws Exception { - - ESApiConfig eSApiConfig = null; - try { - - eSApiConfig = ESApiConfigService.getConfigByApiId(config.getId()); - // 从缓存获取数据 - if (StringUtils.isNoneBlank(eSApiConfig.getCachePlugin())) { - CachePlugin cachePlugin = PluginManager.getCachePlugin(eSApiConfig.getCachePlugin()); - Object o = cachePlugin.get(config, param); - if (o != null) { - return ResponseDto.apiSuccess(o); // 如果缓存有数据直接返回 - } - } - - RestClient restClient = ESPoolManager.getPooledConnection(datasource); - - Request request = new Request(eSApiConfig.getMethod(), eSApiConfig.getEndpoint()); - - StringSubstitutor StringSubstitutor = new StringSubstitutor(param); - String content = StringSubstitutor.replace(eSApiConfig.getBody()); - request.setJsonEntity(content); - - Response response = restClient.performRequest(request); - HttpEntity entity = response.getEntity(); - String s = EntityUtils.toString(entity); - JSONObject parseObject = JSON.parseObject(s); - - return ResponseDto.apiSuccess(parseObject); - } catch (Exception e) { - if (StringUtils.isNotBlank(eSApiConfig.getAlarmPlugin())) { - try { - String pluginParam = eSApiConfig.getAlarmPluginParam(); - AlarmPlugin alarmPlugin = PluginManager.getAlarmPlugin(eSApiConfig.getAlarmPlugin()); - ThreadUtils.submitAlarmTask(new Runnable() { - @Override - public void run() { - alarmPlugin.alarm(e, config, servletRequest, pluginParam); - } - }); - } catch (Exception error) { - log.error(eSApiConfig.getAlarmPlugin() + " error!", error); - } - } - throw new RuntimeException(e.getMessage()); - } - } - -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/SQLExecutor.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/SQLExecutor.java deleted file mode 100644 index 8ddfccd8d2eafbca2c35aa843331059a7fc35be6..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/executor/SQLExecutor.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.executor; - -import com.alibaba.druid.pool.DruidPooledConnection; - -import com.alibaba.fastjson.JSONObject; -import com.gitee.freakchicken.dbapi.basic.domain.ApiSql; -import com.gitee.freakchicken.dbapi.basic.domain.DataSource; -import com.gitee.freakchicken.dbapi.basic.domain.SQLApiConfig; -import com.gitee.freakchicken.dbapi.basic.util.JdbcUtil; -import com.gitee.freakchicken.dbapi.basic.util.PoolManager; -import com.gitee.freakchicken.dbapi.basic.util.SqlEngineUtil; -import com.gitee.freakchicken.dbapi.basic.util.ThreadUtils; -import com.gitee.freakchicken.dbapi.basic.service.SQLApiConfigService; - -import com.gitee.freakchicken.dbapi.common.ApiConfig; -import com.gitee.freakchicken.dbapi.common.ResponseDto; -import com.gitee.freakchicken.dbapi.plugin.CachePlugin; -import com.gitee.freakchicken.dbapi.plugin.PluginManager; -import com.gitee.freakchicken.dbapi.plugin.TransformPlugin; -import com.gitee.freakchicken.dbapi.plugin.AlarmPlugin; -import com.github.freakchick.orange.SqlMeta; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -@Slf4j -@Component -public class SQLExecutor { - - @Autowired - SQLApiConfigService SQLApiConfigService; - - public ResponseDto execute(ApiConfig config, DataSource datasource, Map sqlParam, HttpServletRequest request) throws Exception { - SQLApiConfig SQLApiConfig = null; - try { - SQLApiConfig = SQLApiConfigService.getConfigByApiId(config.getId()); - - // 从缓存获取数据 - if (StringUtils.isNoneBlank(SQLApiConfig.getCachePlugin())) { - CachePlugin cachePlugin = PluginManager.getCachePlugin(SQLApiConfig.getCachePlugin()); - Object o = cachePlugin.get(config, sqlParam); - if (o != null) { - return ResponseDto.apiSuccess(o); // 如果缓存有数据直接返回 - } - } - - List sqlList = SQLApiConfig.getSqlList(); - - DruidPooledConnection connection = PoolManager.getPooledConnection(datasource); - boolean flag = SQLApiConfig.getOpenTrans() == 1 ? true : false; - // 执行sql - List dataList = executeSql(connection, sqlList, sqlParam, flag); - - // 执行数据转换 - for (int i = 0; i < sqlList.size(); i++) { - ApiSql apiSql = sqlList.get(i); - Object data = dataList.get(i); - // 如果此单条sql是查询类sql,并且配置了数据转换插件 - if (data instanceof Iterable && StringUtils.isNotBlank(apiSql.getTransformPlugin())) { - log.info("transform plugin execute"); - List sourceData = (List) (data); // 查询类sql的返回结果才可以这样强制转换,只有查询类sql才可以配置转换插件 - TransformPlugin transformPlugin = PluginManager.getTransformPlugin(apiSql.getTransformPlugin()); - Object resData = transformPlugin.transform(sourceData, apiSql.getTransformPluginParams()); - dataList.set(i, resData);// 重新设置值 - } - } - Object res = dataList; - // 如果只有单条sql,返回结果不是数组格式 - if (dataList.size() == 1) { - res = dataList.get(0); - } - ResponseDto dto = ResponseDto.apiSuccess(res); - // 设置缓存 - if (StringUtils.isNoneBlank(SQLApiConfig.getCachePlugin())) { - CachePlugin cachePlugin = PluginManager.getCachePlugin(SQLApiConfig.getCachePlugin()); - cachePlugin.set(config, sqlParam, dto.getData()); - } - return dto; - } catch (Exception e) { - if (StringUtils.isNotBlank(SQLApiConfig.getAlarmPlugin())) { - try { - String param = SQLApiConfig.getAlarmPluginParam(); - AlarmPlugin alarmPlugin = PluginManager.getAlarmPlugin(SQLApiConfig.getAlarmPlugin()); - ThreadUtils.submitAlarmTask(new Runnable() { - @Override - public void run() { - alarmPlugin.alarm(e, config, request, param); - } - }); - } catch (Exception error) { - log.error(SQLApiConfig.getAlarmPlugin() + " error!", error); - } - } - throw new RuntimeException(e.getMessage()); - } - } - - public List executeSql(Connection connection, List sqlList, Map sqlParam, - boolean flag) { - List dataList = new ArrayList<>(); - try { - if (flag) - connection.setAutoCommit(false); - else - connection.setAutoCommit(true); - for (ApiSql apiSql : sqlList) { - SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(apiSql.getSqlText(), sqlParam); - Object data = JdbcUtil.executeSql(connection, sqlMeta.getSql(), sqlMeta.getJdbcParamValues()); - dataList.add(data); - } - if (flag) - connection.commit(); - return dataList; - } catch (Exception e) { - try { - if (flag) - connection.rollback(); - } catch (SQLException ex) { - ex.printStackTrace(); - } - throw new RuntimeException(e); - } finally { - if (connection != null) { - try { - connection.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - } - } -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java index 602c2d76710a9e0c9a156999db10ca158829e6ed..7b599afa7afbc31fb5c05cc6629ff03f2b453146 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java @@ -10,6 +10,9 @@ import com.gitee.freakchicken.dbapi.basic.util.IPUtil; import com.gitee.freakchicken.dbapi.basic.util.ThreadUtils; import com.gitee.freakchicken.dbapi.common.ApiConfig; import com.gitee.freakchicken.dbapi.common.ResponseDto; +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -17,10 +20,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; - -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.UUID; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java index 7c9cbc5f157bee1069f2c9dbf1816a8a16f6e7e9..309471f88417285cddf6fb7a6ff37924b32f22e4 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java @@ -1,9 +1,9 @@ package com.gitee.freakchicken.dbapi.basic.filter; +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; -import javax.servlet.*; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Slf4j diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java index 0d8bc59c8a9fd9ae6c949c48bff00c793b031d68..ead3a874f975ba6b590dd80d10c7a0051400280c 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java @@ -4,15 +4,15 @@ import com.alibaba.fastjson.JSON; import com.gitee.freakchicken.dbapi.basic.service.IPService; import com.gitee.freakchicken.dbapi.basic.util.IPUtil; import com.gitee.freakchicken.dbapi.common.ResponseDto; +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/log/AccessLogKafkaReader.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/log/AccessLogKafkaReader.java index 95366f612a1b1b2a3d3d9bec1e314d2be2a9b17f..58cd86098890466451f9546eb031d6cfdd888b38 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/log/AccessLogKafkaReader.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/log/AccessLogKafkaReader.java @@ -3,6 +3,7 @@ package com.gitee.freakchicken.dbapi.basic.log; import com.alibaba.fastjson.JSON; import com.gitee.freakchicken.dbapi.basic.dao.AccessLogMapper; import com.gitee.freakchicken.dbapi.basic.domain.AccessLog; +import jakarta.annotation.PostConstruct; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; @@ -16,9 +17,11 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import javax.annotation.PostConstruct; +import java.time.Duration; +import java.time.temporal.ChronoUnit; import java.util.Collections; import java.util.Properties; +import java.util.concurrent.TimeUnit; @MapperScan("com.gitee.freakchicken.dbapi.basic.dao") @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) @@ -56,7 +59,7 @@ public class AccessLogKafkaReader { consumer.subscribe(Collections.singletonList(topic)); while (true) { - ConsumerRecords consumerRecords = consumer.poll(100); + ConsumerRecords consumerRecords = consumer.poll(Duration.of(100, ChronoUnit.MILLIS)); for (ConsumerRecord record : consumerRecords) { AccessLog accessLog = JSON.parseObject(record.value().toString(), AccessLog.class); diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java index b8c02079eaddc5b4ce2acd73038ee6d0c17585e6..1af43c5aaa268a2e6a892c2b726ec9779211573a 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java @@ -9,10 +9,10 @@ import com.gitee.freakchicken.dbapi.basic.dao.ApiSqlMapper; import com.gitee.freakchicken.dbapi.basic.dao.DataSourceMapper; import com.gitee.freakchicken.dbapi.basic.dao.AlarmMapper; import com.gitee.freakchicken.dbapi.basic.domain.ApiDto; -import com.gitee.freakchicken.dbapi.basic.domain.ApiSql; import com.gitee.freakchicken.dbapi.basic.util.UUIDUtil; import com.gitee.freakchicken.dbapi.common.ApiConfig; import com.gitee.freakchicken.dbapi.basic.domain.Alarm; +import com.gitee.freakchicken.dbapi.common.ApiSql; import com.gitee.freakchicken.dbapi.common.ResponseDto; import com.gitee.freakchicken.dbapi.plugin.CachePlugin; import com.gitee.freakchicken.dbapi.plugin.PluginManager; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiService.java index 3b9bdf1a6078ff421af982e7da5d20dbcef5c278..52229bed1b1108223ce5e4ba448ed425439f1022 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiService.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiService.java @@ -5,11 +5,11 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.gitee.freakchicken.dbapi.common.ApiConfig; +import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ESApiConfigService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ESApiConfigService.java deleted file mode 100644 index 6192ddd7c93cbab7d6712d66b731d7f76f238f23..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ESApiConfigService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.service; - -import org.springframework.stereotype.Service; - -import com.gitee.freakchicken.dbapi.basic.domain.ESApiConfig; - -@Service -public class ESApiConfigService { - - public ESApiConfig getConfigByApiId(String apiId){ - return null; - } -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/IPService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/IPService.java index 7385298f4d857344f821afb8a437b8164f8b5175..836e42183c1e650291220b42de2ea7c46965d0ec 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/IPService.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/IPService.java @@ -3,13 +3,13 @@ package com.gitee.freakchicken.dbapi.basic.service; import com.baomidou.dynamic.datasource.annotation.DS; import com.gitee.freakchicken.dbapi.basic.dao.IPMapper; import com.gitee.freakchicken.dbapi.basic.util.IPRuleCache; +import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.PostConstruct; import java.util.*; import java.util.stream.Collectors; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/SQLApiConfigService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/SQLApiConfigService.java deleted file mode 100644 index 8dcca21d8a23f6da04c13af850015f7fed3990b3..0000000000000000000000000000000000000000 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/SQLApiConfigService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gitee.freakchicken.dbapi.basic.service; - -import org.springframework.stereotype.Service; - -import com.gitee.freakchicken.dbapi.basic.domain.SQLApiConfig; - -@Service -public class SQLApiConfigService { - - public SQLApiConfig getConfigByApiId(String apiId){ - return null; - } - -} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java index d27d25c6ef6577efe2a7491db165a01be49ed442..79da0416a62d02a7e02a0fd171bf20df168f6b45 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java @@ -1,36 +1,45 @@ package com.gitee.freakchicken.dbapi.basic.servlet; +import com.alibaba.druid.pool.DruidPooledConnection; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.gitee.freakchicken.dbapi.basic.domain.DataSource; -import com.gitee.freakchicken.dbapi.basic.executor.SQLExecutor; -import com.gitee.freakchicken.dbapi.basic.executor.ESExecutor; import com.gitee.freakchicken.dbapi.basic.service.ApiConfigService; import com.gitee.freakchicken.dbapi.basic.service.ApiService; import com.gitee.freakchicken.dbapi.basic.service.DataSourceService; import com.gitee.freakchicken.dbapi.basic.service.IPService; - +import com.gitee.freakchicken.dbapi.basic.util.JdbcUtil; +import com.gitee.freakchicken.dbapi.basic.util.PoolManager; +import com.gitee.freakchicken.dbapi.basic.util.SqlEngineUtil; +import com.gitee.freakchicken.dbapi.basic.util.ThreadUtils; import com.gitee.freakchicken.dbapi.common.ApiConfig; - +import com.gitee.freakchicken.dbapi.common.ApiSql; import com.gitee.freakchicken.dbapi.common.ResponseDto; - +import com.gitee.freakchicken.dbapi.plugin.AlarmPlugin; +import com.gitee.freakchicken.dbapi.plugin.CachePlugin; +import com.gitee.freakchicken.dbapi.plugin.PluginManager; +import com.gitee.freakchicken.dbapi.plugin.TransformPlugin; +import com.github.freakchick.orange.SqlMeta; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; - +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; - +import java.nio.charset.StandardCharsets; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import java.util.Map; @Slf4j @@ -50,12 +59,6 @@ public class APIServlet extends HttpServlet { @Value("${dbapi.api.context}") String apiContext; - @Autowired - SQLExecutor SQLExecutor; - - @Autowired - ESExecutor ESExecutor; - @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { log.debug("servlet execute"); @@ -70,6 +73,7 @@ public class APIServlet extends HttpServlet { } catch (Exception e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + assert out != null; out.append(JSON.toJSONString(ResponseDto.fail(e.toString()))); log.error(e.toString(), e); } finally { @@ -86,7 +90,7 @@ public class APIServlet extends HttpServlet { public ResponseDto process(String path, HttpServletRequest request, HttpServletResponse response) { - // // 校验接口是否存在 +// // 校验接口是否存在 ApiConfig config = apiConfigService.getConfig(path); if (config == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); @@ -102,30 +106,107 @@ public class APIServlet extends HttpServlet { Map sqlParam = getParams(request, config); - ResponseDto res = null; - if ("es".equals(datasource.getType())) { - res = ESExecutor.execute(config, datasource, sqlParam, request); - } else { - res = SQLExecutor.execute(config, datasource, sqlParam, request); + //从缓存获取数据 + if (StringUtils.isNoneBlank(config.getCachePlugin())) { + CachePlugin cachePlugin = PluginManager.getCachePlugin(config.getCachePlugin()); + Object o = cachePlugin.get(config, sqlParam); + if (o != null) { + return ResponseDto.apiSuccess(o); //如果缓存有数据直接返回 + } } - return res; - + List sqlList = config.getSqlList(); + DruidPooledConnection connection = PoolManager.getPooledConnection(datasource); + //是否开启事务 + boolean flag = config.getOpenTrans() == 1; + //执行sql + List dataList = executeSql(connection, sqlList, sqlParam, flag); + + //执行数据转换 + for (int i = 0; i < sqlList.size(); i++) { + ApiSql apiSql = sqlList.get(i); + Object data = dataList.get(i); + //如果此单条sql是查询类sql,并且配置了数据转换插件 + if (data instanceof Iterable && StringUtils.isNotBlank(apiSql.getTransformPlugin())) { + log.info("transform plugin execute"); + List sourceData = (List) data; //查询类sql的返回结果才可以这样强制转换,只有查询类sql才可以配置转换插件 + TransformPlugin transformPlugin = PluginManager.getTransformPlugin(apiSql.getTransformPlugin()); + Object resData = transformPlugin.transform(sourceData, apiSql.getTransformPluginParams()); + dataList.set(i, resData);//重新设置值 + } + } + Object res = dataList; + //如果只有单条sql,返回结果不是数组格式 + if (dataList.size() == 1) { + res = dataList.get(0); + } + ResponseDto dto = ResponseDto.apiSuccess(res); + //设置缓存 + if (StringUtils.isNoneBlank(config.getCachePlugin())) { + CachePlugin cachePlugin = PluginManager.getCachePlugin(config.getCachePlugin()); + cachePlugin.set(config, sqlParam, dto.getData()); + } + return dto; } catch (Exception e) { - + //如果API配置了告警 + if (StringUtils.isNotBlank(config.getAlarmPlugin())) { + try { + log.info(config.getAlarmPlugin()); + AlarmPlugin alarmPlugin = PluginManager.getAlarmPlugin(config.getAlarmPlugin()); + ThreadUtils.submitAlarmTask(new Runnable() { + @Override + public void run() { + alarmPlugin.alarm(e, config, request, config.getAlarmPluginParam()); + } + }); + } catch (Exception error) { + log.error(config.getAlarmPlugin() + " error!", error); + } + } throw new RuntimeException(e.getMessage()); } } + public List executeSql(Connection connection, List sqlList, Map sqlParam, boolean flag) { + List dataList = new ArrayList<>(); + try { + connection.setAutoCommit(!flag); + for (ApiSql apiSql : sqlList) { + SqlMeta sqlMeta = SqlEngineUtil.getEngine().parse(apiSql.getSqlText(), sqlParam); + Object data = JdbcUtil.executeSql(connection, sqlMeta.getSql(), sqlMeta.getJdbcParamValues()); + dataList.add(data); + } + if (flag) + connection.commit(); + return dataList; + } catch (Exception e) { + try { + if (flag) + connection.rollback(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + throw new RuntimeException(e); + } finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + } + private Map getParams(HttpServletRequest request, ApiConfig apiConfig) { - /** + /* * Content-Type格式说明: * {@see Content-Type} * type/subtype(;parameter)? type */ String unParseContentType = request.getContentType(); - // 如果是浏览器get请求过来,取出来的contentType是null + //如果是浏览器get请求过来,取出来的contentType是null if (unParseContentType == null) { unParseContentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE; } @@ -135,13 +216,14 @@ public class APIServlet extends HttpServlet { String contentType = contentTypeArr[0]; Map params = null; - // 如果是application/json请求,不管接口规定的content-type是什么,接口都可以访问,且请求参数都以json body 为准 + //如果是application/json请求,不管接口规定的content-type是什么,接口都可以访问,且请求参数都以json body 为准 if (contentType.equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)) { JSONObject jo = getHttpJsonBody(request); + assert jo != null; params = JSONObject.parseObject(jo.toJSONString(), new TypeReference>() { }); } - // 如果是application/x-www-form-urlencoded请求,先判断接口规定的content-type是不是确实是application/x-www-form-urlencoded + //如果是application/x-www-form-urlencoded请求,先判断接口规定的content-type是不是确实是application/x-www-form-urlencoded else if (contentType.equalsIgnoreCase(MediaType.APPLICATION_FORM_URLENCODED_VALUE)) { if (MediaType.APPLICATION_FORM_URLENCODED_VALUE.equalsIgnoreCase(apiConfig.getContentType())) { params = apiService.getSqlParam(request, apiConfig); @@ -157,7 +239,7 @@ public class APIServlet extends HttpServlet { private JSONObject getHttpJsonBody(HttpServletRequest request) { try { - InputStreamReader in = new InputStreamReader(request.getInputStream(), "utf-8"); + InputStreamReader in = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8); BufferedReader br = new BufferedReader(in); StringBuilder sb = new StringBuilder(); String line = null; @@ -165,8 +247,7 @@ public class APIServlet extends HttpServlet { sb.append(line); } br.close(); - JSONObject jsonObject = JSON.parseObject(sb.toString()); - return jsonObject; + return JSON.parseObject(sb.toString()); } catch (Exception e) { log.error(e.getMessage(), e); } finally { diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/TokenServlet.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/TokenServlet.java index 89887f535fe21757d2a5d379f792a27f3aad1118..2c0b95ce71217be7e117b75c597136b96c275052 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/TokenServlet.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/TokenServlet.java @@ -3,13 +3,13 @@ package com.gitee.freakchicken.dbapi.basic.servlet; import com.alibaba.fastjson.JSON; import com.gitee.freakchicken.dbapi.basic.domain.AppToken; import com.gitee.freakchicken.dbapi.basic.service.AppTokenService; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; @Slf4j diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/IPUtil.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/IPUtil.java index 9d896003a49bdaaefac6571dbb5762cf67018672..9e9f8be904e2aabb20b95ed7775dd45c79e22be8 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/IPUtil.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/IPUtil.java @@ -1,6 +1,7 @@ package com.gitee.freakchicken.dbapi.basic.util; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; + import java.io.IOException; import java.net.Inet4Address; import java.net.InetAddress; diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/MD5.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/MD5.java index ca1566413a960572c06311ec5a69137c9698bfd5..6bfde36b65ec2ef60f93634ccccfba897952c617 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/MD5.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/util/MD5.java @@ -1,7 +1,7 @@ package com.gitee.freakchicken.dbapi.basic.util; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.digest.DigestUtils; -import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; @@ -20,10 +20,8 @@ public class MD5 { public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { //确定计算方法 MessageDigest md5 = MessageDigest.getInstance("MD5"); - BASE64Encoder base64en = new BASE64Encoder(); //加密后的字符串 - String newstr = base64en.encode(md5.digest(str.getBytes("utf-8"))); - return newstr; + return Base64.encodeBase64String(md5.digest(str.getBytes("utf-8"))); } /** diff --git a/dbapi-service/src/main/resources/application.properties b/dbapi-service/src/main/resources/application.properties index 552a86e803856b9acbdaa2d9ecd45e4482628241..3c479c50912b8a4f01775eea0c34217b02203b93 100644 --- a/dbapi-service/src/main/resources/application.properties +++ b/dbapi-service/src/main/resources/application.properties @@ -5,8 +5,8 @@ server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true server.tomcat.uri-encoding=UTF-8 -spring.cache.type=ehcache -spring.cache.ehcache.config=classpath:ehcache.xml +spring.cache.redis.time-to-live=180000 +spring.cache.type=redis spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 @@ -37,28 +37,28 @@ spring.datasource.dynamic.primary=meta-db dbapi.api.context=api # metadata database address -spring.datasource.dynamic.datasource.meta-db.driver-class-name=org.sqlite.JDBC -spring.datasource.dynamic.datasource.meta-db.url=jdbc:sqlite::resource:sqlite.db -spring.datasource.dynamic.datasource.meta-db.username= -spring.datasource.dynamic.datasource.meta-db.password= +#spring.datasource.dynamic.datasource.meta-db.driver-class-name=org.sqlite.JDBC +#spring.datasource.dynamic.datasource.meta-db.url=jdbc:sqlite::resource:sqlite.db +#spring.datasource.dynamic.datasource.meta-db.username= +#spring.datasource.dynamic.datasource.meta-db.password= # metadata database address -# spring.datasource.dynamic.datasource.meta-db.driver-class-name=com.mysql.cj.jdbc.Driver -# spring.datasource.dynamic.datasource.meta-db.url=jdbc:mysql://127.0.0.1:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 -# spring.datasource.dynamic.datasource.meta-db.username=root -# spring.datasource.dynamic.datasource.meta-db.password=root +spring.datasource.dynamic.datasource.meta-db.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.dynamic.datasource.meta-db.url=jdbc:mysql://124.222.180.87:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 +spring.datasource.dynamic.datasource.meta-db.username=root +spring.datasource.dynamic.datasource.meta-db.password=Angel5540,. # the writer to write access log to database, value can be null/db/kafka # "db" means dbapi writes access log to database directly # "kafka" means dbapi writes access log to kafka, you need to collect log from kafka to database yourself # "null" means dbapi only writes access log to disk file(logs/dbapi-access.log), you need to collect log from disk to database yourself -access.log.writer=null +access.log.writer=db # access log database(recommend clickhouse) address spring.datasource.dynamic.datasource.access-log-db.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.dynamic.datasource.access-log-db.url=jdbc:mysql://192.168.xx.xx:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 -spring.datasource.dynamic.datasource.access-log-db.username= -spring.datasource.dynamic.datasource.access-log-db.password= +spring.datasource.dynamic.datasource.access-log-db.url=jdbc:mysql://124.222.180.87:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 +spring.datasource.dynamic.datasource.access-log-db.username=root +spring.datasource.dynamic.datasource.access-log-db.password=Angel5540,. spring.datasource.dynamic.datasource.access-log-db.druid.break-after-acquire-failure=true # kafka address, needed if access.log.writer=kafka @@ -74,9 +74,10 @@ spring.cloud.nacos.discovery.password=nacos spring.cloud.nacos.discovery.namespace=public # redis address, needed if cluster mode -spring.redis.host=localhost -spring.redis.port=6379 -spring.redis.database=0 -spring.redis.password= +spring.data.redis.host=124.222.180.87 +spring.data.redis.port=6379 +spring.data.redis.password=Angel5540,. +spring.data.redis.database=0 + diff --git a/dbapi-service/src/main/resources/application.properties.back b/dbapi-service/src/main/resources/application.properties.back new file mode 100644 index 0000000000000000000000000000000000000000..0c18dad170d08f379c4bbce98000612f0d640424 --- /dev/null +++ b/dbapi-service/src/main/resources/application.properties.back @@ -0,0 +1,82 @@ +version=3.2.1 + +server.servlet.encoding.force=true +server.servlet.encoding.charset=UTF-8 +server.servlet.encoding.enabled=true +server.tomcat.uri-encoding=UTF-8 + +spring.cache.type=ehcache +spring.cache.ehcache.config=classpath:ehcache.xml +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone=GMT+8 + +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource + +#logging.level.com.gitee.freakchicken.dbapi.gateway.filter.GatewayIPFilter=debug +#logging.level.com.gitee.freakchicken.dbapi.basic.filter=debug +#logging.level.com.gitee.freakchicken.dbapi.basic.servlet=debug + +# show mybatis sql +#logging.level.com.gitee.freakchicken.dbapi.basic.dao=debug +#show api Sql +#logging.level.com.gitee.freakchicken.dbapi.basic.util.JdbcUtil=debug +# plugin log level +#logging.level.com.gitee.freakchicken.dbapi.plugin.TransformPlugin=DEBUG +#logging.level.com.gitee.freakchicken.dbapi.plugin.CachePlugin=DEBUG + +# name of role in cluster mode +dbapi.cluster.api.name=DBApi-cluster-apiServer +dbapi.cluster.gateway.name=DBApi-cluster-gateway +dbapi.cluster.manager.name=DBApi-cluster-manager + +spring.datasource.dynamic.druid.filters=stat,slf4j +spring.datasource.dynamic.primary=meta-db + +#################################### please configure properties below ##################################### +# api context +dbapi.api.context=api + +# metadata database address +#spring.datasource.dynamic.datasource.meta-db.driver-class-name=org.sqlite.JDBC +#spring.datasource.dynamic.datasource.meta-db.url=jdbc:sqlite::resource:sqlite.db +#spring.datasource.dynamic.datasource.meta-db.username= +#spring.datasource.dynamic.datasource.meta-db.password= + +# metadata database address + spring.datasource.dynamic.datasource.meta-db.driver-class-name=com.mysql.cj.jdbc.Driver + spring.datasource.dynamic.datasource.meta-db.url=jdbc:mysql://124.222.180.87:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 + spring.datasource.dynamic.datasource.meta-db.username=root + spring.datasource.dynamic.datasource.meta-db.password=Angel5540,. + +# the writer to write access log to database, value can be null/db/kafka +# "db" means dbapi writes access log to database directly +# "kafka" means dbapi writes access log to kafka, you need to collect log from kafka to database yourself +# "null" means dbapi only writes access log to disk file(logs/dbapi-access.log), you need to collect log from disk to database yourself +access.log.writer=db + +# access log database(recommend clickhouse) address +spring.datasource.dynamic.datasource.access-log-db.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.dynamic.datasource.access-log-db.url=jdbc:mysql://124.222.180.87:3306/dbapi?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 +spring.datasource.dynamic.datasource.access-log-db.username=root +spring.datasource.dynamic.datasource.access-log-db.password=Angel5540,. +spring.datasource.dynamic.datasource.access-log-db.druid.break-after-acquire-failure=true + +# kafka address, needed if access.log.writer=kafka +access.log.kafka.topic=dbapi_access_log +spring.kafka.bootstrap-servers=127.0.0.1:9092 + +############################## if cluster, please configure properties below ############################## + +# nacos address, needed if cluster mode +spring.cloud.nacos.server-addr=127.0.0.1:8848 +spring.cloud.nacos.discovery.username=nacos +spring.cloud.nacos.discovery.password=nacos +spring.cloud.nacos.discovery.namespace=public + +# redis address, needed if cluster mode +spring.redis.host=124.222.180.87 +spring.redis.port=6379 +spring.redis.database=0 +spring.redis.password=Angel5540,. + + diff --git a/dbapi-standalone/pom.xml b/dbapi-standalone/pom.xml index 4d085acdfe80ccf130f240a7022c5b4bf0f83c67..1cdafbe2f1b6be98eac112e6716504c68d6016c3 100644 --- a/dbapi-standalone/pom.xml +++ b/dbapi-standalone/pom.xml @@ -5,7 +5,7 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 4.0.0 @@ -13,8 +13,8 @@ 包含controller html; servlet; filter - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 @@ -27,12 +27,6 @@ com.gitee.freakchicken.dbapi dbapi-controller - - - - - - @@ -48,8 +42,9 @@ + org.apache.maven.plugins maven-clean-plugin - 3.1.0 + 3.2.0 true @@ -67,6 +62,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.3.0 **/*.xml diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java index 5565098ccb6ccfaf3f83cf90ddc3f75b5ae618fa..06db7bee48fc4af482e967615fa503d3abb89175 100644 --- a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java @@ -17,6 +17,12 @@ import org.springframework.scheduling.annotation.EnableAsync; public class DBApiStandalone { public static void main(String[] args) { System.setProperty("spring.profiles.active","standalone"); - SpringApplication.run(DBApiStandalone.class, args); + + try { + SpringApplication.run(DBApiStandalone.class, args); + }catch(Throwable e) { + e.printStackTrace(); + } + } } diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java index 542d12fa75efa92d999b88cb8f482e31f9c6c480..dc3e23fac3b6b4e48d659e5b227674a71a995b81 100644 --- a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java @@ -3,6 +3,7 @@ package com.gitee.freakchicken.dbapi.conf; import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; import com.gitee.freakchicken.dbapi.basic.filter.ApiHeaderFilter; import com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter; +import jakarta.servlet.Filter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -30,11 +31,11 @@ public class FilterConfig { @Bean - public FilterRegistrationBean apiHeaderFilter() { + public FilterRegistrationBean apiHeaderFilter() { // issues/I51LOI int apiHeaderFilterOrder = 1; String format = String.format("/%s/*", apiContext); - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new ApiHeaderFilter()); registrationBean.addUrlPatterns(format); registrationBean.setOrder(apiHeaderFilterOrder); @@ -44,10 +45,10 @@ public class FilterConfig { } @Bean - public FilterRegistrationBean ipFilter() { + public FilterRegistrationBean ipFilter() { int ipfilterOrder = 2; String format = String.format("/%s/*", apiContext); - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(apiIPFilter); registrationBean.addUrlPatterns(format); registrationBean.setOrder(ipfilterOrder); @@ -57,10 +58,10 @@ public class FilterConfig { } @Bean - public FilterRegistrationBean authFilter() { + public FilterRegistrationBean authFilter() { int authFilterOrder = 3; String format = String.format("/%s/*", apiContext); - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(apiAuthFilter); registrationBean.addUrlPatterns(format); registrationBean.setOrder(authFilterOrder); diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java index 43f4d03b03bda891d6090d92f7316b5a2522e65e..54544f9fdc3eec0d937ab717d4e08abc8c72fcc9 100644 --- a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java @@ -2,8 +2,8 @@ package com.gitee.freakchicken.dbapi.conf; import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; import com.gitee.freakchicken.dbapi.basic.servlet.TokenServlet; +import jakarta.servlet.http.HttpServlet; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; @@ -21,24 +21,27 @@ public class ServletConfig { @Value("${dbapi.api.context}") private String apiContext; - @Autowired - private APIServlet apiServlet; + private final APIServlet apiServlet; - @Autowired - private TokenServlet tokenServlet; + private final TokenServlet tokenServlet; + + public ServletConfig(APIServlet apiServlet, TokenServlet tokenServlet) { + this.apiServlet = apiServlet; + this.tokenServlet = tokenServlet; + } @Bean - public ServletRegistrationBean getServletRegistrationBean() { + public ServletRegistrationBean getServletRegistrationBean() { String format = String.format("/%s/*", apiContext); - ServletRegistrationBean bean = new ServletRegistrationBean(apiServlet); + ServletRegistrationBean bean = new ServletRegistrationBean<>(apiServlet); bean.addUrlMappings(format); log.info("regist APIServlet servelet for {} urlMappings",format); return bean; } @Bean - public ServletRegistrationBean tokenServletRegistrationBean() { - ServletRegistrationBean bean = new ServletRegistrationBean(tokenServlet); + public ServletRegistrationBean tokenServletRegistrationBean() { + ServletRegistrationBean bean = new ServletRegistrationBean<>(tokenServlet); bean.addUrlMappings("/token/generate"); log.info("regist tokenServlet servelet "); return bean; diff --git a/dbapi-ui/favicon.ico b/dbapi-ui/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..256c516c70e7fce9aad1763ef589d3a14da5e1cc Binary files /dev/null and b/dbapi-ui/favicon.ico differ diff --git a/dbapi-ui/index.html b/dbapi-ui/index.html new file mode 100644 index 0000000000000000000000000000000000000000..d5b55bd0c3e3e1b8f2b82fa6ec929f8bd79e1bfb --- /dev/null +++ b/dbapi-ui/index.html @@ -0,0 +1 @@ +dbapi
\ No newline at end of file diff --git a/dbapi-ui/pom.xml b/dbapi-ui/pom.xml index 44af9aad826b60f48fc8b60d31731d72fb3dfb3a..5c7188f1eb0a18d3e42bf4cd08731aa794c01b76 100644 --- a/dbapi-ui/pom.xml +++ b/dbapi-ui/pom.xml @@ -5,15 +5,15 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 4.0.0 dbapi-ui - 8 - 8 + 17 + 17 true true diff --git a/pom.xml b/pom.xml index 9f8d41211b343314203fc89d0c386dcffb252429..99f9936bab5573aefd5b3e35c4ff5bd3fcf83b23 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.gitee.freakchicken.dbapi dbapi - 3.3.0 + 3.2.1 DBApi build http api from sql without other code @@ -15,12 +15,15 @@ pom - 8 - 8 + 17 + 17 UTF-8 UTF-8 UTF-8 freakchicken + 3.0.3 + 4.0.4 + 1.4.7 @@ -28,7 +31,7 @@ release - dbapi-ui + dbapi-common dbapi-plugin dbapi-service @@ -50,63 +53,6 @@ dbapi-common dbapi-plugin - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - package - - - date - - - - - - attach-javadocs - package - - jar - - - none - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.0 - - - sign-artifacts - verify - - sign - - - - - - - @@ -118,16 +64,34 @@ org.springframework.boot spring-boot-dependencies - 2.3.2.RELEASE + ${spring-boot.version} pom import - - + + org.springframework.boot + spring-boot-starter-cache + ${spring-boot.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + 2022.0.0.0-RC1 + + + org.springframework.cloud + spring-cloud-starter-gateway + ${spring-cloud.version} + org.springframework.cloud spring-cloud-dependencies - Hoxton.SR9 + 2022.0.2 pom import @@ -135,7 +99,7 @@ com.alibaba.cloud spring-cloud-alibaba-dependencies - 2.2.6.RELEASE + 2022.0.0.0-RC1 pom import @@ -182,24 +146,147 @@ dbapi-cluster-apiServer ${project.version}
+ + com.alibaba + fastjson + 1.2.67_noneautotype2 + compile + + + + com.baomidou + mybatis-plus-annotation + 3.5.3.1 + compile + + + + mysql + mysql-connector-java + 8.0.28 + + + org.postgresql + postgresql + 42.2.27 + + + com.microsoft.sqlserver + mssql-jdbc + 12.2.0.jre8 + + + ru.yandex.clickhouse + clickhouse-jdbc + 0.2.4 + + + org.projectlombok + lombok + 1.18.26 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.3.1 + + + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-access + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.apache.commons + commons-email + 1.5 + + + commons-io + commons-io + 2.7 + + + com.alibaba + druid + 1.1.9 + + + + com.baomidou + dynamic-datasource-spring-boot-starter + 3.6.1 + + + org.xerial + sqlite-jdbc + 3.41.2.1 + + + + net.sf.ehcache + ehcache + 2.10.6 + + + slf4j-api + org.slf4j + + + + + + io.github.freakchick + orange + 1.0 + + + org.apache.tomcat.embed + tomcat-embed-core + 10.1.5 + + + org.springframework.kafka + spring-kafka + 3.0.6 + - + org.apache.maven.plugins maven-compiler-plugin + 3.11.0 - 1.8 - 1.8 + 17 + 17 utf-8 + org.apache.maven.plugins maven-clean-plugin - 3.1.0 + 3.2.0 true @@ -260,6 +347,4 @@ https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - \ No newline at end of file