Marius Burkard
2016-04-20 4569cae57f127afd093794310ccd290d2d9fdf36
commit | author | age
6bd166 1 <?php
DM 2
3 /*
4 Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
5 All rights reserved.
6
7 Redistribution and use in source and binary forms, with or without modification,
8 are permitted provided that the following conditions are met:
9
10     * Redistributions of source code must retain the above copyright notice,
11       this list of conditions and the following disclaimer.
12     * Redistributions in binary form must reproduce the above copyright notice,
13       this list of conditions and the following disclaimer in the documentation
14       and/or other materials provided with the distribution.
15     * Neither the name of ISPConfig nor the names of its contributors
16       may be used to endorse or promote products derived from this software without
17       specific prior written permission.
18
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30 --UPDATED 01.2015--
31 Created by Dominik Müller <info@profi-webdesign.net>
32 Copyright (c) Profi Webdesign Dominik Müller
33
34 */
35
36 class remoting_aps extends remoting {
37     //* Functions for APS
38     public function sites_aps_update_package_list($session_id)
39     {
40         global $app;
41     
a548e7 42         if(!$this->checkPerm($session_id, 'sites_aps_update_package_list')) {
6bd166 43             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
DM 44             return false;
45         }
a548e7 46         
DM 47         require_once '../../../lib/config.inc.php';
6bd166 48         $app->load('aps_crawler');
a548e7 49         
DM 50         $aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode
6bd166 51         $aps->startCrawler();
DM 52         $aps->parseFolderToDB();
53         $aps->fixURLs();
54     
55         return true;
56     }
57     
a548e7 58     public function sites_aps_available_packages_list($session_id, $params = array())
6bd166 59     {
DM 60         global $app;
61     
62         if(!$this->checkPerm($session_id, 'sites_aps_available_packages_list')) {
63             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
64             return false;
65         }
66     
67         $app->load('aps_base');
68     
69         if (isset($params['all_packages']) && ($params['all_packages'] == true)) {
70             $where = '(aps_packages.package_status = '.PACKAGE_ENABLED.' OR aps_packages.package_status = '.PACKAGE_LOCKED.')';
71         }
72         else {
73             $where = 'aps_packages.package_status = '.PACKAGE_ENABLED;
74         }
75     
76         $sql  = 'SELECT * FROM aps_packages WHERE '.$where.' ORDER BY aps_packages.name, aps_packages.version';
77         return $app->db->queryAllRecords($sql);
78     }
79     
80     public function sites_aps_get_package_details($session_id, $primary_id)
81     {
82         global $app;
83     
84         if(!$this->checkPerm($session_id, 'sites_aps_get_package_details')) {
85             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
86             return false;
87         }
88     
89         $app->load('aps_guicontroller');
90         $gui = new ApsGUIController($app);
91     
92         // Package-ID Check
93         if (isset($primary_id))
94         {
95             $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
96             if($newest_pkg_id != 0) $primary_id = $newest_pkg_id;
97         }
98     
99         // Make sure an integer ID is given
100         if (!isset($primary_id) || !$gui->isValidPackageID($primary_id, true)) {// always adminflag
101             $this->server->fault('package_error', 'The given Package ID is not valid.');
102             return false;
103         }
104     
105         // Get package details
106         $details = $gui->getPackageDetails($primary_id);
107         if (isset($details['error'])) {
108             $this->server->fault('package_error', $details['error']);
109             return false;
110         }
111     
112         // encode all parts to ensure SOAP-XML-format
113         array_walk_recursive($details, function(&$item, &$key) { $item = utf8_encode($item); } );
114         // Special handling for license-text because of too much problems with soap-transport
115         $details['License content'] = base64_encode($details['License content']);
116     
117         return $details;
118     }
119     
120     public function sites_aps_get_package_file($session_id, $primary_id, $filename) {
121         global $app;
122     
123         if(!$this->checkPerm($session_id, 'sites_aps_get_package_file')) {
124             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
125             return false;
126         }
127     
128         $app->load('aps_guicontroller');
129         $gui = new ApsGUIController($app);
130     
131         // Package-ID Check
132         if (isset($primary_id))
133         {
134             $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
135             if($newest_pkg_id != 0) $primary_id = $newest_pkg_id;
136         }
137     
138         // Make sure an integer ID is given
139         if (!isset($primary_id) || !$gui->isValidPackageID($primary_id, true)) {// always adminflag
140             $this->server->fault('package_error', 'The given Package ID is not valid.');
141             return false;
142         }
143     
144         // Get package details
145         $details = $gui->getPackageDetails($primary_id);
146         if (isset($details['error'])) {
147             $this->server->fault('package_error', $details['error']);
148             return false;
149         }
150     
151         // find file in details
152         $found = false;
153         if (basename($details['Icon']) == $filename) $found = true;
154         if (!$found && isset($details['Screenshots']) && is_array($details['Screenshots']))
155         foreach ($details['Screenshots'] as $screen) { if (basename($screen['ScreenPath']) == $filename) { $found = true; break; } }
156     
157         if (!$found) {
158             $this->server->fault('package_error', 'File not found in package.');
159             return false;
160         }
161     
162         return base64_encode(file_get_contents(ISPC_ROOT_PATH.'/web/sites/aps_meta_packages/'.$details['path'].'/'.$filename));
163     }
164     
165     public function sites_aps_get_package_settings($session_id, $primary_id)
166     {
167         global $app;
168     
169         if(!$this->checkPerm($session_id, 'sites_aps_get_package_details')) {
170             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
171             return false;
172         }
173     
174         $app->load('aps_guicontroller');
175         $gui = new ApsGUIController($app);
176     
177         // Package-ID Check
178         if (isset($primary_id))
179         {
180             $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
181             if($newest_pkg_id != 0) $primary_id = $newest_pkg_id;
182         }
183     
184         // Make sure an integer ID is given
185         if (!isset($primary_id) || !$gui->isValidPackageID($primary_id, true)) {// always adminflag
186             $this->server->fault('package_error', 'The given Package ID is not valid.');
187             return false;
188         }
189     
190         // Get package settings
191         $settings = $gui->getPackageSettings($primary_id);
192         if (isset($settings['error'])) {
193             $this->server->fault('package_error', $settings['error']);
194             return false;
195         }
196     
197         // encode all parts to ensure SOAP-XML-format
198         array_walk_recursive($settings, function(&$item, &$key) { $item = utf8_encode($item); } );
199     
200         return $settings;
201     }
202     
a548e7 203     public function sites_aps_change_package_status($session_id, $primary_id, $params)
DM 204     {
205         global $app;
206     
207         if(!$this->checkPerm($session_id, 'sites_aps_change_package_status')) {
208             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
209             return false;
210         }
211         
212         $app->load('aps_base');
213         $app->load('aps_guicontroller');
214         $gui = new ApsGUIController($app);
215         
216         // Make sure an integer ID is given
217         if (!isset($primary_id) || !$gui->isValidPackageID($primary_id, true)) {// always adminflag
218             $this->server->fault('package_error', 'The given Package ID is not valid.');
219             return false;
220         }
221         
222         if(!isset($params['package_status']) || (($params['package_status'] != PACKAGE_ENABLED) && ($params['package_status'] != PACKAGE_LOCKED))) {
223             $this->server->fault('package_error', 'Wrong new status: '.$params['package_status']);
224             return false;
225         }
226         
4b7334 227         $sql  = "UPDATE aps_packages SET package_status = ? WHERE id = ?";
DM 228         $app->db->query($sql, $params['package_status'], $app->functions->intval($primary_id));
229         
a548e7 230         return true;
DM 231     }
232     
6bd166 233     public function sites_aps_install_package($session_id, $primary_id, $params)
DM 234     {
235         global $app;
236     
237         if(!$this->checkPerm($session_id, 'sites_aps_install_package')) {
238             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
239             return false;
240         }
241     
242         $app->load('aps_guicontroller');
243         $gui = new ApsGUIController($app);
244     
245         // Package-ID Check
246         if (isset($primary_id))
247         {
248             $newest_pkg_id = $gui->getNewestPackageID($primary_id);
249             if($newest_pkg_id != 0) $primary_id = $newest_pkg_id;
250         }
251     
252         // Make sure an integer ID is given
253         if (!isset($primary_id) || !$gui->isValidPackageID($primary_id, true)) {// always adminflag
254             $this->server->fault('package_error', 'The given Package ID is not valid.');
255             return false;
256         }
257     
258         // Get package details
259         $details = $gui->getPackageDetails($primary_id);
260         if (isset($details['error'])) {
261             $this->server->fault('package_error', $details['error']);
262             return false;
263         }
264         $settings = $gui->getPackageSettings($primary_id);
265         if (isset($settings['error'])) {
266             $this->server->fault('package_error', $settings['error']);
267             return false;
268         }
269     
270         // Check given Site/VHostDomain
271         if (!isset($params['main_domain'])) {
272             $this->server->fault('invalid parameters', 'No valid domain given.');
273             return false;
274         }
275     
be3836 276         if (substr($params['main_domain'], 0, 4) == 'www.') {
D 277             $domain = substr($params['main_domain'], 4);
278             $sql = "SELECT * FROM web_domain WHERE domain = ? AND subdomain=?";
279             $domain = $app->db->queryOneRecord($sql, $domain, 'www');
280         }
281         else {
282             $sql = "SELECT * FROM web_domain WHERE domain = ?";
283             $domain = $app->db->queryOneRecord($sql, $params['main_domain']);
284         }
6bd166 285     
DM 286         if (!$domain) {
287             $this->server->fault('invalid parameters', 'No valid domain given.');
288             return false;
289         }
290     
291         $domains = array($domain['domain']); // Simulate correct Domain-List
292         $result = $gui->validateInstallerInput($params, $details, $domains, $settings);
293         if(empty($result['error']))
294         {
295             return $gui->createPackageInstance($result['input'], $primary_id);
296         }
297         
298         $this->server->fault('invalid parameters', implode('<br />', $result['error']));
299         return false;
300     }
301     
302     public function sites_aps_instance_get($session_id, $primary_id)
303     {
304         global $app;
305     
306         if(!$this->checkPerm($session_id, 'sites_aps_instance_get')) {
307             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
308             return false;
309         }
310     
cc7a82 311         $sql  = "SELECT * FROM aps_instances WHERE id = ?";
MC 312         $result = $app->db->queryOneRecord($sql, $app->functions->intval($primary_id));
6bd166 313         return $result;
DM 314     }
315     
316     public function sites_aps_instance_settings_get($session_id, $primary_id)
317     {
318         global $app;
319     
320         if(!$this->checkPerm($session_id, 'sites_aps_instance_get')) {
321             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
322             return false;
323         }
324     
cc7a82 325         $sql  = "SELECT * FROM aps_instances_settings WHERE instance_id = ?";
MC 326         $result = $app->db->queryAllRecords($sql, $app->functions->intval($primary_id));
6bd166 327         return $result;
DM 328     }
329     
330     public function sites_aps_instance_delete($session_id, $primary_id, $params = array())
331     {
332         global $app;
333     
334         if(!$this->checkPerm($session_id, 'sites_aps_instance_delete')) {
335             $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
336             return false;
337         }
338     
339         $app->load('aps_guicontroller');
340         $gui = new ApsGUIController($app);
341     
342         // Check if Instance exists
cc7a82 343         $sql  = "SELECT * FROM aps_instances WHERE id = ?";
MC 344         $result = $app->db->queryOneRecord($sql, $primary_id);
6bd166 345     
DM 346         if (!$result) {
347             $this->server->fault('instance_error', 'No valid instance id given.');
348             return false;
349         }
350     
351         $gui->deleteInstance($primary_id, (isset($params['keep_database']) && ($params['keep_database'] === true)));
352     
353         return true;
354     }
355 }
356
357 ?>