]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/protected/Web/Class/HostRecord.php
baculum: Fix multiple directors support
[bacula/bacula] / gui / baculum / protected / Web / Class / HostRecord.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.Interfaces');
24 Prado::using('Application.Common.Class.SessionRecord');
25
26 class HostRecord extends SessionRecord implements SessionItem {
27
28         public $host;
29         public $protocol;
30         public $address;
31         public $port;
32         public $url_prefix;
33         public $auth_type;
34         public $login;
35         public $password;
36         public $client_id;
37         public $client_secret;
38         public $redirect_uri;
39         public $scope;
40
41         public function __construct($host = null, $params = array()) {
42                 parent::__construct();
43                 if (!is_null($host) && is_array($params)) {
44                         $this->setHost($host, $params);
45                 }
46         }
47
48         public static function getRecordId() {
49                 return 'host_params';
50         }
51
52         public static function getPrimaryKey() {
53                 return 'host';
54         }
55
56         public static function getSessionFile() {
57                 return Prado::getPathOfNamespace('Application.Web.Config.session', '.dump');
58         }
59
60         /**
61          * Set host in session.
62          *
63          * @public
64          * @param string $host host name in config
65          * @param array $params host parameters in associative array
66          * @return none
67          */
68         public function setHost($host, array $params) {
69                 $this->host = $host;
70                 $this->protocol = array_key_exists('protocol', $params) ? $params['protocol'] : 'https';
71                 $this->address = array_key_exists('address', $params) ? $params['address'] : '';
72                 $this->port = array_key_exists('port', $params) ? $params['port'] : null;
73                 $this->url_prefix = array_key_exists('url_prefix', $params) ? $params['url_prefix'] : '';
74                 if (array_key_exists('auth_type', $params)) {
75                         $this->auth_type =  $params['auth_type'];
76                         if ($params['auth_type'] === 'basic') {
77                                 $this->login = array_key_exists('login', $params) ? $params['login'] : '';
78                                 $this->password = array_key_exists('password', $params) ? $params['password'] : '';
79                         } elseif ($params['auth_type'] === 'oauth2') {
80                                 $this->client_id = array_key_exists('client_id', $params) ? $params['client_id'] : '';
81                                 $this->client_secret = array_key_exists('client_secret', $params) ? $params['client_secret'] : '';
82                                 $this->redirect_uri = array_key_exists('redirect_uri', $params) ? $params['redirect_uri'] : '';
83                                 $this->scope = array_key_exists('scope', $params) ? $params['scope'] : '';
84                         }
85                 }
86                 $this->save();
87         }
88 }