Add support for guest users to register themselves if the register_self config option has been enabled.
This commit is contained in:
parent
f0b67ea4cd
commit
e3852b7fad
@ -574,6 +574,33 @@ static int command_stats(struct command_base* cbase, struct hub_user* user, stru
|
|||||||
return command_status(cbase, user, cmd, buf);
|
return command_status(cbase, user, cmd, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int command_register_self(struct command_base* cbase, struct hub_user* user, struct hub_command* cmd)
|
||||||
|
{
|
||||||
|
if (user_is_registered(user))
|
||||||
|
return command_status(cbase, user, cmd, cbuf_create_const("You are already registered!"));
|
||||||
|
|
||||||
|
struct hub_command_arg_data* arg = hub_command_arg_next(cmd, type_string);
|
||||||
|
char* password = arg->data.string;
|
||||||
|
|
||||||
|
if (!*password || strlen(password) > MAX_PASS_LEN)
|
||||||
|
return command_status(cbase, user, cmd, cbuf_create_const("Invalid password!"));
|
||||||
|
|
||||||
|
struct auth_info info;
|
||||||
|
memset(&info, 0, sizeof(info));
|
||||||
|
memcpy(&info.nickname, user->id.nick, MAX_NICK_LEN);
|
||||||
|
memcpy(&info.password, password, MAX_PASS_LEN);
|
||||||
|
info.credentials = auth_cred_user;
|
||||||
|
|
||||||
|
|
||||||
|
if (acl_register_user(cbase->hub, &info))
|
||||||
|
{
|
||||||
|
return command_status(cbase, user, cmd, cbuf_create_const("You are now registered."));
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: No good reason for this can be given here!
|
||||||
|
return command_status(cbase, user, cmd, cbuf_create_const("Unable to register user."));
|
||||||
|
}
|
||||||
|
|
||||||
static struct command_handle* add_builtin(struct command_base* cbase, const char* prefix, const char* args, enum auth_credentials cred, command_handler handler, const char* description)
|
static struct command_handle* add_builtin(struct command_base* cbase, const char* prefix, const char* args, enum auth_credentials cred, command_handler handler, const char* description)
|
||||||
{
|
{
|
||||||
struct command_handle* handle = (struct command_handle*) hub_malloc_zero(sizeof(struct command_handle));
|
struct command_handle* handle = (struct command_handle*) hub_malloc_zero(sizeof(struct command_handle));
|
||||||
@ -601,6 +628,10 @@ void commands_builtin_add(struct command_base* cbase)
|
|||||||
ADD_COMMAND("myip", 4, "", auth_cred_guest, command_myip, "Show your own IP." );
|
ADD_COMMAND("myip", 4, "", auth_cred_guest, command_myip, "Show your own IP." );
|
||||||
ADD_COMMAND("reload", 6, "", auth_cred_admin, command_reload, "Reload configuration files." );
|
ADD_COMMAND("reload", 6, "", auth_cred_admin, command_reload, "Reload configuration files." );
|
||||||
ADD_COMMAND("shutdown", 8, "", auth_cred_admin, command_shutdown_hub, "Shutdown hub." );
|
ADD_COMMAND("shutdown", 8, "", auth_cred_admin, command_shutdown_hub, "Shutdown hub." );
|
||||||
|
|
||||||
|
if (cbase->hub->config->register_self)
|
||||||
|
ADD_COMMAND("register", 8, "p", auth_cred_guest, command_register_self, "Register yourself." );
|
||||||
|
|
||||||
ADD_COMMAND("stats", 5, "", auth_cred_super, command_stats, "Show hub statistics." );
|
ADD_COMMAND("stats", 5, "", auth_cred_super, command_stats, "Show hub statistics." );
|
||||||
ADD_COMMAND("uptime", 6, "", auth_cred_guest, command_uptime, "Display hub uptime info." );
|
ADD_COMMAND("uptime", 6, "", auth_cred_guest, command_uptime, "Display hub uptime info." );
|
||||||
ADD_COMMAND("version", 7, "", auth_cred_guest, command_version, "Show hub version info." );
|
ADD_COMMAND("version", 7, "", auth_cred_guest, command_version, "Show hub version info." );
|
||||||
|
Loading…
Reference in New Issue
Block a user