mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2026-04-27 12:39:36 +08:00
update nacos 2.3.2 => 2.4.3
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
<spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version>
|
<spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version>
|
||||||
<sentinel.version>1.8.8</sentinel.version>
|
<sentinel.version>1.8.8</sentinel.version>
|
||||||
<seata.version>1.7.1</seata.version>
|
<seata.version>1.7.1</seata.version>
|
||||||
<nacos.client.version>2.3.3</nacos.client.version>
|
<nacos.client.version>2.4.3</nacos.client.version>
|
||||||
<dubbo.version>3.2.14</dubbo.version>
|
<dubbo.version>3.2.14</dubbo.version>
|
||||||
<spring.context.support.version>1.0.11</spring.context.support.version>
|
<spring.context.support.version>1.0.11</spring.context.support.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<nacos.version>2.3.2</nacos.version>
|
<nacos.version>2.4.3</nacos.version>
|
||||||
|
<SnakeYaml.version>2.0</SnakeYaml.version>
|
||||||
<!-- 需要与 Nacos 内置 Boot 版本保持一致 -->
|
<!-- 需要与 Nacos 内置 Boot 版本保持一致 -->
|
||||||
<spring-boot.version>2.7.18</spring-boot.version>
|
<spring-boot.version>2.7.18</spring-boot.version>
|
||||||
<spring-boot-admin.version>2.7.11</spring-boot-admin.version>
|
<spring-boot-admin.version>2.7.11</spring-boot-admin.version>
|
||||||
@@ -253,10 +254,6 @@
|
|||||||
<artifactId>jjwt-jackson</artifactId>
|
<artifactId>jjwt-jackson</artifactId>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.javatuples</groupId>
|
|
||||||
<artifactId>javatuples</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.code.gson</groupId>
|
<groupId>com.google.code.gson</groupId>
|
||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
@@ -295,6 +292,13 @@
|
|||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>jul-to-slf4j</artifactId>
|
<artifactId>jul-to-slf4j</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.yaml</groupId>
|
||||||
|
<artifactId>snakeyaml</artifactId>
|
||||||
|
<version>${SnakeYaml.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-security</artifactId>
|
<artifactId>spring-boot-starter-security</artifactId>
|
||||||
|
|||||||
@@ -22,20 +22,14 @@ import com.alibaba.nacos.common.model.RestResult;
|
|||||||
import com.alibaba.nacos.common.model.RestResultUtils;
|
import com.alibaba.nacos.common.model.RestResultUtils;
|
||||||
import com.alibaba.nacos.common.utils.StringUtils;
|
import com.alibaba.nacos.common.utils.StringUtils;
|
||||||
import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
|
import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
|
||||||
import com.alibaba.nacos.core.namespace.repository.NamespacePersistService;
|
|
||||||
import com.alibaba.nacos.core.namespace.model.Namespace;
|
import com.alibaba.nacos.core.namespace.model.Namespace;
|
||||||
|
import com.alibaba.nacos.core.namespace.repository.NamespacePersistService;
|
||||||
import com.alibaba.nacos.core.paramcheck.ExtractorManager;
|
import com.alibaba.nacos.core.paramcheck.ExtractorManager;
|
||||||
import com.alibaba.nacos.core.service.NamespaceOperationService;
|
import com.alibaba.nacos.core.service.NamespaceOperationService;
|
||||||
import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
|
import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -94,8 +88,8 @@ public class NamespaceController {
|
|||||||
@PostMapping
|
@PostMapping
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.WRITE)
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.WRITE)
|
||||||
public Boolean createNamespace(@RequestParam("customNamespaceId") String namespaceId,
|
public Boolean createNamespace(@RequestParam("customNamespaceId") String namespaceId,
|
||||||
@RequestParam("namespaceName") String namespaceName,
|
@RequestParam("namespaceName") String namespaceName,
|
||||||
@RequestParam(value = "namespaceDesc", required = false) String namespaceDesc) {
|
@RequestParam(value = "namespaceDesc", required = false) String namespaceDesc) {
|
||||||
if (StringUtils.isBlank(namespaceId)) {
|
if (StringUtils.isBlank(namespaceId)) {
|
||||||
namespaceId = UUID.randomUUID().toString();
|
namespaceId = UUID.randomUUID().toString();
|
||||||
} else {
|
} else {
|
||||||
@@ -147,8 +141,8 @@ public class NamespaceController {
|
|||||||
@PutMapping
|
@PutMapping
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.WRITE)
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.WRITE)
|
||||||
public Boolean editNamespace(@RequestParam("namespace") String namespace,
|
public Boolean editNamespace(@RequestParam("namespace") String namespace,
|
||||||
@RequestParam("namespaceShowName") String namespaceShowName,
|
@RequestParam("namespaceShowName") String namespaceShowName,
|
||||||
@RequestParam(value = "namespaceDesc", required = false) String namespaceDesc) {
|
@RequestParam(value = "namespaceDesc", required = false) String namespaceDesc) {
|
||||||
// contains illegal chars
|
// contains illegal chars
|
||||||
if (!namespaceNameCheckPattern.matcher(namespaceShowName).matches()) {
|
if (!namespaceNameCheckPattern.matcher(namespaceShowName).matches()) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -34,9 +34,7 @@ import java.io.File;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static com.alibaba.nacos.common.utils.StringUtils.FOLDER_SEPARATOR;
|
import static com.alibaba.nacos.common.utils.StringUtils.*;
|
||||||
import static com.alibaba.nacos.common.utils.StringUtils.TOP_PATH;
|
|
||||||
import static com.alibaba.nacos.common.utils.StringUtils.WINDOWS_FOLDER_SEPARATOR;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server state controller.
|
* Server state controller.
|
||||||
@@ -68,7 +66,7 @@ public class ServerStateController {
|
|||||||
|
|
||||||
@GetMapping("/announcement")
|
@GetMapping("/announcement")
|
||||||
public RestResult<String> getAnnouncement(
|
public RestResult<String> getAnnouncement(
|
||||||
@RequestParam(required = false, name = "language", defaultValue = "zh-CN") String language) {
|
@RequestParam(required = false, name = "language", defaultValue = "zh-CN") String language) {
|
||||||
String file = ANNOUNCEMENT_FILE.substring(0, ANNOUNCEMENT_FILE.length() - 5) + "_" + language + ".conf";
|
String file = ANNOUNCEMENT_FILE.substring(0, ANNOUNCEMENT_FILE.length() - 5) + "_" + language + ".conf";
|
||||||
if (file.contains(TOP_PATH) || file.contains(FOLDER_SEPARATOR) || file.contains(WINDOWS_FOLDER_SEPARATOR)) {
|
if (file.contains(TOP_PATH) || file.contains(FOLDER_SEPARATOR) || file.contains(WINDOWS_FOLDER_SEPARATOR)) {
|
||||||
throw new IllegalArgumentException("Invalid filename");
|
throw new IllegalArgumentException("Invalid filename");
|
||||||
|
|||||||
@@ -33,13 +33,7 @@ import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
|
|||||||
import com.alibaba.nacos.plugin.auth.constant.SignType;
|
import com.alibaba.nacos.plugin.auth.constant.SignType;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -90,7 +84,7 @@ public class NamespaceControllerV2 {
|
|||||||
*/
|
*/
|
||||||
@GetMapping()
|
@GetMapping()
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
||||||
+ "namespaces", action = ActionTypes.READ, signType = SignType.CONSOLE)
|
+ "namespaces", action = ActionTypes.READ, signType = SignType.CONSOLE)
|
||||||
public Result<Namespace> getNamespace(@RequestParam("namespaceId") String namespaceId) throws NacosException {
|
public Result<Namespace> getNamespace(@RequestParam("namespaceId") String namespaceId) throws NacosException {
|
||||||
return Result.success(namespaceOperationService.getNamespace(namespaceId));
|
return Result.success(namespaceOperationService.getNamespace(namespaceId));
|
||||||
}
|
}
|
||||||
@@ -103,7 +97,7 @@ public class NamespaceControllerV2 {
|
|||||||
*/
|
*/
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
||||||
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
||||||
public Result<Boolean> createNamespace(NamespaceForm namespaceForm) throws NacosException {
|
public Result<Boolean> createNamespace(NamespaceForm namespaceForm) throws NacosException {
|
||||||
|
|
||||||
namespaceForm.validate();
|
namespaceForm.validate();
|
||||||
@@ -118,16 +112,16 @@ public class NamespaceControllerV2 {
|
|||||||
namespaceId = namespaceId.trim();
|
namespaceId = namespaceId.trim();
|
||||||
if (!namespaceIdCheckPattern.matcher(namespaceId).matches()) {
|
if (!namespaceIdCheckPattern.matcher(namespaceId).matches()) {
|
||||||
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
||||||
"namespaceId [" + namespaceId + "] mismatch the pattern");
|
"namespaceId [" + namespaceId + "] mismatch the pattern");
|
||||||
}
|
}
|
||||||
if (namespaceId.length() > NAMESPACE_ID_MAX_LENGTH) {
|
if (namespaceId.length() > NAMESPACE_ID_MAX_LENGTH) {
|
||||||
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
||||||
"too long namespaceId, over " + NAMESPACE_ID_MAX_LENGTH);
|
"too long namespaceId, over " + NAMESPACE_ID_MAX_LENGTH);
|
||||||
}
|
}
|
||||||
// check unique
|
// check unique
|
||||||
if (namespacePersistService.tenantInfoCountByTenantId(namespaceId) > 0) {
|
if (namespacePersistService.tenantInfoCountByTenantId(namespaceId) > 0) {
|
||||||
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
|
||||||
"the namespaceId is existed, namespaceId: " + namespaceForm.getNamespaceId());
|
"the namespaceId is existed, namespaceId: " + namespaceForm.getNamespaceId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// contains illegal chars
|
// contains illegal chars
|
||||||
@@ -146,7 +140,7 @@ public class NamespaceControllerV2 {
|
|||||||
*/
|
*/
|
||||||
@PutMapping
|
@PutMapping
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
||||||
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
||||||
public Result<Boolean> editNamespace(NamespaceForm namespaceForm) throws NacosException {
|
public Result<Boolean> editNamespace(NamespaceForm namespaceForm) throws NacosException {
|
||||||
namespaceForm.validate();
|
namespaceForm.validate();
|
||||||
// contains illegal chars
|
// contains illegal chars
|
||||||
@@ -155,8 +149,8 @@ public class NamespaceControllerV2 {
|
|||||||
"namespaceName [" + namespaceForm.getNamespaceName() + "] contains illegal char");
|
"namespaceName [" + namespaceForm.getNamespaceName() + "] contains illegal char");
|
||||||
}
|
}
|
||||||
return Result.success(namespaceOperationService
|
return Result.success(namespaceOperationService
|
||||||
.editNamespace(namespaceForm.getNamespaceId(), namespaceForm.getNamespaceName(),
|
.editNamespace(namespaceForm.getNamespaceId(), namespaceForm.getNamespaceName(),
|
||||||
namespaceForm.getNamespaceDesc()));
|
namespaceForm.getNamespaceDesc()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,7 +161,7 @@ public class NamespaceControllerV2 {
|
|||||||
*/
|
*/
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
|
||||||
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
+ "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
|
||||||
public Result<Boolean> deleteNamespace(@RequestParam("namespaceId") String namespaceId) {
|
public Result<Boolean> deleteNamespace(@RequestParam("namespaceId") String namespaceId) {
|
||||||
return Result.success(namespaceOperationService.removeNamespace(namespaceId));
|
return Result.success(namespaceOperationService.removeNamespace(namespaceId));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,10 @@
|
|||||||
package com.alibaba.nacos.console.exception;
|
package com.alibaba.nacos.console.exception;
|
||||||
|
|
||||||
import com.alibaba.nacos.api.exception.runtime.NacosRuntimeException;
|
import com.alibaba.nacos.api.exception.runtime.NacosRuntimeException;
|
||||||
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
|
||||||
import com.alibaba.nacos.common.model.RestResultUtils;
|
import com.alibaba.nacos.common.model.RestResultUtils;
|
||||||
import com.alibaba.nacos.common.utils.ExceptionUtil;
|
import com.alibaba.nacos.common.utils.ExceptionUtil;
|
||||||
import com.alibaba.nacos.core.utils.Commons;
|
import com.alibaba.nacos.core.utils.Commons;
|
||||||
|
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -65,9 +65,9 @@ public class ConsoleExceptionHandler {
|
|||||||
LOGGER.error("CONSOLE {}", uri, e);
|
LOGGER.error("CONSOLE {}", uri, e);
|
||||||
if (uri.contains(Commons.NACOS_SERVER_VERSION_V2)) {
|
if (uri.contains(Commons.NACOS_SERVER_VERSION_V2)) {
|
||||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
.body(RestResultUtils.failed(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8")));
|
.body(RestResultUtils.failed(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8")));
|
||||||
}
|
}
|
||||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
.body(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8"));
|
.body(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class XssFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
|
|
||||||
response.setHeader(CONTENT_SECURITY_POLICY_HEADER, CONTENT_SECURITY_POLICY);
|
response.setHeader(CONTENT_SECURITY_POLICY_HEADER, CONTENT_SECURITY_POLICY);
|
||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
|
|||||||
@@ -48,14 +48,6 @@ db.password.0=root
|
|||||||
nacos.config.push.maxRetryTime=50
|
nacos.config.push.maxRetryTime=50
|
||||||
|
|
||||||
#*************** Naming Module Related Configurations ***************#
|
#*************** Naming Module Related Configurations ***************#
|
||||||
### Data dispatch task execution period in milliseconds:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### If enable data warmup. If set to false, the server would accept request without local data preparation:
|
### If enable data warmup. If set to false, the server would accept request without local data preparation:
|
||||||
# nacos.naming.data.warmup=true
|
# nacos.naming.data.warmup=true
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -172,7 +172,7 @@ CREATE TABLE `his_config_info` (
|
|||||||
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
|
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
|
||||||
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
|
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
|
||||||
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
|
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
|
||||||
`encrypted_data_key` text NOT NULL COMMENT '密钥',
|
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
|
||||||
PRIMARY KEY (`nid`),
|
PRIMARY KEY (`nid`),
|
||||||
KEY `idx_gmt_create` (`gmt_create`),
|
KEY `idx_gmt_create` (`gmt_create`),
|
||||||
KEY `idx_gmt_modified` (`gmt_modified`),
|
KEY `idx_gmt_modified` (`gmt_modified`),
|
||||||
|
|||||||
Reference in New Issue
Block a user