Jelajahi Sumber

!135 nacos升级到最新版本 并默认开启鉴权 框架内组件也默认附带鉴权信息
Merge pull request !135 from lance/feature/nacos-2.3.0

疯狂的狮子Li 2 tahun lalu
induk
melakukan
9d96433c47
65 mengubah file dengan 680 tambahan dan 575 penghapusan
  1. 4 0
      pom.xml
  2. 2 0
      ruoyi-auth/src/main/resources/application.yml
  3. 2 0
      ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml
  4. 2 0
      ruoyi-example/ruoyi-demo/src/main/resources/application.yml
  5. 2 0
      ruoyi-example/ruoyi-stream-mq/src/main/resources/application.yml
  6. 2 0
      ruoyi-gateway/src/main/resources/application.yml
  7. 2 0
      ruoyi-modules/ruoyi-gen/src/main/resources/application.yml
  8. 2 0
      ruoyi-modules/ruoyi-job/src/main/resources/application.yml
  9. 2 0
      ruoyi-modules/ruoyi-resource/src/main/resources/application.yml
  10. 2 0
      ruoyi-modules/ruoyi-system/src/main/resources/application.yml
  11. 2 0
      ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml
  12. 34 19
      ruoyi-visual/ruoyi-nacos/pom.xml
  13. 5 0
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/Nacos.java
  14. 8 0
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/config/ConsoleConfig.java
  15. 44 0
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/config/ConsoleModuleStateBuilder.java
  16. 8 51
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/HealthController.java
  17. 23 7
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/NamespaceController.java
  18. 35 7
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/ServerStateController.java
  19. 66 0
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/v2/HealthControllerV2.java
  20. 29 7
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/v2/NamespaceControllerV2.java
  21. 0 66
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/enums/NamespaceTypeEnum.java
  22. 4 2
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/exception/ConsoleExceptionHandler.java
  23. 0 115
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/Namespace.java
  24. 0 31
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java
  25. 0 111
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/form/NamespaceForm.java
  26. 56 0
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/paramcheck/ConsoleDefaultHttpParamExtractor.java
  27. 0 150
      ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/service/NamespaceOperationService.java
  28. 215 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/derby-schema.sql
  29. 78 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/nacos-default.properties
  30. 17 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/services/com.alibaba.nacos.core.paramcheck.AbstractHttpParamExtractor
  31. 17 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/services/com.alibaba.nacos.sys.module.ModuleStateBuilder
  32. 7 3
      ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties
  33. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/default-auth-plugin-2.3.0.jar
  34. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/default-control-plugin-2.3.0.jar
  35. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-auth-2.2.1.jar
  36. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-auth-2.3.0.jar
  37. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-cmdb-2.2.1.jar
  38. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-cmdb-2.3.0.jar
  39. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-2.2.1.jar
  40. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-2.3.0.jar
  41. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-plugin-2.3.0.jar
  42. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-consistency-2.2.1.jar
  43. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-consistency-2.3.0.jar
  44. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-contrl-plugin-2.2.1.jar
  45. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-control-plugin-2.3.0.jar
  46. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-core-2.2.1.jar
  47. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-core-2.3.0.jar
  48. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-datasource-plugin-2.3.0.jar
  49. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-istio-2.2.1.jar
  50. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-istio-2.3.0.jar
  51. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-naming-2.2.1.jar
  52. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-naming-2.3.0.jar
  53. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-persistence-2.3.0.jar
  54. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-plugin-default-impl-2.2.1.jar
  55. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-prometheus-2.2.1.jar
  56. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-prometheus-2.3.0.jar
  57. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-sys-2.2.1.jar
  58. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-sys-2.3.0.jar
  59. TEMPAT SAMPAH
      ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-trace-plugin-2.3.0.jar
  60. 0 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/static/css/main.css
  61. 2 2
      ruoyi-visual/ruoyi-nacos/src/main/resources/static/index.html
  62. 0 0
      ruoyi-visual/ruoyi-nacos/src/main/resources/static/js/main.js
  63. 2 0
      ruoyi-visual/ruoyi-powerjob-server/src/main/resources/application.properties
  64. 4 4
      ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml
  65. 2 0
      ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml

+ 4 - 0
pom.xml

@@ -71,6 +71,8 @@
                 <!-- 环境标识,需要与配置文件的名称相对应 -->
                 <profiles.active>dev</profiles.active>
                 <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
                 <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
                 <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
                 <logstash.address>127.0.0.1:4560</logstash.address>
@@ -85,6 +87,8 @@
             <properties>
                 <profiles.active>prod</profiles.active>
                 <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
                 <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
                 <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
                 <logstash.address>127.0.0.1:4560</logstash.address>

+ 2 - 0
ruoyi-auth/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-common/ruoyi-common-dubbo/src/main/resources/common-dubbo.yml

@@ -15,6 +15,8 @@ dubbo:
   registry:
     address: nacos://${spring.cloud.nacos.server-addr}
     group: DUBBO_GROUP
+    username: ${spring.cloud.nacos.username}
+    password: ${spring.cloud.nacos.password}
     parameters:
       namespace: ${spring.profiles.active}
   # 消费者相关配置

+ 2 - 0
ruoyi-example/ruoyi-demo/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-example/ruoyi-stream-mq/src/main/resources/application.yml

@@ -102,6 +102,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-gateway/src/main/resources/application.yml

@@ -27,6 +27,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-modules/ruoyi-gen/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-modules/ruoyi-job/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-modules/ruoyi-resource/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 2 - 0
ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml

@@ -25,6 +25,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

+ 34 - 19
ruoyi-visual/ruoyi-nacos/pom.xml

@@ -27,7 +27,7 @@
     <packaging>jar</packaging>
 
     <properties>
-        <nacos.version>2.2.1</nacos.version>
+        <nacos.version>2.3.0</nacos.version>
         <!-- 需要与 Nacos 内置 Boot 版本保持一致 -->
         <spring-boot.version>2.7.18</spring-boot.version>
         <spring-boot-admin.version>2.7.11</spring-boot-admin.version>
@@ -76,6 +76,13 @@
             <scope>system</scope>
             <systemPath>${nacos.lib.path}/nacos-config-${nacos.version}.jar</systemPath>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba.nacos</groupId>
+            <artifactId>nacos-persistence</artifactId>
+            <version>${nacos.version}</version>
+            <scope>system</scope>
+            <systemPath>${nacos.lib.path}/nacos-persistence-${nacos.version}.jar</systemPath>
+        </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-consistency</artifactId>
@@ -85,10 +92,17 @@
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-contrl-plugin</artifactId>
+            <artifactId>nacos-control-plugin</artifactId>
+            <version>${nacos.version}</version>
+            <scope>system</scope>
+            <systemPath>${nacos.lib.path}/nacos-control-plugin-${nacos.version}.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.nacos</groupId>
+            <artifactId>nacos-config-plugin</artifactId>
             <version>${nacos.version}</version>
             <scope>system</scope>
-            <systemPath>${nacos.lib.path}/nacos-contrl-plugin-${nacos.version}.jar</systemPath>
+            <systemPath>${nacos.lib.path}/nacos-config-plugin-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
@@ -113,49 +127,53 @@
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-plugin-default-impl</artifactId>
+            <artifactId>default-auth-plugin</artifactId>
             <version>${nacos.version}</version>
             <scope>system</scope>
-            <systemPath>${nacos.lib.path}/nacos-plugin-default-impl-${nacos.version}.jar</systemPath>
+            <systemPath>${nacos.lib.path}/default-auth-plugin-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-prometheus</artifactId>
+            <artifactId>default-control-plugin</artifactId>
             <version>${nacos.version}</version>
             <scope>system</scope>
-            <systemPath>${nacos.lib.path}/nacos-prometheus-${nacos.version}.jar</systemPath>
+            <systemPath>${nacos.lib.path}/default-control-plugin-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-sys</artifactId>
+            <artifactId>nacos-trace-plugin</artifactId>
             <version>${nacos.version}</version>
             <scope>system</scope>
-            <systemPath>${nacos.lib.path}/nacos-sys-${nacos.version}.jar</systemPath>
+            <systemPath>${nacos.lib.path}/nacos-trace-plugin-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-custom-environment-plugin</artifactId>
+            <artifactId>nacos-prometheus</artifactId>
             <version>${nacos.version}</version>
+            <scope>system</scope>
+            <systemPath>${nacos.lib.path}/nacos-prometheus-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-datasource-plugin</artifactId>
+            <artifactId>nacos-sys</artifactId>
             <version>${nacos.version}</version>
+            <scope>system</scope>
+            <systemPath>${nacos.lib.path}/nacos-sys-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-encryption-plugin</artifactId>
+            <artifactId>nacos-datasource-plugin</artifactId>
             <version>${nacos.version}</version>
+            <scope>system</scope>
+            <systemPath>${nacos.lib.path}/nacos-datasource-plugin-${nacos.version}.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-trace-plugin</artifactId>
-            <version>${nacos.version}</version>
+            <artifactId>nacos-encryption-plugin</artifactId>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-common</artifactId>
-            <version>${nacos.version}</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
@@ -227,10 +245,6 @@
             <groupId>com.alipay.sofa</groupId>
             <artifactId>rpc-grpc-impl</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-        </dependency>
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt-api</artifactId>
@@ -248,6 +262,7 @@
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
+            <version>31.1-jre</version>
         </dependency>
         <dependency>
             <groupId>org.javatuples</groupId>

+ 5 - 0
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/Nacos.java

@@ -16,9 +16,14 @@
 
 package com.alibaba.nacos;
 
+import com.alibaba.nacos.sys.filter.NacosTypeExcludeFilter;
 import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.TypeExcludeFilter;
 import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**

+ 8 - 0
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/config/ConsoleConfig.java

@@ -19,6 +19,7 @@ package com.alibaba.nacos.console.config;
 import com.alibaba.nacos.console.filter.XssFilter;
 import com.alibaba.nacos.core.code.ControllerMethodsCache;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.PropertySource;
@@ -46,6 +47,9 @@ public class ConsoleConfig {
     @Autowired
     private ControllerMethodsCache methodsCache;
     
+    @Value("${nacos.console.ui.enabled:true}")
+    private boolean consoleUiEnabled;
+    
     /**
      * Init.
      */
@@ -79,4 +83,8 @@ public class ConsoleConfig {
     public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
         return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(ZoneId.systemDefault().toString());
     }
+    
+    public boolean isConsoleUiEnabled() {
+        return consoleUiEnabled;
+    }
 }

+ 44 - 0
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/config/ConsoleModuleStateBuilder.java

@@ -0,0 +1,44 @@
+/*
+ * Copyright 1999-2023 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.nacos.console.config;
+
+import com.alibaba.nacos.sys.module.ModuleState;
+import com.alibaba.nacos.sys.module.ModuleStateBuilder;
+import com.alibaba.nacos.sys.utils.ApplicationUtils;
+
+/**
+ * Console module state builder.
+ *
+ * @author xiweng.yy
+ */
+public class ConsoleModuleStateBuilder implements ModuleStateBuilder {
+    
+    public static final String CONSOLE_MODULE = "console";
+    
+    private static final String CONSOLE_UI_ENABLED = "console_ui_enabled";
+    
+    @Override
+    public ModuleState build() {
+        ModuleState result = new ModuleState(CONSOLE_MODULE);
+        try {
+            ConsoleConfig consoleConfig = ApplicationUtils.getBean(ConsoleConfig.class);
+            result.newState(CONSOLE_UI_ENABLED, consoleConfig.isConsoleUiEnabled());
+        } catch (Exception ignored) {
+        }
+        return result;
+    }
+}

+ 8 - 51
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/HealthController.java

@@ -16,11 +16,10 @@
 
 package com.alibaba.nacos.console.controller;
 
-import com.alibaba.nacos.config.server.service.repository.ConfigInfoPersistService;
-import com.alibaba.nacos.naming.controllers.OperatorController;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
+import com.alibaba.nacos.core.cluster.health.ModuleHealthCheckerHolder;
+import com.alibaba.nacos.core.cluster.health.ReadinessResult;
+import com.alibaba.nacos.core.paramcheck.ExtractorManager;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -36,20 +35,9 @@ import javax.servlet.http.HttpServletRequest;
  */
 @RestController("consoleHealth")
 @RequestMapping("/v1/console/health")
+@ExtractorManager.Extractor(httpExtractor = ConsoleDefaultHttpParamExtractor.class)
 public class HealthController {
     
-    private static final Logger LOGGER = LoggerFactory.getLogger(HealthController.class);
-    
-    private final ConfigInfoPersistService configInfoPersistService;
-    
-    private final OperatorController apiCommands;
-    
-    @Autowired
-    public HealthController(ConfigInfoPersistService configInfoPersistService, OperatorController apiCommands) {
-        this.configInfoPersistService = configInfoPersistService;
-        this.apiCommands = apiCommands;
-    }
-    
     /**
      * Whether the Nacos is in broken states or not, and cannot recover except by being restarted.
      *
@@ -69,42 +57,11 @@ public class HealthController {
      */
     @GetMapping("/readiness")
     public ResponseEntity<String> readiness(HttpServletRequest request) {
-        boolean isConfigReadiness = isConfigReadiness();
-        boolean isNamingReadiness = isNamingReadiness(request);
-        
-        if (isConfigReadiness && isNamingReadiness) {
+        ReadinessResult result = ModuleHealthCheckerHolder.getInstance().checkReadiness();
+        if (result.isSuccess()) {
             return ResponseEntity.ok().body("OK");
         }
-        
-        if (!isConfigReadiness && !isNamingReadiness) {
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Config and Naming are not in readiness");
-        }
-        
-        if (!isConfigReadiness) {
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Config is not in readiness");
-        }
-        
-        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Naming is not in readiness");
-    }
-    
-    private boolean isConfigReadiness() {
-        // check db
-        try {
-            configInfoPersistService.configInfoCount("");
-            return true;
-        } catch (Exception e) {
-            LOGGER.error("Config health check fail.", e);
-        }
-        return false;
+        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result.getResultMessage());
     }
     
-    private boolean isNamingReadiness(HttpServletRequest request) {
-        try {
-            apiCommands.metrics(request);
-            return true;
-        } catch (Exception e) {
-            LOGGER.error("Naming health check fail.", e);
-        }
-        return false;
-    }
 }

+ 23 - 7
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/NamespaceController.java

@@ -21,10 +21,11 @@ import com.alibaba.nacos.auth.annotation.Secured;
 import com.alibaba.nacos.common.model.RestResult;
 import com.alibaba.nacos.common.model.RestResultUtils;
 import com.alibaba.nacos.common.utils.StringUtils;
-import com.alibaba.nacos.config.server.service.repository.CommonPersistService;
-import com.alibaba.nacos.console.model.Namespace;
-import com.alibaba.nacos.console.model.NamespaceAllInfo;
-import com.alibaba.nacos.console.service.NamespaceOperationService;
+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.paramcheck.ExtractorManager;
+import com.alibaba.nacos.core.service.NamespaceOperationService;
 import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
 import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,15 +48,18 @@ import java.util.regex.Pattern;
  */
 @RestController
 @RequestMapping("/v1/console/namespaces")
+@ExtractorManager.Extractor(httpExtractor = ConsoleDefaultHttpParamExtractor.class)
 public class NamespaceController {
     
     @Autowired
-    private CommonPersistService commonPersistService;
+    private NamespacePersistService namespacePersistService;
     
     @Autowired
     private NamespaceOperationService namespaceOperationService;
     
     private final Pattern namespaceIdCheckPattern = Pattern.compile("^[\\w-]+");
+
+    private final Pattern namespaceNameCheckPattern = Pattern.compile("^[^@#$%^&*]+$");
     
     private static final int NAMESPACE_ID_MAX_LENGTH = 128;
     
@@ -76,7 +80,7 @@ public class NamespaceController {
      * @return namespace all info
      */
     @GetMapping(params = "show=all")
-    public NamespaceAllInfo getNamespace(@RequestParam("namespaceId") String namespaceId) throws NacosException {
+    public Namespace getNamespace(@RequestParam("namespaceId") String namespaceId) throws NacosException {
         return namespaceOperationService.getNamespace(namespaceId);
     }
     
@@ -102,6 +106,14 @@ public class NamespaceController {
             if (namespaceId.length() > NAMESPACE_ID_MAX_LENGTH) {
                 return false;
             }
+            // check unique
+            if (namespacePersistService.tenantInfoCountByTenantId(namespaceId) > 0) {
+                return false;
+            }
+        }
+        // contains illegal chars
+        if (!namespaceNameCheckPattern.matcher(namespaceName).matches()) {
+            return false;
         }
         try {
             return namespaceOperationService.createNamespace(namespaceId, namespaceName, namespaceDesc);
@@ -121,7 +133,7 @@ public class NamespaceController {
         if (StringUtils.isBlank(namespaceId)) {
             return false;
         }
-        return (commonPersistService.tenantInfoCountByTenantId(namespaceId) > 0);
+        return (namespacePersistService.tenantInfoCountByTenantId(namespaceId) > 0);
     }
     
     /**
@@ -137,6 +149,10 @@ public class NamespaceController {
     public Boolean editNamespace(@RequestParam("namespace") String namespace,
             @RequestParam("namespaceShowName") String namespaceShowName,
             @RequestParam(value = "namespaceDesc", required = false) String namespaceDesc) {
+        // contains illegal chars
+        if (!namespaceNameCheckPattern.matcher(namespaceShowName).matches()) {
+            return false;
+        }
         return namespaceOperationService.editNamespace(namespace, namespaceShowName, namespaceDesc);
     }
     

+ 35 - 7
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/ServerStateController.java

@@ -16,13 +16,20 @@
 
 package com.alibaba.nacos.console.controller;
 
-import com.alibaba.nacos.common.utils.VersionUtils;
+import com.alibaba.nacos.common.model.RestResult;
+import com.alibaba.nacos.common.model.RestResultUtils;
+import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
+import com.alibaba.nacos.core.paramcheck.ExtractorManager;
 import com.alibaba.nacos.sys.env.EnvUtil;
+import com.alibaba.nacos.sys.module.ModuleState;
+import com.alibaba.nacos.sys.module.ModuleStateHolder;
+import com.alibaba.nacos.sys.utils.DiskUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -33,8 +40,13 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("/v1/console/server")
+@ExtractorManager.Extractor(httpExtractor = ConsoleDefaultHttpParamExtractor.class)
 public class ServerStateController {
     
+    private static final String ANNOUNCEMENT_FILE = "announcement.conf";
+    
+    private static final String GUIDE_FILE = "console-guide.conf";
+    
     /**
      * Get server state of current server.
      *
@@ -43,13 +55,29 @@ public class ServerStateController {
     @GetMapping("/state")
     public ResponseEntity<Map<String, String>> serverState() {
         Map<String, String> serverState = new HashMap<>(4);
-        serverState.put("standalone_mode",
-                EnvUtil.getStandaloneMode() ? EnvUtil.STANDALONE_MODE_ALONE : EnvUtil.STANDALONE_MODE_CLUSTER);
-        
-        serverState.put("function_mode", EnvUtil.getFunctionMode());
-        serverState.put("version", VersionUtils.version);
-        
+        for (ModuleState each : ModuleStateHolder.getInstance().getAllModuleStates()) {
+            each.getStates().forEach((s, o) -> serverState.put(s, null == o ? null : o.toString()));
+        }
         return ResponseEntity.ok().body(serverState);
     }
     
+    @GetMapping("/announcement")
+    public RestResult<String> getAnnouncement() {
+        File announcementFile = new File(EnvUtil.getConfPath(), ANNOUNCEMENT_FILE);
+        String announcement = null;
+        if (announcementFile.exists() && announcementFile.isFile()) {
+            announcement = DiskUtils.readFile(announcementFile);
+        }
+        return RestResultUtils.success(announcement);
+    }
+    
+    @GetMapping("/guide")
+    public RestResult<String> getConsoleUiGuide() {
+        File guideFile = new File(EnvUtil.getConfPath(), GUIDE_FILE);
+        String guideInformation = null;
+        if (guideFile.exists() && guideFile.isFile()) {
+            guideInformation = DiskUtils.readFile(guideFile);
+        }
+        return RestResultUtils.success(guideInformation);
+    }
 }

+ 66 - 0
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/v2/HealthControllerV2.java

@@ -0,0 +1,66 @@
+/*
+ * Copyright 1999-2018 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.nacos.console.controller.v2;
+
+import com.alibaba.nacos.api.model.v2.Result;
+import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
+import com.alibaba.nacos.core.cluster.health.ModuleHealthCheckerHolder;
+import com.alibaba.nacos.core.cluster.health.ReadinessResult;
+import com.alibaba.nacos.core.paramcheck.ExtractorManager;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Health ControllerV2.
+ *
+ * @author DiligenceLai
+ */
+@RestController("consoleHealthV2")
+@RequestMapping("/v2/console/health")
+@ExtractorManager.Extractor(httpExtractor = ConsoleDefaultHttpParamExtractor.class)
+public class HealthControllerV2 {
+    
+    /**
+     * Whether the Nacos is in broken states or not, and cannot recover except by being restarted.
+     *
+     * @return HTTP code equal to 200 indicates that Nacos is in right states. HTTP code equal to 500 indicates that
+     * Nacos is in broken states.
+     */
+    @GetMapping("/liveness")
+    public Result<String> liveness() {
+        return Result.success("ok");
+    }
+    
+    /**
+     * Ready to receive the request or not.
+     *
+     * @return HTTP code equal to 200 indicates that Nacos is ready. HTTP code equal to 500 indicates that Nacos is not
+     * ready.
+     */
+    @GetMapping("/readiness")
+    public Result<String> readiness(HttpServletRequest request) {
+        ReadinessResult result = ModuleHealthCheckerHolder.getInstance().checkReadiness();
+        if (result.isSuccess()) {
+            return Result.success("ok");
+        }
+        return Result.failure(result.getResultMessage());
+    }
+    
+}

+ 29 - 7
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/controller/v2/NamespaceControllerV2.java

@@ -23,10 +23,12 @@ import com.alibaba.nacos.api.model.v2.ErrorCode;
 import com.alibaba.nacos.api.model.v2.Result;
 import com.alibaba.nacos.auth.annotation.Secured;
 import com.alibaba.nacos.common.utils.StringUtils;
-import com.alibaba.nacos.console.model.Namespace;
-import com.alibaba.nacos.console.model.NamespaceAllInfo;
-import com.alibaba.nacos.console.model.form.NamespaceForm;
-import com.alibaba.nacos.console.service.NamespaceOperationService;
+import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor;
+import com.alibaba.nacos.core.namespace.model.Namespace;
+import com.alibaba.nacos.core.namespace.model.form.NamespaceForm;
+import com.alibaba.nacos.core.namespace.repository.NamespacePersistService;
+import com.alibaba.nacos.core.paramcheck.ExtractorManager;
+import com.alibaba.nacos.core.service.NamespaceOperationService;
 import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
 import com.alibaba.nacos.plugin.auth.constant.SignType;
 import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
@@ -52,15 +54,21 @@ import java.util.regex.Pattern;
 @NacosApi
 @RestController
 @RequestMapping("/v2/console/namespace")
+@ExtractorManager.Extractor(httpExtractor = ConsoleDefaultHttpParamExtractor.class)
 public class NamespaceControllerV2 {
     
     private final NamespaceOperationService namespaceOperationService;
+
+    private NamespacePersistService namespacePersistService;
     
-    public NamespaceControllerV2(NamespaceOperationService namespaceOperationService) {
+    public NamespaceControllerV2(NamespaceOperationService namespaceOperationService, NamespacePersistService namespacePersistService) {
         this.namespaceOperationService = namespaceOperationService;
+        this.namespacePersistService = namespacePersistService;
     }
     
     private final Pattern namespaceIdCheckPattern = Pattern.compile("^[\\w-]+");
+
+    private final Pattern namespaceNameCheckPattern = Pattern.compile("^[^@#$%^&*]+$");
     
     private static final int NAMESPACE_ID_MAX_LENGTH = 128;
     
@@ -83,8 +91,7 @@ public class NamespaceControllerV2 {
     @GetMapping()
     @Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
             + "namespaces", action = ActionTypes.READ, signType = SignType.CONSOLE)
-    public Result<NamespaceAllInfo> getNamespace(@RequestParam("namespaceId") String namespaceId)
-            throws NacosException {
+    public Result<Namespace> getNamespace(@RequestParam("namespaceId") String namespaceId) throws NacosException {
         return Result.success(namespaceOperationService.getNamespace(namespaceId));
     }
     
@@ -117,6 +124,16 @@ public class NamespaceControllerV2 {
                 throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
                         "too long namespaceId, over " + NAMESPACE_ID_MAX_LENGTH);
             }
+            // check unique
+            if (namespacePersistService.tenantInfoCountByTenantId(namespaceId) > 0) {
+                throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
+                        "the namespaceId is existed, namespaceId: " + namespaceForm.getNamespaceId());
+            }
+        }
+        // contains illegal chars
+        if (!namespaceNameCheckPattern.matcher(namespaceName).matches()) {
+            throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
+                "namespaceName [" + namespaceName + "] contains illegal char");
         }
         return Result.success(namespaceOperationService.createNamespace(namespaceId, namespaceName, namespaceDesc));
     }
@@ -132,6 +149,11 @@ public class NamespaceControllerV2 {
             + "namespaces", action = ActionTypes.WRITE, signType = SignType.CONSOLE)
     public Result<Boolean> editNamespace(NamespaceForm namespaceForm) throws NacosException {
         namespaceForm.validate();
+        // contains illegal chars
+        if (!namespaceNameCheckPattern.matcher(namespaceForm.getNamespaceName()).matches()) {
+            throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.ILLEGAL_NAMESPACE,
+                "namespaceName [" + namespaceForm.getNamespaceName() + "] contains illegal char");
+        }
         return Result.success(namespaceOperationService
                 .editNamespace(namespaceForm.getNamespaceId(), namespaceForm.getNamespaceName(),
                         namespaceForm.getNamespaceDesc()));

+ 0 - 66
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/enums/NamespaceTypeEnum.java

@@ -1,66 +0,0 @@
-/*
- * Copyright 1999-2021 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.nacos.console.enums;
-
-/**
- * the enum of namespace.
- * 0 : Global configuration, 1 : Default private namespace ,2 : Custom namespace.
- *
- * @author chenglu
- * @date 2021-05-25 17:01
- */
-public enum NamespaceTypeEnum {
-    
-    /**
-     * Global configuration.
-     */
-    GLOBAL(0, "Global configuration"),
-    
-    /**
-     * Default private namespace.
-     */
-    PRIVATE(1, "Default private namespace"),
-    
-    /**
-     * Custom namespace.
-     */
-    CUSTOM(2, "Custom namespace");
-    
-    /**
-     * the namespace type.
-     */
-    private final int type;
-    
-    /**
-     * the description.
-     */
-    private final String description;
-    
-    NamespaceTypeEnum(int type, String description) {
-        this.type = type;
-        this.description = description;
-    }
-    
-    public int getType() {
-        return type;
-    }
-    
-    public String getDescription() {
-        return description;
-    }
-}
-

+ 4 - 2
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/exception/ConsoleExceptionHandler.java

@@ -26,6 +26,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.util.HtmlUtils;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -57,8 +58,9 @@ public class ConsoleExceptionHandler {
         LOGGER.error("CONSOLE {}", uri, e);
         if (uri.contains(Commons.NACOS_SERVER_VERSION_V2)) {
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
-                    .body(RestResultUtils.failed(ExceptionUtil.getAllExceptionMsg(e)));
+                    .body(RestResultUtils.failed(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8")));
         }
-        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ExceptionUtil.getAllExceptionMsg(e));
+        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
+                .body(HtmlUtils.htmlEscape(ExceptionUtil.getAllExceptionMsg(e), "utf-8"));
     }
 }

+ 0 - 115
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/Namespace.java

@@ -1,115 +0,0 @@
-/*
- * Copyright 1999-2018 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.nacos.console.model;
-
-/**
- * Namespace.
- *
- * @author diamond
- */
-public class Namespace {
-    
-    private String namespace;
-    
-    private String namespaceShowName;
-    
-    private String namespaceDesc;
-    
-    private int quota;
-    
-    private int configCount;
-    
-    /**
-     * see {@link com.alibaba.nacos.console.enums.NamespaceTypeEnum}.
-     */
-    private int type;
-    
-    public String getNamespaceShowName() {
-        return namespaceShowName;
-    }
-    
-    public void setNamespaceShowName(String namespaceShowName) {
-        this.namespaceShowName = namespaceShowName;
-    }
-    
-    public String getNamespace() {
-        return namespace;
-    }
-    
-    public void setNamespace(String namespace) {
-        this.namespace = namespace;
-    }
-    
-    public Namespace() {
-    }
-    
-    public Namespace(String namespace, String namespaceShowName) {
-        this.namespace = namespace;
-        this.namespaceShowName = namespaceShowName;
-    }
-    
-    public Namespace(String namespace, String namespaceShowName, int quota, int configCount, int type) {
-        this.namespace = namespace;
-        this.namespaceShowName = namespaceShowName;
-        this.quota = quota;
-        this.configCount = configCount;
-        this.type = type;
-    }
-    
-    public Namespace(String namespace, String namespaceShowName, String namespaceDesc, int quota, int configCount,
-            int type) {
-        this.namespace = namespace;
-        this.namespaceShowName = namespaceShowName;
-        this.quota = quota;
-        this.configCount = configCount;
-        this.type = type;
-        this.namespaceDesc = namespaceDesc;
-    }
-    
-    public String getNamespaceDesc() {
-        return namespaceDesc;
-    }
-    
-    public void setNamespaceDesc(String namespaceDesc) {
-        this.namespaceDesc = namespaceDesc;
-    }
-    
-    public int getQuota() {
-        return quota;
-    }
-    
-    public void setQuota(int quota) {
-        this.quota = quota;
-    }
-    
-    public int getConfigCount() {
-        return configCount;
-    }
-    
-    public void setConfigCount(int configCount) {
-        this.configCount = configCount;
-    }
-    
-    public int getType() {
-        return type;
-    }
-    
-    public void setType(int type) {
-        this.type = type;
-    }
-    
-}

+ 0 - 31
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/NamespaceAllInfo.java

@@ -1,31 +0,0 @@
-/*
- * Copyright 1999-2018 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.nacos.console.model;
-
-/**
- * all namespace info.
- *
- * @author Nacos
- */
-public class NamespaceAllInfo extends Namespace {
-    
-    public NamespaceAllInfo(String namespace, String namespaceShowName, int quota, int configCount, int type,
-            String namespaceDesc) {
-        super(namespace, namespaceShowName, namespaceDesc, quota, configCount, type);
-    }
-    
-}

+ 0 - 111
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/model/form/NamespaceForm.java

@@ -1,111 +0,0 @@
-/*
- * Copyright 1999-2022 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.nacos.console.model.form;
-
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.exception.api.NacosApiException;
-import com.alibaba.nacos.api.model.v2.ErrorCode;
-import org.springframework.http.HttpStatus;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-/**
- * NamespaceForm.
- * @author dongyafei
- * @date 2022/8/16
- */
-public class NamespaceForm implements Serializable {
-    
-    private static final long serialVersionUID = -1078976569495343487L;
-    
-    private String namespaceId;
-    
-    private String namespaceName;
-    
-    private String namespaceDesc;
-    
-    public NamespaceForm() {
-    }
-    
-    public NamespaceForm(String namespaceId, String namespaceName, String namespaceDesc) {
-        this.namespaceId = namespaceId;
-        this.namespaceName = namespaceName;
-        this.namespaceDesc = namespaceDesc;
-    }
-    
-    public String getNamespaceId() {
-        return namespaceId;
-    }
-    
-    public void setNamespaceId(String namespaceId) {
-        this.namespaceId = namespaceId;
-    }
-    
-    public String getNamespaceName() {
-        return namespaceName;
-    }
-    
-    public void setNamespaceName(String namespaceName) {
-        this.namespaceName = namespaceName;
-    }
-    
-    public String getNamespaceDesc() {
-        return namespaceDesc;
-    }
-    
-    public void setNamespaceDesc(String namespaceDesc) {
-        this.namespaceDesc = namespaceDesc;
-    }
-    
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        NamespaceForm that = (NamespaceForm) o;
-        return Objects.equals(namespaceId, that.namespaceId) && Objects.equals(namespaceName, that.namespaceName)
-                && Objects.equals(namespaceDesc, that.namespaceDesc);
-    }
-    
-    @Override
-    public int hashCode() {
-        return Objects.hash(namespaceId, namespaceName, namespaceDesc);
-    }
-    
-    @Override
-    public String toString() {
-        return "NamespaceVo{" + "namespaceId='" + namespaceId + '\'' + ", namespaceName='" + namespaceName + '\''
-                + ", namespaceDesc='" + namespaceDesc + '\'' + '}';
-    }
-    
-    /**
-     * check required param.
-     * @throws NacosException NacosException
-     */
-    public void validate() throws NacosException {
-        if (null == namespaceId) {
-            throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.PARAMETER_MISSING, "required parameter 'namespaceId' is missing");
-        }
-        if (null == namespaceName) {
-            throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.PARAMETER_MISSING, "required parameter 'namespaceName' is missing");
-        }
-    }
-}

+ 56 - 0
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/paramcheck/ConsoleDefaultHttpParamExtractor.java

@@ -0,0 +1,56 @@
+/*
+ * Copyright 1999-2023 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.nacos.console.paramcheck;
+
+import com.alibaba.nacos.common.paramcheck.ParamInfo;
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.alibaba.nacos.core.paramcheck.AbstractHttpParamExtractor;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Console default http param extractor.
+ *
+ * @author zhuoguang
+ */
+public class ConsoleDefaultHttpParamExtractor extends AbstractHttpParamExtractor {
+    
+    @Override
+    public List<ParamInfo> extractParam(HttpServletRequest request) {
+        ParamInfo paramInfo = new ParamInfo();
+        paramInfo.setNamespaceId(getAliasNamespaceId(request));
+        paramInfo.setNamespaceShowName(getAliasNamespaceShowName(request));
+        ArrayList<ParamInfo> paramInfos = new ArrayList<>();
+        paramInfos.add(paramInfo);
+        return paramInfos;
+    }
+    
+    private String getAliasNamespaceId(HttpServletRequest request) {
+        String namespaceId = request.getParameter("namespaceId");
+        if (StringUtils.isBlank(namespaceId)) {
+            namespaceId = request.getParameter("customNamespaceId");
+        }
+        return namespaceId;
+    }
+    
+    private String getAliasNamespaceShowName(HttpServletRequest request) {
+        String namespaceShowName = request.getParameter("namespaceName");
+        return namespaceShowName;
+    }
+}

+ 0 - 150
ruoyi-visual/ruoyi-nacos/src/main/java/com/alibaba/nacos/console/service/NamespaceOperationService.java

@@ -1,150 +0,0 @@
-/*
- * Copyright 1999-2022 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.nacos.console.service;
-
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.exception.api.NacosApiException;
-import com.alibaba.nacos.api.model.v2.ErrorCode;
-import com.alibaba.nacos.common.utils.NamespaceUtil;
-import com.alibaba.nacos.common.utils.StringUtils;
-import com.alibaba.nacos.config.server.model.TenantInfo;
-import com.alibaba.nacos.config.server.service.repository.CommonPersistService;
-import com.alibaba.nacos.config.server.service.repository.ConfigInfoPersistService;
-import com.alibaba.nacos.console.enums.NamespaceTypeEnum;
-import com.alibaba.nacos.console.model.Namespace;
-import com.alibaba.nacos.console.model.NamespaceAllInfo;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * NamespaceOperationService.
- *
- * @author dongyafei
- * @date 2022/8/16
- */
-
-@Service
-public class NamespaceOperationService {
-    
-    private final ConfigInfoPersistService configInfoPersistService;
-    
-    private final CommonPersistService commonPersistService;
-    
-    private static final String DEFAULT_NAMESPACE = "public";
-    
-    private static final String DEFAULT_NAMESPACE_SHOW_NAME = "Public";
-    
-    private static final String DEFAULT_NAMESPACE_DESCRIPTION = "Public Namespace";
-    
-    private static final int DEFAULT_QUOTA = 200;
-    
-    private static final String DEFAULT_CREATE_SOURCE = "nacos";
-    
-    private static final String DEFAULT_TENANT = "";
-    
-    private static final String DEFAULT_KP = "1";
-    
-    public NamespaceOperationService(ConfigInfoPersistService configInfoPersistService,
-            CommonPersistService commonPersistService) {
-        this.configInfoPersistService = configInfoPersistService;
-        this.commonPersistService = commonPersistService;
-    }
-    
-    public List<Namespace> getNamespaceList() {
-        // TODO 获取用kp
-        List<TenantInfo> tenantInfos = commonPersistService.findTenantByKp(DEFAULT_KP);
-        
-        Namespace namespace0 = new Namespace(NamespaceUtil.getNamespaceDefaultId(), DEFAULT_NAMESPACE, DEFAULT_QUOTA,
-                configInfoPersistService.configInfoCount(DEFAULT_TENANT), NamespaceTypeEnum.GLOBAL.getType());
-        List<Namespace> namespaceList = new ArrayList<>();
-        namespaceList.add(namespace0);
-        
-        for (TenantInfo tenantInfo : tenantInfos) {
-            int configCount = configInfoPersistService.configInfoCount(tenantInfo.getTenantId());
-            Namespace namespaceTmp = new Namespace(tenantInfo.getTenantId(), tenantInfo.getTenantName(),
-                    tenantInfo.getTenantDesc(), DEFAULT_QUOTA, configCount, NamespaceTypeEnum.CUSTOM.getType());
-            namespaceList.add(namespaceTmp);
-        }
-        return namespaceList;
-    }
-    
-    /**
-     * query namespace by namespace id.
-     *
-     * @param namespaceId namespace Id.
-     * @return NamespaceAllInfo.
-     */
-    public NamespaceAllInfo getNamespace(String namespaceId) throws NacosException {
-        // TODO 获取用kp
-        if (StringUtils.isBlank(namespaceId) || namespaceId.equals(NamespaceUtil.getNamespaceDefaultId())) {
-            return new NamespaceAllInfo(namespaceId, DEFAULT_NAMESPACE_SHOW_NAME, DEFAULT_QUOTA,
-                    configInfoPersistService.configInfoCount(DEFAULT_TENANT), NamespaceTypeEnum.GLOBAL.getType(),
-                    DEFAULT_NAMESPACE_DESCRIPTION);
-        } else {
-            TenantInfo tenantInfo = commonPersistService.findTenantByKp(DEFAULT_KP, namespaceId);
-            if (null == tenantInfo) {
-                throw new NacosApiException(HttpStatus.NOT_FOUND.value(), ErrorCode.NAMESPACE_NOT_EXIST,
-                        "namespaceId [ " + namespaceId + " ] not exist");
-            }
-            int configCount = configInfoPersistService.configInfoCount(namespaceId);
-            return new NamespaceAllInfo(namespaceId, tenantInfo.getTenantName(), DEFAULT_QUOTA, configCount,
-                    NamespaceTypeEnum.CUSTOM.getType(), tenantInfo.getTenantDesc());
-        }
-    }
-    
-    /**
-     * create namespace.
-     *
-     * @param namespaceId   namespace ID
-     * @param namespaceName namespace Name
-     * @param namespaceDesc namespace Desc
-     * @return whether create ok
-     */
-    public Boolean createNamespace(String namespaceId, String namespaceName, String namespaceDesc)
-            throws NacosException {
-        // TODO 获取用kp
-        if (commonPersistService.tenantInfoCountByTenantId(namespaceId) > 0) {
-            throw new NacosApiException(HttpStatus.INTERNAL_SERVER_ERROR.value(), ErrorCode.NAMESPACE_ALREADY_EXIST,
-                    "namespaceId [" + namespaceId + "] already exist");
-        }
-    
-        commonPersistService
-                .insertTenantInfoAtomic(DEFAULT_KP, namespaceId, namespaceName, namespaceDesc, DEFAULT_CREATE_SOURCE,
-                        System.currentTimeMillis());
-        return true;
-    }
-    
-    /**
-     * edit namespace.
-     */
-    public Boolean editNamespace(String namespaceId, String namespaceName, String namespaceDesc) {
-        // TODO 获取用kp
-        commonPersistService.updateTenantNameAtomic(DEFAULT_KP, namespaceId, namespaceName, namespaceDesc);
-        return true;
-    }
-    
-    /**
-     * remove namespace.
-     */
-    public Boolean removeNamespace(String namespaceId) {
-        commonPersistService.removeTenantInfoAtomic(DEFAULT_KP, namespaceId);
-        return true;
-    }
-}

+ 215 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/derby-schema.sql

@@ -0,0 +1,215 @@
+/*
+ * Copyright 1999-2018 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+CREATE SCHEMA nacos AUTHORIZATION nacos;
+
+CREATE TABLE config_info (
+  id bigint NOT NULL generated by default as identity,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) default '',
+  app_name varchar(128),
+  content CLOB,
+  md5 varchar(32) DEFAULT NULL,
+  gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  src_user varchar(128) DEFAULT NULL,
+  src_ip varchar(20) DEFAULT NULL,
+  c_desc varchar(256) DEFAULT NULL,
+  c_use varchar(64) DEFAULT NULL,
+  effect varchar(64) DEFAULT NULL,
+  type varchar(64) DEFAULT NULL,
+  c_schema LONG VARCHAR DEFAULT NULL,
+  encrypted_data_key LONG VARCHAR DEFAULT NULL,
+  constraint configinfo_id_key PRIMARY KEY (id),
+  constraint uk_configinfo_datagrouptenant UNIQUE (data_id,group_id,tenant_id));
+
+CREATE INDEX configinfo_dataid_key_idx ON config_info(data_id);
+CREATE INDEX configinfo_groupid_key_idx ON config_info(group_id);
+CREATE INDEX configinfo_dataid_group_key_idx ON config_info(data_id, group_id);
+
+CREATE TABLE his_config_info (
+  id bigint NOT NULL,
+  nid bigint NOT NULL generated by default as identity,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) default '',
+  app_name varchar(128),
+  content CLOB,
+  md5 varchar(32) DEFAULT NULL,
+  gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000',
+  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000',
+  src_user varchar(128),
+  src_ip varchar(20) DEFAULT NULL,
+  op_type char(10) DEFAULT NULL,
+  encrypted_data_key LONG VARCHAR DEFAULT NULL,
+  constraint hisconfiginfo_nid_key PRIMARY KEY (nid));
+
+CREATE INDEX hisconfiginfo_dataid_key_idx ON his_config_info(data_id);
+CREATE INDEX hisconfiginfo_gmt_create_idx ON his_config_info(gmt_create);
+CREATE INDEX hisconfiginfo_gmt_modified_idx ON his_config_info(gmt_modified);
+
+
+CREATE TABLE config_info_beta (
+  id bigint NOT NULL generated by default as identity,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) default '',
+  app_name varchar(128),
+  content CLOB,
+  beta_ips varchar(1024),
+  md5 varchar(32) DEFAULT NULL,
+  gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  src_user varchar(128),
+  src_ip varchar(20) DEFAULT NULL,
+  encrypted_data_key LONG VARCHAR DEFAULT NULL,
+  constraint configinfobeta_id_key PRIMARY KEY (id),
+  constraint uk_configinfobeta_datagrouptenant UNIQUE (data_id,group_id,tenant_id));
+
+CREATE TABLE config_info_tag (
+  id bigint NOT NULL generated by default as identity,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) default '',
+  tag_id varchar(128) NOT NULL,
+  app_name varchar(128),
+  content CLOB,
+  md5 varchar(32) DEFAULT NULL,
+  gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  src_user varchar(128),
+  src_ip varchar(20) DEFAULT NULL,
+  constraint configinfotag_id_key PRIMARY KEY (id),
+  constraint uk_configinfotag_datagrouptenanttag UNIQUE (data_id,group_id,tenant_id,tag_id));
+
+CREATE TABLE config_info_aggr (
+  id bigint NOT NULL generated by default as identity,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) default '',
+  datum_id varchar(255) NOT NULL,
+  app_name varchar(128),
+  content CLOB,
+  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+  constraint configinfoaggr_id_key PRIMARY KEY (id),
+  constraint uk_configinfoaggr_datagrouptenantdatum UNIQUE (data_id,group_id,tenant_id,datum_id));
+
+CREATE TABLE app_list (
+ id bigint NOT NULL generated by default as identity,
+ app_name varchar(128) NOT NULL,
+ is_dynamic_collect_disabled smallint DEFAULT 0,
+ last_sub_info_collected_time timestamp DEFAULT '1970-01-01 08:00:00.0',
+ sub_info_lock_owner varchar(128),
+ sub_info_lock_time timestamp DEFAULT '1970-01-01 08:00:00.0',
+ constraint applist_id_key PRIMARY KEY (id),
+ constraint uk_appname UNIQUE (app_name));
+
+CREATE TABLE app_configdata_relation_subs (
+  id bigint NOT NULL generated by default as identity,
+  app_name varchar(128) NOT NULL,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+  constraint configdatarelationsubs_id_key PRIMARY KEY (id),
+  constraint uk_app_sub_config_datagroup UNIQUE (app_name, data_id, group_id));
+
+
+CREATE TABLE app_configdata_relation_pubs (
+  id bigint NOT NULL generated by default as identity,
+  app_name varchar(128) NOT NULL,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+  constraint configdatarelationpubs_id_key PRIMARY KEY (id),
+  constraint uk_app_pub_config_datagroup UNIQUE (app_name, data_id, group_id));
+
+CREATE TABLE config_tags_relation (
+  id bigint NOT NULL,
+  tag_name varchar(128) NOT NULL,
+  tag_type varchar(64) DEFAULT NULL,
+  data_id varchar(255) NOT NULL,
+  group_id varchar(128) NOT NULL,
+  tenant_id varchar(128) DEFAULT '',
+  nid bigint NOT NULL generated by default as identity,
+  constraint config_tags_id_key PRIMARY KEY (nid),
+  constraint uk_configtagrelation_configidtag UNIQUE (id, tag_name, tag_type));
+
+CREATE INDEX config_tags_tenant_id_idx ON config_tags_relation(tenant_id);
+
+CREATE TABLE group_capacity (
+  id bigint NOT NULL generated by default as identity,
+  group_id varchar(128) DEFAULT '',
+  quota int DEFAULT 0,
+  usage int DEFAULT 0,
+  max_size int DEFAULT 0,
+  max_aggr_count int DEFAULT 0,
+  max_aggr_size int DEFAULT 0,
+  max_history_count int DEFAULT 0,
+  gmt_create timestamp DEFAULT '2010-05-05 00:00:00',
+  gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+  constraint group_capacity_id_key PRIMARY KEY (id),
+  constraint uk_group_id UNIQUE (group_id));
+
+CREATE TABLE tenant_capacity (
+  id bigint NOT NULL generated by default as identity,
+  tenant_id varchar(128) DEFAULT '',
+  quota int DEFAULT 0,
+  usage int DEFAULT 0,
+  max_size int DEFAULT 0,
+  max_aggr_count int DEFAULT 0,
+  max_aggr_size int DEFAULT 0,
+  max_history_count int DEFAULT 0,
+  gmt_create timestamp DEFAULT '2010-05-05 00:00:00',
+  gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+  constraint tenant_capacity_id_key PRIMARY KEY (id),
+  constraint uk_tenant_id UNIQUE (tenant_id));
+
+CREATE TABLE tenant_info (
+  id bigint NOT NULL generated by default as identity,
+  kp varchar(128) NOT NULL,
+  tenant_id varchar(128)  DEFAULT '',
+  tenant_name varchar(128)  DEFAULT '',
+  tenant_desc varchar(256)  DEFAULT NULL,
+  create_source varchar(32) DEFAULT NULL,
+  gmt_create bigint NOT NULL,
+  gmt_modified bigint NOT NULL,
+  constraint tenant_info_id_key PRIMARY KEY (id),
+  constraint uk_tenant_info_kptenantid UNIQUE (kp,tenant_id));
+CREATE INDEX tenant_info_tenant_id_idx ON tenant_info(tenant_id);
+
+CREATE TABLE users (
+	username varchar(50) NOT NULL PRIMARY KEY,
+	password varchar(500) NOT NULL,
+	enabled boolean NOT NULL DEFAULT true
+);
+
+CREATE TABLE roles (
+	username varchar(50) NOT NULL,
+	role varchar(50) NOT NULL,
+	constraint uk_username_role UNIQUE (username,role)
+);
+
+CREATE TABLE permissions (
+    role varchar(50) NOT NULL,
+    resource varchar(512) NOT NULL,
+    action varchar(8) NOT NULL,
+    constraint uk_role_permission UNIQUE (role,resource,action)
+);
+
+INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
+
+INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

+ 78 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/nacos-default.properties

@@ -0,0 +1,78 @@
+#
+# Copyright 1999-2018 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Console Default Properties
+
+spring.mvc.view.prefix=/jsp/
+# the default suffix of page
+spring.mvc.view.suffix=.jsp
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+#logging.level.root=DEBUG
+
+# P0 key,For Debug.  whether use address-server; true:use; false:not use;default:true
+useAddressServer=true
+
+# whether open interInterFaceFilter; true:open; false:close; if open, others can't call inner interface. default:false
+openInnerInterfaceFilter=false
+
+# quickStart  stip dumpAll;only dump change config
+isQuickStart=false
+
+# server notify each otherd
+notifyConnectTimeout=200
+
+# server notify each other
+notifySocketTimeout=8000
+
+# whether health check
+isHealthCheck=true
+
+# health check max fail count
+maxHealthCheckFailCount=12
+
+# whether open spas; true:open;  false:close
+OPEN_SPAS=true
+
+nacos.cmdb.dumpTaskInterval=3600
+nacos.cmdb.eventTaskInterval=10
+nacos.cmdb.labelTaskInterval=300
+nacos.cmdb.loadDataAtStart=false
+
+#management.endpoints.web.exposure.include=*
+
+#spring.security.enabled=false
+#management.security=false
+#security.basic.enabled=false
+#nacos.security.ignore.urls=/**
+nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/login,/v1/console/health,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**
+
+management.metrics.export.elastic.enabled=false
+#management.metrics.export.elastic.host=http://localhost:9200
+
+# metrics for influx
+management.metrics.export.influx.enabled=false
+#management.metrics.export.influx.db=springboot
+#management.metrics.export.influx.uri=http://localhost:8086
+#management.metrics.export.influx.auto-create-db=true
+#management.metrics.export.influx.consistency=one
+#management.metrics.export.influx.compressed=true
+
+server.tomcat.accesslog.enabled=true
+server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
+# default current work dir
+server.tomcat.basedir=file:.
+
+

+ 17 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/services/com.alibaba.nacos.core.paramcheck.AbstractHttpParamExtractor

@@ -0,0 +1,17 @@
+#
+# Copyright 1999-2023 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor

+ 17 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/META-INF/services/com.alibaba.nacos.sys.module.ModuleStateBuilder

@@ -0,0 +1,17 @@
+#
+# Copyright 1999-2023 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+com.alibaba.nacos.console.config.ConsoleModuleStateBuilder

+ 7 - 3
ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties

@@ -19,7 +19,7 @@ server.port=8848
 ### Default web context path:
 server.servlet.contextPath=/nacos
 ### Include message field
-server.error.include-message=ON_PARAM
+server.error.include-message=ALWAYS
 ### Default web server port:
 
 #*************** Network Related Configurations ***************#
@@ -41,7 +41,10 @@ db.num=1
 ### Connect URL of DB:
 db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
 db.user.0=root
-db.password.0=root
+db.password.0=li123456
+
+### the maximum retry times for push
+nacos.config.push.maxRetryTime=50
 
 #*************** Naming Module Related Configurations ***************#
 ### Data dispatch task execution period in milliseconds:
@@ -111,7 +114,8 @@ nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/
 nacos.core.auth.system.type=nacos
 
 ### If turn on auth system:
-nacos.core.auth.enabled=false
+### 开启nacos服务端鉴权行为, 需要nacos配置admin权限, client端需要配置nacos[username/password]
+nacos.core.auth.enabled=true
 
 ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
 nacos.core.auth.caching.enabled=true

TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/default-auth-plugin-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/default-control-plugin-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-auth-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-auth-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-cmdb-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-cmdb-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-config-plugin-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-consistency-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-consistency-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-contrl-plugin-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-control-plugin-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-core-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-core-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-datasource-plugin-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-istio-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-istio-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-naming-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-naming-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-persistence-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-plugin-default-impl-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-prometheus-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-prometheus-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-sys-2.2.1.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-sys-2.3.0.jar


TEMPAT SAMPAH
ruoyi-visual/ruoyi-nacos/src/main/resources/lib/nacos-trace-plugin-2.3.0.jar


File diff ditekan karena terlalu besar
+ 0 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/static/css/main.css


+ 2 - 2
ruoyi-visual/ruoyi-nacos/src/main/resources/static/index.html

@@ -35,7 +35,7 @@
 	<link rel="stylesheet" type="text/css" href="console-ui/public/css/icon.css">
 	<link rel="stylesheet" type="text/css" href="console-ui/public/css/font-awesome.css">
 	<!-- 第三方css结束 -->
-<link href="./css/main.css?9f68bc0e1a07ae7085fe" rel="stylesheet"></head>
+<link href="./css/main.css?dee224cff7cea555a830" rel="stylesheet"></head>
 
 <body>
 	<div id="root" style="overflow:hidden"></div>
@@ -56,6 +56,6 @@
 	<script src="console-ui/public/js/merge.js"></script>
 	<script src="console-ui/public/js/loader.js"></script>
 	<!-- 第三方js结束 -->
-<script type="text/javascript" src="./js/main.js?9f68bc0e1a07ae7085fe"></script></body>
+<script type="text/javascript" src="./js/main.js?dee224cff7cea555a830"></script></body>
 
 </html>

File diff ditekan karena terlalu besar
+ 0 - 0
ruoyi-visual/ruoyi-nacos/src/main/resources/static/js/main.js


+ 2 - 0
ruoyi-visual/ruoyi-powerjob-server/src/main/resources/application.properties

@@ -37,5 +37,7 @@ spring.cloud.nacos.discovery.group=@nacos.discovery.group@
 spring.cloud.nacos.discovery.namespace=${spring.profiles.active}
 spring.cloud.nacos.config.group=@nacos.config.group@
 spring.cloud.nacos.config.namespace=${spring.profiles.active}
+spring.cloud.nacos.username=@nacos.username@
+spring.cloud.nacos.password=@nacos.password@
 spring.config.import[0]=optional:nacos:datasource.yml
 spring.config.import[1]=optional:nacos:${spring.application.name}.properties

+ 4 - 4
ruoyi-visual/ruoyi-seata-server/src/main/resources/application.yml

@@ -32,8 +32,8 @@ seata:
       server-addr: @nacos.server@
       group: @nacos.discovery.group@
       namespace: ${spring.profiles.active}
-      username:
-      password:
+      username: @nacos.username@
+      password: @nacos.password@
       ##if use MSE Nacos with auth, mutex with username/password attribute
       #access-key: ""
       #secret-key: ""
@@ -47,8 +47,8 @@ seata:
       group: @nacos.discovery.group@
       namespace: ${spring.profiles.active}
       cluster: default
-      username:
-      password:
+      username: @nacos.username@
+      password: @nacos.password@
       ##if use MSE Nacos with auth, mutex with username/password attribute
       #access-key: ""
       #secret-key: ""

+ 2 - 0
ruoyi-visual/ruoyi-sentinel-dashboard/src/main/resources/application.yml

@@ -29,6 +29,8 @@ spring:
         # 配置组
         group: @nacos.config.group@
         namespace: ${spring.profiles.active}
+      username: @nacos.username@
+      password: @nacos.password@
   config:
     import:
       - optional:nacos:application-common.yml

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini