function request_approve() { global $db; if (!$_SESSION["is_admin"]) { return; } $row = request_by_id($_GET["id"]); if (!$row) { return; } elseif ($row["m_state"] == "approved") { notify_user(_("Request has already been approved"), ''); redirect('?page=adminm§ion=members&action=request_details&id=' . $row["m_id"]); return; } $data = null; $mail = false; if (isset($_POST["m_name"])) { // called from request details $data = $_POST; } else { // accessed from request list or mail $data = $row; $mail = true; } switch ($row["m_type"]) { case "add": if (!validate_username($data["m_nick"])) { notify_user(_("User with this login already exists."), ''); redirect('?page=adminm§ion=members&action=request_details&id=' . $row["m_id"]); } $data["m_level"] = PRIV_USER; $data["m_playground_enable"] = true; $data["m_mailer_enable"] = true; $data["m_info"] = ""; $data["m_pass"] = random_string(10); $m = member_load(); $m_id = $m->create_new($data); nas_create_default_exports("member", $m->m); if ($mail || $_POST["m_create_vps"]) { // create vps $server = null; if ($_POST["m_node"]) { $server = server_by_id($_POST["m_node"]); } else { $server = server_by_id(pick_free_node($data["m_location"])); } $vps = vps_load(); $vps->create_new($server["server_id"], $data["m_distribution"], "vps", $m_id, ""); $mapping = nas_create_default_exports("vps", $vps->ve); nas_create_default_mounts($vps->ve, $mapping); $vps->add_default_configs("default_config_chain"); if (!isset($_POST["m_assign_ips"]) || $_POST["m_assign_ips"]) { $vps->add_first_available_ip($server["server_location"], 4); $vps->add_first_available_ip($server["server_location"], 6); } $vps->start(); } break; case "change": $db->query("UPDATE members SET\n\t\t\t\t\t\t\tm_name = '" . $db->check($row["m_name"]) . "',\n\t\t\t\t\t\t\tm_mail = '" . $db->check($row["m_mail"]) . "',\n\t\t\t\t\t\t\tm_address = '" . $db->check($row["m_address"]) . "'\n\t\t\t\t\t\tWHERE m_id = " . $db->check($row["m_applicant"])); // mail user about the approval request_change_mail_member($row, "approved", $row["m_mail"]); break; } $db->query("UPDATE members_changes SET\n\t m_state = 'approved',\n\t m_changed_by = " . $db->check($_SESSION["member"]["m_id"]) . ",\n\t m_admin_response = '" . $db->check($data["m_admin_response"]) . "',\n\t m_changed_at = " . time() . "\n\t WHERE m_id = " . $db->check($row["m_id"])); $row = request_by_id($_GET["id"]); // mail admins about the approval request_change_mail_admins($row, "approved"); request_mail_last_update($row); notify_user(_("Request approved"), ''); redirect('?page=adminm§ion=members&action=approval_requests'); }
function online_migrate($target_id) { global $db; if ($this->exists) { $servers = list_servers(); if (isset($servers[$target_id])) { $sql = 'UPDATE vps SET vps_server = "' . $db->check($target_id) . '" WHERE vps_id = ' . $db->check($this->veid); $db->query($sql); $target_server = server_by_id($target_id); $params["target"] = $target_server["server_ip4"]; $params["target_id"] = $target_id; add_transaction($_SESSION["member"]["m_id"], $this->ve["vps_server"], $this->veid, T_MIGRATE_ONLINE, $params); $this->ve["vps_server"] = $target_id; } } }
$vps->special_setup_ispcp($params); $xtpl->perex(_("Transaction added"), _(" ")); } else { $xtpl->perex(_("Invalid data"), _("Please fill the form correctly.")); } $show_info = true; break; case 'clone': if (isset($_REQUEST["veid"]) && ($_SESSION["is_admin"] || $playground_mode)) { if (!$vps->exists) { $vps = vps_load($_REQUEST["veid"]); } if ($playground_mode) { $server = server_by_id(pick_playground_server()); } else { $server = server_by_id($_POST["target_server_id"]); } if (!$server) { $xtpl->perex(_("Error"), _("Selected server does not exist.")); break; } $pg_backup = $cluster_cfg->get("playground_backup"); $cloned = $vps->clone_vps($playground_mode ? $vps->ve["m_id"] : $_POST["target_owner_id"], $server["server_id"], $_POST["hostname"], $playground_mode ? 2 : $_POST["configs"], $playground_mode ? 1 : $_POST["features"], $playground_mode ? $pg_backup : $_POST["backuper"]); if ($playground_mode) { $cloned->add_first_available_ip($server["server_location"], 4); $cloned->add_first_available_ip($server["server_location"], 6); if (!$pg_backup) { $cloned->set_backuper($pg_backup, NULL, "", true); } $cloned->set_expiration(time() + $cluster_cfg->get("playground_vps_lifetime") * 24 * 60 * 60); }
$vps = vps_load($_GET["veid"]); $xtpl->perex_cmd_output(_("Start of") . " {$_GET["veid"]} " . strtolower(_("planned")), $vps->start()); } else { $xtpl->perex(_("Payment missing"), _("You are not allowed to make \"start\" opetarion.<br />Please pay all your fees. Once we receive all missing payments, your access will be resumed.")); } } if ($_GET["run"] == 'restart') { $vps = vps_load($_GET["veid"]); $xtpl->perex_cmd_output(_("Restart of") . " {$_GET["veid"]} " . strtolower(_("planned")), $vps->restart()); } switch ($_GET["action"]) { case 'new': print_newvps(); break; case 'new2': if (ereg('^[a-zA-Z0-9\\.\\-]{1,30}$', $_REQUEST["vps_hostname"]) && $_GET["create"] && ($diskspace = limit_diskspace_by_id($_REQUEST["vps_diskspace"])) && ($privvmpages = limit_privvmpages_by_id($_REQUEST["vps_privvmpages"])) && ($server = server_by_id($_REQUEST["vps_server"]))) { if (!$vps->exists) { $vps = vps_load($_REQUEST["veid"]); } if (!$vps->exists) { $perex = $vps->create_new($server["server_id"], $_REQUEST["vps_template"], $_REQUEST["vps_hostname"], $_REQUEST["m_id"], $_REQUEST["vps_privvmpages"], $_REQUEST["vps_diskspace"], $_REQUEST["vps_info"]); $veid = $vps->veid; if ($_REQUEST["boot_after_create"]) { $vps->start(); $xtpl->perex(_("VPS create ") . ' ' . $vps->veid, _("VPS will be created and booted afterwards.")); } else { $xtpl->perex(_("VPS create ") . ' ' . $vps->veid, _("VPS will be created. You can start it manually.")); } $list_vps = true; } else { $xtpl->perex(_("Error"), _("VPS already exists"));