freenode.php3 2.46 KB
Newer Older
1
<?php
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2 3 4 5 6
#
# EMULAB-COPYRIGHT
# Copyright (c) 2000-2002 University of Utah and the Flux Group.
# All rights reserved.
#
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
include("defs.php3");
include("showstuff.php3");

#
# No PAGEHEADER since we spit out a Location header later. See below.
# 

#
# Only known and logged in users can do this.
#
$uid = GETLOGIN();
LOGGEDINORDIE($uid);
$isadmin = ISADMIN($uid);

#
# Check to make sure a valid nodeid
#
if (!isset($node_id) || !strcmp($node_id, "") || !TBValidNodeName($node_id)) {
    USERERROR("The node '$node_id' is not a valid node!", 1);
}

#
# Only admin users can do this.
#
if (! $isadmin) {
32
    USERERROR("Only administrators can free nodes from the web interface!",
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
	      1);
}

#
# Has to be reserved of course!
#
$query_result =
    DBQueryFatal("select pid,eid from reserved where node_id='$node_id'");

if (mysql_num_rows($query_result) == 0) {
    USERERROR("$node_id is not currently reserved!", 1);
}
$row = mysql_fetch_array($query_result);
$pid = $row[pid];
$eid = $row[eid];

#
# We run this twice. The first time we are checking for a confirmation
# by putting up a form. The next time through the confirmation will be
# set. Or, the user can hit the cancel button, in which case we should
# probably redirect the browser back up a level.
#
if ($canceled) {
    PAGEHEADER("Free Node");
	
    echo "<center><h3><br>
          Operation canceled!
          </h3></center>\n";
    
    PAGEFOOTER();
    return;
}

if (!$confirmed) {
    PAGEHEADER("Free Node");

    echo "<center><h2><br>
          Are you <b>REALLY</b>
          sure you want to free node '$node_id?'
          </h2>\n";

    SHOWNODE($node_id);
    
    echo "<form action='freenode.php3?node_id=$node_id' method=post>";
    echo "<b><input type=submit name=confirmed value=Confirm></b>\n";
    echo "<b><input type=submit name=canceled value=Cancel></b>\n";
    echo "</form>\n";
    echo "</center>\n";

    PAGEFOOTER();
    return;
}

#
# Pass it off to the script.
#
SUEXEC($uid, "nobody", "webnfree $pid $eid $node_id", 1);

#
# And send an audit message.
#
TBUserInfo($uid, $uid_name, $uid_email);

TBMAIL($TBMAIL_AUDIT,
       "Node Free: $node_id",
       "$node_id was deallocated via the web interface by $uid ($uid_name).\n",
       "From: $uid_name <$uid_email>\n".
       "Errors-To: $TBMAIL_WWW");

#
# Spit out a redirect so that the history does not include a post
# in it. The back button skips over the post and to the form.
# See above for conclusion.
# 
header("Location: shownode.php3?node_id=$node_id");

?>