diff options
Diffstat (limited to 'go/weed/weed.go')
| -rw-r--r-- | go/weed/weed.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/go/weed/weed.go b/go/weed/weed.go index 57fe62281..dc74b7650 100644 --- a/go/weed/weed.go +++ b/go/weed/weed.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "math/rand" + "net" "net/http" "os" "strings" @@ -223,3 +224,21 @@ func debug(params ...interface{}) { glog.V(0).Infoln(params) } } +func secure(whiteList []string, f func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + if len(whiteList) == 0 { + f(w, r) + return + } + host, _, err := net.SplitHostPort(r.RemoteAddr) + if err == nil { + for _, ip := range whiteList { + if ip == host { + f(w, r) + return + } + } + } + writeJsonQuiet(w, r, map[string]interface{}{"error": "No write permisson from " + host}) + } +} |
