mirror of
https://github.com/Macrame-App/Macrame
synced 2025-12-29 15:29:26 +00:00
74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
package helper
|
|
|
|
import (
|
|
"log"
|
|
"net"
|
|
"net/http"
|
|
"strings"
|
|
|
|
. "be/app/structs"
|
|
)
|
|
|
|
func EndpointAccess(w http.ResponseWriter, r *http.Request) bool {
|
|
log.Println("endpoint access")
|
|
|
|
ip, _, err := net.SplitHostPort(r.RemoteAddr)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if (isLocal(ip) && isEndpointAllowed("Local", r.URL.Path)) ||
|
|
(isLanRemote(ip) && isEndpointAllowed("Remote", r.URL.Path)) {
|
|
log.Println("accessible")
|
|
return true
|
|
} else if isLanRemote(ip) && isEndpointAllowed("auth", r.URL.Path) && isDeviceAuthorized() {
|
|
log.Println("authorized")
|
|
}
|
|
|
|
log.Println(r.URL.Path, "not authorized or accessible")
|
|
|
|
return false
|
|
}
|
|
|
|
func isLocal(ip string) bool {
|
|
return ip == "127.0.0.1" || ip == "::1"
|
|
}
|
|
|
|
func isLanRemote(ip string) bool {
|
|
return strings.HasPrefix(ip, "192.168.")
|
|
}
|
|
|
|
func isEndpointAllowed(source string, endpoint string) bool {
|
|
var endpoints, err = getAllowedEndpoints(source)
|
|
if err != "" {
|
|
log.Println(err)
|
|
}
|
|
|
|
if (endpoints != nil) && (len(endpoints) > 0) {
|
|
for _, e := range endpoints {
|
|
if e == endpoint {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func getAllowedEndpoints(source string) (endpoints []string, err string) {
|
|
if source == "Local" {
|
|
return Endpoints.Local, ""
|
|
}
|
|
if source == "Remote" {
|
|
return Endpoints.Remote, ""
|
|
}
|
|
if source == "Auth" {
|
|
return Endpoints.Auth, ""
|
|
}
|
|
|
|
return []string{}, "No allowed endpoints"
|
|
}
|
|
|
|
func isDeviceAuthorized() bool {
|
|
return false
|
|
}
|