From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 Source/BladeX-Tool/blade-core-launch/src/main/java/org/springblade/core/launch/utils/INetUtil.java |  244 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 244 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-launch/src/main/java/org/springblade/core/launch/utils/INetUtil.java b/Source/BladeX-Tool/blade-core-launch/src/main/java/org/springblade/core/launch/utils/INetUtil.java
new file mode 100644
index 0000000..26d1caa
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-launch/src/main/java/org/springblade/core/launch/utils/INetUtil.java
@@ -0,0 +1,244 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package org.springblade.core.launch.utils;
+
+import org.springframework.util.StringUtils;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
+
+/**
+ * INet 鐩稿叧宸ュ叿
+ *
+ * @author L.cm
+ */
+public class INetUtil {
+	public static final String LOCAL_HOST = "127.0.0.1";
+
+	/**
+	 * 鑾峰彇 鏈嶅姟鍣� hostname
+	 *
+	 * @return hostname
+	 */
+	public static String getHostName() {
+		String hostname;
+		try {
+			InetAddress address = InetAddress.getLocalHost();
+			// force a best effort reverse DNS lookup
+			hostname = address.getHostName();
+			if (StringUtils.isEmpty(hostname)) {
+				hostname = address.toString();
+			}
+		} catch (UnknownHostException ignore) {
+			hostname = LOCAL_HOST;
+		}
+		return hostname;
+	}
+
+	/**
+	 * 鑾峰彇 鏈嶅姟鍣� HostIp
+	 *
+	 * @return HostIp
+	 */
+	public static String getHostIp() {
+		String hostAddress;
+		try {
+			InetAddress address = INetUtil.getLocalHostLANAddress();
+			// force a best effort reverse DNS lookup
+			hostAddress = address.getHostAddress();
+			if (StringUtils.isEmpty(hostAddress)) {
+				hostAddress = address.toString();
+			}
+		} catch (UnknownHostException ignore) {
+			hostAddress = LOCAL_HOST;
+		}
+		return hostAddress;
+	}
+
+	/**
+	 * https://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java
+	 *
+	 * <p>
+	 * Returns an <code>InetAddress</code> object encapsulating what is most likely the machine's LAN IP address.
+	 * <p/>
+	 * This method is intended for use as a replacement of JDK method <code>InetAddress.getLocalHost</code>, because
+	 * that method is ambiguous on Linux systems. Linux systems enumerate the loopback network interface the same
+	 * way as regular LAN network interfaces, but the JDK <code>InetAddress.getLocalHost</code> method does not
+	 * specify the algorithm used to select the address returned under such circumstances, and will often return the
+	 * loopback address, which is not valid for network communication. Details
+	 * <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4665037">here</a>.
+	 * <p/>
+	 * This method will scan all IP addresses on all network interfaces on the host machine to determine the IP address
+	 * most likely to be the machine's LAN address. If the machine has multiple IP addresses, this method will prefer
+	 * a site-local IP address (e.g. 192.168.x.x or 10.10.x.x, usually IPv4) if the machine has one (and will return the
+	 * first site-local address if the machine has more than one), but if the machine does not hold a site-local
+	 * address, this method will return simply the first non-loopback address found (IPv4 or IPv6).
+	 * <p/>
+	 * If this method cannot find a non-loopback address using this selection algorithm, it will fall back to
+	 * calling and returning the result of JDK method <code>InetAddress.getLocalHost</code>.
+	 * <p/>
+	 *
+	 * @throws UnknownHostException If the LAN address of the machine cannot be found.
+	 */
+	private static InetAddress getLocalHostLANAddress() throws UnknownHostException {
+		try {
+			InetAddress candidateAddress = null;
+			// Iterate all NICs (network interface cards)...
+			for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
+				NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
+				// Iterate all IP addresses assigned to each card...
+				for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
+					InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
+					if (!inetAddr.isLoopbackAddress()) {
+
+						if (inetAddr.isSiteLocalAddress()) {
+							// Found non-loopback site-local address. Return it immediately...
+							return inetAddr;
+						} else if (candidateAddress == null) {
+							// Found non-loopback address, but not necessarily site-local.
+							// Store it as a candidate to be returned if site-local address is not subsequently found...
+							candidateAddress = inetAddr;
+							// Note that we don't repeatedly assign non-loopback non-site-local addresses as candidates,
+							// only the first. For subsequent iterations, candidate will be non-null.
+						}
+					}
+				}
+			}
+			if (candidateAddress != null) {
+				// We did not find a site-local address, but we found some other non-loopback address.
+				// Server might have a non-site-local address assigned to its NIC (or it might be running
+				// IPv6 which deprecates the "site-local" concept).
+				// Return this non-loopback candidate address...
+				return candidateAddress;
+			}
+			// At this point, we did not find a non-loopback address.
+			// Fall back to returning whatever InetAddress.getLocalHost() returns...
+			InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
+			if (jdkSuppliedAddress == null) {
+				throw new UnknownHostException("The JDK InetAddress.getLocalHost() method unexpectedly returned null.");
+			}
+			return jdkSuppliedAddress;
+		} catch (Exception e) {
+			UnknownHostException unknownHostException = new UnknownHostException("Failed to determine LAN address: " + e);
+			unknownHostException.initCause(e);
+			throw unknownHostException;
+		}
+	}
+
+	/**
+	 * 灏濊瘯绔彛鏃跺�欒鍗犵敤
+	 *
+	 * @param port 绔彛鍙�
+	 * @return 娌℃湁琚崰鐢細true,琚崰鐢細false
+	 */
+	public static boolean tryPort(int port) {
+		try (ServerSocket ignore = new ServerSocket(port)) {
+			return true;
+		} catch (Exception e) {
+			return false;
+		}
+	}
+
+	/**
+	 * 灏� ip 杞垚 InetAddress
+	 *
+	 * @param ip ip
+	 * @return InetAddress
+	 */
+	public static InetAddress getInetAddress(String ip) {
+		try {
+			return InetAddress.getByName(ip);
+		} catch (UnknownHostException e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 鍒ゆ柇鏄惁鍐呯綉 ip
+	 *
+	 * @param ip ip
+	 * @return boolean
+	 */
+	public static boolean isInternalIp(String ip) {
+		return isInternalIp(getInetAddress(ip));
+	}
+
+	/**
+	 * 鍒ゆ柇鏄惁鍐呯綉 ip
+	 *
+	 * @param address InetAddress
+	 * @return boolean
+	 */
+	public static boolean isInternalIp(InetAddress address) {
+		if (isLocalIp(address)) {
+			return true;
+		}
+		return isInternalIp(address.getAddress());
+	}
+
+	/**
+	 * 鍒ゆ柇鏄惁鏈湴 ip
+	 *
+	 * @param address InetAddress
+	 * @return boolean
+	 */
+	public static boolean isLocalIp(InetAddress address) {
+		return address.isAnyLocalAddress()
+			|| address.isLoopbackAddress()
+			|| address.isSiteLocalAddress();
+	}
+
+	/**
+	 * 鍒ゆ柇鏄惁鍐呯綉 ip
+	 *
+	 * @param addr ip
+	 * @return boolean
+	 */
+	public static boolean isInternalIp(byte[] addr) {
+		final byte b0 = addr[0];
+		final byte b1 = addr[1];
+		//10.x.x.x/8
+		final byte section1 = 0x0A;
+		//172.16.x.x/12
+		final byte section2 = (byte) 0xAC;
+		final byte section3 = (byte) 0x10;
+		final byte section4 = (byte) 0x1F;
+		//192.168.x.x/16
+		final byte section5 = (byte) 0xC0;
+		final byte section6 = (byte) 0xA8;
+		switch (b0) {
+			case section1:
+				return true;
+			case section2:
+				if (b1 >= section3 && b1 <= section4) {
+					return true;
+				}
+			case section5:
+				if (b1 == section6) {
+					return true;
+				}
+			default:
+				return false;
+		}
+	}
+
+
+}

--
Gitblit v1.9.3