lensfrex 1 year ago
parent ea314be257
commit 7f1f8ba3e7
Signed by: lensfrex
GPG Key ID: 0F69A0A2FBEE98A0
  1. 42
      .flattened-pom.xml
  2. 42
      backend-main/.flattened-pom.xml
  3. 3
      backend-main/backend-data/pom.xml
  4. 41
      backend-main/backend-web/.flattened-pom.xml
  5. 6
      backend-main/backend-web/pom.xml
  6. 20
      backend-main/backend-web/src/main/java/cn/wustlinghang/internal/api/v1/FrpPluginHandler.java
  7. 14
      backend-main/backend-web/src/main/java/cn/wustlinghang/internal/api/v1/response/FrpPluginResponse.java
  8. 6
      backend-main/backend-web/src/main/java/cn/wustlinghang/main/web/BackendMain.java
  9. 12
      backend-main/backend-web/src/main/java/cn/wustlinghang/main/web/api/v2/undergrade/UndergradController.java
  10. 9
      backend-main/backend-web/src/main/resources/application.yml
  11. 9
      backend-main/pom.xml
  12. 41
      common/.flattened-pom.xml
  13. 42
      external-library/.flattened-pom.xml
  14. 2
      external-library/rpc-frp-consul/pom.xml
  15. 15
      external-library/rpc-frp-consul/src/main/java/cn/wustlinghang/wusthelper/internal/rpc/FrpConsulRegister.java
  16. 12
      external-library/rpc-frp-consul/src/main/java/cn/wustlinghang/wusthelper/internal/rpc/client/ConsulClient.java
  17. 6
      external-library/rpc-frp-consul/src/main/java/cn/wustlinghang/wusthelper/internal/rpc/client/FrpcClient.java
  18. 2
      external-library/rpc-frp-consul/src/main/java/cn/wustlinghang/wusthelper/internal/rpc/config/FrpConfig.java
  19. 4
      external-library/rpc-frp-consul/src/main/java/cn/wustlinghang/wusthelper/internal/rpc/config/RegisterConfig.java
  20. 60
      sub-services/.flattened-pom.xml
  21. 93
      sub-services/graduate/.flattened-pom.xml
  22. 6
      sub-services/graduate/pom.xml
  23. 7
      sub-services/graduate/src/main/resources/application.properties
  24. 93
      sub-services/library/.flattened-pom.xml
  25. 6
      sub-services/library/pom.xml
  26. 7
      sub-services/library/src/main/resources/application.properties
  27. 93
      sub-services/physics/.flattened-pom.xml
  28. 6
      sub-services/physics/pom.xml
  29. 7
      sub-services/physics/src/main/resources/application.properties
  30. 99
      sub-services/undergrad/.flattened-pom.xml
  31. 6
      sub-services/undergrad/pom.xml
  32. 2
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/api/http/v1/ExamActivitiesApi.java
  33. 107
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/FrpConsulRegister.java
  34. 41
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/Register.java
  35. 60
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/client/ConsulClient.java
  36. 100
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/client/FrpcClient.java
  37. 22
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/config/FrpConfig.java
  38. 15
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/config/RpcConfig.java
  39. 13
      sub-services/undergrad/src/main/java/cn/wustlinghang/wusthelper/internal/undergrad/rpc/entity/RegisterRequestBody.java
  40. 6
      sub-services/undergrad/src/main/resources/application.properties

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>wusthelper-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>backend-main</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -6,7 +6,8 @@
<parent>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>backend-main</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>backend-data</artifactId>

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -18,6 +18,7 @@
<springboot.version>3.1.1</springboot.version>
<snakeyaml.version>2.0</snakeyaml.version>
<consul-discovery.version>4.0.2</consul-discovery.version>
<feign.version>4.0.3</feign.version>
</properties>
@ -51,6 +52,11 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>${consul-discovery.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>

@ -1,20 +0,0 @@
package cn.wustlinghang.internal.api.v1;
import cn.wustlinghang.internal.api.v1.response.FrpPluginResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/internal/frp")
public class FrpPluginHandler {
@RequestMapping("/handler")
public FrpPluginResponse handle(String request) {
log.info(request);
return FrpPluginResponse.builder()
.reject(false)
.unchange(true)
.build();
}
}

@ -1,14 +0,0 @@
package cn.wustlinghang.internal.api.v1.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class FrpPluginResponse {
private boolean reject;
private boolean unchange;
// private String rejectReason;
}

@ -2,14 +2,16 @@ package cn.wustlinghang.main.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
@EnableScheduling
@EnableFeignClients
@SpringBootApplication
public class Main {
public class BackendMain {
public static void main(String[] args) {
SpringApplication.run(Main.class);
SpringApplication.run(BackendMain.class);
}
}

@ -1,13 +1,23 @@
package cn.wustlinghang.main.web.api.v2.undergrade;
import cn.wustlinghang.main.web.service.campus.undergrad.UndergradCookieService;
import cn.wustlinghang.wusthelper.main.response.Response;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/jwc")
public class UndergradController {
private final UndergradCookieService undergradCookieService;
public UndergradController(UndergradCookieService undergradCookieService) {
this.undergradCookieService = undergradCookieService;
}
@PostMapping("/login")
public Response<String> login() {
return Response.success("");
String cookie = undergradCookieService.getLoginCookie("202118194039", "-96387ee");
return Response.success(cookie);
}
}

@ -5,6 +5,15 @@
spring:
config:
import: optional:file:.env[.properties]
application:
name: wusthelper-backend-main
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
register: false
server:
port: ${RUN_PORT}

@ -7,6 +7,7 @@
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>wusthelper-backend</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>backend-main</artifactId>
@ -20,9 +21,17 @@
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<caffeine.version>3.1.6</caffeine.version>
</properties>
<dependencies>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>${caffeine.version}</version>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>external-library</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -6,7 +6,7 @@
<parent>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>external-library</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>${revision}</version>
</parent>
<artifactId>rpc-frp-consul</artifactId>

@ -7,6 +7,7 @@ import cn.wustlinghang.wusthelper.internal.rpc.client.ConsulClient;
import cn.wustlinghang.wusthelper.internal.rpc.client.FrpcClient;
import cn.wustlinghang.wusthelper.internal.rpc.config.FrpConfig;
import cn.wustlinghang.wusthelper.internal.rpc.config.RegisterConfig;
import cn.wustlinghang.wusthelper.internal.rpc.entity.RegisterRequestBody;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
@ -39,6 +40,7 @@ public class FrpConsulRegister {
try {
log.info("连接frp并注册consul...");
this.doRegister();
this.registered = true;
log.info("注册完毕");
} catch (Exception e) {
log.warn("注册服务时发生异常:", e);
@ -53,7 +55,7 @@ public class FrpConsulRegister {
try {
if (this.registered) {
log.info("注销服务...");
this.consulClient.deregister();
this.consulClient.removeService();
this.frpcClientClient.removeProxy();
this.registered = false;
log.info("服务注销完毕");
@ -83,10 +85,15 @@ public class FrpConsulRegister {
retry++;
} while (retry < 3 && remote.length < 2);
if (retry == 3) {
throw new Exception("获取frp隧道信息重试次数过多,请手动添加隧道和注册中心");
throw new Exception("获取frp隧道信息重试超时,请手动添加隧道和注册中心");
}
this.consulClient.register(remoteAddress, Integer.parseInt(remote[1]));
this.registered = true;
RegisterRequestBody.HealthCheckOption healthCheckOption = RegisterRequestBody.HealthCheckOption.builder()
.http("http://" + remoteAddress + "/health")
.interval("3s")
.timeout("5s")
.build();
this.consulClient.addService(remote[0], Integer.parseInt(remote[1]), healthCheckOption);
}
}

@ -16,20 +16,24 @@ public class ConsulClient {
private final String serviceId;
private final String serviceName;
private final String consulAddress;
private final String token;
private final ObjectMapper objectMapper;
private final Requester requester;
public ConsulClient(String serviceId, RegisterConfig registerConfig, ObjectMapper objectMapper, Requester requester) {
public ConsulClient(String serviceId, RegisterConfig registerConfig,
ObjectMapper objectMapper, Requester requester) {
this.serviceId = serviceId;
this.serviceName = registerConfig.getServiceName();
this.consulAddress = registerConfig.getConsulAddress();
this.token = registerConfig.getToken();
this.objectMapper = objectMapper;
this.requester = requester;
}
public void register(String remoteAddress, int remotePort,
public void addService(String remoteAddress, int remotePort,
RegisterRequestBody.HealthCheckOption... healthCheckOption
) throws IOException {
var registerRequestBody = RegisterRequestBody.builder()
@ -44,6 +48,7 @@ public class ConsulClient {
var url = consulAddress + "/v1/agent/service/register";
var registerRequest = RequestFactory.makeHttpRequest(url, registerRequestData);
registerRequest.addHeaders("X-Consul-Token", token);
var registerResponse = requester.put(registerRequest);
if (registerResponse.getStatusCode() != HttpResponse.HTTP_OK) {
@ -51,9 +56,10 @@ public class ConsulClient {
}
}
public void deregister() throws IOException {
public void removeService() throws IOException {
var url = String.format("%s/v1/agent/service/deregister/%s", consulAddress, serviceId);
var deregisterRequest = RequestFactory.makeHttpRequest(url);
deregisterRequest.addHeaders("X-Consul-Token", token);
var deregisterResponse = requester.put(deregisterRequest);
if (deregisterResponse.getStatusCode() != HttpResponse.HTTP_OK) {

@ -1,6 +1,7 @@
package cn.wustlinghang.wusthelper.internal.rpc.client;
import cn.hutool.core.codec.Base64;
import cn.wustlinghang.mywust.network.entitys.HttpResponse;
import cn.wustlinghang.mywust.network.request.RequestFactory;
import cn.wustlinghang.mywust.network.Requester;
import cn.wustlinghang.wusthelper.internal.rpc.config.FrpConfig;
@ -76,7 +77,10 @@ public class FrpcClient {
requester.put(uploadRequest);
var reloadRequest = RequestFactory.makeHttpRequest(frpcAdminAddress + "/api/reload");
reloadRequest.addHeaders("Authorization", frpAuthHeaderValue);
requester.get(reloadRequest);
var reloadResponse = requester.get(reloadRequest);
if (reloadResponse.getStatusCode() != HttpResponse.HTTP_OK) {
throw new IOException("frpc配置重载失败");
}
}
public JsonNode getProxyStatus(String serviceName, String serviceId) throws IOException {

@ -1,8 +1,10 @@
package cn.wustlinghang.wusthelper.internal.rpc.config;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class FrpConfig {
private String frpcAdminAddress;

@ -1,12 +1,16 @@
package cn.wustlinghang.wusthelper.internal.rpc.config;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class RegisterConfig {
private String localServicePort;
private String serviceName;
private String consulAddress;
private String token;
}

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>sub-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-core</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-network-okhttp</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
</project>

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>graduate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-core</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-network-okhttp</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>3.1.3.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

@ -69,6 +69,12 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>rpc-frp-consul</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
<build>

@ -13,3 +13,10 @@ quarkus.package.type=uber-jar
# 但也只是能编译完成,目前的编译产物完全不可用,有非常多的严重bug
# 现阶段使用jar运行,启动效率虽不如原生程序,但速度尚可
quarkus.native.additional-build-args=--initialize-at-run-time=cn.wustlinghang.mywust
rpc.service.name=wusthelper.graduate
rpc.register.consul-api.address=http://127.0.0.1:8500
rpc.frpc.admin-api.address=http://127.0.0.1:7400
rpc.frpc.admin.username=admin
rpc.frpc.admin.password=admin

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>library</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-core</artifactId>
<version>0.0.2-beta</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-network-okhttp</artifactId>
<version>0.0.2-beta</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>3.1.3.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

@ -69,6 +69,12 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>rpc-frp-consul</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
<build>

@ -9,3 +9,10 @@ quarkus.package.type=uber-jar
# 但也只是能编译完成,目前的编译产物完全不可用,有非常多的严重bug
# 现阶段使用jar运行,启动效率虽不如原生程序,但速度尚可
quarkus.native.additional-build-args="--initialize-at-run-time=cn.wustlinghang.mywust"
rpc.service.name=wusthelper.library
rpc.register.consul-api.address=http://127.0.0.1:8500
rpc.frpc.admin-api.address=http://127.0.0.1:7400
rpc.frpc.admin.username=admin
rpc.frpc.admin.password=admin

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>physics</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-core</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-network-okhttp</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>3.1.3.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

@ -69,6 +69,12 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>rpc-frp-consul</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
<build>

@ -9,3 +9,10 @@ quarkus.package.type=uber-jar
# 但也只是能编译完成,目前的编译产物完全不可用,有非常多的严重bug
# 现阶段使用jar运行,启动效率虽不如原生程序,但速度尚可
quarkus.native.additional-build-args="--initialize-at-run-time=cn.wustlinghang.mywust"
rpc.service.name=wusthelper.physics
rpc.register.consul-api.address=http://127.0.0.1:8500
rpc.frpc.admin-api.address=http://127.0.0.1:7400
rpc.frpc.admin.username=admin
rpc.frpc.admin.password=admin

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>undergrad</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
<version>3.1.3.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.ini4j</groupId>
<artifactId>ini4j</artifactId>
<version>0.5.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-core</artifactId>
<version>0.0.2-beta</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.mywust</groupId>
<artifactId>mywust-network-okhttp</artifactId>
<version>0.0.2-beta</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>github</id>
<url>https://maven.pkg.github.com/LingHangStudio/mywust</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>3.1.3.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

@ -71,6 +71,12 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.wustlinghang.wusthelper</groupId>
<artifactId>rpc-frp-consul</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
<build>

@ -42,7 +42,7 @@ public class ExamActivitiesApi {
@POST
@Path("/parse")
public List<Score> parse() throws RpcException {
public List<UndergradExamDelayApiService.ExamActivity> parse() throws RpcException {
throw RpcException.ApiNotImplement();
}
}

@ -1,107 +0,0 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.wustlinghang.mywust.network.Requester;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.client.ConsulClient;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.client.FrpcClient;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.config.RpcConfig;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.runtime.Startup;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.enterprise.context.ApplicationScoped;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@Slf4j
@Startup
@ApplicationScoped
public class FrpConsulRegister {
@ConfigProperty(name = "quarkus.http.port")
String localServicePort;
private final String serviceId;
private final RpcConfig rpcConfig;
private final FrpcClient frpcClientClient;
private final ConsulClient consulClient;
private boolean registered = false;
public FrpConsulRegister(RpcConfig rpcConfig, FrpcClient frpcClientClient, Requester requester,
ObjectMapper objectMapper) {
this.rpcConfig = rpcConfig;
this.frpcClientClient = frpcClientClient;
this.serviceId = RandomUtil.randomString(8);
this.consulClient = new ConsulClient(
rpcConfig.getServiceName(), this.serviceId,
rpcConfig.getConsulAddress(),
objectMapper, requester);
}
@PostConstruct
public void onStartup() {
ThreadUtil.execute(() -> {
try {
log.info("连接frp并注册consul...");
this.doRegister();
log.info("注册完毕");
} catch (Exception e) {
log.warn("注册服务时发生异常:", e);
log.warn("不进行转发注册,直接服务");
}
});
Runtime.getRuntime().addShutdownHook(new Thread(this::onShutdown, "ShutdownHookThread"));
}
@PreDestroy
public void onShutdown() {
try {
if (this.registered) {
log.info("注销服务...");
this.consulClient.deregister();
this.frpcClientClient.removeProxy();
log.info("服务注销完毕");
this.registered = false;
}
} catch (Exception e) {
log.warn("注销服务时发生异常:", e);
}
}
private void doRegister() throws Exception {
frpcClientClient.addFrpProxy(
rpcConfig.getServiceName(), serviceId,
"127.0.0.1", localServicePort
);
String remoteAddress;
String[] remote;
int retry = 0;
do {
// 先睡个0.5秒等待连接成功再获取状态读端口
ThreadUtil.sleep(500);
JsonNode proxy = frpcClientClient.getProxyStatus(rpcConfig.getServiceName(), serviceId);
remoteAddress = proxy.path("remote_addr")
.asText("127.0.0.1:" + localServicePort);
remote = remoteAddress.split(":");
retry++;
} while (retry < 3 && remote.length < 2);
if (retry == 3) {
throw new Exception("获取frp隧道信息重试次数过多,请手动添加隧道和注册中心");
}
this.consulClient.register(remoteAddress, Integer.parseInt(remote[1]));
this.registered = true;
}
}

@ -0,0 +1,41 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc;
import cn.wustlinghang.mywust.network.Requester;
import cn.wustlinghang.wusthelper.internal.rpc.FrpConsulRegister;
import cn.wustlinghang.wusthelper.internal.rpc.config.FrpConfig;
import cn.wustlinghang.wusthelper.internal.rpc.config.RegisterConfig;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.config.RpcConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.runtime.Startup;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.ApplicationScoped;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@Slf4j
@Startup
@ApplicationScoped
public class Register {
private final FrpConsulRegister register;
public Register(RpcConfig rpcConfig, Requester requester, ObjectMapper objectMapper) {
FrpConfig frpConfig = FrpConfig.builder()
.frpcAdminAddress(rpcConfig.getFrpcAdminAddress())
.frpcAdminUsername(rpcConfig.getFrpcAdminUsername())
.frpcAdminPassword(rpcConfig.getFrpcAdminPassword())
.build();
RegisterConfig registerConfig = RegisterConfig.builder()
.consulAddress(rpcConfig.getConsulAddress())
.localServicePort(rpcConfig.getLocalServicePort())
.serviceName(rpcConfig.getServiceName())
.build();
this.register = new FrpConsulRegister(registerConfig, frpConfig, requester, objectMapper);
}
@PostConstruct
public void onStartup() {
register.register();
}
}

@ -1,60 +0,0 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc.client;
import cn.wustlinghang.mywust.network.request.RequestFactory;
import cn.wustlinghang.mywust.network.Requester;
import cn.wustlinghang.mywust.network.entitys.HttpResponse;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.entity.RegisterRequestBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
@Slf4j
public class ConsulClient {
private final String serviceId;
private final String serviceName;
private final String consulAddress;
private final ObjectMapper objectMapper;
private final Requester requester;
public ConsulClient(String serviceName, String serviceId, String consulAddress,
ObjectMapper objectMapper, Requester requester) {
this.serviceId = serviceId;
this.serviceName = serviceName;
this.consulAddress = consulAddress;
this.objectMapper = objectMapper;
this.requester = requester;
}
public void register(String remoteAddress, int remotePort) throws IOException {
var checksItem = RegisterRequestBody.ChecksItem.builder()
.http("http://" + remoteAddress + "/health")
.interval("3s")
.build();
var registerRequestBody = RegisterRequestBody.builder()
.id(serviceId)
.name(serviceName)
.address("127.0.0.1")
.port(remotePort)
.checks(Lists.newArrayList(checksItem))
.build();
byte[] registerRequestData = objectMapper.writeValueAsBytes(registerRequestBody);
var registerRequest = RequestFactory.makeHttpRequest(consulAddress + "/v1/agent/service/register", registerRequestData);
var registerResponse = requester.put(registerRequest);
if (registerResponse.getStatusCode() != HttpResponse.HTTP_OK) {
log.warn("注册中心注册不成功,请手动注册");
}
}
public void deregister() throws IOException {
var deregisterRequest = RequestFactory.makeHttpRequest(consulAddress + "/v1/agent/service/deregister/" + serviceId);
var deregisterResponse = requester.put(deregisterRequest);
if (deregisterResponse.getStatusCode() != HttpResponse.HTTP_OK) {
log.warn("服务注销不成功,请手动注册");
}
}
}

@ -1,100 +0,0 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc.client;
import cn.hutool.core.codec.Base64;
import cn.wustlinghang.mywust.network.request.RequestFactory;
import cn.wustlinghang.mywust.network.Requester;
import cn.wustlinghang.wusthelper.internal.undergrad.rpc.config.FrpConfig;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.MissingNode;
import jakarta.inject.Singleton;
import org.ini4j.Ini;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@Singleton
public class FrpcClient {
private final String frpcAdminAddress;
private final String frpAuthHeaderValue;
private final Requester requester;
private final ObjectMapper objectMapper;
private String frpProxyName;
public FrpcClient(FrpConfig frpConfig,
Requester requester, ObjectMapper objectMapper) {
this.frpcAdminAddress = frpConfig.getFrpcAdminAddress();
this.requester = requester;
this.objectMapper = objectMapper;
String username = frpConfig.getFrpcAdminUsername();
String password = frpConfig.getFrpcAdminPassword();
this.frpAuthHeaderValue = "Basic " + Base64.encode(username + ":" + password);
}
public void addFrpProxy(String serviceName, String serviceId, String localAddress, String localPort)
throws IOException {
this.frpProxyName = String.format("%s-%s", serviceName, serviceId);
Ini ini = this.getFrpConfig();
ini.put(frpProxyName, "type", "tcp");
ini.put(frpProxyName, "local_address", localAddress);
ini.put(frpProxyName, "local_port", localPort);
ini.put(frpProxyName, "use_compression", "true");
var output = new ByteArrayOutputStream();
ini.store(output);
this.reloadFrpConfig(ini);
}
public void removeProxy() throws IOException {
Ini ini = this.getFrpConfig();
ini.remove(this.frpProxyName);
this.reloadFrpConfig(ini);
}
public Ini getFrpConfig() throws IOException {
var frpConfigRequest = RequestFactory.makeHttpRequest(frpcAdminAddress + "/api/config");
frpConfigRequest.addHeaders("Authorization", frpAuthHeaderValue);
var response = requester.get(frpConfigRequest);
return new Ini(new ByteArrayInputStream(response.getBody()));
}
public void reloadFrpConfig(Ini ini) throws IOException {
var output = new ByteArrayOutputStream();
ini.store(output);
var uploadRequest = RequestFactory.makeHttpRequest(frpcAdminAddress + "/api/config", output.toByteArray());
uploadRequest.addHeaders("Authorization", frpAuthHeaderValue);
requester.put(uploadRequest);
var reloadRequest = RequestFactory.makeHttpRequest(frpcAdminAddress + "/api/reload");
reloadRequest.addHeaders("Authorization", frpAuthHeaderValue);
requester.get(reloadRequest);
}
public JsonNode getProxyStatus(String serviceName, String serviceId) throws IOException {
var statusRequest = RequestFactory.makeHttpRequest(frpcAdminAddress + "/api/status");
statusRequest.addHeaders("Authorization", frpAuthHeaderValue);
var statusResponse = requester.get(statusRequest);
JsonNode proxies = objectMapper.readTree(statusResponse.getBody()).path("tcp");
for (JsonNode proxy : proxies) {
if (proxy.path("name").asText().equals(serviceName + "-" + serviceId)) {
return proxy;
}
}
return MissingNode.getInstance();
}
}

@ -1,22 +0,0 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc.config;
import jakarta.inject.Singleton;
import jakarta.ws.rs.DefaultValue;
import lombok.Data;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@Data
@Singleton
public class FrpConfig {
@DefaultValue("http://127.0.0.1:7400")
@ConfigProperty(name = "frpc.admin-api.address")
String frpcAdminAddress;
@DefaultValue("")
@ConfigProperty(name = "frpc.admin.username")
String frpcAdminUsername;
@DefaultValue("")
@ConfigProperty(name = "frpc.admin.password")
String frpcAdminPassword;
}

@ -15,4 +15,19 @@ public class RpcConfig {
@DefaultValue("http://127.0.0.1:8500")
@ConfigProperty(name = "rpc.register.consul-api.address")
String consulAddress;
@DefaultValue("http://127.0.0.1:7400")
@ConfigProperty(name = "rpc.frpc.admin-api.address")
String frpcAdminAddress;
@DefaultValue("")
@ConfigProperty(name = "rpc.frpc.admin.username")
String frpcAdminUsername;
@DefaultValue("")
@ConfigProperty(name = "rpc.frpc.admin.password")
String frpcAdminPassword;
@ConfigProperty(name = "quarkus.http.port")
String localServicePort;
}

@ -1,13 +0,0 @@
package cn.wustlinghang.wusthelper.internal.undergrad.rpc.entity;
import lombok.Builder;
import java.util.List;
@Builder
public record RegisterRequestBody(String address, int port, List<ChecksItem> checks, String name, String id) {
@Builder
public record ChecksItem(String http, String interval) {
}
}

@ -15,6 +15,6 @@ quarkus.native.additional-build-args=--initialize-at-run-time=cn.wustlinghang.my
rpc.service.name=wusthelper.undergrad
rpc.register.consul-api.address=http://127.0.0.1:8500
frpc.admin-api.address=http://127.0.0.1:7400
frpc.admin.username=admin
frpc.admin.password=admin
rpc.frpc.admin-api.address=http://127.0.0.1:7400
rpc.frpc.admin.username=admin
rpc.frpc.admin.password=admin
Loading…
Cancel
Save