$ret['reason'] = $node->getAttribute('reason'); } if ($node->hasAttribute('role')) { $ret['role'] = $node->getAttribute('role'); } return $ret; } $ret = parse_session_status_XML(@file_get_contents('php://input')); if (!$ret) { Logger::error('main', '(webservices/session/status) Server does not send a valid XML (error_code: 1)'); webservices_return_error(1, 'Server does not send a valid XML'); } $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (is_null($server)) { Logger::error('main', '(webservices/session/status) Server does not exist (error_code: 2)'); webservices_return_error(2, 'Server does not exist'); } $session = Abstract_Session::load($ret['id']); if (!$session) { Logger::error('main', '(webservices/session/status) Session does not exist (error_code: 2)'); webservices_return_error(2, 'Session does not exist'); } $session->setServerStatus($server->id, $ret['status'], $ret['reason'], $ret['role']); header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('session'); $node->setAttribute('id', $session->id); $node->setAttribute('status', $session->status); $dom->appendChild($node); echo $dom->saveXML(); exit(0);
if (! $server->isOnline()) { Logger::error('main', '(webservices/server/name) Server is not OK (error_code: 2)'); webservices_return_error(2, 'Server is not OK'); } if (! $server->isOK()) { Logger::error('main', '(webservices/server/name) Server is not online (error_code: 3)'); webservices_return_error(3, 'Server is not online'); } */ $ret = Abstract_Server::create($server); $try_count = 0; while ($ret !== true && $try_count < 10) { $server->id = generate_server_id(); $ret = Abstract_Server::create($server); $try_count++; } if ($ret !== true) { Logger . error(''); Logger::error('main', 'Unable to save new server after ' . $try_count . ' try'); webservices_return_error(0, 'Internal error'); } Abstract_Server::save($server); } header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('server'); $node->setAttribute('name', $server->id); $dom->appendChild($node); echo $dom->saveXML(); exit(0);
} $ret['application']['id'] = $application_node->getAttribute('id'); return $ret; } $ret = parse_icon_XML(@file_get_contents('php://input')); if (!$ret) { Logger::error('main', '(webservices/application/icon) Server does not send a valid XML (error_code: 1)'); webservices_return_error(1, 'Server does not send a valid XML'); } $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (!$server) { Logger::error('main', '(webservices/application/icon) Server does not exist (error_code: 2)'); webservices_return_error(2, 'Server does not exist'); } if (!$server->isAuthorized()) { Logger::error('main', '(webservices/application/icon) Server is not authorized (error_code: 3)'); webservices_return_error(3, 'Server is not authorized'); } $applicationDB = ApplicationDB::getInstance(); $app = $applicationDB->import($ret['application']['id']); if (!is_object($app)) { Logger::error('main', '(webservices/application/icon) No such application "' . $ret['application']['id'] . '" (error_code: 4)'); webservices_return_error(4, 'No such application "' . $ret['application']['id'] . '"'); } $path = $app->getIconPath(); if (!file_exists($path)) { Logger::error('main', '(webservices/application/icon) No icon available for application "' . $ret['application']['id'] . '" (error_code: 5)'); webservices_return_error(5, 'No icon available for application "' . $ret['application']['id'] . '"'); } header('Content-Type: image/png'); echo @file_get_contents($path, LOCK_EX);
function parse_monitoring_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $server_node = $dom->getElementsByTagName('server')->item(0); if (is_null($server_node)) { return false; } if (!$server_node->hasAttribute('name')) { return false; } $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (!$server) { Logger::error('main', '(webservices/server/monitoring) Server does not exist (error_code: 2)'); webservices_return_error(2, 'Server does not exist'); } if (!$server->isAuthorized()) { return false; } $ret = array('server' => $server_node->getAttribute('name')); $cpu_node = $dom->getElementsByTagName('cpu')->item(0); if (is_null($cpu_node)) { return false; } if (!$cpu_node->hasAttribute('load')) { return false; } $ret['cpu_load'] = $cpu_node->getAttribute('load'); $ram_node = $dom->getElementsByTagName('ram')->item(0); if (is_null($ram_node)) { return false; } if (!$ram_node->hasAttribute('used')) { return false; } $ret['ram_used'] = $ram_node->getAttribute('used'); $role_nodes = $dom->getElementsByTagName('role'); foreach ($role_nodes as $role_node) { if (!$role_node->hasAttribute('name')) { return false; } switch ($role_node->getAttribute('name')) { case 'ApplicationServer': $ret['sessions'] = array(); $session_nodes = $dom->getElementsByTagName('session'); foreach ($session_nodes as $session_node) { $ret['sessions'][$session_node->getAttribute('id')] = array('id' => $session_node->getAttribute('id'), 'server' => $_SERVER['REMOTE_ADDR'], 'status' => $session_node->getAttribute('status'), 'instances' => array()); $childnodes = $session_node->childNodes; foreach ($childnodes as $childnode) { if ($childnode->nodeName != 'instance') { continue; } $ret['sessions'][$session_node->getAttribute('id')]['instances'][$childnode->getAttribute('id')] = $childnode->getAttribute('application'); } } $sri = ServerReportItem::create_from_server_report($ret['server'], $xml_); if ($sri !== null) { Abstract_ReportServer::save($sri); } break; case 'FileServer': $size_node = $dom->getElementsByTagName('size')->item(0); if (is_null($size_node)) { break; } $ret['disk_size'] = array('total' => NULL, 'free' => NULL); if ($size_node->hasAttribute('total')) { $ret['disk_size']['total'] = $size_node->getAttribute('total'); } if ($size_node->hasAttribute('free')) { $ret['disk_size']['free'] = $size_node->getAttribute('free'); } $ret['shares'] = array(); $share_nodes = $dom->getElementsByTagName('share'); foreach ($share_nodes as $share_node) { $ret['shares'][$share_node->getAttribute('id')] = array('id' => $share_node->getAttribute('id'), 'status' => $share_node->getAttribute('status'), 'users' => array()); $user_nodes = $share_node->getElementsByTagName('user'); foreach ($user_nodes as $user_node) { $ret['shares'][$share_node->getAttribute('id')]['users'][] = $user_node->getAttribute('login'); } } break; } } return $ret; }
if (!$infos) { Logger::error('main', '(webservices/session/dump) Server does not send a valid XML (error_code: 1)'); webservices_return_error(1, 'Server does not send a valid XML'); } $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (!$server) { Logger::error('main', '(webservices/session/dump) Server does not exist (error_code: 2)'); webservices_return_error(2, 'Server does not exist'); } $session = Abstract_Session::load($infos['id']); if (!$session) { Logger::error('main', '(webservices/session/dump) Session does not exist (error_code: 2)'); webservices_return_error(2, 'Session does not exist'); } $ret = $session->setServerDump($server->id, $infos['dump']); if ($ret === false) { Logger::error('main', '(webservices/session/dump) Server is not used for this session (error_code: 1)'); webservices_return_error(1, 'Server is not used for this session'); } $ret = Abstract_Session::save($session); if ($ret === false) { Logger::error('main', '(webservices/session/dump) Unable to save session with these information (error_code: 1)'); webservices_return_error(1, 'Unable to save session with these information'); } header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('session'); $node->setAttribute('id', $session->id); $dom->appendChild($node); echo $dom->saveXML(); exit(0);
* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ require_once dirname(__FILE__) . '/../includes/core-minimal.inc.php'; require_once dirname(__FILE__) . '/../includes/webservices.inc.php'; $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (!$server) { Logger::error('main', '(webservices/applications/static) Server does not exist (error_code: 0)'); webservices_return_error(1, 'Server does not exist'); } if (!$server->isAuthorized()) { Logger::error('main', '(webservices/applications/static) Server is not authorized (error_code: 2)'); webservices_return_error(2, 'Server is not authorized'); } header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('applications'); $applications = $server->getApplications(); if (is_array($applications)) { foreach ($applications as $app) { if (!$app->getAttribute('static')) { continue; } if ($app->getAttribute('type') != $server->getAttribute('type')) { continue; } $app_node = $dom->createElement('application'); $app_node->setAttribute('id', $app->getAttribute('id'));
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ require_once dirname(__FILE__) . '/../includes/core-minimal.inc.php'; require_once dirname(__FILE__) . '/../includes/webservices.inc.php'; function parse_premium_sign_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('message')->item(0); if (is_null($node)) { return false; } return $node->textContent; } if (class_exists("PremiumManager")) { $message = parse_premium_sign_XML(@file_get_contents('php://input')); if (!$message) { Logger::error('main', '(webservices/premium/sign) Server does not send a valid XML (error_code: 1)'); webservices_return_error(1, 'Server does not send a valid XML'); } PremiumManager::sign($message); }
webservices_return_error(1, 'Server does not send a valid XML'); } $server = webservices_load_server($_SERVER['REMOTE_ADDR']); if (!$server) { Logger::error('main', '(webservices/server/status) Server does not exist (error_code: 2)'); webservices_return_error(2, 'Server does not exist'); } if (!$server->isAuthorized()) { Logger::error('main', '(webservices/server/status) Server is not authorized (error_code: 3)'); webservices_return_error(3, 'Server is not authorized'); } $old_roles = $server->getAttribute('roles'); if ($ret['status'] == Server::SERVER_STATUS_ONLINE) { if (!$server->getConfiguration()) { Logger::error('main', '(webservices/server/status) Server does not send a valid configuration (error_code: 4)'); webservices_return_error(4, 'Server does not send a valid configuration'); } } // check if server's roles have been changed $new_roles = $server->getAttribute('roles'); foreach ($old_roles as $a_role => $enable) { if (array_key_exists($a_role, $new_roles) == false) { // the server has not anymore the role Abstract_Server::removeRole($server->id, $a_role); } } $server->setStatus($ret['status']); Abstract_Server::save($server); header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('server');