mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-10 22:19:31 +01:00
Merge pull request #128 from euank/return-bad-ip-err
server: close connection on parse-ip failure
This commit is contained in:
commit
0b75351e56
@ -31,12 +31,10 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
// cached because this may be used lots
|
||||
tooManyClientsMsg = ircmsg.MakeMessage(nil, "", "ERROR", "Too many clients from your network")
|
||||
tooManyClientsBytes, _ = tooManyClientsMsg.Line()
|
||||
|
||||
bannedFromServerMsg = ircmsg.MakeMessage(nil, "", "ERROR", "You are banned from this server (%s)")
|
||||
bannedFromServerBytes, _ = bannedFromServerMsg.Line()
|
||||
// common error responses
|
||||
tooManyClientsMsg, _ = (&[]ircmsg.IrcMessage{ircmsg.MakeMessage(nil, "", "ERROR", "Too many clients from your network")}[0]).Line()
|
||||
couldNotParseIPMsg, _ = (&[]ircmsg.IrcMessage{ircmsg.MakeMessage(nil, "", "ERROR", "Unable to parse your IP address")}[0]).Line()
|
||||
bannedFromServerMsg, _ = (&[]ircmsg.IrcMessage{ircmsg.MakeMessage(nil, "", "ERROR", "You are banned from this server (%s)")}[0]).Line()
|
||||
|
||||
errDbOutOfDate = errors.New("Database schema is old")
|
||||
)
|
||||
@ -430,11 +428,15 @@ func (server *Server) Run() {
|
||||
case conn := <-server.newConns:
|
||||
// check connection limits
|
||||
ipaddr := net.ParseIP(IPString(conn.Conn.RemoteAddr()))
|
||||
if ipaddr != nil {
|
||||
if ipaddr == nil {
|
||||
conn.Conn.Write([]byte(couldNotParseIPMsg))
|
||||
conn.Conn.Close()
|
||||
continue
|
||||
}
|
||||
// check DLINEs
|
||||
isBanned, info := server.dlines.CheckIP(ipaddr)
|
||||
if isBanned {
|
||||
banMessage := fmt.Sprintf(bannedFromServerBytes, info.Reason)
|
||||
banMessage := fmt.Sprintf(bannedFromServerMsg, info.Reason)
|
||||
if info.Time != nil {
|
||||
banMessage += fmt.Sprintf(" [%s]", info.Time.Duration.String())
|
||||
}
|
||||
@ -450,7 +452,7 @@ func (server *Server) Run() {
|
||||
if err != nil {
|
||||
// too many connections from one client, tell the client and close the connection
|
||||
// this might not show up properly on some clients, but our objective here is just to close it out before it has a load impact on us
|
||||
conn.Conn.Write([]byte(tooManyClientsBytes))
|
||||
conn.Conn.Write([]byte(tooManyClientsMsg))
|
||||
conn.Conn.Close()
|
||||
continue
|
||||
}
|
||||
@ -484,7 +486,6 @@ func (server *Server) Run() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// IRC protocol listeners
|
||||
|
Loading…
Reference in New Issue
Block a user