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'); }
} if ($playground_mode) { $server = server_by_id(pick_playground_server()); } else { $server = server_by_id($_REQUEST["vps_server"]); } if (!$server) { $xtpl->perex(_("Error"), _("Selected serve does not exist.")); break; } if (!$vps->exists) { $vps = vps_load($_REQUEST["veid"]); } if (!$vps->exists) { $perex = $vps->create_new($server["server_id"], $_REQUEST["vps_template"], $_REQUEST["vps_hostname"], $playground_mode ? $_SESSION["member"]["m_id"] : $_REQUEST["m_id"], $playground_mode ? '' : $_REQUEST["vps_info"]); $mapping = nas_create_default_exports("vps", $vps->ve); nas_create_default_mounts($vps->ve, $mapping); if ($playground_mode) { $vps->add_default_configs("playground_default_config_chain"); $vps->add_first_available_ip($server["server_location"], 4); $vps->add_first_available_ip($server["server_location"], 6); $vps->set_backuper($cluster_cfg->get("playground_backup"), NULL, "", true); $vps->set_expiration(time() + $cluster_cfg->get("playground_vps_lifetime") * 24 * 60 * 60); } else { $vps->add_default_configs("default_config_chain"); } $veid = $vps->veid; if ($_REQUEST["boot_after_create"] || $playground_mode) { $vps->start(); notify_user(_("VPS create ") . ' ' . $vps->veid, _("VPS will be created and booted afterwards.")); } else {