]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Improve checking director in status director API endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Sun, 4 Jul 2021 19:03:15 +0000 (21:03 +0200)
committerMarcin Haba <marcin.haba@bacula.pl>
Sun, 4 Jul 2021 19:03:15 +0000 (21:03 +0200)
gui/baculum/protected/API/Class/StatusDirector.php
gui/baculum/protected/API/Pages/API/DirectorStatus.php

index 30394ba6cc58d71c5008ed83c66461e735a51f30..b2bcd1343b98c0423ea296e2a4f10a6683df748c 100644 (file)
@@ -80,7 +80,12 @@ class StatusDirector extends ComponentStatusModule {
         * @return array array with parsed director status values
         */
        public function parseStatus(array $output, $type) {
-               $result = array();
+               $result = [
+                       self::OUTPUT_TYPE_HEADER => [],
+                       self::OUTPUT_TYPE_SCHEDULED => [],
+                       self::OUTPUT_TYPE_RUNNING => [],
+                       self::OUTPUT_TYPE_TERMINATED => []
+               ];
                $type = null;
                $line = null;
                $types = array(
index 8daa0d56649ccc88d985a90464c321cec4d3e26e..c2f755eb44a346972c115ee30c2c8053a19f9fb4 100644 (file)
@@ -37,7 +37,13 @@ class DirectorStatus extends ConsoleOutputPage {
                $type = $this->Request->contains('type') && $status->isValidOutputType($this->Request['type']) ? $this->Request['type'] : null;
                $out_format = $this->Request->contains('output') && $this->isOutputFormatValid($this->Request['output']) ? $this->Request['output'] : parent::OUTPUT_FORMAT_RAW;
 
-               if (is_null($director)) {
+               $dirs = [];
+               $result = $this->getModule('bconsole')->getDirectors();
+               if ($result->exitcode === 0) {
+                       $dirs = $result->output;
+               }
+
+               if (is_null($director) || !in_array($director, $dirs)) {
                        // Invalid director
                        $this->output = BconsoleError::MSG_ERROR_INVALID_DIRECTOR;
                        $this->error = BconsoleError::ERROR_INVALID_DIRECTOR;