better maybe

master
Bel LaPointe 2018-10-13 19:23:36 -06:00
parent bd04d2de8d
commit 30003bdc3b
1 changed files with 13 additions and 5 deletions

18
main.go
View File

@ -21,9 +21,10 @@ type Server struct {
transport *http.Transport
whitelist []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)
if err != nil {
return nil, err
@ -49,6 +50,7 @@ func NewServer(addr, clientcrt, clientkey, servercrt string, whitelist []string,
},
whitelist: whitelist,
bypass: bypass,
secure: secure,
}, nil
}
@ -57,20 +59,24 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fixScheme(r)
// if not from localhost
if !fromLocalhost(r.RemoteAddr) {
logger.Log("not from localhost", r.RemoteAddr)
logger.Log("Denying non-localhost", r.RemoteAddr)
denyAccess(w)
return
}
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)
return
}
if toWhitelist(s.bypass, r.URL.Host) {
//logger.Log("Bypassing", r.URL.String())
logger.Log("Bypassing", r.URL.String())
s.passthrough(w, r)
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())
// proxy via stuncaddsies
s.handleHTTP(w, r)
@ -205,14 +211,16 @@ func main() {
"port": "8888",
"whitelist": "192.168.0.86,,bel.house,,minio.gcp.blapointe.com",
"bypass": "plex.tv",
"secure": "gcp.blapointe.com",
})
if !strings.HasPrefix(conf["port"], ":") {
conf["port"] = ":" + conf["port"]
}
whitelist := strings.Split(conf["whitelist"], ",,")
bypass := strings.Split(conf["bypass"], ",,")
secure := strings.Split(conf["secure"], ",,")
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 {
logger.Fatal(err)
}