OPENAFS-SA-2018-001 backup: use authenticated connection to butc
[openafs.git] / src / bucoord / main.c
index d233dba..d2a5f36 100644 (file)
@@ -41,7 +41,7 @@
 #include "bucoord_internal.h"
 #include "bucoord_prototypes.h"
 
-int localauth, interact;
+int localauth, interact, nobutcauth;
 char tcell[64];
 
 /*
@@ -292,6 +292,7 @@ MyBeforeProc(struct cmd_syndesc *as, void *arock)
     /* Handling the command line opcode */
     if (!bcInit) {
        localauth = ((as && as->parms[14].items) ? 1 : 0);
+       nobutcauth = ((as && as->parms[16].items) ? 1 : 0);
        if (as && as->parms[15].items)
            strcpy(tcell, as->parms[15].items->data);
        else
@@ -432,6 +433,8 @@ add_std_args(struct cmd_syndesc *ts)
     cmd_AddParm(ts, "-localauth", CMD_FLAG, CMD_OPTIONAL,
                "local authentication");
     cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
+    cmd_AddParm(ts, "-nobutcauth", CMD_FLAG, CMD_OPTIONAL,
+               "no authentication to butc");
 }
 
 int
@@ -478,7 +481,7 @@ main(int argc, char **argv)
 
     cmd_SetBeforeProc(MyBeforeProc, NULL);
 
-    ts = cmd_CreateSyntax("dump", bc_DumpCmd, NULL, "start dump");
+    ts = cmd_CreateSyntax("dump", bc_DumpCmd, NULL, 0, "start dump");
     cmd_AddParm(ts, "-volumeset", CMD_SINGLE, CMD_OPTIONAL,
                "volume set name");
     cmd_AddParm(ts, "-dump", CMD_SINGLE, CMD_OPTIONAL, "dump level name");
@@ -494,7 +497,7 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("volrestore", bc_VolRestoreCmd, NULL,
+    ts = cmd_CreateSyntax("volrestore", bc_VolRestoreCmd, NULL, 0,
                          "restore volume");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED,
                "destination machine");
@@ -515,7 +518,7 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("diskrestore", bc_DiskRestoreCmd, NULL,
+    ts = cmd_CreateSyntax("diskrestore", bc_DiskRestoreCmd, NULL, 0,
                          "restore partition");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED,
                "machine to restore");
@@ -535,9 +538,9 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    cmd_CreateSyntax("quit", bc_QuitCmd, NULL, "leave the program");
+    cmd_CreateSyntax("quit", bc_QuitCmd, NULL, 0, "leave the program");
 
-    ts = cmd_CreateSyntax("volsetrestore", bc_VolsetRestoreCmd, NULL,
+    ts = cmd_CreateSyntax("volsetrestore", bc_VolsetRestoreCmd, NULL, 0,
                          "restore a set of volumes");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL, "volume set name");
     cmd_AddParm(ts, "-file", CMD_SINGLE, CMD_OPTIONAL, "file name");
@@ -550,7 +553,7 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addhost", bc_AddHostCmd, NULL, "add host to config");
+    ts = cmd_CreateSyntax("addhost", bc_AddHostCmd, NULL, 0, "add host to config");
     cmd_AddParm(ts, "-tapehost", CMD_SINGLE, CMD_REQUIRED,
                "tape machine name");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
@@ -558,7 +561,7 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delhost", bc_DeleteHostCmd, NULL,
+    ts = cmd_CreateSyntax("delhost", bc_DeleteHostCmd, NULL, 0,
                          "delete host to config");
     cmd_AddParm(ts, "-tapehost", CMD_SINGLE, CMD_REQUIRED,
                "tape machine name");
@@ -567,29 +570,29 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("listhosts", bc_ListHostsCmd, NULL,
+    ts = cmd_CreateSyntax("listhosts", bc_ListHostsCmd, NULL, 0,
                          "list config hosts");
     if (!interact)
        add_std_args(ts);
 
-    cmd_CreateSyntax("jobs", bc_JobsCmd, NULL, "list running jobs");
+    cmd_CreateSyntax("jobs", bc_JobsCmd, NULL, 0, "list running jobs");
 
-    ts = cmd_CreateSyntax("kill", bc_KillCmd, NULL, "kill running job");
+    ts = cmd_CreateSyntax("kill", bc_KillCmd, NULL, 0, "kill running job");
     cmd_AddParm(ts, "-id", CMD_SINGLE, CMD_REQUIRED,
                "job ID or dump set name");
 
-    ts = cmd_CreateSyntax("listvolsets", bc_ListVolSetCmd, NULL,
+    ts = cmd_CreateSyntax("listvolsets", bc_ListVolSetCmd, NULL, 0,
                          "list volume sets");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL, "volume set name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("listdumps", bc_ListDumpScheduleCmd, NULL,
+    ts = cmd_CreateSyntax("listdumps", bc_ListDumpScheduleCmd, NULL, 0,
                          "list dump schedules");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addvolset", bc_AddVolSetCmd, NULL,
+    ts = cmd_CreateSyntax("addvolset", bc_AddVolSetCmd, NULL, 0,
                          "create a new volume set");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-temporary", CMD_FLAG, CMD_OPTIONAL,
@@ -597,20 +600,20 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("status", bc_GetTapeStatusCmd, NULL,
+    ts = cmd_CreateSyntax("status", bc_GetTapeStatusCmd, NULL, 0,
                          "get tape coordinator status");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delvolset", bc_DeleteVolSetCmd, NULL,
+    ts = cmd_CreateSyntax("delvolset", bc_DeleteVolSetCmd, NULL, 0,
                          "delete a volume set");
     cmd_AddParm(ts, "-name", CMD_LIST, CMD_REQUIRED, "volume set name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addvolentry", bc_AddVolEntryCmd, NULL,
+    ts = cmd_CreateSyntax("addvolentry", bc_AddVolEntryCmd, NULL, 0,
                          "add a new volume entry");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED, "machine name");
@@ -620,26 +623,26 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delvolentry", bc_DeleteVolEntryCmd, NULL,
+    ts = cmd_CreateSyntax("delvolentry", bc_DeleteVolEntryCmd, NULL, 0,
                          "delete a volume set sub-entry");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-entry", CMD_SINGLE, CMD_REQUIRED, "volume set index");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("adddump", bc_AddDumpCmd, NULL, "add dump schedule");
+    ts = cmd_CreateSyntax("adddump", bc_AddDumpCmd, NULL, 0, "add dump schedule");
     cmd_AddParm(ts, "-dump", CMD_LIST, CMD_REQUIRED, "dump level name");
     cmd_AddParm(ts, "-expires", CMD_LIST, CMD_OPTIONAL, "expiration date");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("deldump", bc_DeleteDumpCmd, NULL,
+    ts = cmd_CreateSyntax("deldump", bc_DeleteDumpCmd, NULL, 0,
                          "delete dump schedule");
     cmd_AddParm(ts, "-dump", CMD_SINGLE, CMD_REQUIRED, "dump level name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("labeltape", bc_LabelTapeCmd, NULL, "label a tape");
+    ts = cmd_CreateSyntax("labeltape", bc_LabelTapeCmd, NULL, 0, "label a tape");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL,
                "AFS tape name, defaults to NULL");
     cmd_AddParm(ts, "-size", CMD_SINGLE, CMD_OPTIONAL,
@@ -651,14 +654,14 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("readlabel", bc_ReadLabelCmd, NULL,
+    ts = cmd_CreateSyntax("readlabel", bc_ReadLabelCmd, NULL, 0,
                          "read the label on tape");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("scantape", bc_ScanDumpsCmd, NULL,
+    ts = cmd_CreateSyntax("scantape", bc_ScanDumpsCmd, NULL, 0,
                          "dump information recovery from tape");
     cmd_AddParm(ts, "-dbadd", CMD_FLAG, CMD_OPTIONAL,
                "add information to the database");
@@ -667,34 +670,34 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("volinfo", bc_dblookupCmd, NULL,
+    ts = cmd_CreateSyntax("volinfo", bc_dblookupCmd, NULL, 0,
                          "query the backup database");
     cmd_AddParm(ts, "-volume", CMD_SINGLE, CMD_REQUIRED, "volume name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("setexp", bc_SetExpCmd, NULL,
+    ts = cmd_CreateSyntax("setexp", bc_SetExpCmd, NULL, 0,
                          "set/clear dump expiration dates");
     cmd_AddParm(ts, "-dump", CMD_LIST, CMD_REQUIRED, "dump level name");
     cmd_AddParm(ts, "-expires", CMD_LIST, CMD_OPTIONAL, "expiration date");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("savedb", bc_saveDbCmd, NULL, "save backup database");
+    ts = cmd_CreateSyntax("savedb", bc_saveDbCmd, NULL, 0, "save backup database");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     cmd_AddParm(ts, "-archive", CMD_LIST, CMD_OPTIONAL, "date time");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("restoredb", bc_restoreDbCmd, NULL,
+    ts = cmd_CreateSyntax("restoredb", bc_restoreDbCmd, NULL, 0,
                          "restore backup database");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("dumpinfo", bc_dumpInfoCmd, NULL,
+    ts = cmd_CreateSyntax("dumpinfo", bc_dumpInfoCmd, NULL, 0,
                          "provide information about a dump in the database");
     cmd_AddParm(ts, "-ndumps", CMD_SINGLE, CMD_OPTIONAL, "no. of dumps");
     cmd_AddParm(ts, "-id", CMD_SINGLE, CMD_OPTIONAL, "dump id");
@@ -703,18 +706,19 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("dbverify", bc_dbVerifyCmd, NULL,
+    ts = cmd_CreateSyntax("dbverify", bc_dbVerifyCmd, NULL, 0,
                          "check ubik database integrity");
     cmd_AddParm(ts, "-detail", CMD_FLAG, CMD_OPTIONAL, "additional details");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("deletedump", bc_deleteDumpCmd, NULL,
+    ts = cmd_CreateSyntax("deletedump", bc_deleteDumpCmd, NULL, 0,
                          "delete dumps from the database");
     cmd_AddParm(ts, "-dumpid", CMD_LIST, CMD_OPTIONAL, "dump id");
     cmd_AddParm(ts, "-from", CMD_LIST, CMD_OPTIONAL, "date time");
     cmd_AddParm(ts, "-to", CMD_LIST, CMD_OPTIONAL, "date time");
-    cmd_AddParm(ts, "-port", CMD_SINGLE, CMD_OPTIONAL, "TC port offset");
+    cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL, "TC port offset");
+    cmd_AddParmAlias(ts, 3, "-port");
     cmd_AddParm(ts, "-groupid", CMD_SINGLE, CMD_OPTIONAL, "group ID");
     cmd_AddParm(ts, "-dbonly", CMD_FLAG, CMD_OPTIONAL,
                "delete the dump from the backup database only");
@@ -728,7 +732,7 @@ main(int argc, char **argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("interactive", bc_interactCmd, NULL,
+    ts = cmd_CreateSyntax("interactive", bc_interactCmd, NULL, 0,
                          "enter interactive mode");
     add_std_args(ts);