Skip to content

Commit 2ecb93d

Browse files
author
Till Brehm
committed
implemented #4711 Add remote function to query the number of pending jobs in the jobqueue
1 parent 415dab8 commit 2ecb93d

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
/*
4+
Copyright (c) 2017, Till Brehm, ISPConfig UG
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+
*/
31+
32+
//* Remote functions of the monitor module
33+
class remoting_monitor extends remoting {
34+
35+
//* get the number of pending jobs from jobqueue
36+
public function monitor_jobqueue_count($session_id, $server_id = 0)
37+
{
38+
global $app;
39+
40+
if(!$this->checkPerm($session_id, 'monitor_jobqueue_count')) {
41+
throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
42+
return false;
43+
}
44+
45+
$server_id = intval($server_id);
46+
47+
if($server_id == 0) {
48+
$servers = $app->db->queryAllRecords("SELECT server_id, updated FROM server");
49+
$sql = 'SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE ';
50+
foreach($servers as $sv) {
51+
$sql .= " (datalog_id > ".$sv['updated']." AND server_id = ".$sv['server_id'].") OR ";
52+
}
53+
$sql = substr($sql, 0, -4);
54+
$tmp = $app->db->queryOneRecord($sql);
55+
return $tmp['jobqueue_count'];
56+
57+
} else {
58+
$server = $app->db->queryOneRecord("SELECT updated FROM server WHERE server_id = ?",$server_id);
59+
$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']);
60+
return $tmp['jobqueue_count'];
61+
}
62+
}
63+
64+
}
65+
66+
?>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
$function_list['monitor_jobqueue_count'] = 'Monitor functions';
4+
5+
?>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
require 'soap_config.php';
4+
5+
$context = stream_context_create([
6+
'ssl' => [
7+
// set some SSL/TLS specific options
8+
'verify_peer' => false,
9+
'verify_peer_name' => false,
10+
'allow_self_signed' => true
11+
]
12+
]);
13+
14+
15+
$client = new SoapClient(null, array('location' => $soap_location,
16+
'uri' => $soap_uri,
17+
'trace' => 1,
18+
'exceptions' => 1,
19+
'stream_context' => $context));
20+
21+
22+
try {
23+
if($session_id = $client->login($username, $password)) {
24+
echo 'Logged successfull. Session ID:'.$session_id.'<br />';
25+
}
26+
27+
//* Set the function parameters.
28+
$server_id = 1;
29+
30+
$result = $client->monitor_jobqueue_count($session_id, $server_id);
31+
32+
print_r($result);
33+
echo "<br>";
34+
35+
if($client->logout($session_id)) {
36+
echo 'Logged out.<br />';
37+
}
38+
39+
40+
} catch (SoapFault $e) {
41+
echo $client->__getLastResponse();
42+
die('SOAP Error: '.$e->getMessage());
43+
}
44+
45+
?>

0 commit comments

Comments
 (0)