diff options
author | Renato Botelho <renato.botelho@bluepex.com> | 2010-07-13 08:52:24 -0300 |
---|---|---|
committer | Renato Botelho <renato.botelho@bluepex.com> | 2010-07-13 08:52:24 -0300 |
commit | ef1de54580e67b6636f0a9688ee2284193403ab6 (patch) | |
tree | 36681ac7f7b53e2d0550369b880ab7480630fa06 /usr | |
parent | 12a489b3cac6377b37d16a6b941e3f4171566e07 (diff) | |
parent | 3e251b12903ea709b908d1cba30fe61cadbe2da3 (diff) | |
download | pfsense-ef1de54580e67b6636f0a9688ee2284193403ab6.zip pfsense-ef1de54580e67b6636f0a9688ee2284193403ab6.tar.gz |
Merge remote branch 'mainline/master'
Diffstat (limited to 'usr')
-rw-r--r-- | usr/local/www/diag_smart.php | 436 | ||||
-rwxr-xr-x | usr/local/www/fbegin.inc | 1 | ||||
-rwxr-xr-x | usr/local/www/firewall_rules.php | 23 | ||||
-rwxr-xr-x | usr/local/www/guiconfig.inc | 64 | ||||
-rw-r--r-- | usr/local/www/system_advanced_admin.php | 8 | ||||
-rwxr-xr-x | usr/local/www/system_firmware_auto.php | 7 | ||||
-rwxr-xr-x | usr/local/www/system_firmware_check.php | 7 | ||||
-rw-r--r-- | usr/local/www/system_groupmanager.php | 8 | ||||
-rw-r--r-- | usr/local/www/system_usermanager.php | 2 |
9 files changed, 547 insertions, 9 deletions
diff --git a/usr/local/www/diag_smart.php b/usr/local/www/diag_smart.php new file mode 100644 index 0000000..47ec2b1 --- /dev/null +++ b/usr/local/www/diag_smart.php @@ -0,0 +1,436 @@ +<?php +/* + Part of pfSense + + Copyright (C) 2006, Eric Friesen + All rights reserved + + Some modifications: + Copyright (C) 2010 - Jim Pingle +*/ + +require("guiconfig.inc"); + +$pgtitle = array("Diagnostics", "S.M.A.R.T. Monitor Tools"); +$smartctl = "/usr/local/sbin/smartctl"; +$smartd = "/usr/local/sbin/smartd"; +$start_script = "/usr/local/etc/rc.d/smartd.sh"; + +include("head.inc"); +?> + +<style> +<!-- + +input { + font-family: courier new, courier; + font-weight: normal; + font-size: 9pt; +} + +pre { + border: 2px solid #435370; + background: #F0F0F0; + padding: 1em; + font-family: courier new, courier; + white-space: pre; + line-height: 10pt; + font-size: 10pt; +} + +.label { + font-family: tahoma, verdana, arial, helvetica; + font-size: 11px; + font-weight: bold; +} + +.button { + font-family: tahoma, verdana, arial, helvetica; + font-weight: bold; + font-size: 11px; +} + +--> +</style> +</head> +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> + +<?php +include("fbegin.inc"); + +// Highlates the words "PASSED", "FAILED", and "WARNING". +function add_colors($string) +{ + // To add words keep arrayes matched by numbers + $patterns[0] = '/PASSED/'; + $patterns[1] = '/FAILED/'; + $patterns[2] = '/Warning/'; + $replacements[0] = '<b><font color="#00ff00">PASSED</font></b>'; + $replacements[1] = '<b><font color="#ff0000">FAILED</font></b>'; + $replacements[2] = '<font color="#ff0000">Warning</font>'; + ksort($patterns); + ksort($replacements); + return preg_replace($patterns, $replacements, $string); +} + +// Edits smartd.conf file, adds or removes email for failed disk reporting +function update_email($email) +{ + // Did they pass an email? + if(!empty($email)) + { + // Put it in the smartd.conf file + shell_exec("/usr/bin/sed -i old 's/^DEVICESCAN.*/DEVICESCAN -H -m " . $email . "/' /usr/local/etc/smartd.conf"); + } + // Nope + else + { + // Remove email flags in smartd.conf + shell_exec("/usr/bin/sed -i old 's/^DEVICESCAN.*/DEVICESCAN/' /usr/local/etc/smartd.conf"); + } +} + +function smartmonctl($action) +{ + global $start_script; + shell_exec($start_script . $action); +} + +// What page, aka. action is being wanted +// If they "get" a page but don't pass all arguments, smartctl will throw an error +$action = (isset($_POST['action']) ? $_POST['action'] : $_GET['action']); +switch($action) +{ + // Testing devices + case 'test': + { + $test = $_POST['testType']; + $output = add_colors(shell_exec($smartctl . " -t " . $test . " /dev/" . $_POST['device'])); + echo '<pre>' . $output . ' + <form action="smartmon.php" method="post" name="abort"> + <input type="hidden" name="device" value="' . $_POST['device'] . '" /> + <input type="hidden" name="action" value="abort" /> + <input type="submit" name="submit" value="Abort" /> + </form> + </pre>'; + break; + } + + // Info on devices + case 'info': + { + $type = $_POST['type']; + $output = add_colors(shell_exec($smartctl . " -" . $type . " /dev/" . $_POST['device'])); + echo "<pre>$output</pre>"; + break; + } + + // View logs + case 'logs': + { + $type = $_POST['type']; + $output = add_colors(shell_exec($smartctl . " -l " . $type . " /dev/" . $_POST['device'])); + echo "<pre>$output</pre>"; + break; + } + + // Abort tests + case 'abort': + { + $output = shell_exec($smartctl . " -X /dev/" . $_POST['device']); + echo "<pre>$output</pre>"; + break; + } + + // Config changes, users email in xml config and write changes to smartd.conf + case 'config': + { + if(isset($_POST['submit'])) + { + // DOES NOT WORK YET... + if($_POST['testemail']) + { +// FIXME shell_exec($smartd . " -M test -m " . $config['system']['smartmonemail']); + $savemsg = "Email sent to " . $config['system']['smartmonemail']; + smartmonctl("stop"); + smartmonctl("start"); + } + else + { + $config['system']['smartmonemail'] = $_POST['smartmonemail']; + write_config(); + + // Don't know what all this means, but it addes the config changed header when config is saved + $retval = 0; + config_lock(); + if(stristr($retval, "error") <> true) + $savemsg = get_std_save_message($retval); + else + $savemsg = $retval; + config_unlock(); + + if($_POST['email']) + { + // Write the changes to the smartd.conf file + update_email($_POST['smartmonemail']); + } + + // Send sig HUP to smartd, rereads the config file + shell_exec("/usr/bin/killall -HUP smartd"); + } + } + // Was the config changed? if so , print the message + if ($savemsg) print_info_box($savemsg); + // Get users email from the xml file + $pconfig['smartmonemail'] = $config['system']['smartmonemail']; + + ?> + <!-- Print the tabs across the top --> + <table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td> + <?php + $tab_array = array(); + $tab_array[0] = array("Information/Tests", false, $_SERVER['PHP_SELF'] . "?action=default"); + $tab_array[1] = array("Config", true, $_SERVER['PHP_SELF'] . "?action=config"); + display_top_tabs($tab_array); + ?> + </td> + </tr> + </table> +<!-- user email address --> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="config"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">Config</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Email Adress</td> + <td width="78%" class="vtable"> + <input type="text" name="smartmonemail" value="<?=$pconfig['smartmonemail']?>"/> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="config" /> + <input type="hidden" name="email" value="true" /> + <input type="submit" name="submit" value="Save" class="formbtn" /> + </td> + </tr> + </tbody> + </table> + </form> + +<!-- test email --> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="config"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">Test email</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"> </td> + <td width="78%" class="vtable"> + Send test email to <?=$config['system']['smartmonemail']?> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="config" /> + <input type="hidden" name="testemail" value="true" /> + <input type="submit" name="submit" value="Send" class="formbtn" /> + </td> + </tr> + </tbody> + </table> + </form> + + <?php + break; + } + + // Default page, prints the forms to view info, test, etc... + default: + { + // Get all AD* and DA* (IDE and SCSI) devices currently installed and stores them in the $devs array + exec("ls /dev | grep '^[ad][da]*[0-9]$'", $devs); + ?> + <table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td> + <?php + $tab_array = array(); + $tab_array[0] = array("Information/Tests", true, $_SERVER['PHP_SELF']); + //$tab_array[1] = array("Config", false, $_SERVER['PHP_SELF'] . "?action=config"); + display_top_tabs($tab_array); + ?> + </td> + </tr> + </table> +<!--INFO--> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="info"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">Info</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Info type</td> + <td width="78%" class="vtable"> + <input type="radio" name="type" value="i" />Info<br /> + <input type="radio" name="type" value="H" checked />Health<br /> + <input type="radio" name="type" value="c" />SMART Capabilities<br /> + <input type="radio" name="type" value="A" />Attributes<br /> + <input type="radio" name="type" value="a" />All<br /> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Device: /dev/</td> + <td width="78%" class="vtable"> + <select name="device"> + <?php + foreach($devs as $dev) + { + echo "<option value=" . $dev . ">" . $dev; + } + ?> + </select> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="info" /> + <input type="submit" name="submit" value="View" class="formbtn" /> + </td> + </tr> + </tbody> + </table> + </form> +<!--TESTS--> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="tests"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">Perform Self Tests</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Test type</td> + <td width="78%" class="vtable"> + <input type="radio" name="testType" value="offline" />Offline<br /> + <input type="radio" name="testType" value="short" checked />Short<br /> + <input type="radio" name="testType" value="long" />Long<br /> + <input type="radio" name="testType" value="conveyance" />Conveyance (ATA Disks Only)<br /> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Device: /dev/</td> + <td width="78%" class="vtable"> + <select name="device"> + <?php + foreach($devs as $dev) + { + echo "<option value=" . $dev . ">" . $dev; + } + ?> + </select> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="test" /> + <input type="submit" name="submit" value="Test" class="formbtn" /> + </td> + </tr> + </tbody> + </table> + </form> +<!--LOGS--> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="logs"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">View Logs</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Log type</td> + <td width="78%" class="vtable"> + <input type="radio" name="type" value="error" checked />Error<br /> + <input type="radio" name="type" value="selftest" />Self Test<br /> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Device: /dev/</td> + <td width="78%" class="vtable"> + <select name="device"> + <?php + foreach($devs as $dev) + { + echo "<option value=" . $dev . ">" . $dev; + } + ?> + </select> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="logs" /> + <input type="submit" name="submit" value="View" class="formbtn" /> + </td> + </tr> + </tbody> + </table> + </form> +<!--ABORT--> + <form action="<?= $_SERVER['PHP_SELF']?>" method="post" name="abort"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tbody> + <tr> + <td colspan="2" valign="top" class="listtopic">Abort tests</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Device: /dev/</td> + <td width="78%" class="vtable"> + <select name="device"> + <?php + foreach($devs as $dev) + { + echo "<option value=" . $dev . ">" . $dev; + } + ?> + </select> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input type="hidden" name="action" value="abort" /> + <input type="submit" name="submit" value="Abort" class="formbtn" onclick="return confirm('Do you really want to abort the test?')" /> + </td> + </tr> + </tbody> + </table> + </form> + + <?php + break; + } +} + +// print back button on pages +if(isset($_POST['submit']) && $_POST['submit'] != "Save") +{ + echo '<br /><a href="' . $_SERVER['PHP_SELF'] . '">Back</a>'; +} +?> +<br /> +<?php if ($ulmsg) echo "<p><strong>" . $ulmsg . "</strong></p>\n"; ?> + +<?php include("fend.inc"); ?> +</body> +</html>
\ No newline at end of file diff --git a/usr/local/www/fbegin.inc b/usr/local/www/fbegin.inc index c775aaa..8552fbc 100755 --- a/usr/local/www/fbegin.inc +++ b/usr/local/www/fbegin.inc @@ -193,6 +193,7 @@ $diagnostics_menu[] = array("pfTOP", "/diag_system_pftop.php"); $diagnostics_menu[] = array("Reboot", "/reboot.php"); $diagnostics_menu[] = array("Routes", "/diag_routes.php"); $diagnostics_menu[] = array("Show Bogons", "/diag_showbogons.php"); +$diagnostics_menu[] = array("SMART Status", "/diag_smart.php"); $diagnostics_menu[] = array("States", "/diag_dump_states.php"); $diagnostics_menu[] = array("States Summary", "/diag_states_summary.php"); $diagnostics_menu[] = array("System Activity", "/diag_system_activity.php"); diff --git a/usr/local/www/firewall_rules.php b/usr/local/www/firewall_rules.php index cd358da..704f394 100755 --- a/usr/local/www/firewall_rules.php +++ b/usr/local/www/firewall_rules.php @@ -126,7 +126,17 @@ if($_REQUEST['dragdroporder']) { $config = write_config("Drag and drop firewall rules ordering update."); // Redirect back to page mark_subsystem_dirty('filter'); - Header("Location: firewall_rules.php?if=" . $_REQUEST['if']); + $undo = array(); + foreach($_REQUEST['dragtable'] as $dt) + $undo[] = ""; + $counter = 0; + foreach($_REQUEST['dragtable'] as $dt) { + $undo[$dt] = $counter; + $counter++; + } + foreach($undo as $dt) + $undotxt .= "&dragtable[]={$dt}"; + Header("Location: firewall_rules.php?if=" . $_REQUEST['if'] . "&undodrag=true" . $undotxt); exit; } @@ -286,7 +296,16 @@ echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript </script> <?php if ($savemsg) print_info_box($savemsg); ?> <?php if (is_subsystem_dirty('filter')): ?><p> -<?php print_info_box_np("The firewall rule configuration has been changed.<br>You must apply the changes in order for them to take effect.");?><br> +<?php +if($_REQUEST['undodrag']) { + foreach($_REQUEST['dragtable'] as $dt) + $dragtable .= "&dragtable[]={$dt}"; + print_info_box_np_undo("The firewall rule configuration has been changed.<br>You must apply the changes in order for them to take effect.", "apply" , "Apply changes" , "firewall_rules.php?if={$_REQUEST['if']}&dragdroporder=true&{$dragtable}"); +} else { + print_info_box_np("The firewall rule configuration has been changed.<br>You must apply the changes in order for them to take effect."); +} +?> +<br> <?php endif; ?> <div id="loading" style="visibity:hidden"> <img src="/themes/<?=$g['theme']?>/images/misc/loader.gif"> Loading, please wait... diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc index 44680aa..e27b78b 100755 --- a/usr/local/www/guiconfig.inc +++ b/usr/local/www/guiconfig.inc @@ -338,6 +338,70 @@ EOFnp; } +function print_info_box_np_undo($msg, $name="apply",$value="Apply changes", $undo) { + global $g; + + if(stristr($msg, "apply") != false || stristr($msg, "save") != false || stristr($msg, "create") != false) { + $savebutton = "<td class='infoboxsave'><nobr>"; + $savebutton .= " <input type=\"button\" value=\"Undo\" onClick=\"document.location='{$undo}'\">"; + $savebutton .= " <input name=\"{$name}\" type=\"submit\" class=\"formbtn\" id=\"${name}\" value=\"{$value}\">"; + $savebutton.="</nobr></td>"; + if($_POST['if']) + $savebutton .= "<input type='hidden' name='if' value='{$_POST['if']}'>"; + } + $nifty_redbox = "#990000"; + $nifty_blackbox = "#000000"; + + $themename = $g['theme']; + + if(file_exists("/usr/local/www/themes/{$themename}/tabcontrols.php")) { + $toeval = file_get_contents("/usr/local/www/themes/{$themename}/tabcontrols.php"); + eval($toeval); + } + + if(file_exists("/usr/local/www/themes/{$themename}/infobox.php")) { + $toeval = file_get_contents("/usr/local/www/themes/{$themename}/infobox.php"); + eval($toeval); + } + + + if(!$savebutton) { + $savebutton = '<td class="infoboxsave"><input value="Close" type="button" onClick="$(\'redboxtable\').hide();"></td>'; + } + + echo <<<EOFnp + <table class='infobox' id='redboxtable'> + <tr> + <td> + <div class='infoboxnp' id='redbox'> + <table class='infoboxnptable2'> + <tr> + <td class='infoboxnptd'> + <img class='infoboxnpimg' src="/themes/{$g['theme']}/images/icons/icon_exclam.gif" > + </td> + <td class='infoboxnptd2'> + <b>{$msg}</b> + </td> + {$savebutton} + {$undobutton} + </tr> + </table> + </div> + <div> + <p/> + </div> + </td> + </tr> + </table> + <script type="text/javascript"> + NiftyCheck(); + Rounded("div#redbox","all","#FFF","{$nifty_redbox}","smooth"); + Rounded("td#blackbox","all","#FFF","{$nifty_blackbox}","smooth"); + </script> +EOFnp; + +} + function print_info_box($msg) { print_info_box_np($msg); } diff --git a/usr/local/www/system_advanced_admin.php b/usr/local/www/system_advanced_admin.php index c853c91..12d7c9e 100644 --- a/usr/local/www/system_advanced_admin.php +++ b/usr/local/www/system_advanced_admin.php @@ -52,7 +52,7 @@ require_once("shaper.inc"); $pconfig['webguiproto'] = $config['system']['webgui']['protocol']; $pconfig['webguiport'] = $config['system']['webgui']['port']; $pconfig['ssl-certref'] = $config['system']['webgui']['ssl-certref']; -$pconfig['disablehttpredirect'] = isset($config['system']['disablehttpredirect']); +$pconfig['disablehttpredirect'] = isset($config['system']['webgui']['disablehttpredirect']); $pconfig['disableconsolemenu'] = isset($config['system']['disableconsolemenu']); $pconfig['noantilockout'] = isset($config['system']['webgui']['noantilockout']); $pconfig['nodnsrebindcheck'] = isset($config['system']['webgui']['nodnsrebindcheck']); @@ -110,10 +110,10 @@ if ($_POST) { $restart_webgui = true; if ($_POST['disablehttpredirect'] == "yes") { - $config['system']['disablehttpredirect'] = true; + $config['system']['webgui']['disablehttpredirect'] = true; $restart_webgui = true; } else { - unset($config['system']['disablehttpredirect']); + unset($config['system']['webgui']['disablehttpredirect']); $restart_webgui = true; } @@ -469,4 +469,4 @@ if ($restart_webgui) { touch("{$g['tmp_path']}/restart_webgui"); } -?> +?>
\ No newline at end of file diff --git a/usr/local/www/system_firmware_auto.php b/usr/local/www/system_firmware_auto.php index 48d727c..4f655fe 100755 --- a/usr/local/www/system_firmware_auto.php +++ b/usr/local/www/system_firmware_auto.php @@ -126,7 +126,12 @@ include("head.inc"); update_status(gettext("Downloading current version information") . "..."); $nanosize = ""; if ($g['platform'] == "nanobsd") { - $nanosize = "-nanobsd-" . strtolower(trim(file_get_contents("/etc/nanosize.txt"))); + if (file_exists("/etc/nano_use_vga.txt")) + $nanosize = "-nanobsd-vga-"; + else + $nanosize = "-nanobsd-"; + + $nanosize .= strtolower(trim(file_get_contents("/etc/nanosize.txt"))); } download_file_with_progress_bar("{$updater_url}/version{$nanosize}", "/tmp/{$g['product_name']}_version"); diff --git a/usr/local/www/system_firmware_check.php b/usr/local/www/system_firmware_check.php index c676950..8057a3c 100755 --- a/usr/local/www/system_firmware_check.php +++ b/usr/local/www/system_firmware_check.php @@ -123,7 +123,12 @@ $static_text .= gettext("Downloading new version information..."); $nanosize = ""; if ($g['platform'] == "nanobsd") { - $nanosize = "-nanobsd-" . strtolower(trim(file_get_contents("/etc/nanosize.txt"))); + if (file_exists("/etc/nano_use_vga.txt")) + $nanosize = "-nanobsd-vga-"; + else + $nanosize = "-nanobsd-"; + + $nanosize .= strtolower(trim(file_get_contents("/etc/nanosize.txt"))); } download_file_with_progress_bar("{$updater_url}/version{$nanosize}", "/tmp/{$g['product_name']}_version"); diff --git a/usr/local/www/system_groupmanager.php b/usr/local/www/system_groupmanager.php index 9c37c99..a167790 100644 --- a/usr/local/www/system_groupmanager.php +++ b/usr/local/www/system_groupmanager.php @@ -150,6 +150,14 @@ if ($_POST) { } local_group_set($group); + + /* Refresh users in this group since their privileges may have changed. */ + $a_user = &$config['system']['user']; + foreach ($a_user as & $user) { + if (in_array($user['uid'], $group['member'])) + local_user_set($user); + } + write_config(); header("Location: system_groupmanager.php"); diff --git a/usr/local/www/system_usermanager.php b/usr/local/www/system_usermanager.php index 3477721..746cf37 100644 --- a/usr/local/www/system_usermanager.php +++ b/usr/local/www/system_usermanager.php @@ -331,8 +331,8 @@ if (isAllowedPage("system_usermanager")) { $a_user[] = $userent; } - local_user_set($userent); local_user_set_groups($userent,$_POST['groups']); + local_user_set($userent); write_config(); if(is_dir("/etc/inc/privhooks")) |