瀏覽代碼

require-sasl uban should not kill authenticated clients

tags/v2.5.0-rc1
Shivaram Lingamneni 3 年之前
父節點
當前提交
81ae166dfb
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6
    3
      irc/uban.go

+ 6
- 3
irc/uban.go 查看文件

@@ -131,8 +131,11 @@ func ubanHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
131 131
 	}
132 132
 }
133 133
 
134
-func sessionsForCIDR(server *Server, cidr flatip.IPNet, exclude *Session) (sessions []*Session, nicks []string) {
134
+func sessionsForCIDR(server *Server, cidr flatip.IPNet, exclude *Session, requireSASL bool) (sessions []*Session, nicks []string) {
135 135
 	for _, client := range server.clients.AllClients() {
136
+		if requireSASL && client.Account() != "" {
137
+			continue
138
+		}
136 139
 		for _, session := range client.Sessions() {
137 140
 			seen := false
138 141
 			if session != exclude && cidr.Contains(flatip.FromNetIP(session.IP())) {
@@ -177,7 +180,7 @@ func ubanAddCIDR(client *Client, target ubanTarget, duration time.Duration, requ
177 180
 		return
178 181
 	}
179 182
 
180
-	sessions, nicks := sessionsForCIDR(client.server, target.cidr, rb.session)
183
+	sessions, nicks := sessionsForCIDR(client.server, target.cidr, rb.session, requireSASL)
181 184
 	for _, session := range sessions {
182 185
 		session.client.Quit("You have been banned from this server", session)
183 186
 		session.client.destroy(session)
@@ -329,7 +332,7 @@ func ubanInfoCIDR(client *Client, target ubanTarget, rb *ResponseBuffer) {
329 332
 		rb.Notice(fmt.Sprintf(client.t("There is no active IP ban against %s"), str))
330 333
 	}
331 334
 
332
-	sessions, nicks := sessionsForCIDR(client.server, target.cidr, nil)
335
+	sessions, nicks := sessionsForCIDR(client.server, target.cidr, nil, false)
333 336
 	if len(sessions) != 0 {
334 337
 		rb.Notice(fmt.Sprintf(client.t("There are %[1]d active client(s) from %[2]s, associated with %[3]d nickname(s):"), len(sessions), target.cidr.String(), len(nicks)))
335 338
 		for _, line := range utils.BuildTokenLines(400, nicks, " ") {

Loading…
取消
儲存