diff --git a/go.mod b/go.mod index 950963f..c1f45b9 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,13 @@ module github.com/plaenkler/ddns-updater go 1.22.0 require ( - github.com/aliyun/alibaba-cloud-sdk-go v1.62.783 + github.com/aliyun/alibaba-cloud-sdk-go v1.62.796 github.com/kardianos/service v1.2.2 github.com/pquerna/otp v1.4.0 golang.org/x/time v0.5.0 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/sqlite v1.5.6 - gorm.io/gorm v1.25.10 + gorm.io/gorm v1.25.11 ) require ( @@ -22,6 +22,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect - golang.org/x/sys v0.1.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) diff --git a/go.sum b/go.sum index 6af5e75..befb815 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/aliyun/alibaba-cloud-sdk-go v1.62.783 h1:nAdI37B39TgXimEXegM0ThQs30nEq4zanLycGqMSkac= -github.com/aliyun/alibaba-cloud-sdk-go v1.62.783/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ= +github.com/aliyun/alibaba-cloud-sdk-go v1.62.796 h1:5qwuGvXS6rQwoITaUnJyzftcAJCJ0oVjZ9PIYftXyjA= +github.com/aliyun/alibaba-cloud-sdk-go v1.62.796/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -80,9 +80,11 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -108,6 +110,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= -gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s= -gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg= +gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/pkg/ddns/update.go b/pkg/ddns/update.go index e30aa02..d336366 100644 --- a/pkg/ddns/update.go +++ b/pkg/ddns/update.go @@ -10,41 +10,41 @@ type provider struct { } var updaters = map[string]provider{ - "Strato": {Updater: providers.UpdateStrato, Request: &providers.UpdateStratoRequest{}}, - "DDNSS": {Updater: providers.UpdateDDNSS, Request: &providers.UpdateDDNSSRequest{}}, - "Dynu": {Updater: providers.UpdateDynu, Request: &providers.UpdateDynuRequest{}}, - "Aliyun": {Updater: providers.UpdateAliyun, Request: &providers.UpdateAliyunRequest{}}, - "AllInkl": {Updater: providers.UpdateAllInkl, Request: &providers.UpdateAllInklRequest{}}, - "Cloudflare": {Updater: providers.UpdateCloudflare, Request: &providers.UpdateCloudflareRequest{}}, - "DD24": {Updater: providers.UpdateDD24, Request: &providers.UpdateDD24Request{}}, - "DigitalOcean": {Updater: providers.UpdateDigitalOcean, Request: &providers.UpdateDigitalOceanRequest{}}, - "DonDominio": {Updater: providers.UpdateDonDominio, Request: &providers.UpdateDonDominioRequest{}}, - "DNSOMatic": {Updater: providers.UpdateDNSOMatic, Request: &providers.UpdateDNSOMaticRequest{}}, - "DNSPod": {Updater: providers.UpdateDNSPod, Request: &providers.UpdateDNSPodRequest{}}, - "Dreamhost": {Updater: providers.UpdateDreamhost, Request: &providers.UpdateDreamhostRequest{}}, - "DuckDNS": {Updater: providers.UpdateDuckDNS, Request: &providers.UpdateDuckDNSRequest{}}, - "DynDNS": {Updater: providers.UpdateDynDNS, Request: &providers.UpdateDynDNSRequest{}}, - "FreeDNS": {Updater: providers.UpdateFreeDNS, Request: &providers.UpdateFreeDNSRequest{}}, - "Gandi": {Updater: providers.UpdateGandi, Request: &providers.UpdateGandiRequest{}}, - "GCP": {Updater: providers.UpdateGCP, Request: &providers.UpdateGCPRequest{}}, - "GoDaddy": {Updater: providers.UpdateGoDaddy, Request: &providers.UpdateGoDaddyRequest{}}, - "Google": {Updater: providers.UpdateGoogle, Request: &providers.UpdateGoogleRequest{}}, - "He": {Updater: providers.UpdateHe, Request: &providers.UpdateHeRequest{}}, - "Infomaniak": {Updater: providers.UpdateInfomaniak, Request: &providers.UpdateInfomaniakRequest{}}, - "INWX": {Updater: providers.UpdateINWX, Request: &providers.UpdateINWXRequest{}}, - "Linode": {Updater: providers.UpdateLinode, Request: &providers.UpdateLinodeRequest{}}, - "LuaDNS": {Updater: providers.UpdateLuaDNS, Request: &providers.UpdateLuaDNSRequest{}}, - "Namecheap": {Updater: providers.UpdateNamecheap, Request: &providers.UpdateNamecheapRequest{}}, - "NoIP": {Updater: providers.UpdateNoIP, Request: &providers.UpdateNoIPRequest{}}, - "Njalla": {Updater: providers.UpdateNjalla, Request: &providers.UpdateNjallaRequest{}}, - "OpenDNS": {Updater: providers.UpdateOpenDNS, Request: &providers.UpdateOpenDNSRequest{}}, - "OVH": {Updater: providers.UpdateOVH, Request: &providers.UpdateOVHRequest{}}, - "Porkbun": {Updater: providers.UpdatePorkbun, Request: &providers.UpdatePorkbunRequest{}}, - "Selfhost": {Updater: providers.UpdateSelfhost, Request: &providers.UpdateSelfhostRequest{}}, - "Servercow": {Updater: providers.UpdateServercow, Request: &providers.UpdateServercowRequest{}}, - "Spdyn": {Updater: providers.UpdateSpdyn, Request: &providers.UpdateSpdynRequest{}}, - "Variomedia": {Updater: providers.UpdateVariomedia, Request: &providers.UpdateVariomediaRequest{}}, - "MaxiHoster": {Updater: providers.UpdateMaxiHoster, Request: &providers.UpdateMaxiHosterRequest{}}, + "Strato": {Updater: providers.UpdateStrato, Request: providers.UpdateStratoRequest{}}, + "DDNSS": {Updater: providers.UpdateDDNSS, Request: providers.UpdateDDNSSRequest{}}, + "Dynu": {Updater: providers.UpdateDynu, Request: providers.UpdateDynuRequest{}}, + "Aliyun": {Updater: providers.UpdateAliyun, Request: providers.UpdateAliyunRequest{}}, + "AllInkl": {Updater: providers.UpdateAllInkl, Request: providers.UpdateAllInklRequest{}}, + "Cloudflare": {Updater: providers.UpdateCloudflare, Request: providers.UpdateCloudflareRequest{}}, + "DD24": {Updater: providers.UpdateDD24, Request: providers.UpdateDD24Request{}}, + "DigitalOcean": {Updater: providers.UpdateDigitalOcean, Request: providers.UpdateDigitalOceanRequest{}}, + "DonDominio": {Updater: providers.UpdateDonDominio, Request: providers.UpdateDonDominioRequest{}}, + "DNSOMatic": {Updater: providers.UpdateDNSOMatic, Request: providers.UpdateDNSOMaticRequest{}}, + "DNSPod": {Updater: providers.UpdateDNSPod, Request: providers.UpdateDNSPodRequest{}}, + "Dreamhost": {Updater: providers.UpdateDreamhost, Request: providers.UpdateDreamhostRequest{}}, + "DuckDNS": {Updater: providers.UpdateDuckDNS, Request: providers.UpdateDuckDNSRequest{}}, + "DynDNS": {Updater: providers.UpdateDynDNS, Request: providers.UpdateDynDNSRequest{}}, + "FreeDNS": {Updater: providers.UpdateFreeDNS, Request: providers.UpdateFreeDNSRequest{}}, + "Gandi": {Updater: providers.UpdateGandi, Request: providers.UpdateGandiRequest{}}, + "GCP": {Updater: providers.UpdateGCP, Request: providers.UpdateGCPRequest{}}, + "GoDaddy": {Updater: providers.UpdateGoDaddy, Request: providers.UpdateGoDaddyRequest{}}, + "Google": {Updater: providers.UpdateGoogle, Request: providers.UpdateGoogleRequest{}}, + "He": {Updater: providers.UpdateHe, Request: providers.UpdateHeRequest{}}, + "Infomaniak": {Updater: providers.UpdateInfomaniak, Request: providers.UpdateInfomaniakRequest{}}, + "INWX": {Updater: providers.UpdateINWX, Request: providers.UpdateINWXRequest{}}, + "Linode": {Updater: providers.UpdateLinode, Request: providers.UpdateLinodeRequest{}}, + "LuaDNS": {Updater: providers.UpdateLuaDNS, Request: providers.UpdateLuaDNSRequest{}}, + "Namecheap": {Updater: providers.UpdateNamecheap, Request: providers.UpdateNamecheapRequest{}}, + "NoIP": {Updater: providers.UpdateNoIP, Request: providers.UpdateNoIPRequest{}}, + "Njalla": {Updater: providers.UpdateNjalla, Request: providers.UpdateNjallaRequest{}}, + "OpenDNS": {Updater: providers.UpdateOpenDNS, Request: providers.UpdateOpenDNSRequest{}}, + "OVH": {Updater: providers.UpdateOVH, Request: providers.UpdateOVHRequest{}}, + "Porkbun": {Updater: providers.UpdatePorkbun, Request: providers.UpdatePorkbunRequest{}}, + "Selfhost": {Updater: providers.UpdateSelfhost, Request: providers.UpdateSelfhostRequest{}}, + "Servercow": {Updater: providers.UpdateServercow, Request: providers.UpdateServercowRequest{}}, + "Spdyn": {Updater: providers.UpdateSpdyn, Request: providers.UpdateSpdynRequest{}}, + "Variomedia": {Updater: providers.UpdateVariomedia, Request: providers.UpdateVariomediaRequest{}}, + "MaxiHoster": {Updater: providers.UpdateMaxiHoster, Request: providers.UpdateMaxiHosterRequest{}}, } func GetProviders() []string { diff --git a/pkg/server/middles.go b/pkg/server/middles.go index eec9eed..623bfe7 100644 --- a/pkg/server/middles.go +++ b/pkg/server/middles.go @@ -1,7 +1,6 @@ package server import ( - "fmt" "net/http" "strings" @@ -19,23 +18,6 @@ func limitRequests(handler http.Handler) http.Handler { }) } -func forwardToProxy(handler http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - addr, err := getRealClientIP(r) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - port, err := getRealClientPort(r) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - r.URL.Host = fmt.Sprintf("%s:%s", addr, port) - handler.ServeHTTP(w, r) - }) -} - func controlCache(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Cache-Control", "public, max-age=86400") diff --git a/pkg/server/routes/api/inputs.go b/pkg/server/routes/api/inputs.go index e4d27f9..e88baec 100644 --- a/pkg/server/routes/api/inputs.go +++ b/pkg/server/routes/api/inputs.go @@ -13,12 +13,12 @@ func GetInputs(w http.ResponseWriter, r *http.Request) { http.Error(w, "[api-GetInputs-1] missing provider", http.StatusBadRequest) return } - request, ok := ddns.GetUpdaters()[provider] + updater, ok := ddns.GetUpdaters()[provider] if !ok { http.Error(w, "[api-GetInputs-2] provider is not valid", http.StatusBadRequest) return } - fields := &request.Request + fields := updater.Request inputs, err := json.Marshal(fields) if err != nil { http.Error(w, "[api-GetInputs-3] could not marshal fields", http.StatusInternalServerError) diff --git a/pkg/server/routes/api/job.go b/pkg/server/routes/api/job.go index dbbaf4d..a78b8e4 100644 --- a/pkg/server/routes/api/job.go +++ b/pkg/server/routes/api/job.go @@ -27,7 +27,7 @@ func CreateJob(w http.ResponseWriter, r *http.Request) { log.Errorf("[api-CreateJob-2] provider is not valid") return } - jobModel := &updater.Request + jobModel := updater.Request params := r.FormValue("params") err = json.Unmarshal([]byte(params), &jobModel) if err != nil { @@ -81,7 +81,7 @@ func UpdateJob(w http.ResponseWriter, r *http.Request) { log.Errorf("[api-UpdateJob-3] provider is not valid") return } - jobModel := &updater.Request + jobModel := updater.Request params := r.FormValue("params") err = json.Unmarshal([]byte(params), &jobModel) if err != nil { diff --git a/pkg/server/service.go b/pkg/server/service.go index 5e9851e..0982942 100644 --- a/pkg/server/service.go +++ b/pkg/server/service.go @@ -39,7 +39,6 @@ func initializeRouter() { } func registerMiddlewares(r *Router) { - r.Use(forwardToProxy) r.Use(limitRequests) if config.Get().UseTOTP { r.Use(authenticate) diff --git a/pkg/server/xrclient.go b/pkg/server/xrclient.go index e09ee43..0d7d3bb 100644 --- a/pkg/server/xrclient.go +++ b/pkg/server/xrclient.go @@ -1,7 +1,6 @@ package server import ( - "fmt" "net" "net/http" "strings" @@ -41,18 +40,3 @@ func crawlForwardedIPs(r *http.Request) string { } return "" } - -func getRealClientPort(r *http.Request) (string, error) { - remotePort := r.Header.Get(xForwardedPort) - if remotePort != "" { - return remotePort, nil - } - if !strings.Contains(r.RemoteAddr, ":") { - return "", fmt.Errorf("[server-GetRealClientPort-2] could not determine remote port") - } - _, port, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - return "", err - } - return port, nil -}