//* This is only allowed for administrators if (!$app->auth->is_admin()) { die('only allowed for administrators.'); } $package_name = $app->db->quote($_REQUEST['package']); $install_server_id = $app->functions->intval($_REQUEST['server_id']); $install_key = $app->db->quote(trim($_REQUEST['install_key'])); $package = $app->db->queryOneRecord("SELECT * FROM software_package WHERE package_name = '{$package_name}'"); $install_key_verified = false; $message_err = ''; $message_ok = ''; //* verify the key if ($package['package_installable'] == 'key' && $install_key != '') { $repo = $app->db->queryOneRecord("SELECT * FROM software_repo WHERE software_repo_id = " . $package['software_repo_id']); $client = new SoapClient(null, array('location' => $repo['repo_url'], 'uri' => $repo['repo_url'])); $install_key_verified = $client->check_installable($package_name, $install_key, $repo['repo_username'], $repo['repo_password']); if ($install_key_verified == false) { //$install_key = ''; $message_err = 'Verification of the key failed.'; } else { // Store the verified key into the database $app->db->datalogUpdate('software_package', "package_key = '{$install_key}'", 'package_id', $package['package_id']); } } else { $message_ok = 'Please enter the software key for the package.'; } //* Install packages, if all requirements are fullfilled. if ($install_server_id > 0 && $package_name != '' && ($package['package_installable'] == 'yes' || $install_key_verified == true)) { $sql = "SELECT software_update_id, package_name, update_title FROM software_update WHERE type = 'full' AND package_name = '{$package_name}' ORDER BY v1 DESC, v2 DESC, v3 DESC, v4 DESC LIMIT 0,1"; $tmp = $app->db->queryOneRecord($sql); $software_update_id = $tmp['software_update_id'];