Commit 51e5042

Karn Wong <[email protected]>
2025-11-15 08:27:39
feat(getIP): get internal ip
1 parent 314ad9e
Changed files (2)
internal
internal/generate/ssh_key.go
@@ -38,7 +38,6 @@ func returnKeyPath(fileName string) string {
 	}
 
 	keyPath := filepath.Join(currentDir, fileName)
-	keyPath = keyPath
 
 	return keyPath
 }
internal/get/ip.go
@@ -21,6 +21,51 @@ type IPLocationResponse struct {
 	RegionName string `json:"regionName"`
 }
 
+func getInternalIP() string {
+	var internalIP string
+
+	ifaces, err := net.Interfaces()
+	if err != nil {
+		panic(err)
+	}
+
+	for _, iface := range ifaces {
+		if iface.Flags&net.FlagUp == 0 {
+			continue // interface down
+		}
+		if iface.Flags&net.FlagLoopback != 0 {
+			continue // skip loopback interface
+		}
+
+		addrs, err := iface.Addrs()
+		if err != nil {
+			panic(err)
+		}
+
+		for _, addr := range addrs {
+			var ip net.IP
+
+			switch v := addr.(type) {
+			case *net.IPNet:
+				ip = v.IP
+			case *net.IPAddr:
+				ip = v.IP
+			}
+
+			if ip == nil || ip.IsLoopback() {
+				continue
+			}
+			if ip.To4() != nil {
+				if internalIP == "" {
+					internalIP = ip.String()
+				}
+			}
+		}
+	}
+
+	return internalIP
+}
+
 func getLocalIP() string {
 	conn, err := net.Dial("udp", "8.8.8.8:80")
 	if err != nil {
@@ -71,6 +116,9 @@ func getIPLocation(ip string) IPLocationResponse {
 }
 
 func IP() {
+	internalIP := getInternalIP()
+	fmt.Printf("%s: %s\n", color.Green("Internal IP"), internalIP)
+
 	localIP := getLocalIP()
 	fmt.Printf("%s: %s\n", color.Green("Local IP"), localIP)