mirror of
https://github.com/ergochat/ergo.git
synced 2024-12-22 10:42:52 +01:00
DLINE: Save name of the banning oper
This commit is contained in:
parent
8036df92fc
commit
dedb029272
34
irc/dline.go
34
irc/dline.go
@ -49,6 +49,8 @@ type IPBanInfo struct {
|
|||||||
Reason string `json:"reason"`
|
Reason string `json:"reason"`
|
||||||
// OperReason is an oper ban reason.
|
// OperReason is an oper ban reason.
|
||||||
OperReason string `json:"oper_reason"`
|
OperReason string `json:"oper_reason"`
|
||||||
|
// OperName is the oper who set the ban.
|
||||||
|
OperName string `json:"oper_name"`
|
||||||
// Time holds details about the duration, if it exists.
|
// Time holds details about the duration, if it exists.
|
||||||
Time *IPRestrictTime `json:"time"`
|
Time *IPRestrictTime `json:"time"`
|
||||||
}
|
}
|
||||||
@ -113,7 +115,7 @@ func (dm *DLineManager) AllBans() map[string]IPBanInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// AddNetwork adds a network to the blocked list.
|
// AddNetwork adds a network to the blocked list.
|
||||||
func (dm *DLineManager) AddNetwork(network net.IPNet, length *IPRestrictTime, reason string, operReason string) {
|
func (dm *DLineManager) AddNetwork(network net.IPNet, length *IPRestrictTime, reason, operReason, operName string) {
|
||||||
netString := network.String()
|
netString := network.String()
|
||||||
dln := dLineNet{
|
dln := dLineNet{
|
||||||
Network: network,
|
Network: network,
|
||||||
@ -121,6 +123,7 @@ func (dm *DLineManager) AddNetwork(network net.IPNet, length *IPRestrictTime, re
|
|||||||
Time: length,
|
Time: length,
|
||||||
Reason: reason,
|
Reason: reason,
|
||||||
OperReason: operReason,
|
OperReason: operReason,
|
||||||
|
OperName: operName,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
dm.Lock()
|
dm.Lock()
|
||||||
@ -137,7 +140,7 @@ func (dm *DLineManager) RemoveNetwork(network net.IPNet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// AddIP adds an IP address to the blocked list.
|
// AddIP adds an IP address to the blocked list.
|
||||||
func (dm *DLineManager) AddIP(addr net.IP, length *IPRestrictTime, reason string, operReason string) {
|
func (dm *DLineManager) AddIP(addr net.IP, length *IPRestrictTime, reason, operReason, operName string) {
|
||||||
addrString := addr.String()
|
addrString := addr.String()
|
||||||
dla := dLineAddr{
|
dla := dLineAddr{
|
||||||
Address: addr,
|
Address: addr,
|
||||||
@ -145,6 +148,7 @@ func (dm *DLineManager) AddIP(addr net.IP, length *IPRestrictTime, reason string
|
|||||||
Time: length,
|
Time: length,
|
||||||
Reason: reason,
|
Reason: reason,
|
||||||
OperReason: operReason,
|
OperReason: operReason,
|
||||||
|
OperName: operName,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
dm.Lock()
|
dm.Lock()
|
||||||
@ -232,7 +236,7 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for key, info := range bans {
|
for key, info := range bans {
|
||||||
client.Notice(fmt.Sprintf("Ban - %s - %s", key, info.BanMessage("%s")))
|
client.Notice(fmt.Sprintf("Ban - %s - added by %s - %s", key, info.OperName, info.BanMessage("%s")))
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return false
|
||||||
@ -319,6 +323,10 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
operName := client.operName
|
||||||
|
if operName == "" {
|
||||||
|
operName = server.name
|
||||||
|
}
|
||||||
|
|
||||||
// assemble ban info
|
// assemble ban info
|
||||||
var banTime *IPRestrictTime
|
var banTime *IPRestrictTime
|
||||||
@ -332,6 +340,7 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
info := IPBanInfo{
|
info := IPBanInfo{
|
||||||
Reason: reason,
|
Reason: reason,
|
||||||
OperReason: operReason,
|
OperReason: operReason,
|
||||||
|
OperName: operName,
|
||||||
Time: banTime,
|
Time: banTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,18 +365,18 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if hostNet == nil {
|
if hostNet == nil {
|
||||||
server.dlines.AddIP(hostAddr, banTime, reason, operReason)
|
server.dlines.AddIP(hostAddr, banTime, reason, operReason, operName)
|
||||||
} else {
|
} else {
|
||||||
server.dlines.AddNetwork(*hostNet, banTime, reason, operReason)
|
server.dlines.AddNetwork(*hostNet, banTime, reason, operReason, operName)
|
||||||
}
|
}
|
||||||
|
|
||||||
var snoDescription string
|
var snoDescription string
|
||||||
if durationIsUsed {
|
if durationIsUsed {
|
||||||
client.Notice(fmt.Sprintf("Added temporary (%s) D-Line for %s", duration.String(), hostString))
|
client.Notice(fmt.Sprintf("Added temporary (%s) D-Line for %s", duration.String(), hostString))
|
||||||
snoDescription = fmt.Sprintf(ircfmt.Unescape("%s$r added temporary (%s) D-Line for %s"), client.nick, duration.String(), hostString)
|
snoDescription = fmt.Sprintf(ircfmt.Unescape("%s [%s]$r added temporary (%s) D-Line for %s"), client.nick, operName, duration.String(), hostString)
|
||||||
} else {
|
} else {
|
||||||
client.Notice(fmt.Sprintf("Added D-Line for %s", hostString))
|
client.Notice(fmt.Sprintf("Added D-Line for %s", hostString))
|
||||||
snoDescription = fmt.Sprintf(ircfmt.Unescape("%s$r added D-Line for %s"), client.nick, hostString)
|
snoDescription = fmt.Sprintf(ircfmt.Unescape("%s [%s]$r added D-Line for %s"), client.nick, operName, hostString)
|
||||||
}
|
}
|
||||||
server.snomasks.Send(sno.LocalXline, snoDescription)
|
server.snomasks.Send(sno.LocalXline, snoDescription)
|
||||||
|
|
||||||
@ -405,7 +414,7 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
|
|
||||||
// send snomask
|
// send snomask
|
||||||
sort.Strings(killedClientNicks)
|
sort.Strings(killedClientNicks)
|
||||||
server.snomasks.Send(sno.LocalKills, fmt.Sprintf(ircfmt.Unescape("%s killed %d clients with a DLINE $c[grey][$r%s$c[grey]]"), client.nick, len(killedClientNicks), strings.Join(killedClientNicks, ", ")))
|
server.snomasks.Send(sno.LocalKills, fmt.Sprintf(ircfmt.Unescape("%s [%s] killed %d clients with a DLINE $c[grey][$r%s$c[grey]]"), client.nick, operName, len(killedClientNicks), strings.Join(killedClientNicks, ", ")))
|
||||||
}
|
}
|
||||||
|
|
||||||
return killClient
|
return killClient
|
||||||
@ -495,11 +504,16 @@ func (s *Server) loadDLines() {
|
|||||||
var info IPBanInfo
|
var info IPBanInfo
|
||||||
json.Unmarshal([]byte(value), &info)
|
json.Unmarshal([]byte(value), &info)
|
||||||
|
|
||||||
|
// set opername if it isn't already set
|
||||||
|
if info.OperName == "" {
|
||||||
|
info.OperName = s.name
|
||||||
|
}
|
||||||
|
|
||||||
// add to the server
|
// add to the server
|
||||||
if hostNet == nil {
|
if hostNet == nil {
|
||||||
s.dlines.AddIP(hostAddr, info.Time, info.Reason, info.OperReason)
|
s.dlines.AddIP(hostAddr, info.Time, info.Reason, info.OperReason, info.OperName)
|
||||||
} else {
|
} else {
|
||||||
s.dlines.AddNetwork(*hostNet, info.Time, info.Reason, info.OperReason)
|
s.dlines.AddNetwork(*hostNet, info.Time, info.Reason, info.OperReason, info.OperName)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true // true to continue I guess?
|
return true // true to continue I guess?
|
||||||
|
@ -321,7 +321,7 @@ func (server *Server) checkBans(ipaddr net.IP) (banned bool, message string) {
|
|||||||
Duration: duration,
|
Duration: duration,
|
||||||
Expires: time.Now().Add(duration),
|
Expires: time.Now().Add(duration),
|
||||||
}
|
}
|
||||||
server.dlines.AddIP(ipaddr, length, server.connectionThrottler.BanMessage(), "Exceeded automated connection throttle")
|
server.dlines.AddIP(ipaddr, length, server.connectionThrottler.BanMessage(), "Exceeded automated connection throttle", "auto.connection.throttler")
|
||||||
|
|
||||||
// they're DLINE'd for 15 minutes or whatever, so we can reset the connection throttle now,
|
// they're DLINE'd for 15 minutes or whatever, so we can reset the connection throttle now,
|
||||||
// and once their temporary DLINE is finished they can fill up the throttler again
|
// and once their temporary DLINE is finished they can fill up the throttler again
|
||||||
|
Loading…
Reference in New Issue
Block a user