Esempio n. 1
0
        $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);
Esempio n. 2
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);
Esempio n. 3
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);
Esempio n. 4
0
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;
}
Esempio n. 5
0
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);
Esempio n. 6
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'));
Esempio n. 7
0
 * 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);
}
Esempio n. 8
0
    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');