floormap_aux.php3 1.5 KB
Newer Older
1 2 3
<?php
#
# EMULAB-COPYRIGHT
4
# Copyright (c) 2004, 2006, 2007 University of Utah and the Flux Group.
5 6 7 8 9 10 11 12 13 14
# All rights reserved.
#
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
15
# Only logged in people at the moment; might open up at some point.
16
#
17 18 19
$this_user = CheckLoginOrDie();
$uid       = $this_user->uid();
$isadmin   = ISADMIN();
20 21 22

#
# Verify arguments.
23 24 25 26
#
$reqargs = RequiredPageArguments("prefix", PAGEARG_STRING);

# Sanity check for shell.
27 28 29 30 31 32 33 34 35 36
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()
{
37 38 39 40 41 42 43
    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.
    # 
44
    if (isset($prefix)) {
45 46
	SUEXEC($uid, "nobody", "webfloormap -o $prefix -k ",
	       SUEXEC_ACTION_IGNORE);
47
	# This file does belong to the web server.
48 49 50 51 52 53 54 55 56 57
	unlink($prefix);
    }
    exit();
}
register_shutdown_function("CLEANUP");

#
# Spit the areamap contained in the file out; it is fully formatted and
# called "floormap".
#
58 59
if (($fp = fopen("${prefix}.jpg", "r"))) {
    header("Content-type: image/jpg");
60 61 62 63 64 65 66 67 68 69 70 71
    fpassthru($fp);
}
else {
    # No Data. Spit back a stub image.
    header("Content-type: image/gif");
    readfile("coming-soon-thumb.gif");
}

#
# No Footer!
# 
?>