mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-10 22:19:31 +01:00
accounts: Rename some args, check credential type
This commit is contained in:
parent
e7fced804e
commit
6e9722dee5
@ -20,8 +20,9 @@ var (
|
|||||||
|
|
||||||
// AccountRegistration manages the registration of accounts.
|
// AccountRegistration manages the registration of accounts.
|
||||||
type AccountRegistration struct {
|
type AccountRegistration struct {
|
||||||
Enabled bool
|
Enabled bool
|
||||||
EnabledCallbackTypes []string
|
EnabledCallbacks []string
|
||||||
|
EnabledCredentialTypes []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewAccountRegistration returns a new AccountRegistration, configured correctly.
|
// NewAccountRegistration returns a new AccountRegistration, configured correctly.
|
||||||
@ -33,7 +34,12 @@ func NewAccountRegistration(config AccountRegistrationConfig) (accountReg Accoun
|
|||||||
if name == "none" {
|
if name == "none" {
|
||||||
name = "*"
|
name = "*"
|
||||||
}
|
}
|
||||||
accountReg.EnabledCallbackTypes = append(accountReg.EnabledCallbackTypes, name)
|
accountReg.EnabledCallbacks = append(accountReg.EnabledCallbacks, name)
|
||||||
|
}
|
||||||
|
// no need to make this configurable, right now at least
|
||||||
|
accountReg.EnabledCredentialTypes = []string{
|
||||||
|
"passphrase",
|
||||||
|
"certfp",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return accountReg
|
return accountReg
|
||||||
@ -88,14 +94,14 @@ func regHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
callbackValues := strings.SplitN(callback, ":", 2)
|
callbackValues := strings.SplitN(callback, ":", 2)
|
||||||
callbackNamespace, callbackValue = callbackValues[0], callbackValues[1]
|
callbackNamespace, callbackValue = callbackValues[0], callbackValues[1]
|
||||||
} else {
|
} else {
|
||||||
callbackNamespace = server.accountRegistration.EnabledCallbackTypes[0]
|
callbackNamespace = server.accountRegistration.EnabledCallbacks[0]
|
||||||
callbackValue = callback
|
callbackValue = callback
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure the callback namespace is valid
|
// ensure the callback namespace is valid
|
||||||
// need to search callback list, maybe look at using a map later?
|
// need to search callback list, maybe look at using a map later?
|
||||||
var callbackValid bool
|
var callbackValid bool
|
||||||
for _, name := range server.accountRegistration.EnabledCallbackTypes {
|
for _, name := range server.accountRegistration.EnabledCallbacks {
|
||||||
if callbackNamespace == name {
|
if callbackNamespace == name {
|
||||||
callbackValid = true
|
callbackValid = true
|
||||||
}
|
}
|
||||||
@ -107,7 +113,7 @@ func regHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure the credential type is valid
|
// get credential type/value
|
||||||
var credentialType, credentialValue string
|
var credentialType, credentialValue string
|
||||||
|
|
||||||
if len(msg.Params) > 4 {
|
if len(msg.Params) > 4 {
|
||||||
@ -122,6 +128,20 @@ func regHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensure the credential type is valid
|
||||||
|
var credentialValid bool
|
||||||
|
for _, name := range server.accountRegistration.EnabledCredentialTypes {
|
||||||
|
if credentialType == name {
|
||||||
|
credentialValid = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !credentialValid {
|
||||||
|
client.Send(nil, server.nameString, ERR_REG_INVALID_CRED_TYPE, client.nickString, credentialType, callbackNamespace, "Credential type is not supported")
|
||||||
|
//TODO(dan): close out failed account reg (remove values from db)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// dispatch callback
|
// dispatch callback
|
||||||
if callbackNamespace != "*" {
|
if callbackNamespace != "*" {
|
||||||
client.Notice("Account creation was successful!")
|
client.Notice("Account creation was successful!")
|
||||||
|
@ -158,15 +158,15 @@ func NewServer(config *Config) *Server {
|
|||||||
// account registration
|
// account registration
|
||||||
if server.accountRegistration.Enabled {
|
if server.accountRegistration.Enabled {
|
||||||
// 'none' isn't shown in the REGCALLBACKS vars
|
// 'none' isn't shown in the REGCALLBACKS vars
|
||||||
var enabledCallbackTypes []string
|
var enabledCallbacks []string
|
||||||
for _, name := range server.accountRegistration.EnabledCallbackTypes {
|
for _, name := range server.accountRegistration.EnabledCallbacks {
|
||||||
if name != "*" {
|
if name != "*" {
|
||||||
enabledCallbackTypes = append(enabledCallbackTypes, name)
|
enabledCallbacks = append(enabledCallbacks, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
server.isupport.Add("REGCOMMANDS", "CREATE,VERIFY")
|
server.isupport.Add("REGCOMMANDS", "CREATE,VERIFY")
|
||||||
server.isupport.Add("REGCALLBACKS", strings.Join(enabledCallbackTypes, ","))
|
server.isupport.Add("REGCALLBACKS", strings.Join(enabledCallbacks, ","))
|
||||||
server.isupport.Add("REGCREDTYPES", "passphrase,certfp")
|
server.isupport.Add("REGCREDTYPES", "passphrase,certfp")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user