summaryrefslogtreecommitdiffstats
path: root/usr/local/www/includes
diff options
context:
space:
mode:
authorErik Kristensen <ekristen@pfsense.org>2005-09-11 06:17:32 +0000
committerErik Kristensen <ekristen@pfsense.org>2005-09-11 06:17:32 +0000
commitd772ac32580e088437a9bbedfc2a348d2760a5aa (patch)
tree76e18857992df67b3e5c5582f23603c8f32cd237 /usr/local/www/includes
parent8bf392242477d3e3317448d8fd6b64152dc89d33 (diff)
downloadpfsense-d772ac32580e088437a9bbedfc2a348d2760a5aa.zip
pfsense-d772ac32580e088437a9bbedfc2a348d2760a5aa.tar.gz
Added SAJAX support.
System Meters are updated via AJAX now. Started XHTML/CSS cleanup.
Diffstat (limited to 'usr/local/www/includes')
-rw-r--r--usr/local/www/includes/functions.inc.php98
-rw-r--r--usr/local/www/includes/sajax.class.php261
2 files changed, 359 insertions, 0 deletions
diff --git a/usr/local/www/includes/functions.inc.php b/usr/local/www/includes/functions.inc.php
new file mode 100644
index 0000000..88465ab
--- /dev/null
+++ b/usr/local/www/includes/functions.inc.php
@@ -0,0 +1,98 @@
+<?
+function cpu_usage() {
+ return get_cpuusage(get_cputicks(), get_cputicks());
+}
+
+
+function get_uptime() {
+ exec("/sbin/sysctl -n kern.boottime", $boottime);
+ preg_match("/sec = (\d+)/", $boottime[0], $matches);
+ $boottime = $matches[1];
+ $uptime = time() - $boottime;
+
+ if ($uptime > 60)
+ $uptime += 30;
+ $updays = (int)($uptime / 86400);
+ $uptime %= 86400;
+ $uphours = (int)($uptime / 3600);
+ $uptime %= 3600;
+ $upmins = (int)($uptime / 60);
+
+ $uptimestr = "";
+ if ($updays > 1)
+ $uptimestr .= "$updays days, ";
+ else if ($updays > 0)
+ $uptimestr .= "1 day, ";
+ $uptimestr .= sprintf("%02d:%02d", $uphours, $upmins);
+ return $uptimestr;
+}
+
+function get_cputicks() {
+ $cputicks = explode(" ", `/sbin/sysctl -n kern.cp_time`);
+ return $cputicks;
+}
+
+function get_cpuusage($cpuTicks, $cpuTicks2) {
+
+ $diff = array();
+ $diff['user'] = ($cpuTicks2[0] - $cpuTicks[0])+1;
+ $diff['nice'] = ($cpuTicks2[1] - $cpuTicks[1])+1;
+ $diff['sys'] = ($cpuTicks2[2] - $cpuTicks[2])+1;
+ $diff['intr'] = ($cpuTicks2[3] - $cpuTicks[3])+1;
+ $diff['idle'] = ($cpuTicks2[4] - $cpuTicks[4])+1;
+
+ //echo "<!-- user: {$diff['user']} nice {$diff['nice']} sys {$diff['sys']} intr {$diff['intr']} idle {$diff['idle']} -->";
+ $totalDiff = $diff['user'] + $diff['nice'] + $diff['sys'] + $diff['intr'] + $diff['idle'];
+ $totalused = $diff['user'] + $diff['nice'] + $diff['sys'] + $diff['intr'] - 1;
+ $cpuUsage = round(100 * ($totalused / $totalDiff), 0);
+
+ #$totalDiff = $diff['user'] + $diff['nice'] + $diff['sys'] + $diff['intr'] + $diff['idle'];
+ #$cpuUsage = round(100 * (1 - $diff['idle'] / $totalDiff), 0);
+
+ return $cpuUsage;
+}
+
+function get_pfstate() {
+ global $config;
+ if (isset($config['system']['maximumstates']) and $config['system']['maximumstates'] > 0)
+ $maxstates="/{$config['system']['maximumstates']}";
+ else
+ $maxstates="/10000";
+ $curentries = `/sbin/pfctl -si |grep current`;
+ if (preg_match("/([0-9]+)/", $curentries, $matches)) {
+ $curentries = $matches[1];
+ }
+ return $curentries . $maxstates;
+}
+
+
+function disk_usage()
+{
+ exec("df -h | grep -w '/' | awk '{ print $5 }' | cut -d '%' -f 1", $dfout);
+ $diskusage = trim($dfout[0]);
+
+ return $diskusage;
+}
+
+function swap_usage()
+{
+ $swapUsage = `/usr/sbin/swapinfo | cut -c45-55 | grep "%"`;
+ $swapUsage = ereg_replace('%', "", $swapUsage);
+ $swapUsage = ereg_replace(' ', "", $swapUsage);
+ $swapUsage = rtrim($swapUsage);
+
+ return $swapUsage;
+}
+
+function mem_usage()
+{
+ exec("/sbin/sysctl -n vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count " .
+ "vm.stats.vm.v_wire_count vm.stats.vm.v_cache_count vm.stats.vm.v_free_count", $memory);
+
+ $totalMem = $memory[0] + $memory[1] + $memory[2] + $memory[3] + $memory[4];
+ $freeMem = $memory[4];
+ $usedMem = $totalMem - $freeMem;
+ $memUsage = round(($usedMem * 100) / $totalMem, 0);
+
+ return $memUsage;
+} \ No newline at end of file
diff --git a/usr/local/www/includes/sajax.class.php b/usr/local/www/includes/sajax.class.php
new file mode 100644
index 0000000..3274e49
--- /dev/null
+++ b/usr/local/www/includes/sajax.class.php
@@ -0,0 +1,261 @@
+<?php
+
+
+class sajax {
+
+ var $sajax_debug_mode = 0;
+ var $sajax_export_list = array();
+ var $sajax_request_type = "GET";
+ var $sajax_remote_uri = "";
+ var $sajax_js_has_been_shown = 0;
+
+
+ /**
+ * PHP 5 Constructor
+ *
+ * @param string $remoteURI
+ */
+ function __construct($remoteURI = NULL)
+ {
+ if (!isset($remoteURL))
+ $this->sajax_remote_uri = $this->sajax_get_my_uri();
+ }
+
+
+ /**
+ * PHP 4 Constructor
+ *
+ * @param string $remoteURI
+ */
+ function sajax($remoteURI = NULL)
+ {
+ $this->__construct($$remoteURI);
+ }
+
+
+ /**
+ *
+ *
+ */
+ function sajax_get_my_uri()
+ {
+ global $REQUEST_URI;
+
+ return $REQUEST_URI;
+ }
+
+
+
+ function sajax_handle_client_request() {
+
+ $mode = "";
+
+ if (! empty($_GET["rs"]))
+ $mode = "get";
+
+ if (!empty($_POST["rs"]))
+ $mode = "post";
+
+ if (empty($mode))
+ return;
+
+ if ($mode == "get") {
+ // Bust cache in the head
+ header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
+ header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
+ // always modified
+ header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+ header ("Pragma: no-cache"); // HTTP/1.0
+ $func_name = $_GET["rs"];
+ if (! empty($_GET["rsargs"]))
+ $args = $_GET["rsargs"];
+ else
+ $args = array();
+ }
+ else {
+ $func_name = $_POST["rs"];
+ if (! empty($_POST["rsargs"]))
+ $args = $_POST["rsargs"];
+ else
+ $args = array();
+ }
+
+ if (! in_array($func_name, $this->sajax_export_list))
+ echo "-:$func_name not callable";
+ else {
+ echo "+:";
+ $result = call_user_func_array($func_name, $args);
+ echo $result;
+ }
+ exit;
+ } // End sajax_handle_client_request() function ...
+
+
+ function sajax_get_common_js() {
+
+ $t = strtoupper($this->sajax_request_type);
+ if ($t != "GET" && $t != "POST")
+ return "// Invalid type: $t.. \n\n";
+
+ ob_start();
+ ?>
+
+ // remote scripting library
+ // (c) copyright 2005 modernmethod, inc
+ var sajax_debug_mode = <?php echo $this->sajax_debug_mode ? "true" : "false"; ?>;
+ var sajax_request_type = "<?php echo $t; ?>";
+
+ function sajax_debug(text) {
+ if (sajax_debug_mode)
+ alert("RSD: " + text)
+ }
+ function sajax_init_object() {
+ sajax_debug("sajax_init_object() called..")
+
+ var A;
+ try {
+ A=new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ A=new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (oc) {
+ A=null;
+ }
+ }
+ if(!A && typeof XMLHttpRequest != "undefined")
+ A = new XMLHttpRequest();
+ if (!A)
+ sajax_debug("Could not create connection object.");
+ return A;
+ }
+ function sajax_do_call(func_name, args) {
+ var i, x, n;
+ var uri;
+ var post_data;
+
+ uri = "<?php echo $this->sajax_remote_uri; ?>";
+ if (sajax_request_type == "GET") {
+ if (uri.indexOf("?") == -1)
+ uri = uri + "?rs=" + escape(func_name);
+ else
+ uri = uri + "&rs=" + escape(func_name);
+ for (i = 0; i < args.length-1; i++)
+ uri = uri + "&rsargs[]=" + escape(args[i]);
+ uri = uri + "&rsrnd=" + new Date().getTime();
+ post_data = null;
+ } else {
+ post_data = "rs=" + escape(func_name);
+ for (i = 0; i < args.length-1; i++)
+ post_data = post_data + "&rsargs[]=" + escape(args[i]);
+ }
+
+ x = sajax_init_object();
+ x.open(sajax_request_type, uri, true);
+ if (sajax_request_type == "POST") {
+ x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
+ x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ }
+ x.onreadystatechange = function() {
+ if (x.readyState != 4)
+ return;
+ sajax_debug("received " + x.responseText);
+
+ var status;
+ var data;
+ status = x.responseText.charAt(0);
+ data = x.responseText.substring(2);
+ if (status == "-")
+ alert("Error: " + data);
+ else
+ args[args.length-1](data);
+ }
+ x.send(post_data);
+ sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
+ sajax_debug(func_name + " waiting..");
+ delete x;
+ }
+
+ <?php
+ $html = ob_get_contents();
+ ob_end_clean();
+ return $html;
+ }
+
+
+ function sajax_show_common_js()
+ {
+ echo $this->sajax_get_common_js();
+ }
+
+
+ function sajax_esc($val)
+ {
+ return str_replace('"', '\\\\"', $val);
+ }
+
+
+ /**
+ * sajax_get_one_stub
+ *
+ * @param string $func_name
+ */
+ function sajax_get_one_stub($func_name)
+ {
+ ob_start();
+ ?>
+
+ // wrapper for <?php echo $func_name; ?>
+
+ function x_<?php echo $func_name; ?>() {
+ sajax_do_call("<?php echo $func_name; ?>",
+ x_<?php echo $func_name; ?>.arguments);
+ }
+
+ <?php
+ $html = ob_get_contents();
+ ob_end_clean();
+ return $html;
+ }
+
+
+ function sajax_show_one_stub($func_name) {
+ echo sajax_get_one_stub($func_name);
+ }
+
+
+ /**
+ * export user functions to sajax ...
+ *
+ */
+ function sajax_export() {
+ $n = func_num_args();
+ for ($i = 0; $i < $n; $i++) {
+ $this->sajax_export_list[] = func_get_arg($i);
+ }
+ }
+
+
+ function sajax_get_javascript()
+ {
+ $html = "";
+ if (! $this->sajax_js_has_been_shown) {
+ $html .= $this->sajax_get_common_js();
+ $this->sajax_js_has_been_shown = 1;
+ }
+ foreach ($this->sajax_export_list as $func) {
+ $html .= $this->sajax_get_one_stub($func);
+ }
+ return $html;
+ }
+
+
+ function sajax_show_javascript()
+ {
+ echo $this->sajax_get_javascript();
+ }
+
+
+} // End sajax class
+
+
+?>
OpenPOWER on IntegriCloud