mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 02:00:11 -08:00
refactor services code
This commit is contained in:
parent
ea970f94a0
commit
b80df0885f
5 changed files with 172 additions and 164 deletions
|
|
@ -15,7 +15,6 @@ import (
|
|||
"github.com/goshuirc/irc-go/ircfmt"
|
||||
"github.com/oragono/oragono/irc/modes"
|
||||
"github.com/oragono/oragono/irc/sno"
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
)
|
||||
|
||||
const chanservHelp = `ChanServ lets you register and manage channels.
|
||||
|
|
@ -26,8 +25,8 @@ To see in-depth help for a specific ChanServ command, try:
|
|||
Here are the commands you can use:
|
||||
%s`
|
||||
|
||||
func chanregEnabled(server *Server) bool {
|
||||
return server.ChannelRegistrationEnabled()
|
||||
func chanregEnabled(config *Config) bool {
|
||||
return config.Channels.Registration.Enabled
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -41,6 +40,7 @@ this command if you're the founder of the channel.`,
|
|||
helpShort: `$bOP$b makes the given user (or yourself) a channel admin.`,
|
||||
authRequired: true,
|
||||
enabled: chanregEnabled,
|
||||
minParams: 1,
|
||||
},
|
||||
"register": {
|
||||
handler: csRegisterHandler,
|
||||
|
|
@ -52,6 +52,7 @@ remembered.`,
|
|||
helpShort: `$bREGISTER$b lets you own a given channel.`,
|
||||
authRequired: true,
|
||||
enabled: chanregEnabled,
|
||||
minParams: 1,
|
||||
},
|
||||
"unregister": {
|
||||
handler: csUnregisterHandler,
|
||||
|
|
@ -62,6 +63,7 @@ To prevent accidental unregistrations, a verification code is required;
|
|||
invoking the command without a code will display the necessary code.`,
|
||||
helpShort: `$bUNREGISTER$b deletes a channel registration.`,
|
||||
enabled: chanregEnabled,
|
||||
minParams: 1,
|
||||
},
|
||||
"drop": {
|
||||
aliasOf: "unregister",
|
||||
|
|
@ -77,6 +79,7 @@ accounts and modes, use $bAMODE #channel$b. Note that users are always
|
|||
referenced by their registered account names, not their nicknames.`,
|
||||
helpShort: `$bAMODE$b modifies persistent mode settings for channel members.`,
|
||||
enabled: chanregEnabled,
|
||||
minParams: 1,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
|
@ -86,8 +89,9 @@ func csNotice(rb *ResponseBuffer, text string) {
|
|||
rb.Add(nil, "ChanServ", "NOTICE", rb.target.Nick(), text)
|
||||
}
|
||||
|
||||
func csAmodeHandler(server *Server, client *Client, command, params string, rb *ResponseBuffer) {
|
||||
channelName, modeChange := utils.ExtractParam(params)
|
||||
func csAmodeHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
|
||||
channelName := params[0]
|
||||
modeChange := strings.Join(params[1:], " ")
|
||||
|
||||
channel := server.channels.Get(channelName)
|
||||
if channel == nil {
|
||||
|
|
@ -159,27 +163,13 @@ func csAmodeHandler(server *Server, client *Client, command, params string, rb *
|
|||
}
|
||||
}
|
||||
|
||||
func csOpHandler(server *Server, client *Client, command, params string, rb *ResponseBuffer) {
|
||||
channelName, clientToOp := utils.ExtractParam(params)
|
||||
|
||||
if channelName == "" {
|
||||
csNotice(rb, ircfmt.Unescape(client.t("Syntax: $bOP #channel [nickname]$b")))
|
||||
return
|
||||
}
|
||||
|
||||
clientToOp = strings.TrimSpace(clientToOp)
|
||||
|
||||
channelKey, err := CasefoldChannel(channelName)
|
||||
if err != nil {
|
||||
csNotice(rb, client.t("Channel name is not valid"))
|
||||
return
|
||||
}
|
||||
|
||||
channelInfo := server.channels.Get(channelKey)
|
||||
func csOpHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
|
||||
channelInfo := server.channels.Get(params[0])
|
||||
if channelInfo == nil {
|
||||
csNotice(rb, client.t("Channel does not exist"))
|
||||
return
|
||||
}
|
||||
channelName := channelInfo.Name()
|
||||
|
||||
clientAccount := client.Account()
|
||||
if clientAccount == "" || clientAccount != channelInfo.Founder() {
|
||||
|
|
@ -188,10 +178,9 @@ func csOpHandler(server *Server, client *Client, command, params string, rb *Res
|
|||
}
|
||||
|
||||
var target *Client
|
||||
if clientToOp != "" {
|
||||
casefoldedNickname, err := CasefoldName(clientToOp)
|
||||
target = server.clients.Get(casefoldedNickname)
|
||||
if err != nil || target == nil {
|
||||
if len(params) > 1 {
|
||||
target = server.clients.Get(params[1])
|
||||
if target == nil {
|
||||
csNotice(rb, client.t("Could not find given client"))
|
||||
return
|
||||
}
|
||||
|
|
@ -216,16 +205,13 @@ func csOpHandler(server *Server, client *Client, command, params string, rb *Res
|
|||
|
||||
csNotice(rb, fmt.Sprintf(client.t("Successfully op'd in channel %s"), channelName))
|
||||
|
||||
server.logger.Info("chanserv", fmt.Sprintf("Client %s op'd [%s] in channel %s", client.nick, clientToOp, channelName))
|
||||
server.snomasks.Send(sno.LocalChannels, fmt.Sprintf(ircfmt.Unescape("Client $c[grey][$r%s$c[grey]] CS OP'd $c[grey][$r%s$c[grey]] in channel $c[grey][$r%s$c[grey]]"), client.nickMaskString, clientToOp, channelName))
|
||||
tnick := target.Nick()
|
||||
server.logger.Info("services", fmt.Sprintf("Client %s op'd [%s] in channel %s", client.Nick(), tnick, channelName))
|
||||
server.snomasks.Send(sno.LocalChannels, fmt.Sprintf(ircfmt.Unescape("Client $c[grey][$r%s$c[grey]] CS OP'd $c[grey][$r%s$c[grey]] in channel $c[grey][$r%s$c[grey]]"), client.NickMaskString(), tnick, channelName))
|
||||
}
|
||||
|
||||
func csRegisterHandler(server *Server, client *Client, command, params string, rb *ResponseBuffer) {
|
||||
channelName := strings.TrimSpace(params)
|
||||
if channelName == "" {
|
||||
csNotice(rb, ircfmt.Unescape(client.t("Syntax: $bREGISTER #channel$b")))
|
||||
return
|
||||
}
|
||||
func csRegisterHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
|
||||
channelName := params[0]
|
||||
|
||||
channelKey, err := CasefoldChannel(channelName)
|
||||
if err != nil {
|
||||
|
|
@ -251,7 +237,7 @@ func csRegisterHandler(server *Server, client *Client, command, params string, r
|
|||
|
||||
csNotice(rb, fmt.Sprintf(client.t("Channel %s successfully registered"), channelName))
|
||||
|
||||
server.logger.Info("chanserv", fmt.Sprintf("Client %s registered channel %s", client.nick, channelName))
|
||||
server.logger.Info("services", fmt.Sprintf("Client %s registered channel %s", client.nick, channelName))
|
||||
server.snomasks.Send(sno.LocalChannels, fmt.Sprintf(ircfmt.Unescape("Channel registered $c[grey][$r%s$c[grey]] by $c[grey][$r%s$c[grey]]"), channelName, client.nickMaskString))
|
||||
|
||||
// give them founder privs
|
||||
|
|
@ -266,8 +252,13 @@ func csRegisterHandler(server *Server, client *Client, command, params string, r
|
|||
}
|
||||
}
|
||||
|
||||
func csUnregisterHandler(server *Server, client *Client, command, params string, rb *ResponseBuffer) {
|
||||
channelName, verificationCode := utils.ExtractParam(params)
|
||||
func csUnregisterHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
|
||||
channelName := params[0]
|
||||
var verificationCode string
|
||||
if len(params) > 1 {
|
||||
verificationCode = params[1]
|
||||
}
|
||||
|
||||
channelKey, err := CasefoldChannel(channelName)
|
||||
if channelKey == "" || err != nil {
|
||||
csNotice(rb, client.t("Channel name is not valid"))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue