From a3927f4d71161983a5d07dc103b4590b1ea0dbae Mon Sep 17 00:00:00 2001 From: chuzhongzai Date: Sat, 24 Feb 2024 10:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=96=87=E4=BB=B6=E6=97=B6=E8=83=BD=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8D=B4=E6=97=A0=E6=B3=95=E5=AF=BC=E5=85=A5=E7=9A=84bug;?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E5=85=AC=E7=BD=91ip?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F;=E6=9B=B4=E6=96=B0=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../service/CommunicateToMainService.java | 2 +- src/main/java/com/lion/snss/util/IoUtil.java | 43 +++++++++++++++--- src/main/resources/snss.db | Bin 36864 -> 36864 bytes 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 199b61f..52fc765 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ scalable-network-storage-site scalable-network-storage-site - 17 + 21 @@ -65,7 +65,7 @@ cn.hutool hutool-all - 5.8.20 + 5.8.26 diff --git a/src/main/java/com/lion/snss/service/CommunicateToMainService.java b/src/main/java/com/lion/snss/service/CommunicateToMainService.java index 99ed963..5f50205 100644 --- a/src/main/java/com/lion/snss/service/CommunicateToMainService.java +++ b/src/main/java/com/lion/snss/service/CommunicateToMainService.java @@ -1205,7 +1205,7 @@ public class CommunicateToMainService { if(storagePath.startsWith(file.getParentFile().getPath())) fileNode.setPath(""); else - fileNode.setPath(file.getParentFile().getPath().replace(storagePath, "")); + fileNode.setPath(file.getParentFile().getPath().replace(storagePath, "") + "/"); response.success(objectMapper.valueToTree(fileNode)); } case ShareFileQueryMessage.QUERY_SHARE_FILES -> { diff --git a/src/main/java/com/lion/snss/util/IoUtil.java b/src/main/java/com/lion/snss/util/IoUtil.java index 67ee092..fe16998 100644 --- a/src/main/java/com/lion/snss/util/IoUtil.java +++ b/src/main/java/com/lion/snss/util/IoUtil.java @@ -19,14 +19,15 @@ import oshi.hardware.HWDiskStore; import oshi.hardware.NetworkIF; import oshi.software.os.OperatingSystem; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; +import java.io.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.regex.Pattern; @Data @Slf4j @@ -50,12 +51,14 @@ public class IoUtil { static long write; static long writeNow; + static ScheduledExecutorService thread; + static { init(); } public static void init(){ - ScheduledExecutorService thread = Executors.newScheduledThreadPool(1); + thread = Executors.newScheduledThreadPool(1); List networkIFs = OshiUtil.getNetworkIFs(); cpuInfo = OshiUtil.getCpuInfo(); globalMemory = OshiUtil.getMemory(); @@ -106,7 +109,16 @@ public class IoUtil { public static PairMessage generatePairMessage(){ PairMessage pairMessage = new PairMessage(); - pairMessage.setIp(networkIF.getIPv4addr()[0].split("/")[0]); + String ip = networkIF.getIPv4addr()[0].split("/")[0]; + String privateIPPattern = "(^10\\.)|(^172\\.1[6-9]\\.)|(^172\\.2[0-9]\\.)|(^172\\.3[0-1]\\.)|(^192\\.168\\.)"; + if(Pattern.compile(privateIPPattern).matcher(ip).find()) + try { + ip = getPublicIP(); + }catch (IOException | URISyntaxException e){ + log.info("当前机器网卡为内网ip且无法获取公网ip,程序退出"); + Runtime.getRuntime().exit(1); + } + pairMessage.setIp(ip); pairMessage.setHostname(NetUtil.getLocalHostName()); OperatingSystem os = OshiUtil.getOs(); @@ -120,6 +132,25 @@ public class IoUtil { return pairMessage; } + public static String getPublicIP() throws IOException, URISyntaxException { + // 通过访问一个提供公网IP查询的服务,例如 httpbin.org + URL url = new URI("https://httpbin.org/ip").toURL(); + BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); + + // 读取返回的 JSON 数据 + StringBuilder response = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + + // 从返回的 JSON 数据中提取公网IP + String json = response.toString(); + int startIndex = json.indexOf("\"origin\":") + 10; + int endIndex = json.indexOf("\"", startIndex + 1); + return json.substring(startIndex + 1, endIndex); + } + public static StatusMessage generateStatusMessage(int id, String path){ StatusMessage statusMessage = new StatusMessage(); statusMessage.setId(id); diff --git a/src/main/resources/snss.db b/src/main/resources/snss.db index 6b9f44fc04a0d2fddf6968b5a815b5e1a74af5a9..10915f38f7974a1e026ab8ee78b1430ac5ec2dbd 100644 GIT binary patch delta 178 zcmZozz|^pSX@WFk^F$eE)@BC1WX6pt^W?d9GH~#R@$%R3hi&Fj(Bo&}uVIjx=qO>& z$HFWvnpqs5SXz=%QdF9nD#*z!sG3<|WMHmmW}s(kpl5E9Ss=>HEUH;#Hb(w?4E*;t3ks~~pS;svkHfMcHNT*;xOnn=dr_d|7Y6<> Un*{@2@$+yq%W}db7X>%~0O5r*y#N3J