docker,端口,作弊数据库
Change-Id: Ief5141e6e4960f244184b2d307323e541b94cee1
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..fdabd23
--- /dev/null
+++ b/.dockerignore
Binary files differ
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..acaf499
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,26 @@
+# 使用多阶段构建确保正确复制文件
+#FROM docker.mirrors.tencent.com/library/maven:3.8.6-jdk-17 AS builder
+FROM openjdk:17 AS builder
+#FROM maven:3.8.6-eclipse-temurin-17 AS builder
+WORKDIR /app
+COPY . .
+#RUN mvn clean package -DskipTests
+
+
+# 使用阿里云镜像源
+#FROM docker.mirrors.tencent.com/library/eclipse-temurin:17-jdk-alpine
+#FROM eclipse-temurin:17-jdk-alpine
+FROM openjdk:17
+WORKDIR /app
+
+# 1. 复制应用JAR
+COPY --from=builder /app/target/PT-houduan-*.jar app.jar
+
+# 2. 复制所有依赖
+COPY --from=builder /app/target/lib/* /app/lib/
+COPY --from=builder /app/lib/* /app/lib/
+
+# 3. 设置类路径和调试参数
+ENV JAVA_OPTS="-Dloader.path=/app/lib -Ddebug"
+EXPOSE 8080
+ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
\ No newline at end of file
diff --git a/cheat_db.sql b/cheat_db.sql
new file mode 100644
index 0000000..0741e54
--- /dev/null
+++ b/cheat_db.sql
@@ -0,0 +1,37 @@
+# CREATE TABLE cheating_records (
+# id BIGINT AUTO_INCREMENT PRIMARY KEY,
+# info_hash VARCHAR(40),
+# user_id BIGINT,
+# ip VARCHAR(45) NOT NULL,
+# port INT NOT NULL,
+# reason TEXT NOT NULL,
+# detected_at DATETIME NOT NULL,
+# INDEX idx_detected_at (detected_at)
+# );
+
+CREATE TABLE traffic_anomaly (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+ ip VARCHAR(45) NOT NULL COMMENT 'Peer IP',
+ port INT NOT NULL COMMENT 'Peer 端口',
+ upload_delta BIGINT NOT NULL COMMENT '本次上传增量(字节)',
+ download_delta BIGINT NOT NULL COMMENT '本次下载增量(字节)',
+ occur_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '异常发生时间'
+);
+CREATE TABLE client_anomaly (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+ ip VARCHAR(45) NOT NULL COMMENT 'Peer IP',
+ port INT NOT NULL COMMENT 'Peer 端口',
+ peer_id VARCHAR(60) NOT NULL COMMENT '原始peer_id',
+ client_type VARCHAR(50) NOT NULL COMMENT '客户端类型(可疑/黑名单)',
+ occur_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '检测时间'
+);
+-- 存储文件级流量异常记录
+CREATE TABLE IF NOT EXISTS file_traffic_anomaly (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+ total_upload BIGINT NOT NULL COMMENT '总上传量(字节)',
+ total_download BIGINT NOT NULL COMMENT '总下载量(字节)',
+ create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间'
+);
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/CorsConfig.java b/src/main/java/com/pt5/pthouduan/CorsConfig.java
new file mode 100644
index 0000000..11dc1bf
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/CorsConfig.java
@@ -0,0 +1,24 @@
+package com.pt5.pthouduan; // 你可以根据你的包名调整
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig {
+
+ @Bean
+ public WebMvcConfigurer corsConfigurer() {
+ return new WebMvcConfigurer() {
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**") // 允许所有接口
+ .allowedOrigins("http://localhost:3005","http://localhost:5173") // 允许访问的前端地址
+ .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
+ .allowedHeaders("*")
+ .allowCredentials(true);
+ }
+ };
+ }
+}