add yml
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
stages:
|
||||
- generate_image
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
BUILD_NAME: "go/ddns"
|
||||
SERVICE_NAME: "ddns"
|
||||
IMAGE_TAG: "latest"
|
||||
|
||||
generate_image_dev:
|
||||
stage: generate_image
|
||||
image: docker:20.10.2
|
||||
script:
|
||||
- docker build -t $BUILD_NAME:$IMAGE_TAG .
|
||||
tags:
|
||||
- '001'
|
||||
only:
|
||||
- dev
|
||||
except:
|
||||
- triggers
|
||||
|
||||
deploy_dev:
|
||||
stage: deploy
|
||||
image: docker:20.10.2
|
||||
script:
|
||||
- CONTAINER_NAME=$(docker ps -aq --filter name=$SERVICE_NAME)
|
||||
- echo $CONTAINER_NAME
|
||||
- if [[ -n "$CONTAINER_NAME" ]]; then
|
||||
docker rm -f $CONTAINER_NAME;
|
||||
fi
|
||||
- docker run -d --name $SERVICE_NAME $BUILD_NAME:$IMAGE_TAG
|
||||
tags:
|
||||
- '001'
|
||||
only:
|
||||
- dev
|
||||
except:
|
||||
- triggers
|
21
action.yml
Normal file
21
action.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
name: Dns
|
||||
run-name: dynamic dns
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
env:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: docker:20.18
|
||||
env:
|
||||
BUILD_NAME: "go/ddns"
|
||||
SERVICE_NAME: "ddns"
|
||||
IMAGE_TAG: "latest"
|
||||
steps:
|
||||
- run: CONTAINER_NAME=$(docker ps -aq --filter name=$SERVICE_NAME)
|
||||
- run: echo $CONTAINER_NAME
|
||||
- run: if [[ -n "$CONTAINER_NAME" ]]; then
|
||||
docker rm -f $CONTAINER_NAME;
|
||||
fi
|
||||
- run: docker run -d --name $SERVICE_NAME $BUILD_NAME:$IMAGE_TAG
|
58
main.go
58
main.go
@@ -2,7 +2,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
_ "github.com/PuerkitoBio/goquery"
|
||||
dns "github.com/alibabacloud-go/alidns-20150109/v2/client"
|
||||
@@ -21,30 +21,50 @@ import (
|
||||
* @throws Exception
|
||||
*/
|
||||
func QueryPublicIP() string {
|
||||
type QueryResult struct {
|
||||
Code int `json:"code"`
|
||||
Msg interface{} `json:"msg"`
|
||||
Data struct {
|
||||
IP string `json:"ip"`
|
||||
IPv6 string `json:"ipv6"`
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
client := &http.Client{Timeout: 5 * time.Second}
|
||||
resp, err := client.Get("http://ifconfig.me/ip")
|
||||
resp, err := client.Get("https://openapi.lddgo.net/base/gtool/api/v1/GetIp")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
fmt.Printf("HTTP request failed: %v\n", err)
|
||||
return ""
|
||||
}
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
defer func() {
|
||||
if err := resp.Body.Close(); err != nil {
|
||||
fmt.Printf("Failed to close response body: %v\n", err)
|
||||
}
|
||||
}()
|
||||
|
||||
}
|
||||
}(resp.Body)
|
||||
var buffer [512]byte
|
||||
result := bytes.NewBuffer(nil)
|
||||
for {
|
||||
n, err := resp.Body.Read(buffer[0:])
|
||||
result.Write(buffer[0:n])
|
||||
if err != nil && err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
fmt.Printf("Unexpected status code: %d\n", resp.StatusCode)
|
||||
return ""
|
||||
}
|
||||
|
||||
return result.String()
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to read response body: %v\n", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
var query QueryResult
|
||||
if err := json.Unmarshal(body, &query); err != nil {
|
||||
fmt.Printf("JSON unmarshal failed: %v\n", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
if query.Code != 0 { // 假设 0 表示成功状态码
|
||||
fmt.Printf("API returned error: %v\n", query.Msg)
|
||||
return ""
|
||||
}
|
||||
|
||||
return query.Data.IP
|
||||
}
|
||||
|
||||
func QueryRecordId(client *dns.Client, domainName *string) map[string]interface{} {
|
||||
|
Reference in New Issue
Block a user