]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/protected/API/Pages/API/Config.php
baculum: Add state, number, boolean and id validators
[bacula/bacula] / gui / baculum / protected / API / Pages / API / Config.php
1 <?php
2 /*
3  * Bacula(R) - The Network Backup Solution
4  * Baculum   - Bacula web interface
5  *
6  * Copyright (C) 2013-2016 Kern Sibbald
7  *
8  * The main author of Baculum is Marcin Haba.
9  * The original author of Bacula is Kern Sibbald, with contributions
10  * from many others, a complete list can be found in the file AUTHORS.
11  *
12  * You may use this file and others of this release according to the
13  * license defined in the LICENSE file, which includes the Affero General
14  * Public License, v3.0 ("AGPLv3") and some additional permissions and
15  * terms pursuant to its AGPLv3 Section 7.
16  *
17  * This notice must be preserved when any source code is
18  * conveyed and/or propagated.
19  *
20  * Bacula(R) is a registered trademark of Kern Sibbald.
21  */
22
23 Prado::using('Application.Common.Class.Errors');
24
25 class Config extends BaculumAPIServer {
26         public function get() {
27                 $component_type = $this->Request->contains('component_type') ? $this->Request['component_type'] : null;
28                 $resource_type = $this->Request->contains('resource_type') ? $this->Request['resource_type'] : null;
29                 $resource_name = $this->Request->contains('resource_name') ? $this->Request['resource_name'] : null;
30
31                 $config = $this->getModule('bacula_setting')->getConfig($component_type, $resource_type, $resource_name);
32                 $this->output = $config['output'];
33                 $this->error = $config['exitcode'];
34         }
35
36         public function set($id, $params) {
37                 $config = (array)$params;
38                 if (array_key_exists('config', $config)) {
39                         if ($this->getClientVersion() <= 0.2) {
40                                 // old way sending config as serialized array
41                                 $config = unserialize($config['config']);
42                         } else {
43                                 $config = json_decode($config['config'], true);
44                         }
45                 } else {
46                         $config = array();
47                 }
48                 $component_type = $this->Request->contains('component_type') ? $this->Request['component_type'] : null;
49                 $resource_type = $this->Request->contains('resource_type') ? $this->Request['resource_type'] : null;
50                 $resource_name = $this->Request->contains('resource_name') ? $this->Request['resource_name'] : null;
51
52                 $result = $this->getModule('bacula_setting')->setConfig($config, $component_type, $resource_type, $resource_name);
53                 if ($result['save_result'] === true) {
54                         $this->output = BaculaConfigError::MSG_ERROR_NO_ERRORS;
55                         $this->error = BaculaConfigError::ERROR_NO_ERRORS;
56                 } else if ($result['is_valid'] === false) {
57                         $this->output = BaculaConfigError::MSG_ERROR_CONFIG_VALIDATION_ERROR . print_r($result['result'], true);
58                         $this->error = BaculaConfigError::ERROR_CONFIG_VALIDATION_ERROR;
59                 } else {
60                         $this->output = BaculaConfigError::MSG_ERROR_WRITE_TO_CONFIG_ERROR . print_r($result['result'], true);
61                         $this->error = BaculaConfigError::ERROR_WRITE_TO_CONFIG_ERROR;
62                 }
63         }
64 }