]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Add type and level filters to jobs endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Thu, 9 Aug 2018 19:56:39 +0000 (21:56 +0200)
committerMarcin Haba <marcin.haba@bacula.pl>
Fri, 10 Aug 2018 17:27:06 +0000 (19:27 +0200)
gui/baculum/protected/API/Pages/API/Jobs.php
gui/baculum/protected/Common/Class/Miscellaneous.php

index f5960caea1d23091f3ed6f4824b2ca80c0ab9e47..e49af8194e9d5250f7a0fae560486164579d17a1 100644 (file)
  
 class Jobs extends BaculumAPIServer {
        public function get() {
+               $misc = $this->getModule('misc');
                $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
                $jobstatus = $this->Request->contains('jobstatus') ? $this->Request['jobstatus'] : '';
-               $misc = $this->getModule('misc');
+               $level = $this->Request->contains('level') && $misc->isValidJobLevel($this->Request['level']) ? $this->Request['level'] : '';
+               $type = $this->Request->contains('type') && $misc->isValidJobType($this->Request['type']) ? $this->Request['type'] : '';
                $jobname = $this->Request->contains('name') && $misc->isValidName($this->Request['name']) ? $this->Request['name'] : '';
                $clientid = $this->Request->contains('clientid') ? $this->Request['clientid'] : '';
                if (!empty($clientid) && !$misc->isValidId($clientid)) {
@@ -49,6 +51,14 @@ class Jobs extends BaculumAPIServer {
                                $params['jobstatus']['vals'][] = $sts[$i];
                        }
                }
+               if (!empty($level)) {
+                       $params['level']['operator'] = '';
+                       $params['level']['vals'] = $level;
+               }
+               if (!empty($type)) {
+                       $params['type']['operator'] = '';
+                       $params['type']['vals'] = $type;
+               }
                $allowed = array();
                $result = $this->getModule('bconsole')->bconsoleCommand($this->director, array('.jobs'));
                if ($result->exitcode === 0) {
index 0c907c25f8592e1123283fccf894e3950fa0592d..7cfe15b27fe167943357269ffb83c1706b792f8f 100644 (file)
@@ -183,7 +183,11 @@ class Miscellaneous extends TModule {
         * @TODO: Move it to separate validation module.
         */
        public function isValidJobLevel($jobLevel) {
-               return array_key_exists($jobLevel, $this->getJobLevels());
+               return key_exists($jobLevel, $this->getJobLevels());
+       }
+
+       public function isValidJobType($job_type) {
+               return key_exists($job_type, $this->job_types);
        }
 
        public function isValidName($name) {