]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
it is impossible to set permissions for manager accounts created by users.conf (repor...
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 28 Nov 2007 22:30:46 +0000 (22:30 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 28 Nov 2007 22:30:46 +0000 (22:30 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90098 65c4cc65-6c06-0410-ace0-fbb531ad65f3

configs/users.conf.sample
main/manager.c

index f88adee9cd19dd584643bfc97c0613ce52fa9d32..2a816d7e412fefaa9dbf9861c91c35b64256f667 100644 (file)
@@ -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
index d2f1158864f83f1d71660bd89b7f32e6e9c1f0b3..cecb2ca8917644d2285d9efb00eb5d2aa4b0f83a 100644 (file)
@@ -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);