From ea72efe2c7a764d6d70893db519a437239d0a1a9 Mon Sep 17 00:00:00 2001 From: Ehsan Shirvanian Date: Sat, 28 Dec 2024 22:06:13 -0500 Subject: [PATCH 1/5] fix(provider): update provider link text for Porkbun --- internal/provider/providers/porkbun/provider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/provider/providers/porkbun/provider.go b/internal/provider/providers/porkbun/provider.go index 45d32534a..a2702fde4 100644 --- a/internal/provider/providers/porkbun/provider.go +++ b/internal/provider/providers/porkbun/provider.go @@ -103,7 +103,7 @@ func (p *Provider) HTML() models.HTMLRow { return models.HTMLRow{ Domain: fmt.Sprintf("%s", p.BuildDomainName(), p.BuildDomainName()), Owner: p.Owner(), - Provider: "Porkbun DNS", + Provider: "Porkbun", IPVersion: p.ipVersion.String(), } } From da5b9947fecfc2ed658eda496f5e0637fc4a921c Mon Sep 17 00:00:00 2001 From: Ehsan Shirvanian Date: Sat, 28 Dec 2024 22:30:02 -0500 Subject: [PATCH 2/5] feat(version): add version display and fetch latest release from GitHub --- internal/models/html.go | 3 ++- internal/server/ui/index.html | 1 + internal/server/version.go | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 internal/server/version.go diff --git a/internal/models/html.go b/internal/models/html.go index fc8d8681f..ca796015f 100644 --- a/internal/models/html.go +++ b/internal/models/html.go @@ -4,6 +4,7 @@ package models // It is exported so that the HTML template engine can render it. type HTMLData struct { Rows []HTMLRow + Version string } // HTMLRow contains HTML fields to be rendered @@ -16,4 +17,4 @@ type HTMLRow struct { Status string CurrentIP string PreviousIPs string -} +} \ No newline at end of file diff --git a/internal/server/ui/index.html b/internal/server/ui/index.html index 92c88fbfb..3f181b2bf 100644 --- a/internal/server/ui/index.html +++ b/internal/server/ui/index.html @@ -46,6 +46,7 @@ d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"> +

Version: {{.Version}}

by Quentin McGaw / UI reworked by Date: Sun, 29 Dec 2024 04:30:22 +0000 Subject: [PATCH 3/5] add ddnupdater new version notification --- internal/models/html.go | 8 +++++--- internal/server/index.go | 15 ++++++++++++++- internal/server/ui/index.html | 2 +- internal/server/version.go | 34 ++++++++++++++++++++-------------- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/internal/models/html.go b/internal/models/html.go index ca796015f..41aa1d633 100644 --- a/internal/models/html.go +++ b/internal/models/html.go @@ -3,8 +3,10 @@ package models // HTMLData is a list of HTML fields to be rendered. // It is exported so that the HTML template engine can render it. type HTMLData struct { - Rows []HTMLRow - Version string + Rows []HTMLRow + Version string + UpdateAvailable bool + LatestVersion string } // HTMLRow contains HTML fields to be rendered @@ -17,4 +19,4 @@ type HTMLRow struct { Status string CurrentIP string PreviousIPs string -} \ No newline at end of file +} diff --git a/internal/server/index.go b/internal/server/index.go index 090721572..ca3c09a1f 100644 --- a/internal/server/index.go +++ b/internal/server/index.go @@ -12,7 +12,20 @@ func (h *handlers) index(w http.ResponseWriter, _ *http.Request) { row := record.HTML(h.timeNow()) htmlData.Rows = append(htmlData.Rows, row) } - err := h.indexTemplate.ExecuteTemplate(w, "index.html", htmlData) + + currentVersion := getCurrentVersion() + latestVersion, err := getLatestRelease() + if err != nil { + httpError(w, http.StatusInternalServerError, "failed getting latest release: "+err.Error()) + return + } + htmlData.Version = currentVersion + if currentVersion != latestVersion { + htmlData.UpdateAvailable = true + htmlData.LatestVersion = latestVersion + } + + err = h.indexTemplate.ExecuteTemplate(w, "index.html", htmlData) if err != nil { httpError(w, http.StatusInternalServerError, "failed generating webpage: "+err.Error()) } diff --git a/internal/server/ui/index.html b/internal/server/ui/index.html index 3f181b2bf..aa002e77a 100644 --- a/internal/server/ui/index.html +++ b/internal/server/ui/index.html @@ -46,9 +46,9 @@ d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"> -

Version: {{.Version}}

+
Current Version: {{.Version}} {{if .UpdateAvailable}} Update Available: {{.LatestVersion}}{{end}}
by Quentin McGaw / UI reworked by Gottfried Mayer
diff --git a/internal/server/version.go b/internal/server/version.go index b9b41d05e..359ad76bb 100644 --- a/internal/server/version.go +++ b/internal/server/version.go @@ -1,25 +1,31 @@ package server import ( - "encoding/json" - "net/http" + "encoding/json" + "net/http" ) type GitHubRelease struct { - TagName string `json:"tag_name"` + TagName string `json:"tag_name"` } func getLatestRelease() (string, error) { - resp, err := http.Get("https://api.github.com/repos/qdm12/ddns-updater/releases/latest") - if err != nil { - return "", err - } - defer resp.Body.Close() + resp, err := http.Get("https://api.github.com/repos/qdm12/ddns-updater/releases/latest") + if err != nil { + return "", err + } + defer resp.Body.Close() - var release GitHubRelease - if err := json.NewDecoder(resp.Body).Decode(&release); err != nil { - return "", err - } + var release GitHubRelease + if err := json.NewDecoder(resp.Body).Decode(&release); err != nil { + return "", err + } - return release.TagName, nil -} \ No newline at end of file + return release.TagName, nil +} + +// Add a function to get the current version +func getCurrentVersion() string { + // Replace with actual logic to get the current version + return "v1.0.0" +} From d12296815cd1518251a64fed78e1d2cb886621b9 Mon Sep 17 00:00:00 2001 From: Ehsan Shirvanian Date: Sat, 28 Dec 2024 23:41:18 -0500 Subject: [PATCH 4/5] simpler version display --- internal/server/ui/index.html | 2 +- internal/server/version.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/server/ui/index.html b/internal/server/ui/index.html index aa002e77a..b8e5bddff 100644 --- a/internal/server/ui/index.html +++ b/internal/server/ui/index.html @@ -48,7 +48,7 @@ -
Current Version: {{.Version}} {{if .UpdateAvailable}} Update Available: {{.LatestVersion}}{{end}}
+
{{.Version}} {{if .UpdateAvailable}} Update Available: {{.LatestVersion}}{{end}}
by Quentin McGaw / UI reworked by Gottfried Mayer
diff --git a/internal/server/version.go b/internal/server/version.go index 359ad76bb..9ac4f8533 100644 --- a/internal/server/version.go +++ b/internal/server/version.go @@ -24,8 +24,7 @@ func getLatestRelease() (string, error) { return release.TagName, nil } -// Add a function to get the current version func getCurrentVersion() string { // Replace with actual logic to get the current version - return "v1.0.0" + return "v2.9.0" } From 27dffae8278859d9edc0a90db12d15b0885be6b3 Mon Sep 17 00:00:00 2001 From: Ehsan Shirvanian Date: Sun, 29 Dec 2024 00:37:52 -0500 Subject: [PATCH 5/5] better update available display on ui --- internal/server/ui/index.html | 3 ++- internal/server/version.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/server/ui/index.html b/internal/server/ui/index.html index b8e5bddff..ccde52d7d 100644 --- a/internal/server/ui/index.html +++ b/internal/server/ui/index.html @@ -48,7 +48,8 @@ -
{{.Version}} {{if .UpdateAvailable}} Update Available: {{.LatestVersion}}{{end}}
+
{{.Version}} {{if .UpdateAvailable}} (Update Available: {{.LatestVersion}}){{end}}
by Quentin McGaw / UI reworked by Gottfried Mayer
diff --git a/internal/server/version.go b/internal/server/version.go index 9ac4f8533..2608cfcf1 100644 --- a/internal/server/version.go +++ b/internal/server/version.go @@ -24,6 +24,7 @@ func getLatestRelease() (string, error) { return release.TagName, nil } +// Add a function to get the current version func getCurrentVersion() string { // Replace with actual logic to get the current version return "v2.9.0"