修改增加上传量下载量逻辑

Change-Id: I5dc30fd08feabca1e2acffb647966e4060d76bd3
diff --git a/src/main/java/tracker/DataCaptureProxy.java b/src/main/java/tracker/DataCaptureProxy.java
index c2ed137..cb66feb 100644
--- a/src/main/java/tracker/DataCaptureProxy.java
+++ b/src/main/java/tracker/DataCaptureProxy.java
@@ -6,7 +6,7 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.URL;
-
+import tracker.Tracker;
 import org.simpleframework.http.Request;
 import org.simpleframework.http.Response;
 import org.simpleframework.http.core.Container;
@@ -34,15 +34,17 @@
             String uploaded   = req.getParameter("uploaded");
             String downloaded = req.getParameter("downloaded");
             String passkey    = req.getParameter("passkey");
+            String port       = req.getParameter("port"); // qBittorrent 服务端端口
 
-            // 获取客户端IP地址
+            // 获取客户端IP地址和端口
             String clientIp;
+            int clientPort = -1;
             // 直接从 TCP 连接(socket 源地址)中读取
             SocketAddress socketAddress = req.getClientAddress();
             if (socketAddress instanceof InetSocketAddress) {
-                clientIp = ((InetSocketAddress) socketAddress)
-                               .getAddress()
-                               .getHostAddress();
+                InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
+                clientIp = inetSocketAddress.getAddress().getHostAddress();
+                clientPort = inetSocketAddress.getPort();
             } else {
                 // 兜底写法,将整个 SocketAddress 转为字符串
                 clientIp = socketAddress.toString();
@@ -53,23 +55,25 @@
                 ", uploaded=" + uploaded +
                 ", downloaded=" + downloaded +
                 ", passkey=" + passkey +
-                ", client_ip=" + clientIp
+                ", client_ip=" + clientIp +
+                ", client_port=" + clientPort +
+                ", qbt_service_port=" + port
             );
 
             // 调用 Tracker 方法更新上传和下载数据
-            if (passkey != null && !passkey.isEmpty()) {
+            if (passkey != null && !passkey.isEmpty() && infoHash != null && !infoHash.isEmpty()) {
                 try {
                     if (uploaded != null && !uploaded.isEmpty()) {
                         int uploadValue = Integer.parseInt(uploaded);
                         if (uploadValue > 0) {
-                            tracker.AddUpLoad(passkey, uploadValue);
+                            tracker.AddUpLoad(passkey, uploadValue, infoHash);
                         }
                     }
                     
                     if (downloaded != null && !downloaded.isEmpty()) {
                         int downloadValue = Integer.parseInt(downloaded);
                         if (downloadValue > 0) {
-                            tracker.AddDownload(passkey, downloadValue);
+                            tracker.AddDownload(passkey, downloadValue, infoHash);
                         }
                     }
                 } catch (NumberFormatException e) {