- set hostname in CLI prompt
[l2tpns.git] / cli.c
diff --git a/cli.c b/cli.c
index 0d096cb..3784b94 100644 (file)
--- a/cli.c
+++ b/cli.c
@@ -2,7 +2,7 @@
 // vim: sw=4 ts=8
 
 char const *cvs_name = "$Name:  $";
 // vim: sw=4 ts=8
 
 char const *cvs_name = "$Name:  $";
-char const *cvs_id_cli = "$Id: cli.c,v 1.6 2004/06/28 02:43:13 fred_nerk Exp $";
+char const *cvs_id_cli = "$Id: cli.c,v 1.8 2004/07/07 09:09:53 bodea Exp $";
 
 #include <stdio.h>
 #include <stdarg.h>
 
 #include <stdio.h>
 #include <stdarg.h>
@@ -102,7 +102,7 @@ int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, int argc)
 int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc);
 int regular_stuff(struct cli_def *cli);
 
 int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc);
 int regular_stuff(struct cli_def *cli);
 
-void init_cli()
+void init_cli(char *hostname)
 {
     FILE *f;
     char buf[4096];
 {
     FILE *f;
     char buf[4096];
@@ -112,7 +112,10 @@ void init_cli()
     struct sockaddr_in addr;
 
     cli = cli_init();
     struct sockaddr_in addr;
 
     cli = cli_init();
-    cli_set_hostname(cli, "l2tpns");
+    if (hostname && *hostname)
+       cli_set_hostname(cli, hostname);
+    else
+       cli_set_hostname(cli, "l2tpns");
 
     c = cli_register_command(cli, NULL, "show", NULL, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, NULL);
     cli_register_command(cli, c, "banana", cmd_show_banana, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, "Show a banana");
 
     c = cli_register_command(cli, NULL, "show", NULL, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, NULL);
     cli_register_command(cli, c, "banana", cmd_show_banana, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, "Show a banana");
@@ -171,13 +174,13 @@ void init_cli()
     c = cli_register_command(cli, NULL, "restart", NULL, PRIVILEGE_PRIVILEGED, MODE_EXEC, NULL);
     cli_register_command(cli, c, "bgp", cmd_restart_bgp, PRIVILEGE_PRIVILEGED, MODE_EXEC, "Restart BGP");
 
     c = cli_register_command(cli, NULL, "restart", NULL, PRIVILEGE_PRIVILEGED, MODE_EXEC, NULL);
     cli_register_command(cli, c, "bgp", cmd_restart_bgp, PRIVILEGE_PRIVILEGED, MODE_EXEC, "Restart BGP");
 
-    c = cli_register_command(cli, NULL, "load", NULL, PRIVILEGE_PRIVILEGED, MODE_EXEC, NULL);
-    cli_register_command(cli, c, "plugin", cmd_load_plugin, PRIVILEGE_PRIVILEGED, MODE_EXEC, "Load a plugin");
+    c = cli_register_command(cli, NULL, "load", NULL, PRIVILEGE_PRIVILEGED, MODE_CONFIG, NULL);
+    cli_register_command(cli, c, "plugin", cmd_load_plugin, PRIVILEGE_PRIVILEGED, MODE_CONFIG, "Load a plugin");
 
 
-    c = cli_register_command(cli, NULL, "remove", NULL, PRIVILEGE_PRIVILEGED, MODE_EXEC, NULL);
-    cli_register_command(cli, c, "plugin", cmd_remove_plugin, PRIVILEGE_PRIVILEGED, MODE_EXEC, "Remove a plugin");
+    c = cli_register_command(cli, NULL, "remove", NULL, PRIVILEGE_PRIVILEGED, MODE_CONFIG, NULL);
+    cli_register_command(cli, c, "plugin", cmd_remove_plugin, PRIVILEGE_PRIVILEGED, MODE_CONFIG, "Remove a plugin");
 
 
-    cli_register_command(cli, NULL, "set", cmd_set, PRIVILEGE_PRIVILEGED, MODE_EXEC, "Set a configuration variable");
+    cli_register_command(cli, NULL, "set", cmd_set, PRIVILEGE_PRIVILEGED, MODE_CONFIG, "Set a configuration variable");
 
     // Enable regular processing
     cli_regular(cli, regular_stuff);
 
     // Enable regular processing
     cli_regular(cli, regular_stuff);
@@ -204,9 +207,9 @@ void init_cli()
            }
            else
            {
            }
            else
            {
-           cli_allow_user(cli, buf, p);
-           log(3, 0, 0, 0, "Allowing user %s to connect to the CLI\n", buf);
-       }
+               cli_allow_user(cli, buf, p);
+               log(3, 0, 0, 0, "Allowing user %s to connect to the CLI\n", buf);
+           }
        }
        fclose(f);
     }
        }
        fclose(f);
     }
@@ -331,7 +334,7 @@ void cli_do_file(FILE *fh)
 {
     log(3, 0, 0, 0, "Reading configuration file\n");
     cli_print_callback(cli, cli_print_log);
 {
     log(3, 0, 0, 0, "Reading configuration file\n");
     cli_print_callback(cli, cli_print_log);
-    cli_file(cli, fh, PRIVILEGE_PRIVILEGED);
+    cli_file(cli, fh, PRIVILEGE_PRIVILEGED, MODE_CONFIG);
     cli_print_callback(cli, NULL);
 }
 
     cli_print_callback(cli, NULL);
 }
 
@@ -374,7 +377,6 @@ int cli_arg_help(struct cli_def *cli, int cr_ok, char *entry, ...)
 int cmd_show_session(struct cli_def *cli, char *command, char **argv, int argc)
 {
     int i;
 int cmd_show_session(struct cli_def *cli, char *command, char **argv, int argc)
 {
     int i;
-    time_t time_now;
 
     if (CLI_HELP_REQUESTED)
        return cli_arg_help(cli, 1,
 
     if (CLI_HELP_REQUESTED)
        return cli_arg_help(cli, 1,
@@ -455,7 +457,7 @@ int cmd_show_session(struct cli_def *cli, char *command, char **argv, int argc)
                (unsigned long)session[i].total_cout,
                (unsigned long)session[i].total_cin,
                abs(time_now - (session[i].last_packet ? session[i].last_packet : time_now)),
                (unsigned long)session[i].total_cout,
                (unsigned long)session[i].total_cin,
                abs(time_now - (session[i].last_packet ? session[i].last_packet : time_now)),
-                tunnelip,
+               tunnelip,
                session[i].calling[0] ? session[i].calling : "*");
        if (userip) free(userip);
        if (tunnelip) free(tunnelip);
                session[i].calling[0] ? session[i].calling : "*");
        if (userip) free(userip);
        if (tunnelip) free(tunnelip);
@@ -466,7 +468,6 @@ int cmd_show_session(struct cli_def *cli, char *command, char **argv, int argc)
 int cmd_show_tunnels(struct cli_def *cli, char *command, char **argv, int argc)
 {
     int i, x, show_all = 0;
 int cmd_show_tunnels(struct cli_def *cli, char *command, char **argv, int argc)
 {
     int i, x, show_all = 0;
-    time_t time_now;
     char *states[] = {
        "Free",
        "Open",
     char *states[] = {
        "Free",
        "Open",
@@ -528,7 +529,7 @@ int cmd_show_tunnels(struct cli_def *cli, char *command, char **argv, int argc)
     }
 
     // Show tunnel summary
     }
 
     // Show tunnel summary
-    cli_print(cli, "%s %s %s %s %s",
+    cli_print(cli, "%4s %20s %20s %6s %s",
            "TID",
            "Hostname",
            "IP",
            "TID",
            "Hostname",
            "IP",
@@ -540,7 +541,7 @@ int cmd_show_tunnels(struct cli_def *cli, char *command, char **argv, int argc)
        if (!show_all && (!tunnel[i].ip || tunnel[i].die || !tunnel[i].hostname[0])) continue;
 
        for (x = 0; x < MAXSESSION; x++) if (session[x].tunnel == i && session[x].opened && !session[x].die) sessions++;
        if (!show_all && (!tunnel[i].ip || tunnel[i].die || !tunnel[i].hostname[0])) continue;
 
        for (x = 0; x < MAXSESSION; x++) if (session[x].tunnel == i && session[x].opened && !session[x].die) sessions++;
-       cli_print(cli, "%d %s %s %s %d",
+       cli_print(cli, "%4d %20s %20s %6s %6d",
                i,
                *tunnel[i].hostname ? tunnel[i].hostname : "(null)",
                inet_toa(htonl(tunnel[i].ip)),
                i,
                *tunnel[i].hostname ? tunnel[i].hostname : "(null)",
                inet_toa(htonl(tunnel[i].ip)),
@@ -753,7 +754,6 @@ int cmd_show_pool(struct cli_def *cli, char *command, char **argv, int argc)
 {
     int i;
     int used = 0, free = 0, show_all = 0;
 {
     int i;
     int used = 0, free = 0, show_all = 0;
-    time_t time_now;
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
@@ -873,6 +873,7 @@ int cmd_show_run(struct cli_def *cli, char *command, char **argv, int argc)
 
 int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int argc)
 {
 
 int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int argc)
 {
+    int i, free = 0, used = 0, show_all = 0;
     char *states[] = {
        "NULL",
        "CHAP",
     char *states[] = {
        "NULL",
        "CHAP",
@@ -882,8 +883,6 @@ int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int argc)
        "STOP",
        "WAIT",
     };
        "STOP",
        "WAIT",
     };
-    int i, free = 0, used = 0, show_all = 0;
-    time_t time_now;
 
     if (CLI_HELP_REQUESTED)
     {
 
     if (CLI_HELP_REQUESTED)
     {
@@ -1009,9 +1008,10 @@ int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
        return CLI_OK;
     }
+
     if (!argc)
     {
        cli_print(cli, "Specify a user to drop");
     if (!argc)
     {
        cli_print(cli, "Specify a user to drop");
@@ -1056,9 +1056,10 @@ int cmd_drop_tunnel(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
        return CLI_OK;
     }
+
     if (!argc)
     {
        cli_print(cli, "Specify a tunnel to drop");
     if (!argc)
     {
        cli_print(cli, "Specify a tunnel to drop");
@@ -1112,9 +1113,10 @@ int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
        return CLI_OK;
     }
+
     if (!argc)
     {
        cli_print(cli, "Specify a session id to drop");
     if (!argc)
     {
        cli_print(cli, "Specify a session id to drop");
@@ -1232,7 +1234,7 @@ int cmd_no_snoop(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
 
        return CLI_OK;
     }
 
@@ -1268,9 +1270,10 @@ int cmd_throttle(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
        return CLI_OK;
     }
+
     if (!argc)
     {
        cli_print(cli, "Specify a user");
     if (!argc)
     {
        cli_print(cli, "Specify a user");
@@ -1289,6 +1292,7 @@ int cmd_throttle(struct cli_def *cli, char *command, char **argv, int argc)
        else
            cli_print(cli, "Throttling user %s", argv[i]);
     }
        else
            cli_print(cli, "Throttling user %s", argv[i]);
     }
+
     return CLI_OK;
 }
 
     return CLI_OK;
 }
 
@@ -1303,9 +1307,10 @@ int cmd_no_throttle(struct cli_def *cli, char *command, char **argv, int argc)
 
     if (!config->cluster_iam_master)
     {
 
     if (!config->cluster_iam_master)
     {
-       cli_print(cli, "Can't do this on a slave. Do it on %s", inet_toa(config->cluster_master_address));
+       cli_print(cli, "Can't do this on a slave.  Do it on %s", inet_toa(config->cluster_master_address));
        return CLI_OK;
     }
        return CLI_OK;
     }
+
     if (!argc)
     {
        cli_print(cli, "Specify a user");
     if (!argc)
     {
        cli_print(cli, "Specify a user");
@@ -1346,9 +1351,9 @@ int cmd_debug(struct cli_def *cli, char *command, char **argv, int argc)
     {
        char *p = (char *) &debug_flags;
        for (i = 0; i < sizeof(debug_flags); i++)
     {
        char *p = (char *) &debug_flags;
        for (i = 0; i < sizeof(debug_flags); i++)
-    {
-           if (p[i])
        {
        {
+           if (p[i])
+           {
                cli_print(cli, "Currently debugging:%s%s%s%s%s%s",
                    (debug_flags.critical) ? " critical" : "",
                    (debug_flags.error)    ? " error"    : "",
                cli_print(cli, "Currently debugging:%s%s%s%s%s%s",
                    (debug_flags.critical) ? " critical" : "",
                    (debug_flags.error)    ? " error"    : "",
@@ -1357,9 +1362,9 @@ int cmd_debug(struct cli_def *cli, char *command, char **argv, int argc)
                    (debug_flags.calls)    ? " calls"    : "",
                    (debug_flags.data)     ? " data"     : "");
 
                    (debug_flags.calls)    ? " calls"    : "",
                    (debug_flags.data)     ? " data"     : "");
 
-           return CLI_OK;
+               return CLI_OK;
+           }
        }
        }
-    }
 
        cli_print(cli, "Debugging off");
        return CLI_OK;
 
        cli_print(cli, "Debugging off");
        return CLI_OK;
@@ -1538,7 +1543,6 @@ int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc)
     FILE *fh;
     char buf[100], *p = buf, *loads[3];
     int i, num_sessions = 0;
     FILE *fh;
     char buf[100], *p = buf, *loads[3];
     int i, num_sessions = 0;
-    time_t time_now;
 
     if (CLI_HELP_REQUESTED)
        return CLI_HELP_NO_ARGS;
 
     if (CLI_HELP_REQUESTED)
        return CLI_HELP_NO_ARGS;