From 550bdc0f3da411452cd11d2c387b5826f42681a1 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 29 Dec 2024 16:33:18 +0800 Subject: [PATCH] feat: add myip-go --- myip-go/go.mod | 3 +++ myip-go/main.go | 39 +++++++++++++++++++++++++++++++++++++++ script-meta.json | 5 +++++ 3 files changed, 47 insertions(+) create mode 100644 myip-go/go.mod create mode 100755 myip-go/main.go diff --git a/myip-go/go.mod b/myip-go/go.mod new file mode 100644 index 0000000..b10de84 --- /dev/null +++ b/myip-go/go.mod @@ -0,0 +1,3 @@ +module myip + +go 1.23.0 diff --git a/myip-go/main.go b/myip-go/main.go new file mode 100755 index 0000000..eb9b9e0 --- /dev/null +++ b/myip-go/main.go @@ -0,0 +1,39 @@ +/// 2>/dev/null ; gorun "$0" "$@" ; exit $? + +package main + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "os" +) + +const GetIpUrl = "https://hatter.ink/ip/ip.jsonp" + +type IpResponse struct { + Status int16 `json:"status"` + Message string `json:"message"` + IP string `json:"ip"` + UserAgent string `json:"userAgent"` +} + +func main() { + response, err := http.Get(GetIpUrl) + if err != nil { + fmt.Printf("[ERROR] Get IP failed: %s\n", err) + os.Exit(1) + } + body, err := io.ReadAll(response.Body) + if err != nil { + fmt.Printf("[ERROR] Get IP failed: %s\n", err) + os.Exit(2) + } + var ipReponse IpResponse + if err := json.Unmarshal(body, &ipReponse); err != nil { + fmt.Printf("[ERROR] Get IP failed: %s\n", err) + os.Exit(3) + } + fmt.Printf("[INFO] Your IP address: %s\n", ipReponse.IP) +} diff --git a/script-meta.json b/script-meta.json index a2447ba..42b831c 100644 --- a/script-meta.json +++ b/script-meta.json @@ -3,5 +3,10 @@ "script_name": "helloworld-go", "script_length": 128, "script_sha256": "b807f5d29dd2dbd4dc8c665616c836b1e1c0274d377672109a3e2397bb1139bf" + }, + "myip-go": { + "script_name": "myip-go", + "script_length": 798, + "script_sha256": "2abb41d64288774c01c465508070bec5ba7350228ab0dc79a2fe679b5afb07b6" } } \ No newline at end of file