Imported Upstream version 2.5.1
[debian/amanda] / server-src / server_util.c
index fff4e6e03cad6ad77543a777c837bb710a8b398c..9f8835e47bb33b81f4b052aa3d2a51bc1295f83a 100644 (file)
@@ -24,7 +24,7 @@
  * file named AUTHORS, in the root directory of this distribution.
  */
 /*
- * $Id: server_util.c,v 1.1.2.1.4.2.2.3 2002/04/13 19:24:17 jrjackson Exp $
+ * $Id: server_util.c,v 1.17 2006/05/25 01:47:20 johnfranks Exp $
  *
  */
 
 #include "server_util.h"
 #include "arglist.h"
 #include "token.h"
+#include "logfile.h"
+#include "util.h"
+#include "conffile.h"
+#include "diskfile.h"
 
 const char *cmdstr[] = {
-    "BOGUS", "QUIT", "QUITTING", "DONE",
-    "FILE-DUMP", "PORT-DUMP", "CONTINUE", "ABORT",     /* dumper cmds */
+    "BOGUS", "QUIT", "QUITTING", "DONE", "PARTIAL", 
+    "START", "FILE-DUMP", "PORT-DUMP", "CONTINUE", "ABORT",/* dumper cmds */
     "FAILED", "TRY-AGAIN", "NO-ROOM", "RQ-MORE-DISK",  /* dumper results */
-    "ABORT-FINISHED", "FATAL-TRYAGAIN", "BAD-COMMAND", /* dumper results */
+    "ABORT-FINISHED", "BAD-COMMAND",                   /* dumper results */
     "START-TAPER", "FILE-WRITE", "PORT-WRITE",         /* taper cmds */
-    "PORT", "TAPE-ERROR", "TAPER-OK",                  /* taper results */
+    "PORT", "TAPE-ERROR", "TAPER-OK", "SPLIT-NEEDNEXT", /* taper results */
+    "SPLIT-CONTINUE",
     NULL
 };
 
-cmd_t getcmd(cmdargs)
-struct cmdargs *cmdargs;
+
+cmd_t
+getcmd(
+    struct cmdargs *   cmdargs)
 {
     char *line;
     cmd_t cmd_i;
@@ -54,22 +61,24 @@ struct cmdargs *cmdargs;
     if (isatty(0)) {
        printf("%s> ", get_pname());
        fflush(stdout);
+        line = readline(NULL);
+    } else {
+        line = agets(stdin);
     }
-
-    if ((line = agets(stdin)) == NULL) {
+    if (line == NULL) {
        line = stralloc("QUIT");
     }
 
     cmdargs->argc = split(line, cmdargs->argv,
-       sizeof(cmdargs->argv) / sizeof(cmdargs->argv[0]), " ");
+       (int)(sizeof(cmdargs->argv) / sizeof(cmdargs->argv[0])), " ");
     amfree(line);
 
 #if DEBUG
     {
        int i;
-       printf("argc = %d\n", cmdargs->argc);
-       for (i = 0; i < cmdargs->argc; i++)
-           printf("argv[%d] = \"%s\"\n", i, cmdargs->argv[i]);
+       fprintf(stderr,"argc = %d\n", cmdargs->argc);
+       for (i = 0; i < cmdargs->argc+1; i++)
+           fprintf(stderr,"argv[%d] = \"%s\"\n", i, cmdargs->argv[i]);
     }
 #endif
 
@@ -94,3 +103,27 @@ printf_arglist_function1(void putresult, cmd_t, result, const char *, format)
     arglist_end(argp);
 }
 
+char *
+amhost_get_security_conf(
+    char *     string,
+    void *     arg)
+{
+    if(!string || !*string)
+       return(NULL);
+
+    if(strcmp(string, "krb5principal")==0)
+       return(getconf_str(CNF_KRB5PRINCIPAL));
+    else if(strcmp(string, "krb5keytab")==0)
+       return(getconf_str(CNF_KRB5KEYTAB));
+
+    if(!arg || !((am_host_t *)arg)->disks) return(NULL);
+
+    if(strcmp(string, "amandad_path")==0)
+       return ((am_host_t *)arg)->disks->amandad_path;
+    else if(strcmp(string, "client_username")==0)
+       return ((am_host_t *)arg)->disks->client_username;
+    else if(strcmp(string, "ssh_keys")==0)
+       return ((am_host_t *)arg)->disks->ssh_keys;
+
+    return(NULL);
+}