service: Enable running additional commands from a global context
Some commands do not require admin rights but are also useful to run in a global context. For example, help.
This commit is contained in:
parent
d17c7d57f2
commit
f05bd84787
14
service.go
14
service.go
@ -53,6 +53,7 @@ type serviceCommand struct {
|
|||||||
handle func(ctx *serviceContext, params []string) error
|
handle func(ctx *serviceContext, params []string) error
|
||||||
children serviceCommandSet
|
children serviceCommandSet
|
||||||
admin bool
|
admin bool
|
||||||
|
global bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendServiceNOTICE(dc *downstreamConn, text string) {
|
func sendServiceNOTICE(dc *downstreamConn, text string) {
|
||||||
@ -143,7 +144,7 @@ func handleServiceCommand(ctx *serviceContext, words []string) {
|
|||||||
ctx.print("error: you must be an admin to use this command")
|
ctx.print("error: you must be an admin to use this command")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !cmd.admin && ctx.user == nil {
|
if !cmd.global && ctx.user == nil {
|
||||||
ctx.print("error: this command must be run as a user (try running with user run)")
|
ctx.print("error: this command must be run as a user (try running with user run)")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -220,6 +221,7 @@ func init() {
|
|||||||
usage: "[command]",
|
usage: "[command]",
|
||||||
desc: "print help message",
|
desc: "print help message",
|
||||||
handle: handleServiceHelp,
|
handle: handleServiceHelp,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"network": {
|
"network": {
|
||||||
children: serviceCommandSet{
|
children: serviceCommandSet{
|
||||||
@ -288,30 +290,36 @@ func init() {
|
|||||||
desc: "show a list of users and their current status",
|
desc: "show a list of users and their current status",
|
||||||
handle: handleUserStatus,
|
handle: handleUserStatus,
|
||||||
admin: true,
|
admin: true,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"create": {
|
"create": {
|
||||||
usage: "-username <username> -password <password> [-disable-password] [-admin true|false] [-nick <nick>] [-realname <realname>] [-enabled true|false]",
|
usage: "-username <username> -password <password> [-disable-password] [-admin true|false] [-nick <nick>] [-realname <realname>] [-enabled true|false]",
|
||||||
desc: "create a new soju user",
|
desc: "create a new soju user",
|
||||||
handle: handleUserCreate,
|
handle: handleUserCreate,
|
||||||
admin: true,
|
admin: true,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
usage: "[username] [-password <password>] [-disable-password] [-admin true|false] [-nick <nick>] [-realname <realname>] [-enabled true|false]",
|
usage: "[username] [-password <password>] [-disable-password] [-admin true|false] [-nick <nick>] [-realname <realname>] [-enabled true|false]",
|
||||||
desc: "update a user",
|
desc: "update a user",
|
||||||
handle: handleUserUpdate,
|
handle: handleUserUpdate,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
usage: "<username> [confirmation token]",
|
usage: "<username> [confirmation token]",
|
||||||
desc: "delete a user",
|
desc: "delete a user",
|
||||||
handle: handleUserDelete,
|
handle: handleUserDelete,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"run": {
|
"run": {
|
||||||
usage: "<username> <command>",
|
usage: "<username> <command>",
|
||||||
desc: "run a command as another user",
|
desc: "run a command as another user",
|
||||||
handle: handleUserRun,
|
handle: handleUserRun,
|
||||||
admin: true,
|
admin: true,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"channel": {
|
"channel": {
|
||||||
children: serviceCommandSet{
|
children: serviceCommandSet{
|
||||||
@ -338,12 +346,14 @@ func init() {
|
|||||||
desc: "show server statistics",
|
desc: "show server statistics",
|
||||||
handle: handleServiceServerStatus,
|
handle: handleServiceServerStatus,
|
||||||
admin: true,
|
admin: true,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
"notice": {
|
"notice": {
|
||||||
usage: "<notice>",
|
usage: "<notice>",
|
||||||
desc: "broadcast a notice to all connected bouncer users",
|
desc: "broadcast a notice to all connected bouncer users",
|
||||||
handle: handleServiceServerNotice,
|
handle: handleServiceServerNotice,
|
||||||
admin: true,
|
admin: true,
|
||||||
|
global: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
admin: true,
|
admin: true,
|
||||||
@ -357,7 +367,7 @@ func appendServiceCommandSetHelp(cmds serviceCommandSet, prefix []string, admin
|
|||||||
if cmd.admin && !admin {
|
if cmd.admin && !admin {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !cmd.admin && global {
|
if !cmd.global && global {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
words := append(prefix, name)
|
words := append(prefix, name)
|
||||||
|
Loading…
Reference in New Issue
Block a user