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);
+            }
+        };
+    }
+}