floormap_aux.php3 2.18 KB
Newer Older
1 2
<?php
#
3
# Copyright (c) 2004, 2006, 2007 University of Utah and the Flux Group.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
23 24 25 26 27 28 29 30 31
#
include("defs.php3");

#
# This script generates the contents of an image. No headers or footers,
# just spit back an image. 
#

#
Leigh Stoller's avatar
Leigh Stoller committed
32
# Only logged in people at the moment; might open up at some point.
33
#
34 35 36
$this_user = CheckLoginOrDie();
$uid       = $this_user->uid();
$isadmin   = ISADMIN();
37 38 39

#
# Verify arguments.
40 41 42 43
#
$reqargs = RequiredPageArguments("prefix", PAGEARG_STRING);

# Sanity check for shell.
44 45 46 47 48 49 50 51 52 53
if (!preg_match("/^floormap[-\w]+$/", $prefix)) {
    PAGEARGERROR("Invalid prefix argument.");
}
$prefix = "/tmp/$prefix";

#
# Need cleanup "handler" to make sure temp files get deleted! 
#
function CLEANUP()
{
54 55 56 57 58 59 60
    global $prefix, $uid;

    #
    # The backend script (vis/floormap.in) removes all the temp files
    # with the -c option. Yucky, but file perms and owners make this
    # the easiest way to do it.
    # 
61
    if (isset($prefix)) {
62 63
	SUEXEC($uid, "nobody", "webfloormap -o $prefix -k ",
	       SUEXEC_ACTION_IGNORE);
64
	# This file does belong to the web server.
65 66 67 68 69 70 71 72 73 74
	unlink($prefix);
    }
    exit();
}
register_shutdown_function("CLEANUP");

#
# Spit the areamap contained in the file out; it is fully formatted and
# called "floormap".
#
75 76
if (($fp = fopen("${prefix}.jpg", "r"))) {
    header("Content-type: image/jpg");
77 78 79 80 81 82 83 84 85 86 87 88
    fpassthru($fp);
}
else {
    # No Data. Spit back a stub image.
    header("Content-type: image/gif");
    readfile("coming-soon-thumb.gif");
}

#
# No Footer!
# 
?>