Example #1
0
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&section=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&section=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&section=members&action=approval_requests');
}
Example #2
0
 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;
         }
     }
 }
Example #3
0
         $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);
         }
Example #4
0
         $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"));