Project

General

Profile

Download (7.87 KB) Statistics
| Branch: | Tag: | Revision:
1 5b237745 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/* Run various commands and collect their output into HTML tables.
4
 * Jim McBeath <jimmc@macrovision.com> Nov 2003
5
 *
6
 * (modified for m0n0wall by Manuel Kasper <mk@neon1.net>)
7 878f7270 Scott Ullrich
 * (modified for pfSense by Scott Ullrich geekgod@pfsense.com)
8 5b237745 Scott Ullrich
 */
9 6b07c15a Matthew Grooms
/*
10
    Redistribution and use in source and binary forms, with or without
11
    modification, are permitted provided that the following conditions are met:
12
13
    1. Redistributions of source code must retain the above copyright notice,
14
       this list of conditions and the following disclaimer.
15
16
    2. Redistributions in binary form must reproduce the above copyright
17
       notice, this list of conditions and the following disclaimer in the
18
       documentation and/or other materials provided with the distribution.
19
20
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
24
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
    POSSIBILITY OF SUCH DAMAGE.
30
*/
31 1d333258 Scott Ullrich
/*
32
	pfSense_BUILDER_BINARIES:	/usr/bin/vmstat	/usr/bin/netstat	/sbin/dmesg	/sbin/mount	/usr/local/sbin/setkey	/usr/local/sbin/pftop	
33
	pfSense_BUILDER_BINARIES:	/sbin/pfctl	/sbin/sysctl	/usr/bin/top	/usr/bin/netstat	/sbin/pfctl	/sbin/ifconfig
34
	pfSense_MODULE:	support
35
*/
36 6b07c15a Matthew Grooms
37
##|+PRIV
38
##|*IDENT=page-hidden-detailedstatus
39
##|*NAME=Hidden: Detailed Status page
40
##|*DESCR=Allow access to the 'Hidden: Detailed Status' page.
41
##|*MATCH=status.php*
42
##|-PRIV
43 5b237745 Scott Ullrich
44
/* Execute a command, with a title, and generate an HTML table
45
 * showing the results.
46
 */
47 1d169baa Bill Marquette
48
/* include all configuration functions */
49 f977ac60 Bill Marquette
require_once("guiconfig.inc");
50 1d169baa Bill Marquette
require_once("functions.inc");
51
52 5b237745 Scott Ullrich
function doCmdT($title, $command) {
53
    echo "<p>\n";
54
    echo "<a name=\"" . $title . "\">\n";
55
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
56
    echo "<tr><td class=\"listtopic\">" . $title . "</td></tr>\n";
57
    echo "<tr><td class=\"listlr\"><pre>";		/* no newline after pre */
58 f997992b Scott Ullrich
59 5b237745 Scott Ullrich
	if ($command == "dumpconfigxml") {
60
		$fd = @fopen("/conf/config.xml", "r");
61
		if ($fd) {
62
			while (!feof($fd)) {
63
				$line = fgets($fd);
64 70069758 Bill Marquette
				/* remove sensitive contents */
65 5b237745 Scott Ullrich
				$line = preg_replace("/<password>.*?<\\/password>/", "<password>xxxxx</password>", $line);
66
				$line = preg_replace("/<pre-shared-key>.*?<\\/pre-shared-key>/", "<pre-shared-key>xxxxx</pre-shared-key>", $line);
67 70069758 Bill Marquette
				$line = preg_replace("/<rocommunity>.*?<\\/rocommunity>/", "<rocommunity>xxxxx</rocommunity>", $line);
68 5b237745 Scott Ullrich
				$line = str_replace("\t", "    ", $line);
69
				echo htmlspecialchars($line,ENT_NOQUOTES);
70
			}
71
		}
72
		fclose($fd);
73
	} else {
74 767a716e Scott Ullrich
		$execOutput = "";
75
		$execStatus = "";
76 5b237745 Scott Ullrich
		exec ($command . " 2>&1", $execOutput, $execStatus);
77
		for ($i = 0; isset($execOutput[$i]); $i++) {
78
			if ($i > 0) {
79
				echo "\n";
80
			}
81
			echo htmlspecialchars($execOutput[$i],ENT_NOQUOTES);
82
		}
83
	}
84
    echo "</pre></tr>\n";
85
    echo "</table>\n";
86
}
87
88
/* Execute a command, giving it a title which is the same as the command. */
89
function doCmd($command) {
90
    doCmdT($command,$command);
91
}
92
93
/* Define a command, with a title, to be executed later. */
94
function defCmdT($title, $command) {
95
    global $commands;
96
    $title = htmlspecialchars($title,ENT_NOQUOTES);
97
    $commands[] = array($title, $command);
98
}
99
100
/* Define a command, with a title which is the same as the command,
101
 * to be executed later.
102
 */
103
function defCmd($command) {
104
    defCmdT($command,$command);
105
}
106
107
/* List all of the commands as an index. */
108
function listCmds() {
109
    global $commands;
110 408811c5 Carlos Eduardo Ramos
    echo "<p>" . gettext("This status page includes the following information") . ":\n";
111 0774ed52 Scott Ullrich
    echo "<ul width=\"700\">\n";
112 5b237745 Scott Ullrich
    for ($i = 0; isset($commands[$i]); $i++ ) {
113
        echo "<li><strong><a href=\"#" . $commands[$i][0] . "\">" . $commands[$i][0] . "</a></strong>\n";
114
    }
115
    echo "</ul>\n";
116
}
117
118
/* Execute all of the commands which were defined by a call to defCmd. */
119
function execCmds() {
120
    global $commands;
121
    for ($i = 0; isset($commands[$i]); $i++ ) {
122
        doCmdT($commands[$i][0], $commands[$i][1]);
123
    }
124
}
125
126 1d169baa Bill Marquette
global $g;
127
128 5b237745 Scott Ullrich
/* Set up all of the commands we want to execute. */
129
defCmdT("System uptime","uptime");
130
defCmdT("Interfaces","/sbin/ifconfig -a");
131
132 1d333258 Scott Ullrich
defCmdT("PF Info","/sbin/pfctl -s info");
133 48e07930 Scott Ullrich
134 5b237745 Scott Ullrich
defCmdT("Routing tables","netstat -nr");
135
136 37502a4a Scott Ullrich
defCmdT("top | head -n5", "/usr/bin/top | /usr/bin/head -n5");
137
138
defCmdT("sysctl hw.physmem","/sbin/sysctl hw.physmem");
139
140 5b237745 Scott Ullrich
defCmdT("ipfw show", "/sbin/ipfw show");
141 fd69ff6e Scott Ullrich
defCmdT("pfctl -sn", "/sbin/pfctl -sn");
142
defCmdT("pfctl -sr", "/sbin/pfctl -sr");
143
defCmdT("pfctl -ss", "/sbin/pfctl -ss");
144
defCmdT("pfctl -si", "/sbin/pfctl -si");
145 3ea11e7d Scott Ullrich
defCmdT("pfctl -sa", "/sbin/pfctl -sa");
146 135c91d5 Scott Ullrich
defCmdT("pfctl -s rules -vv","/sbin/pfctl -s rules -vv");
147 ef278e47 Scott Ullrich
defCmdT("pfctl -s queue -v","/sbin/pfctl -s queue -v");
148 ebd9c6d8 Scott Ullrich
defCmdT("pfctl -s nat -v","/sbin/pfctl -s nat -v");
149 18b272e6 Scott Ullrich
150 3ea11e7d Scott Ullrich
defCmdT("PF OSFP","/sbin/pfctl -s osfp");
151
152
153 f8b5ef5c Scott Ullrich
defCmdT("netstat -s -ppfsync","netstat -s -ppfsync");
154
155 a88fe761 Scott Ullrich
defCmdT("pfctl -vsq","/sbin/pfctl -vsq");
156
157 1d333258 Scott Ullrich
defCmdT("pfctl -vs Tables","/sbin/pfctl -vs Tables");
158 18b272e6 Scott Ullrich
159 a4fb527f Scott Ullrich
defCmdT("Load Balancer","/sbin/pfctl -a slb -s nat");
160 557228e4 Scott Ullrich
161 b6f87f46 Scott Ullrich
defCmdT("pftop -w 150 -a -b","/usr/local/sbin/pftop -a -b");
162
defCmdT("pftop -w 150 -a -b -v long","/usr/local/sbin/pftop -w 150 -a -b -v long");
163
defCmdT("pftop -w 150 -a -b -v queue","/usr/local/sbin/pftop -w 150 -a -b -v queue");
164
defCmdT("pftop -w 150 -a -b -v rules","/usr/local/sbin/pftop -w 150 -a -b -v rules");
165
defCmdT("pftop -w 150 -a -b -v size","/usr/local/sbin/pftop -w 150 -a -b -v size");
166
defCmdT("pftop -w 150 -a -b -v speed","/usr/local/sbin/pftop -w 150 -a -b -v speed");
167 5b237745 Scott Ullrich
168
defCmdT("resolv.conf","cat /etc/resolv.conf");
169
170
defCmdT("Processes","ps xauww");
171
defCmdT("dhcpd.conf","cat /var/etc/dhcpd.conf");
172
defCmdT("ez-ipupdate.cache","cat /conf/ez-ipupdate.cache");
173
174
defCmdT("df","/bin/df");
175
176
defCmdT("racoon.conf","cat /var/etc/racoon.conf");
177 1d333258 Scott Ullrich
defCmdT("SPD","/usr/local/sbin/setkey -DP");
178
defCmdT("SAD","/usr/local/sbin/setkey -D");
179 5b237745 Scott Ullrich
180 568f30c2 Scott Ullrich
if(isset($config['system']['usefifolog']))  {
181
	defCmdT("last 200 system log entries","/usr/sbin/fifolog_reader /var/log/system.log 2>&1 | tail -n 200");
182
	defCmdT("last 50 filter log entries","/usr/sbin/fifolog_reader /var/log/filter.log 2>&1 | tail -n 50");
183
} else {
184
	defCmdT("last 200 system log entries","/usr/sbin/clog /var/log/system.log 2>&1 | tail -n 200");
185
	defCmdT("last 50 filter log entries","/usr/sbin/clog /var/log/filter.log 2>&1 | tail -n 50");
186
}
187
	
188 5b237745 Scott Ullrich
defCmd("ls /conf");
189
defCmd("ls /var/run");
190 8002c538 Scott Ullrich
191 99d907f1 Scott Ullrich
defCmd("/sbin/mount");
192
193 1d169baa Bill Marquette
defCmdT("cat {$g['tmp_path']}/rules.debug","cat {$g['tmp_path']}/rules.debug");
194 8002c538 Scott Ullrich
195 99d907f1 Scott Ullrich
defCmdT("VMStat", "vmstat -afimsz");
196 5b237745 Scott Ullrich
197 99d907f1 Scott Ullrich
defCmdT("config.xml","dumpconfigxml");
198 89a9d56b Scott Ullrich
199 c69f4c25 Scott Ullrich
defCmdT("DMESG","/sbin/dmesg -a");
200
201 9cd0b618 Scott Ullrich
defCmdT("netstat -mb","netstat -mb");
202
defCmdT("vmstat -z","vmstat -z");
203
204 5b237745 Scott Ullrich
exec("/bin/date", $dateOutput, $dateStatus);
205
$currentDate = $dateOutput[0];
206
207 36d0358b Scott Ullrich
$pgtitle = array("{$g['product_name']}","status");
208 4df96eff Scott Ullrich
include("head.inc");
209
210 5b237745 Scott Ullrich
?>
211
<style type="text/css">
212
<!--
213
pre {
214
   margin: 0px;
215
   font-family: courier new, courier;
216
   font-weight: normal;
217
   font-size: 9pt;
218
}
219
-->
220
</style>
221
222
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
223 7173af6e Scott Ullrich
<?php include("fbegin.inc"); ?>
224 5b237745 Scott Ullrich
<strong><?=$currentDate;?></strong>
225 408811c5 Carlos Eduardo Ramos
<p><span class="red"><strong><?=gettext("Note: make sure to remove any sensitive information " .
226
"(passwords, maybe also IP addresses) before posting " .
227
"information from this page in public places (like mailing lists)"); ?>!</strong></span><br>
228
<?=gettext("Passwords in config.xml have been automatically removed"); ?>.
229 5b237745 Scott Ullrich
230 0774ed52 Scott Ullrich
<div id="cmdspace" style="width:700px">
231 5b237745 Scott Ullrich
<?php listCmds(); ?>
232
233
<?php execCmds(); ?>
234 0774ed52 Scott Ullrich
</div>
235 5b237745 Scott Ullrich
236 7173af6e Scott Ullrich
<?php include("fend.inc"); ?>
237 5b237745 Scott Ullrich
</body>
238
</html>