|
|
| version 1.1.1.1, 2012/02/21 23:32:47 | version 1.1.1.3, 2016/11/01 09:56:12 |
|---|---|
| Line 87 | Line 87 |
| */ | */ |
| static const struct confinfo gConfList[] = { | static const struct confinfo gConfList[] = { |
| { 0, CONSOLE_AUTH, "auth" }, | |
| { 0, 0, NULL }, | |
| }; | |
| static const struct confinfo sConfList[] = { | |
| { 0, CONSOLE_LOGGING, "logging" }, | { 0, CONSOLE_LOGGING, "logging" }, |
| { 0, 0, NULL }, | { 0, 0, NULL }, |
| }; | }; |
| Line 107 ConsoleInit(Console c) | Line 112 ConsoleInit(Console c) |
| memset(&gConsole, 0, sizeof(gConsole)); | memset(&gConsole, 0, sizeof(gConsole)); |
| ParseAddr(DEFAULT_CONSOLE_IP, &c->addr, ALLOW_IPV4|ALLOW_IPV6); | ParseAddr(DEFAULT_CONSOLE_IP, &c->addr, ALLOW_IPV4|ALLOW_IPV6); |
| c->port = DEFAULT_CONSOLE_PORT; | c->port = DEFAULT_CONSOLE_PORT; |
| Enable(&c->options, CONSOLE_AUTH); | |
| SLIST_INIT(&c->sessions); | SLIST_INIT(&c->sessions); |
| Line 194 ConsoleStat(Context ctx, int ac, char *av[], void *arg | Line 200 ConsoleStat(Context ctx, int ac, char *av[], void *arg |
| } | } |
| RWLOCK_UNLOCK(c->lock); | RWLOCK_UNLOCK(c->lock); |
| Printf("Global options:\r\n"); | |
| OptStat(ctx, &c->options, gConfList); | |
| if (cs) { | if (cs) { |
| Printf("This session options:\r\n"); | Printf("This session options:\r\n"); |
| OptStat(ctx, &cs->options, gConfList); | OptStat(ctx, &cs->options, sConfList); |
| } | } |
| return 0; | return 0; |
| } | } |
| Line 233 ConsoleConnect(int type, void *cookie) | Line 241 ConsoleConnect(int type, void *cookie) |
| cs->write = ConsoleSessionWrite; | cs->write = ConsoleSessionWrite; |
| cs->writev = ConsoleSessionWriteV; | cs->writev = ConsoleSessionWriteV; |
| cs->prompt = ConsoleSessionShowPrompt; | cs->prompt = ConsoleSessionShowPrompt; |
| cs->state = STATE_USERNAME; | if (!Enabled(&c->options, CONSOLE_AUTH)) { |
| cs->state = STATE_AUTHENTIC; | |
| strcpy(cs->user.username, "root"); | |
| cs->context.priv = 2; | |
| } else { | |
| cs->state = STATE_USERNAME; | |
| } | |
| cs->context.cs = cs; | cs->context.cs = cs; |
| RWLOCK_WRLOCK(c->lock); | RWLOCK_WRLOCK(c->lock); |
| SLIST_INSERT_HEAD(&c->sessions, cs, next); | SLIST_INSERT_HEAD(&c->sessions, cs, next); |
| Line 376 ConsoleSessionReadEvent(int type, void *cookie) | Line 390 ConsoleSessionReadEvent(int type, void *cookie) |
| goto out; | goto out; |
| Perror("CONSOLE: Error while reading"); | Perror("CONSOLE: Error while reading"); |
| } else { | } else { |
| if (cs->fd == 0) | if (cs->fd == 0 && isatty(cs->fd)) |
| goto out; | goto out; |
| Log(LG_ERR, ("CONSOLE: Connection closed by peer")); | Log(LG_ERR, ("CONSOLE: Connection closed by peer")); |
| } | } |
| Line 793 ConsoleSetCommand(Context ctx, int ac, char *av[], voi | Line 807 ConsoleSetCommand(Context ctx, int ac, char *av[], voi |
| break; | break; |
| case SET_ENABLE: | case SET_ENABLE: |
| if (cs) | if (cs) { |
| EnableCommand(ac, av, &cs->options, gConfList); | if (strcmp(av[0], "auth") != 0) |
| EnableCommand(ac, av, &cs->options, sConfList); | |
| } else | |
| EnableCommand(ac, av, &c->options, gConfList); | |
| break; | break; |
| case SET_DISABLE: | case SET_DISABLE: |
| if (cs) | if (cs) { |
| DisableCommand(ac, av, &cs->options, gConfList); | if (strcmp(av[0], "auth") != 0) |
| DisableCommand(ac, av, &cs->options, sConfList); | |
| } else | |
| DisableCommand(ac, av, &c->options, gConfList); | |
| break; | break; |
| case SET_SELF: | case SET_SELF: |
| Line 888 UserStat(Context ctx, int ac, char *av[], void *arg) | Line 908 UserStat(Context ctx, int ac, char *av[], void *arg) |
| RWLOCK_RDLOCK(gUsersLock); | RWLOCK_RDLOCK(gUsersLock); |
| ghash_walk_init(gUsers, &walk); | ghash_walk_init(gUsers, &walk); |
| while ((u = ghash_walk_next(gUsers, &walk)) != NULL) { | while ((u = ghash_walk_next(gUsers, &walk)) != NULL) { |
| Printf("\tUsername: %-15s Priv:%s\r\n", u->username, | Printf("\tUsername: %-15s Priv: %s\r\n", u->username, |
| ((u->priv == 2)?"admin":((u->priv == 1)?"operator":"user"))); | ((u->priv == 2)?"admin":((u->priv == 1)?"operator":"user"))); |
| } | } |
| RWLOCK_UNLOCK(gUsersLock); | RWLOCK_UNLOCK(gUsersLock); |