aboutsummaryrefslogtreecommitdiff
path: root/go/weed/weed.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/weed/weed.go')
-rw-r--r--go/weed/weed.go19
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})
+ }
+}