better maybe
parent
bd04d2de8d
commit
30003bdc3b
18
main.go
18
main.go
|
|
@ -21,9 +21,10 @@ type Server struct {
|
||||||
transport *http.Transport
|
transport *http.Transport
|
||||||
whitelist []string
|
whitelist []string
|
||||||
bypass []string
|
bypass []string
|
||||||
|
secure []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServer(addr, clientcrt, clientkey, servercrt string, whitelist []string, bypass []string) (*Server, error) {
|
func NewServer(addr, clientcrt, clientkey, servercrt string, whitelist, bypass, secure []string) (*Server, error) {
|
||||||
caCert, err := ioutil.ReadFile(servercrt)
|
caCert, err := ioutil.ReadFile(servercrt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -49,6 +50,7 @@ func NewServer(addr, clientcrt, clientkey, servercrt string, whitelist []string,
|
||||||
},
|
},
|
||||||
whitelist: whitelist,
|
whitelist: whitelist,
|
||||||
bypass: bypass,
|
bypass: bypass,
|
||||||
|
secure: secure,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -57,20 +59,24 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
fixScheme(r)
|
fixScheme(r)
|
||||||
// if not from localhost
|
// if not from localhost
|
||||||
if !fromLocalhost(r.RemoteAddr) {
|
if !fromLocalhost(r.RemoteAddr) {
|
||||||
logger.Log("not from localhost", r.RemoteAddr)
|
logger.Log("Denying non-localhost", r.RemoteAddr)
|
||||||
denyAccess(w)
|
denyAccess(w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !toWhitelist(s.whitelist, r.URL.Host) {
|
if !toWhitelist(s.whitelist, r.URL.Host) {
|
||||||
logger.Log("not to whitelist", r.URL.Host)
|
logger.Log("Denying non-whitelisted", r.URL.Host)
|
||||||
denyAccess(w)
|
denyAccess(w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if toWhitelist(s.bypass, r.URL.Host) {
|
if toWhitelist(s.bypass, r.URL.Host) {
|
||||||
//logger.Log("Bypassing", r.URL.String())
|
logger.Log("Bypassing", r.URL.String())
|
||||||
s.passthrough(w, r)
|
s.passthrough(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if toWhitelist(s.secure, r.URL.Host) {
|
||||||
|
logger.Log("Securing", r.URL.String(), r.Host)
|
||||||
|
r.URL.Scheme = "https"
|
||||||
|
}
|
||||||
//logger.Log("Proxying", r.URL.String())
|
//logger.Log("Proxying", r.URL.String())
|
||||||
// proxy via stuncaddsies
|
// proxy via stuncaddsies
|
||||||
s.handleHTTP(w, r)
|
s.handleHTTP(w, r)
|
||||||
|
|
@ -205,14 +211,16 @@ func main() {
|
||||||
"port": "8888",
|
"port": "8888",
|
||||||
"whitelist": "192.168.0.86,,bel.house,,minio.gcp.blapointe.com",
|
"whitelist": "192.168.0.86,,bel.house,,minio.gcp.blapointe.com",
|
||||||
"bypass": "plex.tv",
|
"bypass": "plex.tv",
|
||||||
|
"secure": "gcp.blapointe.com",
|
||||||
})
|
})
|
||||||
if !strings.HasPrefix(conf["port"], ":") {
|
if !strings.HasPrefix(conf["port"], ":") {
|
||||||
conf["port"] = ":" + conf["port"]
|
conf["port"] = ":" + conf["port"]
|
||||||
}
|
}
|
||||||
whitelist := strings.Split(conf["whitelist"], ",,")
|
whitelist := strings.Split(conf["whitelist"], ",,")
|
||||||
bypass := strings.Split(conf["bypass"], ",,")
|
bypass := strings.Split(conf["bypass"], ",,")
|
||||||
|
secure := strings.Split(conf["secure"], ",,")
|
||||||
logger.Log(conf)
|
logger.Log(conf)
|
||||||
server, err := NewServer(conf["stunaddr"], conf["clientcrt"], conf["clientkey"], conf["servercrt"], append(whitelist, bypass...), bypass)
|
server, err := NewServer(conf["stunaddr"], conf["clientcrt"], conf["clientkey"], conf["servercrt"], append(whitelist, bypass...), bypass, secure)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue