Commit f7c61e8
cmd/root.go
@@ -4,6 +4,7 @@ import (
"os"
"github.com/bryfry/cfdns/internal/cf"
+ "github.com/bryfry/cfdns/internal/iplookup"
"github.com/spf13/cobra"
)
@@ -12,8 +13,13 @@ var rootCmd = &cobra.Command{
Short: "update cloudflare dns",
RunE: func(cmd *cobra.Command, args []string) error {
- zoneName := "trustme.click"
- subdomainName := "minecraft.trustme.click"
+ ipDetails, err := iplookup.Discover()
+ if err != nil {
+ return err
+ }
+
+ zoneName := ""
+ subdomainName := ""
apiToken := ""
cfdns, err := cf.New(
@@ -23,7 +29,7 @@ var rootCmd = &cobra.Command{
if err != nil {
return err
}
- err = cfdns.SetIP("127.0.0.1")
+ err = cfdns.SetIP(ipDetails.Address)
if err != nil {
return err
}
internal/iplookup/main.go
@@ -0,0 +1,44 @@
+package iplookup
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "net/http"
+)
+
+type Details struct {
+ Address string `json:"address"`
+ UserAgent string `json:"user_agent"`
+ DomainName string `json:"domain_name"`
+}
+
+const (
+ SERVICE_URL = "https://ip.trustme.click"
+)
+
+func Discover() (*Details, error) {
+ resp, err := http.Get(SERVICE_URL)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to fetch ip details url=%s: %w",
+ SERVICE_URL,
+ err)
+ }
+ b, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to read ip details url=%s: %w",
+ SERVICE_URL,
+ err)
+ }
+ var details Details
+ err = json.Unmarshal(b, &details)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to unmarshal ip details url=%s: %w",
+ SERVICE_URL,
+ err)
+ }
+ return &details, nil
+}