From: Kevin P. Fleming Date: Wed, 28 Nov 2007 22:30:46 +0000 (+0000) Subject: it is impossible to set permissions for manager accounts created by users.conf (repor... X-Git-Tag: 1.4.16.1~94 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc5429da7cf5130e2a9190a365c3531dc6514acd;p=thirdparty%2Fasterisk.git it is impossible to set permissions for manager accounts created by users.conf (reported internally, patched by me) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90098 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/configs/users.conf.sample b/configs/users.conf.sample index f88adee9cd..2a816d7e41 100644 --- a/configs/users.conf.sample +++ b/configs/users.conf.sample @@ -46,6 +46,11 @@ hasiax = yes ; hasmanager = no ; +; Set permissions for manager entry (see manager.conf.sample for documentation) +; (defaults to *all* permissions) +;managerread = system,call,log,verbose,command,agent,user,config +;managerwrite = system,call,log,verbose,command,agent,user,config +; ; Remaining options are not specific to users.conf entries but are general. ; callwaiting = yes diff --git a/main/manager.c b/main/manager.c index d2f1158864..cecb2ca891 100644 --- a/main/manager.c +++ b/main/manager.c @@ -1054,6 +1054,9 @@ static int authenticate(struct mansession *s, const struct message *m) struct ast_variable *v; const char *password = NULL; int hasmanager = 0; + const char *readperms = NULL; + const char *writeperms = NULL; + if (strcasecmp(cat, user) || !strcasecmp(cat, "general")) { cat = ast_category_browse(cfg, cat); continue; @@ -1063,6 +1066,10 @@ static int authenticate(struct mansession *s, const struct message *m) password = v->value; else if (!strcasecmp(v->name, "hasmanager")) hasmanager = ast_true(v->value); + else if (!strcasecmp(v->name, "managerread")) + readperms = v->value; + else if (!strcasecmp(v->name, "managerwrite")) + writeperms = v->value; } if (!hasmanager) break; @@ -1072,8 +1079,8 @@ static int authenticate(struct mansession *s, const struct message *m) return -1; } ast_copy_string(s->username, cat, sizeof(s->username)); - s->readperm = -1; - s->writeperm = -1; + s->readperm = readperms ? get_perm(readperms) : -1; + s->writeperm = writeperms ? get_perm(writeperms) : -1; ast_config_destroy(cfg); if (events) set_eventmask(s, events);