85 lines
No EOL
2.1 KiB
Go
85 lines
No EOL
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"encoding/json"
|
|
"net"
|
|
"strings"
|
|
|
|
"github.com/azukaar/cosmos-server/src/utils"
|
|
)
|
|
|
|
func CheckDNSRoute(w http.ResponseWriter, req *http.Request) {
|
|
if utils.LoggedInOnly(w, req) != nil {
|
|
return
|
|
}
|
|
|
|
if(req.Method == "GET") {
|
|
url := utils.SanitizeSafe(req.URL.Query().Get("url"))
|
|
url = strings.Split(url, ":")[0]
|
|
|
|
if url == "" {
|
|
utils.Error("CheckDNS", nil)
|
|
utils.HTTPError(w, "Internal server error: No URL requested", http.StatusInternalServerError, "DNS001")
|
|
return
|
|
}
|
|
|
|
errDNS := utils.CheckDNS(url)
|
|
|
|
if errDNS != nil {
|
|
utils.Error("CheckDNS", errDNS)
|
|
utils.HTTPError(w, "DNS Check error: " + errDNS.Error(), http.StatusInternalServerError, "DNS002")
|
|
return
|
|
}
|
|
|
|
json.NewEncoder(w).Encode(map[string]interface{}{
|
|
"status": "OK",
|
|
})
|
|
} else {
|
|
utils.Error("CheckDNS: Method not allowed" + req.Method, nil)
|
|
utils.HTTPError(w, "Method not allowed", http.StatusMethodNotAllowed, "HTTP001")
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
func GetDNSRoute(w http.ResponseWriter, req *http.Request) {
|
|
if !utils.GetMainConfig().NewInstall && (utils.LoggedInOnly(w, req) != nil) {
|
|
return
|
|
}
|
|
|
|
if(req.Method == "GET") {
|
|
url := utils.SanitizeSafe(req.URL.Query().Get("url"))
|
|
url = strings.Split(url, ":")[0]
|
|
|
|
if url == "" {
|
|
utils.Error("CheckDNS", nil)
|
|
utils.HTTPError(w, "Internal server error: No URL requested", http.StatusInternalServerError, "DNS001")
|
|
return
|
|
}
|
|
|
|
ips, err := net.LookupIP(url)
|
|
if err != nil {
|
|
utils.Error("CheckDNS", err)
|
|
utils.HTTPError(w, "Internal server error: " + err.Error(), http.StatusInternalServerError, "DNS001")
|
|
return
|
|
}
|
|
|
|
for _, ip := range ips {
|
|
if ip.To4() != nil {
|
|
json.NewEncoder(w).Encode(map[string]interface{}{
|
|
"status": "OK",
|
|
"data": ip.String(),
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
utils.Error("CheckDNS: No DNS entry found. Did you point the domain to your server?", nil)
|
|
utils.HTTPError(w, "Internal server error: " + err.Error(), http.StatusInternalServerError, "DNS001")
|
|
} else {
|
|
utils.Error("CheckDNS: Method not allowed" + req.Method, nil)
|
|
utils.HTTPError(w, "Method not allowed", http.StatusMethodNotAllowed, "HTTP001")
|
|
return
|
|
}
|
|
} |