stashing blacklist changes

This commit is contained in:
Matt Drollette
2015-03-16 21:28:44 -05:00
parent 8d31f97123
commit 80bb78f73d
2 changed files with 51 additions and 0 deletions

View File

@@ -20,6 +20,40 @@ const (
I2P_USER_AGENT = "Wget/1.11.4"
)
type Listener struct {
net.Listener
Blacklist []string
}
func (nl Listener) Accept() (net.Conn, error) {
for {
c, err := nl.Listener.Accept()
if err != nil {
return nil, err
}
host, port, err := net.SplitHostPort(c.RemoteAddr().String())
if err != nil {
l.Printf("accept fail: %s\n", err.Error())
go c.Close()
continue
}
ip := net.ParseIP(host)
for _, cidr := range nl.Blacklist {
if _, ipnet, err := net.ParseCIDR(cidr); err == nil {
if ipnet.Contains(ip) {
l.Printf("allow conn from: %s:%s\n", host, port)
return c, err
}
}
}
go c.Close()
}
}
type Server struct {
*http.Server
Reseeder Reseeder