diff options
author | Dennis Kaarsemaker <dennis@kaarsemaker.net> | 2016-02-22 21:25:39 +0100 |
---|---|---|
committer | Dennis Kaarsemaker <dennis@kaarsemaker.net> | 2016-03-23 07:44:13 +0100 |
commit | 446a23ea39184c5fe43cd40706bb683b89534e2e (patch) | |
tree | c2a3933f4f962071174225c3bb86b3884927fd15 | |
parent | e41ba05c0a9002b30e9e2475f56fd207e856a9f8 (diff) |
Add a setting to disable 'account add'
In a locked down bitlbee instance it is useful to disable the 'account
add' command.
-rw-r--r-- | bitlbee.conf | 7 | ||||
-rw-r--r-- | conf.c | 7 | ||||
-rw-r--r-- | conf.h | 1 | ||||
-rw-r--r-- | root_commands.c | 5 |
4 files changed, 20 insertions, 0 deletions
diff --git a/bitlbee.conf b/bitlbee.conf index 51b5777a..a79a4483 100644 --- a/bitlbee.conf +++ b/bitlbee.conf @@ -69,6 +69,13 @@ ## or # OperPassword = md5:I0mnZbn1t4R731zzRdDN2/pK7lRX +## AllowAccountAdd +## +## Whether to allow registered and identified users to add new accounts using +## 'account add' +## +# AllowAccountAdd 1 + ## HostName ## ## Normally, BitlBee gets a hostname using getsockname(). If you have a nicer @@ -56,6 +56,7 @@ conf_t *conf_load(int argc, char *argv[]) conf->authmode = AUTHMODE_OPEN; conf->auth_pass = NULL; conf->oper_pass = NULL; + conf->allow_account_add = 1; conf->configdir = g_strdup(CONFIG); conf->plugindir = g_strdup(PLUGINDIR); conf->pidfile = g_strdup(PIDFILE); @@ -245,6 +246,12 @@ static int conf_loadini(conf_t *conf, char *file) } else if (g_strcasecmp(ini->key, "operpassword") == 0) { g_free(conf->oper_pass); conf->oper_pass = g_strdup(ini->value); + } else if (g_strcasecmp(ini->key, "allowaccountadd") == 0) { + if (!is_bool(ini->value)) { + fprintf(stderr, "Invalid %s value: %s\n", ini->key, ini->value); + return 0; + } + conf->allow_account_add = bool2int(ini->value); } else if (g_strcasecmp(ini->key, "hostname") == 0) { g_free(conf->hostname); conf->hostname = g_strdup(ini->value); @@ -38,6 +38,7 @@ typedef struct conf { authmode_t authmode; char *auth_pass; char *oper_pass; + int allow_account_add; char *hostname; char *configdir; char *plugindir; diff --git a/root_commands.c b/root_commands.c index 80873c79..0f024345 100644 --- a/root_commands.c +++ b/root_commands.c @@ -416,6 +416,11 @@ static void cmd_account(irc_t *irc, char **cmd) MIN_ARGS(3); + if (!global.conf->allow_account_add) { + irc_rootmsg(irc, "This server does not allow adding new accounts"); + return; + } + if (cmd[4] == NULL) { for (a = irc->b->accounts; a; a = a->next) { if (strcmp(a->pass, PASSWORD_PENDING) == 0) { |