summaryrefslogtreecommitdiffstats
path: root/usr/local/www/diag_smart.php
diff options
context:
space:
mode:
Diffstat (limited to 'usr/local/www/diag_smart.php')
-rw-r--r--usr/local/www/diag_smart.php453
1 files changed, 0 insertions, 453 deletions
diff --git a/usr/local/www/diag_smart.php b/usr/local/www/diag_smart.php
deleted file mode 100644
index 1cc9161..0000000
--- a/usr/local/www/diag_smart.php
+++ /dev/null
@@ -1,453 +0,0 @@
-<?php
-/*
- diag_smart.php
- Part of pfSense
-
- Copyright (C) 2013-2015 Electric Sheep Fencing, LP
- All rights reserved
-
- Some modifications:
- Copyright (C) 2010 - Jim Pingle
-
- Copyright (C) 2006, Eric Friesen
- All rights reserved
-
-*/
-
-require("guiconfig.inc");
-
-$pgtitle = array(gettext("Diagnostics"), gettext("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";
-
-$valid_test_types = array("offline", "short", "long", "conveyance");
-$valid_info_types = array("i", "H", "c", "A", "a");
-$valid_log_types = array("error", "selftest");
-
-$closehead = false;
-include("head.inc");
-?>
-
-<style type="text/css">
-/*<![CDATA[*/
-
-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");
-
-// Highlights the words "PASSED", "FAILED", and "WARNING".
-function add_colors($string) {
- // To add words keep arrays matched by numbers
- $patterns[0] = '/PASSED/';
- $patterns[1] = '/FAILED/';
- $patterns[2] = '/Warning/';
- $replacements[0] = '<b><font color="#00ff00">' . gettext("PASSED") . '</font></b>';
- $replacements[1] = '<b><font color="#ff0000">' . gettext("FAILED") . '</font></b>';
- $replacements[2] = '<font color="#ff0000">' . gettext("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 " . escapeshellarg($email) . "/' /usr/local/etc/smartd.conf");
- } 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 . escapeshellarg($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']);
-$targetdev = basename($_POST['device']);
-if (!file_exists('/dev/' . $targetdev)) {
- echo "Device does not exist, bailing.";
- return;
-}
-switch ($action) {
- // Testing devices
- case 'test':
- {
- $test = $_POST['testType'];
- if (!in_array($test, $valid_test_types)) {
- echo "Invalid test type, bailing.";
- return;
- }
- $output = add_colors(shell_exec($smartctl . " -t " . escapeshellarg($test) . " /dev/" . escapeshellarg($targetdev)));
- echo '<pre>' . $output . '
- <form action="diag_smart.php" method="post" name="abort">
- <input type="hidden" name="device" value="' . $targetdev . '" />
- <input type="hidden" name="action" value="abort" />
- <input type="submit" name="submit" value="' . gettext("Abort") . '" />
- </form>
- </pre>';
- break;
- }
-
- // Info on devices
- case 'info':
- {
- $type = $_POST['type'];
- if (!in_array($type, $valid_info_types)) {
- echo "Invalid info type, bailing.";
- return;
- }
- $output = add_colors(shell_exec($smartctl . " -" . escapeshellarg($type) . " /dev/" . escapeshellarg($targetdev)));
- echo "<pre>$output</pre>";
- break;
- }
-
- // View logs
- case 'logs':
- {
- $type = $_POST['type'];
- if (!in_array($type, $valid_log_types)) {
- echo "Invalid log type, bailing.";
- return;
- }
- $output = add_colors(shell_exec($smartctl . " -l " . escapeshellarg($type) . " /dev/" . escapeshellarg($targetdev)));
- echo "<pre>$output</pre>";
- break;
- }
-
- // Abort tests
- case 'abort':
- {
- $output = shell_exec($smartctl . " -X /dev/" . escapeshellarg($targetdev));
- 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 = sprintf(gettext("Email sent to %s"), $config['system']['smartmonemail']);
- smartmonctl("stop");
- smartmonctl("start");
- } else {
- $config['system']['smartmonemail'] = $_POST['smartmonemail'];
- write_config();
-
- // Don't know what all this means, but it adds 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" summary="tabs">
- <tr>
- <td>
- <?php
- $tab_array = array();
- $tab_array[0] = array(gettext("Information/Tests"), false, $_SERVER['PHP_SELF'] . "?action=default");
- $tab_array[1] = array(gettext("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" summary="e-mail">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Config"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Email Address"); ?></td>
- <td width="78%" class="vtable">
- <input type="text" name="smartmonemail" value="<?=htmlspecialchars($pconfig['smartmonemail'])?>"/>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="config" />
- <input type="hidden" name="email" value="true" />
- <input type="submit" name="submit" value="<?=gettext("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" summary="test e-mail">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Test email"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell">&nbsp;</td>
- <td width="78%" class="vtable">
- <?php printf(gettext("Send test email to %s"), $config['system']['smartmonemail']); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="config" />
- <input type="hidden" name="testemail" value="true" />
- <input type="submit" name="submit" value="<?=gettext("Send"); ?>" class="formbtn" />
- </td>
- </tr>
- </tbody>
- </table>
- </form>
-
- <?php
- break;
- }
-
- // Default page, prints the forms to view info, test, etc...
- default:
- {
- $devs = get_smart_drive_list();
- ?>
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="default page">
- <tr>
- <td>
- <?php
- $tab_array = array();
- $tab_array[0] = array(gettext("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" summary="info">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Info"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Info type"); ?></td>
- <td width="78%" class="vtable">
- <input type="radio" name="type" value="i" /><?=gettext("Info"); ?><br />
- <input type="radio" name="type" value="H" checked="checked" /><?=gettext("Health"); ?><br />
- <input type="radio" name="type" value="c" /><?=gettext("SMART Capabilities"); ?><br />
- <input type="radio" name="type" value="A" /><?=gettext("Attributes"); ?><br />
- <input type="radio" name="type" value="a" /><?=gettext("All"); ?><br />
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Device: /dev/"); ?></td>
- <td width="78%" class="vtable">
- <select name="device">
- <?php
- foreach ($devs as $dev) {
- echo "<option value=\"" . $dev . "\">" . $dev . "</option>";
- }
- ?>
- </select>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="info" />
- <input type="submit" name="submit" value="<?=gettext("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" summary="tests">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Perform Self-tests"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Test type"); ?></td>
- <td width="78%" class="vtable">
- <input type="radio" name="testType" value="offline" /><?=gettext("Offline"); ?><br />
- <input type="radio" name="testType" value="short" checked="checked" /><?=gettext("Short"); ?><br />
- <input type="radio" name="testType" value="long" /><?=gettext("Long"); ?><br />
- <input type="radio" name="testType" value="conveyance" /><?=gettext("Conveyance (ATA Disks Only)"); ?><br />
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Device: /dev/"); ?></td>
- <td width="78%" class="vtable">
- <select name="device">
- <?php
- foreach ($devs as $dev) {
- echo "<option value=\"" . $dev . "\">" . $dev . "</option>";
- }
- ?>
- </select>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="test" />
- <input type="submit" name="submit" value="<?=gettext("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" summary="logs">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("View Logs"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Log type"); ?></td>
- <td width="78%" class="vtable">
- <input type="radio" name="type" value="error" checked="checked" /><?=gettext("Error"); ?><br />
- <input type="radio" name="type" value="selftest" /><?=gettext("Self-test"); ?><br />
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Device: /dev/"); ?></td>
- <td width="78%" class="vtable">
- <select name="device">
- <?php
- foreach ($devs as $dev) {
- echo "<option value=\"" . $dev . "\">" . $dev . "</option>";
- }
- ?>
- </select>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="logs" />
- <input type="submit" name="submit" value="<?=gettext("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" summary="abort">
- <tbody>
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Abort tests"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Device: /dev/"); ?></td>
- <td width="78%" class="vtable">
- <select name="device">
- <?php
- foreach ($devs as $dev) {
- echo "<option value=\"" . $dev . "\">" . $dev . "</option>";
- }
- ?>
- </select>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input type="hidden" name="action" value="abort" />
- <input type="submit" name="submit" value="<?=gettext("Abort"); ?>" class="formbtn" onclick="return confirm('<?=gettext("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") {
-?>
- <input type="button" class="formbtn" value="<?=gettext("Back");?>" onclick="window.location.href='<?=$_SERVER['PHP_SELF'];?>'" />
-<?php
-}
-?>
-<br />
-<?php
-if ($ulmsg) {
- echo "<p><strong>" . $ulmsg . "</strong></p>\n";
-}
-?>
-
-<?php include("fend.inc"); ?>
-</body>
-</html>
OpenPOWER on IntegriCloud