|
@@ -12,7 +12,6 @@ import (
|
12
|
12
|
|
13
|
13
|
"github.com/goshuirc/irc-go/ircfmt"
|
14
|
14
|
|
15
|
|
- "github.com/oragono/oragono/irc/modes"
|
16
|
15
|
"github.com/oragono/oragono/irc/passwd"
|
17
|
16
|
"github.com/oragono/oragono/irc/sno"
|
18
|
17
|
"github.com/oragono/oragono/irc/utils"
|
|
@@ -1099,20 +1098,19 @@ func nsClientsHandler(server *Server, client *Client, command string, params []s
|
1099
|
1098
|
nsClientsLogoutHandler(server, client, params, rb)
|
1100
|
1099
|
default:
|
1101
|
1100
|
nsNotice(rb, client.t("Invalid parameters"))
|
1102
|
|
- return
|
1103
|
1101
|
}
|
1104
|
1102
|
}
|
1105
|
1103
|
|
1106
|
1104
|
func nsClientsListHandler(server *Server, client *Client, params []string, rb *ResponseBuffer) {
|
1107
|
1105
|
target := client
|
|
1106
|
+ hasPrivs := client.HasRoleCapabs("local_ban")
|
1108
|
1107
|
if 0 < len(params) {
|
1109
|
1108
|
target = server.clients.Get(params[0])
|
1110
|
1109
|
if target == nil {
|
1111
|
1110
|
nsNotice(rb, client.t("No such nick"))
|
1112
|
1111
|
return
|
1113
|
1112
|
}
|
1114
|
|
- // same permissions check as RPL_WHOISACTUALLY for now:
|
1115
|
|
- if target != client && !client.HasMode(modes.Operator) {
|
|
1113
|
+ if target != client && !hasPrivs {
|
1116
|
1114
|
nsNotice(rb, client.t("Command restricted"))
|
1117
|
1115
|
return
|
1118
|
1116
|
}
|
|
@@ -1131,6 +1129,9 @@ func nsClientsListHandler(server *Server, client *Client, params []string, rb *R
|
1131
|
1129
|
}
|
1132
|
1130
|
nsNotice(rb, fmt.Sprintf(client.t("IP address: %s"), session.ip.String()))
|
1133
|
1131
|
nsNotice(rb, fmt.Sprintf(client.t("Hostname: %s"), session.hostname))
|
|
1132
|
+ if hasPrivs {
|
|
1133
|
+ nsNotice(rb, fmt.Sprintf(client.t("Connection: %s"), session.connInfo))
|
|
1134
|
+ }
|
1134
|
1135
|
nsNotice(rb, fmt.Sprintf(client.t("Created at: %s"), session.ctime.Format(time.RFC1123)))
|
1135
|
1136
|
nsNotice(rb, fmt.Sprintf(client.t("Last active: %s"), session.atime.Format(time.RFC1123)))
|
1136
|
1137
|
if session.certfp != "" {
|