defs.php3.in 5 KB
Newer Older
1 2 3 4
<?php
#
# Standard definitions!
#
5 6 7 8 9 10 11 12
$TBDIR          = "@prefix@/";
$WWWDEFS        = "@WWWDEFS@";

#
# Include configure selected definitions.
#
include("$WWWDEFS"."-defs.php3");

Leigh B. Stoller's avatar
Leigh B. Stoller committed
13 14
$TBWWW_DIR	= "$TBDIR"."www/";
$TBBIN_DIR	= "$TBDIR"."bin/";
15
$TBETC_DIR	= "$TBDIR"."etc/";
16 17 18
$TBLIBEXEC_DIR	= "$TBDIR"."libexec/";
$TBSUEXEC_PATH  = "$TBLIBEXEC_DIR/suexec";
$TBCHKPASS_PATH = "$TBLIBEXEC_DIR/checkpass";
19
$TBCSLOGINS     = "$TBETC_DIR/cslogins";
20

21
$TBLIST_DIR     = "$TBDIR"."lists";
22 23
$TBLIST_LEADERS = "$TBLIST_DIR"."/leaders.list";
$TBLIST_USERS   = "$TBLIST_DIR"."/users.list";
24

25
$TBPROJ_DIR     = "/proj";
Leigh B. Stoller's avatar
Leigh B. Stoller committed
26
$TBUSER_DIR	= "/users/";
Leigh B. Stoller's avatar
Leigh B. Stoller committed
27
$TBNSSUBDIR     = "nsdir";
Leigh B. Stoller's avatar
Leigh B. Stoller committed
28

29
$TBAUTHCOOKIE   = "HashCookie";
30
$TBNAMECOOKIE   = "MyUidCookie";
31
$TBAUTHTIMEOUT  = 21600;
32

33 34
$HTTPTAG        = "http://";

35 36 37 38 39
#
# Database constants and the like.
#
include("dbdefs.php3");

40 41 42 43 44 45 46 47 48 49 50 51 52
#
# Generate the KEY from a name
#
function GENKEY ($name) {
     return crypt("TB_"."$name"."_USR", strlen($name) + 13);
}

#
# Internal errors should be reported back to the user simply. The actual 
# error information should be emailed to the list for action. The script
# should then terminate if required to do so.
#
function TBERROR ($message, $death) {
53 54
    global $TBMAIL_WWW;

55
    if (1) {
56 57 58 59 60 61 62 63
    mail($TBMAIL_WWW,
         "TESTBED ERROR REPORT",
         "\n".
         "$message\n\n".
         "Thanks,\n".
         "Testbed WWW\n",
         "From: $TBMAIL_WWW\n".
         "Errors-To: $TBMAIL_WWW");
Leigh B. Stoller's avatar
Leigh B. Stoller committed
64 65 66
    }
    # Allow sendmail to run.
    sleep(2); 
67 68 69 70

    if ($death) {
        die("<br><br><h3>".
            "$message <p>".
Leigh B. Stoller's avatar
Leigh B. Stoller committed
71 72 73
            "Could not continue. Please contact ".
            "<a href=\"mailto:testbed-www@flux.cs.utah.edu\">".
                "Testbed WWW (testbed-www@flux.cs.utah.edu)</a>.".
74 75 76 77
            "</h3><p>");
    }
    return 0;
}
Leigh B. Stoller's avatar
Leigh B. Stoller committed
78 79 80 81 82 83 84 85 86 87

#
# General user errors should print something warm and fuzzy
#
function USERERROR($message, $death) {
    echo "<h3><br><br>
          $message
          <br>
          </h3>";

88 89 90 91 92
    echo "<p><p>
          Please contact <a href=\"mailto:testbed-ops@flux.cs.utah.edu\"> 
          Testbed Operations (testbed-ops@flux.cs.utah.edu)</a> 
          if you feel this message is an error.";

Leigh B. Stoller's avatar
Leigh B. Stoller committed
93 94 95 96 97 98 99
    if ($death) {
        echo "</body>
              </html>";
        die("");
    }
}

100 101 102 103 104 105 106 107
#
# A form error.
#
function FORMERROR($field) {
    USERERROR("Missing field; ".
              "Please go back and fill out the \"$field\" field!", 1);
}

108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
#
# Is this user an admin type?
#
function ISADMIN($uid) {
    global $TBDBNAME;

    $query_result = mysql_db_query($TBDBNAME,
	"SELECT admin FROM users WHERE uid='$uid'");

    if (! $query_result) {
        $err = mysql_error();
        TBERROR("Database Error getting admin status for $uid: $err\n", 1);
    }

    $row = mysql_fetch_row($query_result);
    $admin  = $row[0];

    return $admin;
}

128 129 130 131 132 133 134 135 136
#
# Spit out a vanilla page header.
#
function PAGEHEADER($title) {
    echo "<html>
          <head>
           <title>$title</title>
           <link rel=\"stylesheet\" href=\"tbstyle.css\" type=\"text/css\">
          </head>
137 138 139
          <body>
          <basefont size=4>
          \n";
140 141 142 143 144 145 146 147 148
}

#
# Spit out a vanilla page footer.
#
function PAGEFOOTER() {
    global $TBBASE;

    echo "<br><hr>
149 150 151
	  <!-- Force full window! -->
	  <base target=_top>
          <center>[<a href=\"$TBBASE\">Emulab.Net Home</a>]</center>
152
          <center>
153 154
           [<a href=\"http://www.cs.utah.edu/flux/testbed/\">
               Utah Network Testbed</a>]
155 156 157 158 159 160 161 162 163 164 165 166 167
           [<a href=\"http://www.cs.utah.edu/flux/\">Flux Research Group</a>]
           [<a href=\"http://www.cs.utah.edu/\">School of Computing</a>]
           [<a href=\"http://www.utah.edu/\">University of Utah</a>]
          </center>
         <p align=right>
         <font size=-2>
          Problems? Contact
                    <a href=\"mailto:testbed-ops@flux.cs.utah.edu\"> 
                       Testbed Operations (testbed-ops@flux.cs.utah.edu)</a>
          </body>
          </html>\n";
}

168 169 170 171
#
# Run a program as a user.
#
function SUEXEC($uid, $gid, $cmdandargs, $die) {
172
    global $TBSUEXEC_PATH;
173 174 175

    $output = array();
    $retval = 0;
176
    $result = exec("$TBSUEXEC_PATH $uid $gid $cmdandargs",
177 178 179 180 181 182 183 184 185 186 187 188 189 190
		   $output, $retval);

    if ($retval) {
	$foo = "";
        for ($i = 0; $i < count($output); $i++) {
	      $foo = "$foo $output[$i]";
	}
	
	TBERROR("suexec failure. Cmd was \"$cmdandargs\". Error output:\n\n".
                "$foo", $die);
    }
    return $retval;
}

191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
#
# Verify a URL.
#
function VERIFYURL($url) {
    global $HTTPTAG;

    if (strlen($url)) {
	if (strstr($url, " ")) {
	    USERERROR("URL ($url) is malformed; spaces are not allowed. ".
		      "Please go back and fix it up.", 1);
	}
	
	if (strcmp($HTTPTAG, substr($url, 0, strlen($HTTPTAG)))) {
	    USERERROR("URL ($url) must begin with $HTTPTAG. ".
		      "Please go back and fix it up.", 1);
	}
	$fp = @fopen($url, "r");
	if (! $fp) {
	    USERERROR("URL ($url) is not valid (cannot be accessed). ".
		      "Please go back and fix it up.", 1);
	}
	fclose($fp);
    }
    return 0;
}


218 219 220 221
#
# Beware empty spaces (cookies)!
# 
require("tbauth.php3");
222
?>