From 51022e39dc74ca3fb023b228a27ee5ab00bdb0c0 Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Fri, 11 Jul 2025 09:59:15 +0800 Subject: [PATCH] =?UTF-8?q?7.11=20frp=E9=83=A8=E7=BD=B2=E4=B8=8E=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=A4=BA=E4=BE=8B=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 40 +++++++ docs/dev-ops/frpc/config/frpc.toml | 29 +++++ docs/dev-ops/frpc/docker-compose.yml | 13 ++ docs/dev-ops/frps/config/frps.toml | 10 ++ docs/dev-ops/frps/docker-compose.yml | 13 ++ .../dev-ops/smile-tech-app/docker-compose.yml | 9 ++ pom.xml | 104 ++++++++++++++++ smile-tech-app/Dockerfile | 18 +++ smile-tech-app/build.sh | 1 + smile-tech-app/pom.xml | 110 +++++++++++++++++ .../edu/whut/smile/dev/tech/Application.java | 58 +++++++++ .../src/main/resources/application-dev.yml | 14 +++ .../src/main/resources/application.yml | 5 + .../src/main/resources/logback-spring.xml | 112 ++++++++++++++++++ 14 files changed, 536 insertions(+) create mode 100644 .gitignore create mode 100644 docs/dev-ops/frpc/config/frpc.toml create mode 100644 docs/dev-ops/frpc/docker-compose.yml create mode 100644 docs/dev-ops/frps/config/frps.toml create mode 100644 docs/dev-ops/frps/docker-compose.yml create mode 100644 docs/dev-ops/smile-tech-app/docker-compose.yml create mode 100644 pom.xml create mode 100644 smile-tech-app/Dockerfile create mode 100644 smile-tech-app/build.sh create mode 100644 smile-tech-app/pom.xml create mode 100644 smile-tech-app/src/main/java/edu/whut/smile/dev/tech/Application.java create mode 100644 smile-tech-app/src/main/resources/application-dev.yml create mode 100644 smile-tech-app/src/main/resources/application.yml create mode 100644 smile-tech-app/src/main/resources/logback-spring.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..613ee2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store +/data/ +/.idea/ diff --git a/docs/dev-ops/frpc/config/frpc.toml b/docs/dev-ops/frpc/config/frpc.toml new file mode 100644 index 0000000..513ca6c --- /dev/null +++ b/docs/dev-ops/frpc/config/frpc.toml @@ -0,0 +1,29 @@ +# 服务端地址 https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml +serverAddr = "124.71.159.195" +# 服务端配置的bindPort +serverPort = 7000 +# token = + +[[proxies]] +# 代理应用名称,根据自己需要进行配置 +name = "smile-dev-tech-01" +# 代理类型 有tcp\udp\stcp\p2p +type = "tcp" +# 客户端代理应用IP +localIP = "host.docker.internal" +# 客户端代理应用端口 +localPort = 8234 +# 服务端反向代理端口;提供给外部访问 +remotePort = 8234 + +[[proxies]] +# 代理应用名称,根据自己需要进行配置 +name = "smile-dev-tech-02" +# 代理类型 有tcp\udp\stcp\p2p +type = "tcp" +# 客户端代理应用IP +localIP = "127.0.0.1" +# 客户端代理应用端口 +localPort = 9001 +# 服务端反向代理端口;提供给外部访问 +remotePort = 9001 \ No newline at end of file diff --git a/docs/dev-ops/frpc/docker-compose.yml b/docs/dev-ops/frpc/docker-compose.yml new file mode 100644 index 0000000..59ff0a5 --- /dev/null +++ b/docs/dev-ops/frpc/docker-compose.yml @@ -0,0 +1,13 @@ +# 命令执行 docker-compose -f docker-compose.yml up -d +version: '3.9' +services: + frpc: + image: fatedier/frpc:v0.60.0 + hostname: frpc + container_name: frpc + volumes: + - "./config/frpc.toml:/frpc.toml" + command: + - "-c" + - "/frpc.toml" + network_mode: "host" diff --git a/docs/dev-ops/frps/config/frps.toml b/docs/dev-ops/frps/config/frps.toml new file mode 100644 index 0000000..56d316f --- /dev/null +++ b/docs/dev-ops/frps/config/frps.toml @@ -0,0 +1,10 @@ +# https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml +[common] +# 监听端口 +bind_port = 7000 +# 面板端口 +dashboard_port = 7500 +# 登录面板的账号密码(修改成自己的) +dashboard_user = admin +dashboard_pwd = admin +# token = \ No newline at end of file diff --git a/docs/dev-ops/frps/docker-compose.yml b/docs/dev-ops/frps/docker-compose.yml new file mode 100644 index 0000000..a22d340 --- /dev/null +++ b/docs/dev-ops/frps/docker-compose.yml @@ -0,0 +1,13 @@ +# 命令执行 docker-compose -f docker-compose.yml up -d +version: '3.9' +services: + frps: + image: fatedier/frps:v0.60.0 + hostname: frps + container_name: frps + volumes: + - "./config/frps.toml:/frps.toml" + command: + - "-c" + - "/frps.toml" + network_mode: "host" \ No newline at end of file diff --git a/docs/dev-ops/smile-tech-app/docker-compose.yml b/docs/dev-ops/smile-tech-app/docker-compose.yml new file mode 100644 index 0000000..2e2d289 --- /dev/null +++ b/docs/dev-ops/smile-tech-app/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3.8' +# 命令执行 docker-compose -f docker-compose-app.yml up -d +services: + smile-tech-frp-app: + image: zhangsan/smile-tech-frp-app:1.0 + container_name: smile-tech-frp-app + restart: always + ports: + - "8234:8234" \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e80b4fd --- /dev/null +++ b/pom.xml @@ -0,0 +1,104 @@ + + + 4.0.0 + + cn.bugstack + smile-tech-frp + 1.0-SNAPSHOT + pom + + + smile-tech-app + + + + 1.8 + UTF-8 + 8 + 8 + UTF-8 + + + + org.springframework.boot + spring-boot-starter-parent + 2.7.12 + + + + + + + com.alibaba + fastjson + 2.0.28 + + + org.apache.commons + commons-lang3 + 3.9 + + + com.google.guava + guava + 32.1.3-jre + + + + + + smile-tech + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + UTF-8 + + + + org.codehaus.mojo + versions-maven-plugin + 2.7 + + + + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + \ No newline at end of file diff --git a/smile-tech-app/Dockerfile b/smile-tech-app/Dockerfile new file mode 100644 index 0000000..ec3d63b --- /dev/null +++ b/smile-tech-app/Dockerfile @@ -0,0 +1,18 @@ +# 基础镜像 openjdk:8-jre-slim +FROM openjdk:8-jre-slim + +# 作者 +MAINTAINER smile + +# 配置 +ENV PARAMS="" + +# 时区 +ENV TZ=PRC +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# 添加应用 +ADD target/smile-tech-frp-app.jar /smile-tech-frp-app.jar + +## 在镜像运行为容器后执行的命令 +ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /smile-tech-frp-app.jar $PARAMS"] diff --git a/smile-tech-app/build.sh b/smile-tech-app/build.sh new file mode 100644 index 0000000..f0c0a2b --- /dev/null +++ b/smile-tech-app/build.sh @@ -0,0 +1 @@ +docker build -t zhangsan/smile-tech-frp-app:1.0 -f ./Dockerfile . \ No newline at end of file diff --git a/smile-tech-app/pom.xml b/smile-tech-app/pom.xml new file mode 100644 index 0000000..0d02a79 --- /dev/null +++ b/smile-tech-app/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + + cn.bugstack + smile-tech-frp + 1.0-SNAPSHOT + + + org.example + smile-tech-frp-app + + jar + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-configuration-processor + + + org.springframework.boot + spring-boot-autoconfigure + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-registry-prometheus + + + com.alibaba + fastjson + + + org.apache.commons + commons-lang3 + + + org.projectlombok + lombok + + + junit + junit + test + + + + + smile-tech-frp-app + + + src/main/resources + true + + **/** + + + + + + src/test/resources + true + + **/** + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.6 + + true + false + + **/*Test.java + + + + + org.springframework.boot + spring-boot-maven-plugin + + edu.whut.smile.tech.Application + JAR + + + + + + \ No newline at end of file diff --git a/smile-tech-app/src/main/java/edu/whut/smile/dev/tech/Application.java b/smile-tech-app/src/main/java/edu/whut/smile/dev/tech/Application.java new file mode 100644 index 0000000..f67fddf --- /dev/null +++ b/smile-tech-app/src/main/java/edu/whut/smile/dev/tech/Application.java @@ -0,0 +1,58 @@ +package edu.whut.smile.dev.tech; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@SpringBootApplication +@RestController() +@RequestMapping("/api/") +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class); + } + + /** + * http://localhost:8234/api/test + * http://124.71.159.195:8234/api/test + */ + @RequestMapping(value = "/test", method = RequestMethod.GET) + public ResponseBodyEmitter test(HttpServletResponse response) { + response.setContentType("text/event-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Cache-Control", "no-cache"); + + ResponseBodyEmitter emitter = new ResponseBodyEmitter(); + + String[] words = new String[]{"嗨,小伙伴。\r\n", "恭喜💐 ", "你的", " FRP 内网穿透 ", "部", "署", "测", "试", "成", "功", "了啦🌶!", "\r\nBy Smile https://blog.bitday.top"}; + new Thread(() -> { + for (String word : words) { + try { + emitter.send(word); + Thread.sleep(250); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + } + }).start(); + + return emitter; + } + + /** + * http://localhost:8234/api/query + * http://124.71.159.195:8234/api/query + */ + @RequestMapping(value = "/query", method = RequestMethod.GET) + public String query() { + return "hi!"; + } + +} diff --git a/smile-tech-app/src/main/resources/application-dev.yml b/smile-tech-app/src/main/resources/application-dev.yml new file mode 100644 index 0000000..ca8b8a4 --- /dev/null +++ b/smile-tech-app/src/main/resources/application-dev.yml @@ -0,0 +1,14 @@ +server: + port: 8234 + tomcat: + max-connections: 20 + threads: + max: 20 + min-spare: 10 + accept-count: 10 + +# 日志 +logging: + level: + root: info + config: classpath:logback-spring.xml \ No newline at end of file diff --git a/smile-tech-app/src/main/resources/application.yml b/smile-tech-app/src/main/resources/application.yml new file mode 100644 index 0000000..495a57f --- /dev/null +++ b/smile-tech-app/src/main/resources/application.yml @@ -0,0 +1,5 @@ +spring: + config: + name: smile-dev-tech + profiles: + active: dev diff --git a/smile-tech-app/src/main/resources/logback-spring.xml b/smile-tech-app/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..b2f1932 --- /dev/null +++ b/smile-tech-app/src/main/resources/logback-spring.xml @@ -0,0 +1,112 @@ + + + + + logback + + + + + + + + + + + + + info + + + %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n + UTF-8 + + + + + + + + ./data/log/log_info.log + + + %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n + UTF-8 + + + + + ./data/log/log-info-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 15 + 10GB + + + + + + + ./data/log/log_error.log + + + %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n + UTF-8 + + + + ./data/log/log-error-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 7 + 5GB + + + + WARN + + + + + + + 0 + + 8192 + + true + + false + + + + + + 0 + + 1024 + + true + + false + + + + + + + + + + + + + + + \ No newline at end of file