linkgraph_image.php 2.79 KB
Newer Older
1
<?php
2
#
3
# Copyright (c) 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
#
include("defs.php3");
include_once("template_defs.php");

#
# Only known and logged in users ...
#
30 31 32
$this_user = CheckLoginOrDie();
$uid       = $this_user->uid();
$isadmin   = ISADMIN();
33 34 35

#
# Verify page arguments.
36 37 38 39 40 41
#
$reqargs  = RequiredPageArguments("instance",  PAGEARG_INSTANCE);
$optargs  = OptionalPageArguments("runidx",    PAGEARG_INTEGER,
				  "srcvnode",  PAGEARG_STRING,
				  "dstvnode",  PAGEARG_STRING,
				  "graphtype", PAGEARG_STRING);
42
$template = $instance->template();
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
# Optional runidx for graphing just a specific run.
$runarg = "";
$vnodes = "";

if (isset($runidx) && $runidx != "") {
    if (!TBvalid_integer($runidx)) {
	PAGEARGERROR("Invalid characters in run index!");
    }
    else {
	$runarg = "-r $runidx";
    }
}

# Optional src and dst arguments.
if (isset($srcvnode) && $srcvnode != "") {
    if (! preg_match("/^[-\w\/]*$/", $srcvnode)) {
	PAGEARGERROR("Invalid characters in src vnode!");
    }
    else {
	$vnodes .= " -s " . escapeshellarg($srcvnode);
    }
}
if (isset($dstvnode) && $dstvnode != "") {
    if (! preg_match("/^[-\w\/]*$/", $dstvnode)) {
	PAGEARGERROR("Invalid characters in dst vnode!");
    }
    else {
	$vnodes .= " -t " . escapeshellarg($dstvnode);
    }
}

75 76 77 78 79 80 81
#
# Spit out the image with a content header.
#
$eid    = $instance->eid();
$pid    = $instance->pid();
$guid   = $instance->guid();
$vers   = $instance->vers();
82 83
$exptidx= $instance->exptidx();
$unix_gid = $template->UnixGID();
84 85 86 87 88 89 90 91 92
$which  = "pps";

#
# Default to pps if no graphtype.
#
if (isset($graphtype) && $graphtype != "") {
    if (! preg_match('/^[\w]*$/', $graphtype)) {
	PAGEARGERROR("Invalid characters in graphtype!");
    }
93
    $which = escapeshellarg($graphtype);
94 95
}

96
if ($fp = popen("$TBSUEXEC_PATH $uid $unix_gid webtemplate_linkgraph " .
97
		"-i $exptidx $runarg $vnodes $guid/$vers $which", "r")) {
98 99 100 101 102 103 104 105 106 107 108 109 110
    header("Content-type: image/gif");
    fpassthru($fp);
}
else {
    # No Data. Spit back a stub image.
    header("Content-type: image/gif");
    readfile("coming-soon-thumb.gif");
}

#
# No Footer!
# 
?>