|
@@ -2157,6 +2157,27 @@ func dispatchMessageToTarget(client *Client, tags map[string]string, histType hi
|
2157
|
2157
|
return
|
2158
|
2158
|
}
|
2159
|
2159
|
channel.SendSplitMessage(command, lowestPrefix, tags, client, message, rb)
|
|
2160
|
+ } else if target[0] == '$' && len(target) > 2 && client.Oper().HasRoleCapab("massmessage") {
|
|
2161
|
+ details := client.Details()
|
|
2162
|
+ matcher, err := utils.CompileGlob(target[2:], false)
|
|
2163
|
+ if err != nil {
|
|
2164
|
+ rb.Add(nil, server.name, ERR_UNKNOWNERROR, details.nick, command, client.t("Erroneous target"))
|
|
2165
|
+ return
|
|
2166
|
+ }
|
|
2167
|
+
|
|
2168
|
+ nickMaskString := details.nickMask
|
|
2169
|
+ accountName := details.accountName
|
|
2170
|
+ isBot := client.HasMode(modes.Bot)
|
|
2171
|
+ for _, tClient := range server.clients.AllClients() {
|
|
2172
|
+ if (target[1] == '$' && matcher.MatchString(tClient.server.name)) || // $$servername
|
|
2173
|
+ (target[1] == '#' && matcher.MatchString(tClient.Hostname())) { // $#hostname
|
|
2174
|
+
|
|
2175
|
+ tnick := tClient.Nick()
|
|
2176
|
+ for _, session := range tClient.Sessions() {
|
|
2177
|
+ session.sendSplitMsgFromClientInternal(false, nickMaskString, accountName, isBot, nil, command, tnick, message)
|
|
2178
|
+ }
|
|
2179
|
+ }
|
|
2180
|
+ }
|
2160
|
2181
|
} else {
|
2161
|
2182
|
lowercaseTarget := strings.ToLower(target)
|
2162
|
2183
|
service, isService := OragonoServices[lowercaseTarget]
|