]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Apply Command ACL filter to JobId list in restore command.
authorKern Sibbald <kern@sibbald.com>
Wed, 28 Feb 2007 20:20:05 +0000 (20:20 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 28 Feb 2007 20:20:05 +0000 (20:20 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/branches/Branch-2.0@4287 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/ChangeLog
bacula/ReleaseNotes
bacula/src/dird/ua_restore.c
bacula/technotes-2.0

index 38d3be5c8b92a2e0794e9c4f7ecdd7d16648c1c9..a6e7a10afad98d03f1a918830ffa7c9d3dad6b56 100644 (file)
@@ -4,6 +4,7 @@ General:
 
 Version 2.0.3 release: xx February 2007
 28Feb07 
+kes  Apply Command ACL filter to JobId list in restore command.
 kes  Correct typeo in var.c patch.
 27Feb07
 kes  Don't let Bacula prune File or Job records for the current Job.
@@ -78,7 +79,7 @@ kes  Test on job_canceled() and sd_msg_thread_done inside
      Fixes bug #771.
 kes  Remove rl_catch_signal from console.c as it conflicted
      with the header definition. Fixes bug #765.
-ebl  Fixes bug #766 about RunsOnClient = Yes
+ebl  Fixes bug #766 about RunsOnClient = Yes (case sensitive)
 04Feb07
 kes  Clarify some stored/acquire messages to indicate if the
      problem is with read or append.
index 4140ca3c6cf6aa4627b0b3dd6064912123866cc3..a19caf184d58c706a563202558d8318804e17697 100644 (file)
@@ -8,6 +8,7 @@ a version older than 2.0.0, please be sure to read the important notes
 below.
 
 28Feb07 
+kes  Apply Command ACL filter to JobId list in restore command.
 kes  Correct typeo in var.c patch.
 27Feb07
 kes  Don't let Bacula prune File or Job records for the current Job.
@@ -82,7 +83,7 @@ kes  Test on job_canceled() and sd_msg_thread_done inside
      Fixes bug #771.
 kes  Remove rl_catch_signal from console.c as it conflicted
      with the header definition. Fixes bug #765.
-ebl  Fixes bug #766 about RunsOnClient = Yes
+ebl  Fixes bug #766 about RunsOnClient = Yes (case sensitive)
 04Feb07
 kes  Clarify some stored/acquire messages to indicate if the
      problem is with read or append.
index 420931d5f190bee571778c2b16388c43427079ac..cce2821ff08b6ae1c17dc47b0b57a2e2454d2ea7 100644 (file)
@@ -625,23 +625,19 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
       }
    }
 
-   if (*rx->JobIds == 0) {
-      bsendmsg(ua, _("No Jobs selected.\n"));
-      return 0;
-   }
-   if (strchr(rx->JobIds,',')) {
-      bsendmsg(ua, _("You have selected the following JobIds: %s\n"), rx->JobIds);
-   }
-   else {
-      bsendmsg(ua, _("You have selected the following JobId: %s\n"), rx->JobIds);
-   }
-
-
+   POOLMEM *JobIds = get_pool_memory(PM_FNAME);
+   *JobIds = 0;
    rx->TotalFiles = 0;
+   /*        
+    * Find total number of files to be restored, and filter the JobId
+    *  list to contain only ones permitted by the ACL conditions.
+    */
    for (p=rx->JobIds; ; ) {
+      char ed1[50];
       int stat = get_next_jobid_from_list(&p, &JobId);
       if (stat < 0) {
          bsendmsg(ua, _("Invalid JobId in list.\n"));
+         free_pool_memory(JobIds);
          return 0;
       }
       if (stat == 0) {
@@ -653,18 +649,33 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
       memset(&jr, 0, sizeof(JOB_DBR));
       jr.JobId = JobId;
       if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
-         char ed1[50];
          bsendmsg(ua, _("Unable to get Job record for JobId=%s: ERR=%s\n"),
             edit_int64(JobId, ed1), db_strerror(ua->db));
+         free_pool_memory(JobIds);
          return 0;
       }
       if (!acl_access_ok(ua, Job_ACL, jr.Name)) {
-         bsendmsg(ua, _("No authorization. Job \"%s\" not selected.\n"),
-            jr.Name);
+         bsendmsg(ua, _("No authorization for JobId=%s (Job \"%s\"). Not selected.\n"),
+            edit_int64(JobId, ed1), jr.Name);
          continue;
       }
+      if (*JobIds != 0) {
+         pm_strcat(JobIds, ",");
+      }
+      pm_strcat(JobIds, edit_int64(JobId, ed1));
       rx->TotalFiles += jr.JobFiles;
    }
+   free_pool_memory(rx->JobIds);
+   rx->JobIds = JobIds;               /* Set ACL filtered list */
+   if (*rx->JobIds == 0) {
+      bsendmsg(ua, _("No Jobs selected.\n"));
+      return 0;
+   }
+   if (strchr(rx->JobIds,',')) {
+      bsendmsg(ua, _("You have selected the following JobIds: %s\n"), rx->JobIds);
+   } else {
+      bsendmsg(ua, _("You have selected the following JobId: %s\n"), rx->JobIds);
+   }
    return 1;
 }
 
index 56ac59f99996c7c4833f6728dce38edb54148fc1..5fdf0f802adc46e13fe3c4ea576798765babdea0 100644 (file)
@@ -3,6 +3,7 @@
 General:
 28Feb07 
 kes  Correct typeo in var.c patch.
+kes  Apply Command ACL filter to JobId list in restore command.
 27Feb07
 kes  Don't let Bacula prune File or Job records for the current Job.
 kes  Fix variable substitution pad + inc bug reported (with patch)
@@ -76,7 +77,7 @@ kes  Test on job_canceled() and sd_msg_thread_done inside
      Fixes bug #771.
 kes  Remove rl_catch_signal from console.c as it conflicted
      with the header definition. Fixes bug #765.
-ebl  Fixes bug #766 about RunsOnClient = Yes
+ebl  Fixes bug #766 about RunsOnClient = Yes (case sensitive)
 04Feb07
 kes  Clarify some stored/acquire messages to indicate if the
      problem is with read or append.