|
|
@@ -6,6 +6,7 @@ import (
|
|
|
"fmt"
|
|
|
"log/slog"
|
|
|
"sync"
|
|
|
+ "time"
|
|
|
|
|
|
cf "goflare/internal/cloudflare"
|
|
|
"goflare/internal/database/queries"
|
|
|
@@ -14,7 +15,10 @@ import (
|
|
|
"github.com/robfig/cron/v3"
|
|
|
)
|
|
|
|
|
|
-const settingKeyCurrentIP = "current_ip"
|
|
|
+const (
|
|
|
+ settingKeyCurrentIP = "current_ip"
|
|
|
+ settingKeyCurrentIPUpdatedAt = "current_ip_updated_at"
|
|
|
+)
|
|
|
|
|
|
type DDNSUpdater struct {
|
|
|
q *queries.Queries
|
|
|
@@ -121,6 +125,8 @@ func (u *DDNSUpdater) run() {
|
|
|
if len(records) == 0 {
|
|
|
if err := u.q.UpsertSetting(ctx, queries.UpsertSettingParams{Key: settingKeyCurrentIP, Value: ip}); err != nil {
|
|
|
slog.Error("failed to persist current_ip", "error", err)
|
|
|
+ } else if err := u.q.UpsertSetting(ctx, queries.UpsertSettingParams{Key: settingKeyCurrentIPUpdatedAt, Value: time.Now().UTC().Format(time.RFC3339)}); err != nil {
|
|
|
+ slog.Error("failed to persist current_ip_updated_at", "error", err)
|
|
|
}
|
|
|
u.mu.Lock()
|
|
|
u.lastIP = ip
|
|
|
@@ -166,6 +172,8 @@ func (u *DDNSUpdater) run() {
|
|
|
if allOK {
|
|
|
if err := u.q.UpsertSetting(ctx, queries.UpsertSettingParams{Key: settingKeyCurrentIP, Value: ip}); err != nil {
|
|
|
slog.Error("failed to persist current_ip", "error", err)
|
|
|
+ } else if err := u.q.UpsertSetting(ctx, queries.UpsertSettingParams{Key: settingKeyCurrentIPUpdatedAt, Value: time.Now().UTC().Format(time.RFC3339)}); err != nil {
|
|
|
+ slog.Error("failed to persist current_ip_updated_at", "error", err)
|
|
|
}
|
|
|
u.mu.Lock()
|
|
|
u.lastIP = ip
|