Пример #1
0
    // prepare to send JSON
    header('Content-type: application/json');
    // disable cookies (so script works for privacy conscious users too)
    ini_set('session.use_cookies', false);
    // start ongoing or new session
    if (isset($_GET["PHPSESSID"])) {
        session_id($_GET["PHPSESSID"]);
    } else {
        session_id(date("dgis"));
    }
    session_start();
    // initialise $_SESSION on first run
    if (!isset($_SESSION['callSID'])) {
        $_SESSION['callSID'] = SID;
        $_SESSION['lastlog'] = "";
    }
    sleep(2);
    // delay AJAX refresh 2 seconds - FIXME change to what you want
    $vps_remote_info = getVPSInfo($vps_node, $vps_name, $soap_client);
    if ($vps_remote_info != "mkos") {
        $_SESSION['callSID'] = '';
        // install finished, set termination signal
    }
    $_SESSION['lastlog'] = $soap_client->call("getVPSInstallLog", array("vpsname" => $vps_name, "numlines" => "20"), "", "", "");
    // get last 20 log lines
    echo json_encode($_SESSION);
    // send callSID and lastlog back to the browser
    //	print_r($r);
} else {
    die("Couldn't connect to VPS node {$vps_node} !");
}
Пример #2
0
function drawAdminTools_VPSMonitor($admin, $vps)
{
    global $vps_name;
    global $vps_node;
    global $adm_login;
    global $adm_pass;
    global $rub;
    global $addrlink;
    global $vps_soap_err;
    global $pro_mysql_product_table;
    global $pro_mysql_vps_ip_table;
    global $pro_mysql_vps_stats_table;
    global $secpayconf_currency_letters;
    global $panel_type;
    $reinstall_os = 1;
    get_secpay_conf();
    $out = "";
    $checker = checkVPSAdmin($adm_login, $adm_pass, $vps_node, $vps_name);
    if ($checker != true) {
        return _("Credential not correct: can't display in file ") . __FILE__ . " line " . __LINE__;
    }
    $vps_out = "";
    $vps_out_net_stats = "";
    $vps_out_hdd_stats = "";
    $vps_out_swap_stats = "";
    $vps_out_cpu_stats = "";
    // Calculate last month
    $cur_year = date("Y");
    $cur_month = date("m");
    $last_month = $cur_month - 1;
    if ($last_month == 0) {
        $last_month_year = $cur_year - 1;
        $last_month = 12;
    } else {
        $last_month_year = $cur_year;
    }
    $tow_month_ago = $last_month - 1;
    if ($tow_month_ago == 0) {
        $tow_month_ago = 12;
        $tow_month_ago_year = $last_month_year - 1;
    } else {
        $tow_month_ago_year = $last_month_year;
    }
    $q = "SELECT * FROM {$pro_mysql_vps_stats_table} WHERE vps_server_hostname='{$vps_node}' AND vps_xen_name='xen{$vps_name}'\n\tAND year='{$tow_month_ago_year}' AND month='{$tow_month_ago}';";
    $r = mysql_query($q) or die("Cannot query {$q} line " . __LINE__ . " file " . __FILE__ . " sql said: " . mysql_error());
    $n = mysql_num_rows($r);
    if ($n == 1) {
        $a = mysql_fetch_array($r);
        $net_total = $a["network_in_count"] + $a["network_out_count"];
        $vps_out_net_stats .= _("2 months ago: ") . smartByte($net_total) . "<br>";
        $vps_out_cpu_stats .= _("2 months ago: ") . $a["cpu_usage"] . _(" CPU seconds") . "<br>";
        $vps_out_swap_stats .= _("2 months ago: ") . smartByte($a["swapio_count"]) . "<br>";
        $vps_out_hdd_stats .= _("2 months ago: ") . smartByte($a["diskio_count"]) . "<br>";
    }
    $q = "SELECT * FROM {$pro_mysql_vps_stats_table} WHERE vps_server_hostname='{$vps_node}' AND vps_xen_name='xen{$vps_name}'\n\tAND year='{$last_month_year}' AND month='{$last_month}';";
    $r = mysql_query($q) or die("Cannot query {$q} line " . __LINE__ . " file " . __FILE__ . " sql said: " . mysql_error());
    $n = mysql_num_rows($r);
    if ($n == 1) {
        $a = mysql_fetch_array($r);
        $net_total = $a["network_in_count"] + $a["network_out_count"];
        $vps_out_net_stats .= _("Last month: ") . smartByte($net_total) . "<br>";
        $vps_out_cpu_stats .= _("Last month: ") . $a["cpu_usage"] . _(" CPU seconds") . "<br>";
        $vps_out_swap_stats .= _("Last month: ") . smartByte($a["swapio_count"]) . "<br>";
        $vps_out_hdd_stats .= _("Last month: ") . smartByte($a["diskio_count"]) . "<br>";
    }
    $q = "SELECT * FROM {$pro_mysql_vps_stats_table} WHERE vps_server_hostname='{$vps_node}' AND vps_xen_name='xen{$vps_name}'\n\tAND year='{$cur_year}' AND month='{$cur_month}';";
    $r = mysql_query($q) or die("Cannot query {$q} line " . __LINE__ . " file " . __FILE__ . " sql said: " . mysql_error());
    $n = mysql_num_rows($r);
    if ($n == 1) {
        $a = mysql_fetch_array($r);
        $net_total = $a["network_in_count"] + $a["network_out_count"];
        $vps_out_net_stats .= _("This month: ") . smartByte($net_total);
        $vps_out_cpu_stats .= _("This month: ") . $a["cpu_usage"] . _(" CPU seconds");
        $vps_out_swap_stats .= _("This month: ") . smartByte($a["swapio_count"]);
        $vps_out_hdd_stats .= _("This month: ") . smartByte($a["diskio_count"]);
    }
    // Display the stats of the VPS
    $vps_stat_out = "";
    $vps_stat_out .= "<table cellspacing=\"2\" cellpaddig=\"2\" border=\"0\">";
    $vps_stat_out .= "<tr><td>" . _("Network:") . "<br>";
    $vps_stat_out .= "<img width=\"120\" height=\"48\" src=\"vps_stats_network.php?adm_login={$adm_login}&adm_pass={$adm_pass}&vps_node={$vps_node}&vps_name={$vps_name}\"></td>";
    $vps_stat_out .= "<td>" . _("CPU Time:") . "<br>";
    $vps_stat_out .= "<img width=\"120\" height=\"48\" src=\"vps_stats_cpu.php?adm_login={$adm_login}&adm_pass={$adm_pass}&vps_node={$vps_node}&vps_name={$vps_name}\"></td></tr>";
    $vps_stat_out .= "<tr><td>" . $vps_out_net_stats . "</td><td>{$vps_out_cpu_stats}</td></tr>";
    $vps_stat_out .= "<tr><td>" . _("Swap I/O:") . "<br>";
    $vps_stat_out .= "<img width=\"120\" height=\"48\" src=\"vps_stats_swap.php?adm_login={$adm_login}&adm_pass={$adm_pass}&vps_node={$vps_node}&vps_name={$vps_name}\"></td>";
    $vps_stat_out .= "<td>" . _("HDD I/O:") . "<br>";
    $vps_stat_out .= "<img width=\"120\" height=\"48\" src=\"vps_stats_hdd.php?adm_login={$adm_login}&adm_pass={$adm_pass}&vps_node={$vps_node}&vps_name={$vps_name}\"></td></tr>";
    $vps_stat_out .= "<tr><td>" . $vps_out_swap_stats . "</td><td>" . $vps_out_hdd_stats . "</td></tr></table>";
    // VPS (remote SOAP) Status
    $soap_client = connectToVPSServer($vps_node);
    if ($soap_client != false) {
        $vps_remote_info = getVPSInfo($vps_node, $vps_name, $soap_client);
        if ($vps_remote_info == false) {
            if (strstr($vps_soap_err, _("Method getVPSState failed"))) {
                $vps_out .= _("Could not get remote status (Method getVPSState() failed). Maybe the VPS is not running?") . "<br><br>";
            } else {
                if (strstr($vps_soap_err, _("couldn't connect to host"))) {
                    $vps_out .= _("Could not get remote status: could not connect to the SOAP server (HTTP error).") . "<br><br>";
                } else {
                    $vps_out .= _("Could not get remote status. Unkown error: ") . "{$vps_soap_err}<br><br>";
                }
            }
        } else {
            if ($vps_remote_info == "fsck") {
                $vps_out .= _("Checking filesystem...") . "<br><br>";
            } else {
                if ($vps_remote_info == "mkos") {
                    $vps_out .= _("Reinstalling operating system...") . "<br><br>";
                } else {
                    if (isset($vps_remote_info["id"])) {
                        $vps_out .= _("VM id: ") . $vps_remote_info["id"] . "<br>";
                    }
                    if (isset($vps_remote_info["name"])) {
                        $vps_out .= _("Name: ") . $vps_remote_info["name"] . "<br>";
                    }
                    if (isset($vps_remote_info["memory"])) {
                        $vps_out .= _("Memory: ") . $vps_remote_info["memory"] . "<br>";
                    }
                    if (isset($vps_remote_info["maxmem"])) {
                        $vps_out .= _("Max memory: ") . $vps_remote_info["maxmem"] . "<br>";
                    } else {
                        $vps_out .= _("Maxmem: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if (isset($vps_remote_info["cpu"])) {
                        $vps_out .= _("Number of CPU: ") . $vps_remote_info["cpu"] . "<br>";
                    } else {
                        $vps_out .= _("Number of CPU: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if (isset($vps_remote_info["state"])) {
                        $vps_out .= _("VPS State: ") . $vps_remote_info["state"] . "<br>";
                    } else {
                        $vps_out .= _("State: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if ($vps_remote_info["xen_type"] == 2 && isset($vps_remote_info["up_time"])) {
                        $uptime = substr($vps_remote_info["up_time"], 0, strpos($vps_remote_info["up_time"], "."));
                        $uptime_s = $uptime % 60;
                        $uptime_m = round($uptime / 60) % 60;
                        $uptime_h = round($uptime / 3600) % 24;
                        $uptime_j = round($uptime / 86400);
                        if ($uptime_s > 1) {
                            $upt_s_s = "s";
                        } else {
                            $upt_s_s = "";
                        }
                        if ($uptime_m > 1) {
                            $upt_s_m = "s";
                        } else {
                            $upt_s_m = "";
                        }
                        if ($uptime_h > 1) {
                            $upt_s_h = "s";
                        } else {
                            $upt_s_h = "";
                        }
                        if ($uptime_j > 1) {
                            $upt_s_j = "s";
                        } else {
                            $upt_s_j = "";
                        }
                        $vps_out .= _("Up time: ") . "{$uptime_j} day{$upt_s_j} {$uptime_h} hour{$upt_s_h} {$uptime_m} minute{$upt_s_m} {$uptime_s} seconde{$upt_s_s}<br>";
                        $vps_out .= _("Last boot date: ") . date("Y-m-d H:i:s", substr($vps_remote_info["start_time"], 0, strlen($vps_remote_info["start_time"]) - 2)) . "<br>";
                    }
                    $vps_out .= "<br>";
                }
            }
        }
    } else {
        $vps_out .= _("Could not connect to the VPS SOAP Server.");
    }
    $frm_start = "<form action=\"?\">\n<input type=\"hidden\" name=\"adm_login\" value=\"{$adm_login}\">\n<input type=\"hidden\" name=\"adm_pass\" value=\"{$adm_pass}\">\n<input type=\"hidden\" name=\"addrlink\" value=\"{$addrlink}\">";
    // The ip address(es)
    $out .= "<br><h3>" . _("IP address(es) of your VPS:") . "</h3>";
    $vps_ips = $vps["ip_addr"];
    $n = sizeof($vps_ips);
    if ($n > 1) {
        $out .= _("IP addresses: ");
    } else {
        $out .= _("IP address: ");
    }
    for ($i = 0; $i < $n; $i++) {
        if ($i != 0) {
            $out .= ", ";
        }
        $out .= $vps_ips[$i];
    }
    $out .= "<br><br>";
    // VPS status
    $out .= $vps_stat_out;
    $out .= "<h3>" . _("Current VPS status:") . "</h3><br>";
    $out .= $vps_out;
    // VPS Monitoring
    $out .= "<br><h3>" . _("Service monitoring:") . "</h3><br>";
    $frm_start = dtcFormTableAttrs() . "<form action=\"?\">\n<input type=\"hidden\" name=\"adm_login\" value=\"{$adm_login}\">\n<input type=\"hidden\" name=\"adm_pass\" value=\"{$adm_pass}\">\n<input type=\"hidden\" name=\"addrlink\" value=\"{$addrlink}\">";
    $out .= $frm_start . "\n<input type=\"hidden\" name=\"action\" value=\"set_vps_monitoring_values\">\n";
    if ($vps["monitor_ping"] == "yes") {
        $monitor_ping = " checked ";
    } else {
        $monitor_ping = " ";
    }
    if ($vps["monitor_ssh"] == "yes") {
        $monitor_ssh = " checked ";
    } else {
        $monitor_ssh = " ";
    }
    if ($vps["monitor_http"] == "yes") {
        $monitor_http = " checked ";
    } else {
        $monitor_http = " ";
    }
    if ($vps["monitor_smtp"] == "yes") {
        $monitor_smtp = " checked ";
    } else {
        $monitor_smtp = " ";
    }
    if ($vps["monitor_pop3"] == "yes") {
        $monitor_pop3 = " checked ";
    } else {
        $monitor_pop3 = " ";
    }
    if ($vps["monitor_imap4"] == "yes") {
        $monitor_imap4 = " checked ";
    } else {
        $monitor_imap4 = " ";
    }
    if ($vps["monitor_ftp"] == "yes") {
        $monitor_ftp = " checked ";
    } else {
        $monitor_ftp = " ";
    }
    $out .= dtcFormLineDraw(_("VPS monitoring alerts email address: "), "<input type=\"text\" name=\"email_addr\" value=\"" . $vps["monitoring_email"] . "\">", 1);
    $out .= dtcFormLineDraw(_("Ping: "), "<input type=\"checkbox\" name=\"monitor_ping\" value=\"yes\" {$monitor_ping}>", 0);
    $out .= dtcFormLineDraw(_("SSH: "), "<input type=\"checkbox\" name=\"monitor_ssh\" value=\"yes\" {$monitor_ssh}>", 1);
    $out .= dtcFormLineDraw(_("HTTP: "), "<input type=\"checkbox\" name=\"monitor_http\" value=\"yes\" {$monitor_http}>", 0);
    $out .= dtcFormLineDraw(_("SMTP: "), "<input type=\"checkbox\" name=\"monitor_smtp\" value=\"yes\" {$monitor_smtp}>", 1);
    $out .= dtcFormLineDraw(_("POP3: "), "<input type=\"checkbox\" name=\"monitor_pop3\" value=\"yes\" {$monitor_pop3}>", 0);
    $out .= dtcFormLineDraw(_("IMAP4: "), "<input type=\"checkbox\" name=\"monitor_imap4\" value=\"yes\" {$monitor_imap4}>", 1);
    $out .= dtcFormLineDraw(_("FTP: "), "<input type=\"checkbox\" name=\"monitor_ftp\" value=\"yes\" {$monitor_ftp}>", 0);
    $out .= dtcFormLineDraw("", dtcApplyButton(), 1);
    $out .= "</form></table>";
    return $out;
}
Пример #3
0
function terminate($errString)
{
    global $errorset;
    $_SESSION['lastlog'] = $errString;
    $_SESSION['callSID'] = '';
    $errorset = true;
}
$soap_client = connectToVPSServer($_SESSION['vps_node']);
if ($soap_client != false) {
    $err = $soap_client->getError();
    if ($err) {
        terminate("Could not get VPS install log. Error: " . $err);
    } else {
        sleep($delay);
        // delay AJAX refresh 2 seconds - FIXME change to what you want
        $vps_remote_info = getVPSInfo($_SESSION['vps_node'], $_SESSION['vps_name'], $soap_client);
        if ($vps_remote_info != "mkos") {
            $_SESSION['callSID'] = '';
        }
        // install finished, set termination signal
        $_SESSION['lastlog'] = $soap_client->call("getVPSInstallLog", array("vpsname" => $_SESSION['vps_name'], "numlines" => "20"), "", "", "");
        // get last 20 log lines
    }
} else {
    terminate("Couldn't connect to VPS node {$vps_node} !");
}
echo json_encode($_SESSION);
// send callSID and lastlog back to the browser
if ($_SESSION['callSID'] == '') {
    // kill session if done
    session_destroy();
Пример #4
0
function drawAdminTools_VPSInstallation($admin, $vps)
{
    global $vps_name;
    global $vps_node;
    global $adm_login;
    global $adm_pass;
    global $rub;
    global $addrlink;
    global $vps_soap_err;
    global $pro_mysql_product_table;
    global $pro_mysql_vps_ip_table;
    global $pro_mysql_vps_stats_table;
    global $secpayconf_currency_letters;
    global $panel_type;
    global $submit_err;
    $reinstall_os = 1;
    get_secpay_conf();
    $out = "<font color=\"red\">{$submit_err} {$vps_soap_err}</font>";
    $checker = checkVPSAdmin($adm_login, $adm_pass, $vps_node, $vps_name);
    if ($checker != true) {
        return _("Credential not correct: can't display in file ") . __FILE__ . " line " . __LINE__;
    }
    $vps_out = "";
    // Calculate last month dates
    $cur_year = date("Y");
    $cur_month = date("m");
    $last_month = $cur_month - 1;
    if ($last_month == 0) {
        $last_month_year = $cur_year - 1;
        $last_month = 12;
    } else {
        $last_month_year = $cur_year;
    }
    $tow_month_ago = $last_month - 1;
    if ($tow_month_ago == 0) {
        $tow_month_ago = 12;
        $tow_month_ago_year = $last_month_year - 1;
    } else {
        $tow_month_ago_year = $last_month_year;
    }
    // Check if the VPS has expired or not
    $ar = explode("-", $vps["expire_date"]);
    if (date("Y") > $ar[0] || date("Y") == $ar[0] && date("m") > $ar[1] || date("Y") == $ar[0] && date("m") == $ar[1] && date("d") > $ar[2]) {
        $expired = "yes";
    } else {
        $expired = "no";
    }
    // VPS (remote SOAP) Status
    $soap_client = connectToVPSServer($vps_node);
    if ($soap_client != false) {
        $vps_remote_info = getVPSInfo($vps_node, $vps_name, $soap_client);
        if ($vps_remote_info == false) {
            if (strstr($vps_soap_err, _("Method getVPSState failed"))) {
                $vps_out .= _("Could not get remote status (Method getVPSState() failed). Maybe the VPS is not running?") . "<br><br>";
            } else {
                if (strstr($vps_soap_err, _("couldn't connect to host"))) {
                    $vps_out .= _("Could not get remote status: could not connect to the SOAP server (HTTP error).") . "<br><br>";
                } else {
                    $vps_out .= _("Could not get remote status. Unkown error: ") . "{$vps_soap_err}<br><br>";
                }
            }
        } else {
            if ($vps_remote_info == "fsck") {
                $vps_out .= _("Checking filesystem...") . "<br><br>";
            } else {
                if ($vps_remote_info == "mkos") {
                    $vps_out .= _("Reinstalling operating system...") . "<br><br>";
                } else {
                    if (isset($vps_remote_info["id"])) {
                        $vps_out .= _("VM id: ") . $vps_remote_info["id"] . "<br>";
                    }
                    if (isset($vps_remote_info["name"])) {
                        $vps_out .= _("Name: ") . $vps_remote_info["name"] . "<br>";
                    }
                    if (isset($vps_remote_info["memory"])) {
                        $vps_out .= _("Memory: ") . $vps_remote_info["memory"] . "<br>";
                    }
                    if (isset($vps_remote_info["maxmem"])) {
                        $vps_out .= _("Max memory: ") . $vps_remote_info["maxmem"] . "<br>";
                    } else {
                        $vps_out .= _("Maxmem: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if (isset($vps_remote_info["cpu"])) {
                        $vps_out .= _("Number of CPU: ") . $vps_remote_info["cpu"] . "<br>";
                    } else {
                        $vps_out .= _("Number of CPU: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if (isset($vps_remote_info["state"])) {
                        $vps_out .= _("VPS State: ") . $vps_remote_info["state"] . "<br>";
                    } else {
                        $vps_out .= _("State: cannot fetch (maybe boot in progress?)") . "<br>";
                    }
                    if ($vps_remote_info["xen_type"] == 2 && isset($vps_remote_info["up_time"])) {
                        $uptime = substr($vps_remote_info["up_time"], 0, strpos($vps_remote_info["up_time"], "."));
                        $uptime_s = $uptime % 60;
                        $uptime_m = round($uptime / 60) % 60;
                        $uptime_h = round($uptime / 3600) % 24;
                        $uptime_j = round($uptime / 86400);
                        if ($uptime_s > 1) {
                            $upt_s_s = "s";
                        } else {
                            $upt_s_s = "";
                        }
                        if ($uptime_m > 1) {
                            $upt_s_m = "s";
                        } else {
                            $upt_s_m = "";
                        }
                        if ($uptime_h > 1) {
                            $upt_s_h = "s";
                        } else {
                            $upt_s_h = "";
                        }
                        if ($uptime_j > 1) {
                            $upt_s_j = "s";
                        } else {
                            $upt_s_j = "";
                        }
                        $vps_out .= _("Up time: ") . "{$uptime_j} day{$upt_s_j} {$uptime_h} hour{$upt_s_h} {$uptime_m} minute{$upt_s_m} {$uptime_s} seconde{$upt_s_s}<br>";
                        $vps_out .= _("Last boot date: ") . date("Y-m-d H:i:s", substr($vps_remote_info["start_time"], 0, strlen($vps_remote_info["start_time"]) - 2)) . "<br>";
                    }
                    $vps_out .= "<br>";
                }
            }
        }
    } else {
        $vps_out .= _("Could not connect to the VPS SOAP Server.");
    }
    $frm_start = "<form action=\"?\">\n<input type=\"hidden\" name=\"adm_login\" value=\"{$adm_login}\">\n<input type=\"hidden\" name=\"adm_pass\" value=\"{$adm_pass}\">\n<input type=\"hidden\" name=\"addrlink\" value=\"{$addrlink}\">";
    // The ip address(es)
    $vps_ips = $vps["ip_addr"];
    $n = sizeof($vps_ips);
    if ($n > 1) {
        $ip_title = _("IP addresses: ");
    } else {
        $ip_title = _("IP address: ");
    }
    $out .= "<br><h3>" . $ip_title . "</h3>";
    $out .= dtcFormTableAttrs();
    for ($i = 0; $i < $n; $i++) {
        if ($i % 2) {
            $alt_color = 0;
        } else {
            $alt_color = 1;
        }
        $q = "SELECT * FROM {$pro_mysql_vps_ip_table} WHERE ip_addr='" . $vps_ips[$i] . "';";
        $r = mysql_query($q) or die("Cannot query {$q} line " . __LINE__ . " file " . __FILE__ . " sql said: " . mysql_error());
        $n2 = mysql_num_rows($r);
        if ($n2 != 1) {
            $out .= _("Error line " . __LINE__ . " file " . __FILE__);
        } else {
            $a = mysql_fetch_array($r);
            $out .= dtcFormLineDraw($vps_ips[$i], "{$frm_start}<input type=\"hidden\" name=\"action\" value=\"set_ip_reverse_dns\">\n\t<input type=\"hidden\" name=\"ip_addr\" value=\"" . $vps_ips[$i] . "\">\n\t<input type=\"text\" name=\"rdns\" value=\"" . $a["rdns_addr"] . "\">\n</td><td><div class=\"input_btn_container\" onMouseOver=\"this.className='input_btn_container-hover';\"\nonMouseOut=\"this.className='input_btn_container';\">\n <div class=\"input_btn_left\"></div>\n <div class=\"input_btn_mid\"><input class=\"input_btn\" type=\"submit\" value=\"" . _("Change RDNS") . "\"></div>\n <div class=\"input_btn_right\"></div>\n</div></form>", $alt_color);
        }
    }
    $out .= "</table><br><br>";
    // VPS status
    $out .= "<h3>" . _("Current VPS status:") . "</h3><br>";
    $out .= $vps_out;
    // Start / stop VPS
    $out .= "<h3>" . _("Start and stop of your VPS:") . "</h3><br>";
    if ($vps_remote_info == "fsck") {
        $out .= _("Please wait until file system check is finished first.") . "<br><br>";
    } else {
        if ($vps_remote_info == "mkos") {
            $out .= _("Please wait until operating system reinstallation has completed.") . "<br><br>";
            $reinstall_os = 1;
        } else {
            if ($vps_remote_info == true) {
                $out .= $frm_start . "<input type=\"hidden\" name=\"action\" value=\"shutdown_vps\">\n" . submitButtonStart() . _("Gracefully shutdown (xm shutdown)") . submitButtonEnd() . "\n</form><br><br>";
                $out .= $frm_start . "<input type=\"hidden\" name=\"action\" value=\"destroy_vps\">\n" . submitButtonStart() . _("Immediate kill (xm destroy)") . submitButtonEnd() . "\n</form><br><br>";
                $out .= _("To do a file system check or an operating system reinstallation, you need to shutdown or destroy your server first.") . "<br><br>";
            } else {
                if ($expired == "yes") {
                    $out .= _("You cannot start your VPS if it has expired. Please renew it if you want the boot up (xm start) button to appear here.");
                } else {
                    $out .= $frm_start . "<input type=\"hidden\" name=\"action\" value=\"start_vps\">" . submitButtonStart() . _("Boot up (xm start)") . submitButtonEnd() . "<br><br></form>";
                }
                // FSCK
                $out .= "<h3>" . _("File-system check:") . "</h3><br>";
                $out .= $frm_start . "<input type=\"hidden\" name=\"action\" value=\"fsck_vps\">" . submitButtonStart() . _("File system check (fsck)") . submitButtonEnd() . "\n<br><br></form>";
                // OS reinstall
                $out .= "<h3>" . _("Reinstall operating system:") . "</h3><br>";
                $out .= _("Currently installed operating system: ") . $vps["operatingsystem"] . "<br>";
                $deb_selected = " ";
                $debdtc_selected = " ";
                $cent_selected = " ";
                $gen_selected = " ";
                $bsd_selected = " ";
                $xenhvm_selected = " ";
                switch ($vps["operatingsystem"]) {
                    case "debian":
                        $deb_selected = " selected ";
                        break;
                    case "debian-dtc":
                        $debdtc_selected = " selected ";
                        break;
                    case "centos":
                        $cent_selected = " selected ";
                        break;
                    case "netbsd":
                        $bsd_selected = " selected ";
                        break;
                    case "xenhvm":
                        $xenhvm_selected = " selected ";
                        break;
                    default:
                        break;
                }
                // Operating system selection popup and reinstallation button
                $out .= $frm_start . "<table><tr><td>" . _("Operating system:") . " </td><td><select name=\"os_type\">\n<option value=\"debian\" {$deb_selected}>Debian (" . _("network install with debootstrap") . ")</option>\n<option value=\"debian-dtc\" {$debdtc_selected}>Debian with DTC panel (" . _("network install with debootstrap") . ")</option>\n<option value=\"centos\" {$cent_selected}>CentOS (" . _("network install with yum") . ")</option>\n<option value=\"netbsd\" {$bsd_selected}>NetBSD (" . _("network setup with install kernel") . ")</option>\n<option value=\"xenhvm\" {$xenhvm_selected}>Xen HVM (" . _("boot on your own .iso image") . ")</option>";
                $installable_os = getInstallableOS($soap_client);
                $nbr_os = sizeof($installable_os);
                for ($i = 0; $i < $nbr_os; $i++) {
                    $os_name = $installable_os[$i];
                    if ($vps["operatingsystem"] == $os_name) {
                        $selected = " selected ";
                    } else {
                        $selected = "";
                    }
                    $out .= "<option value=\"{$os_name}\" {$selected}>{$os_name} (" . _("operating system image") . ")</option>";
                }
                $installable_app = getInstallableAPP($soap_client);
                $nbr_app = sizeof($installable_app);
                for ($i = 0; $i < $nbr_app; $i++) {
                    $app_name = $installable_app[$i];
                    if ($vps["operatingsystem"] == $os_name) {
                        $selected = " selected ";
                    } else {
                        $selected = "";
                    }
                    $out .= "<option value=\"{$app_name}\" {$selected}>{$app_name} (" . _("applicance builder") . ")</option>";
                }
                $out .= "</select></td></tr>\n<tr><td>" . "VPS root password:"******" </td><td><input type=\"password\" name=\"root_password\"><input type=\"hidden\" name=\"action\" value=\"reinstall_os\"></td></tr>\n<tr><td></td><td>" . submitButtonStart() . _("Reinstall operating system") . submitButtonEnd() . "\n</td></tr></table></form>";
                //		}
                // BSD kernel change popup
                if ($vps["operatingsystem"] == "netbsd") {
                    if ($vps["bsdkernel"] == "install") {
                        $normal_selected = " ";
                        $install_selected = " selected ";
                    } else {
                        $normal_selected = " selected ";
                        $install_selected = " ";
                    }
                    $out .= $frm_start . "<select name=\"bsdkernel\">\n    <option value=\"normal\" {$normal_selected}>Normal</option>\n    <option value=\"install\" {$install_selected}>Install</option>\n    </select><input type=\"hidden\" name=\"action\" value=\"change_bsd_kernel_type\">\n    " . submitButtonStart() . _("Change NetBSD kernel") . submitButtonEnd() . "\n    </form>";
                }
                if ($vps["operatingsystem"] == "xenhvm") {
                    $vps_xenhvm_iso = getVPSIso($vps_node, $vps_name, $soap_client);
                    $out .= "<br><br>" . _("To upload .iso files so they appear below and you can boot on them, you can upload them using ftp, ") . "xen{$vps_name}@{$vps_node}" . _(" using the password of your physical console.") . "<br><br>";
                    $boot_device_selector = "<select name=\"xenhvm_iso\">\n<option value=\"hdd\">" . _("Boot on hard drive") . "</option>";
                    $n_iso = sizeof($vps_xenhvm_iso);
                    if (is_array($vps_xenhvm_iso)) {
                        for ($i = 0; $i < $n_iso; $i++) {
                            $iso = $vps_xenhvm_iso[$i];
                            if ($vps["howtoboot"] == $iso) {
                                $selected = " selected ";
                            } else {
                                $selected = " ";
                            }
                            $boot_device_selector .= "<option value=\"" . htmlspecialchars($iso) . "\" {$selected}>" . htmlspecialchars($iso) . "</option>";
                        }
                    }
                    $boot_device_selector .= "</select>";
                    if ($vps["vncpassword"] == "no_vnc") {
                        $vncons_act_yes_selected = " ";
                        $vncons_act_no_selected = " checked ";
                    } else {
                        $vncons_act_yes_selected = " ";
                        $vncons_act_no_selected = " checked ";
                    }
                    $out .= dtcFormTableAttrs();
                    $out .= dtcFormLineDraw($frm_start . _("Boot device: "), "<input type=\"hidden\" name=\"action\" value=\"change_xenhvm_boot_iso\">" . $boot_device_selector, 1);
                    $out .= dtcFormLineDraw(_("VNC console password: "******"<input type=\"text\" name=\"vnc_console_pass\" value=\"\">", 0);
                    $out .= dtcFormLineDraw(_("VNC console activation: "), "<input type=\"radio\" name=\"vnc_console_activate\" value=\"yes\" {$vncons_act_yes_selected}>" . _("yes") . " <input type=\"radio\" name=\"vnc_console_activate\" value=\"no\" {$vncons_act_no_selected}>" . _("no"), 1);
                    $out .= dtcFormLineDraw("", submitButtonStart() . _("Write parameters") . submitButtonEnd(), 0);
                    $out .= "</table></form>";
                }
            }
        }
    }
    $out .= "<br><br>";
    // SSH Physical console password changing
    $out .= "<h3>" . _("Physical console last display and ssh access:") . "</h3><br>";
    $out .= "Once your VPS is installed, ssh to the physical console to use it for the first time." . "<br><br>";
    $out .= dtcFormTableAttrs();
    $out .= dtcFormLineDraw($frm_start . "<input type=\"hidden\" name=\"action\" value=\"change_xm_console_ssh_passwd\">" . _("New SSH password: "******"<input size=\"40\" type=\"text\" name=\"new_password\" value=\"\"></td><td>" . submitButtonStart() . _("Ok") . submitButtonEnd() . "</form>", 1);
    $out .= dtcFormLineDraw($frm_start . "<input type=\"hidden\" name=\"action\" value=\"change_xm_console_ssh_key\">" . _("New SSH key: "), "<input size=\"40\" type=\"text\" name=\"new_key\" value=\"\"></td><td>" . submitButtonStart() . _("Ok") . submitButtonEnd() . "</form>", 0);
    $out .= "</table>";
    $out .= "<br><br>" . _("To access to your console, first enter a ssh password or key above, and then ssh to:") . "<br>xen" . $vps_name . "@" . $vps_node . "<br><br>";
    $out .= "<br>" . _("You should then install sshd in your VPS and use the physical console only for debugging purposes.");
    $out .= "<br>" . helpLink("PmWiki/Setup-A-VPS-Once-DTC-Xen-Installed-It");
    /* FIXME probably don't need any of this stuff'
    
    	if($reinstall_os == 1){
    		if($panel_type == "admin"){
    			$path_url = "/dtcadmin";
    		}else{
    			$path_url = "/dtc";
    		}
    		$ajax_url = "https://".$_SERVER["SERVER_NAME"].$path_url."/xanjaxPushlet.php?";
    		$ajax_auth = "adm_login="******"&adm_pass="******"&vps_node=".$vps_node."&vps_name=".$vps_name;
    		$r = "";
    	}else{
    		$r = $soap_client->call("getVPSInstallLog",array("vpsname" => $vps_name,"numlines" => "20"),"","","");
    		$err = $soap_client->getError();
    		if($err){
    			$r = _("Could not get VPS install log. Error: ").$err._(" maybe there are no logs yet?");
    		}
    		// print_r($r);
    		$r = str_replace("\n\n","\n",$r);
    	}
    */
    // tested AJAX stuff starts here
    $out .= "<script language=\"javascript\" src=\"xanjaxXHR.js\"></script>";
    $out .= "<h3>" . _("Installation log (last 20 lines):") . "</h3><br>";
    $out .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"1\">\n<tr><td bgcolor=\"black\"><font color=\"white\">{$vps_node}:{$vps_name}</font></td>\n<tr><td bgcolor=\"black\"><font color=\"white\"><pre id=\"reinstall_os_log\" class=\"reinstall_os_log\"><font color=\"red\">dtc-xen</font>@<font color=\"blue\">{$vps_node}</font>&gt;_ #<br>...</pre></font></td>\n</table>";
    $out .= "\n\t\t<script type=\"text/javascript\">\n\t\t\txanGet(logPushlet,\"logPushlet.php?vps_node=" . $vps_node . "&vps_name=" . $vps_name . "\");\n\t\t</script>";
    return $out;
}