aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/backup/backup.inc45
-rw-r--r--config/backup/backup.php110
-rw-r--r--config/backup/backup.xml60
-rwxr-xr-xconfig/backup/backup_edit.php173
-rw-r--r--config/blinkled/binaries/blinkledbin9311 -> 0 bytes
-rw-r--r--config/blinkled/blinkled.inc75
-rw-r--r--config/blinkled/blinkled.xml105
-rw-r--r--config/blinkled8/blinkled.inc78
-rw-r--r--config/blinkled8/blinkled.xml52
-rw-r--r--config/darkstat/darkstat.sh22
-rw-r--r--config/darkstat/darkstat.xml405
-rw-r--r--config/filer/filer.inc12
-rw-r--r--config/filer/filer.xml12
-rw-r--r--config/iperf/iperf.xml126
-rw-r--r--config/iperf/iperfserver.xml111
-rw-r--r--config/lcdproc/lcdproc.inc2
-rw-r--r--config/notes/notes.inc42
-rw-r--r--config/notes/notes.xml78
-rw-r--r--config/nrpe2/nrpe2.inc82
-rw-r--r--config/nrpe2/nrpe2.xml56
-rw-r--r--config/nut/nut.inc2
-rwxr-xr-xconfig/openvpn-client-export/openvpn-client-export.inc26
-rwxr-xr-xconfig/openvpn-client-export/openvpn-client-export.xml4
-rwxr-xr-xconfig/openvpn-client-export/vpn_openvpn_export.php135
-rw-r--r--config/openvpn-client-export/vpn_openvpn_export_shared.php114
-rw-r--r--config/pfflowd/pfflowd.xml68
-rw-r--r--config/servicewatchdog/services_servicewatchdog.php175
-rw-r--r--config/servicewatchdog/services_servicewatchdog_add.php4
-rw-r--r--config/servicewatchdog/servicewatchdog.inc25
-rw-r--r--config/servicewatchdog/servicewatchdog.xml2
-rw-r--r--config/servicewatchdog/servicewatchdog_cron.php3
-rw-r--r--config/sudo/sudo.inc12
-rw-r--r--config/sudo/sudo.xml2
-rw-r--r--config/systempatches/patches.inc23
-rw-r--r--config/systempatches/system_patches.php247
-rw-r--r--config/systempatches/system_patches_edit.php28
-rw-r--r--config/systempatches/systempatches.xml15
-rw-r--r--config/tftp2/tftp.inc118
-rw-r--r--config/tftp2/tftp.xml74
-rw-r--r--config/tftp2/tftp_files.php169
-rw-r--r--config/vnstat2/vnstat2.inc100
-rw-r--r--config/vnstat2/vnstat2.xml83
-rw-r--r--config/vnstat2/vnstati.xml50
-rw-r--r--config/vnstat2/vnstatoutput.xml50
-rw-r--r--config/vnstat2/www/diag_vnstat.php55
-rw-r--r--config/vnstat2/www/diag_vnstat2.php53
-rw-r--r--config/vnstat2/www/vnstat2_img.php28
-rw-r--r--config/vnstat2/www/vnstati.php41
-rw-r--r--config/widentd/widentd.xml189
49 files changed, 2014 insertions, 1527 deletions
diff --git a/config/backup/backup.inc b/config/backup/backup.inc
index 748b7fc6..e395756a 100644
--- a/config/backup/backup.inc
+++ b/config/backup/backup.inc
@@ -3,10 +3,10 @@
/*
/* ========================================================================== */
/*
- backup.inc
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
+ backup.inc
+ Copyright (C) 2008 Mark J Crane
+ All rights reserved.
+*/
/* ========================================================================== */
/*
Redistribution and use in source and binary forms, with or without
@@ -34,28 +34,28 @@
if (!function_exists("byte_convert")) {
function byte_convert( $bytes ) {
- if ($bytes<=0)
+ if ($bytes <= 0) {
return '0 Byte';
+ }
- $convention=1000; //[1000->10^x|1024->2^x]
- $s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
- $e=floor(log($bytes,$convention));
- return round($bytes/pow($convention,$e),2).' '.$s[$e];
+ $convention = 1000; //[1000->10^x|1024->2^x]
+ $s = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
+ $e = floor(log($bytes, $convention));
+ return round($bytes/pow($convention, $e), 2) . ' ' . $s[$e];
}
}
-
-function backup_sync_package_php()
-{
- global $config;
- if($config['installedpackages']['backup']['config'] != "") {
+function backup_sync_package_php() {
+
+ global $config;
+ if ($config['installedpackages']['backup']['config'] != "") {
conf_mount_rw();
- foreach($config['installedpackages']['backup']['config'] as $rowhelper) {
+ foreach ($config['installedpackages']['backup']['config'] as $rowhelper) {
if ($rowhelper['enabled'] != "false") {
//$tmp_php = base64_decode($rowhelper['php']);
if (strlen($tmp_php) > 0) {
- $tmp .= "// name: ".$rowhelper['name']." \n";
- $tmp .= "// description: ".$rowhelper['description']." \n\n";
+ $tmp .= "// name: " . $rowhelper['name'] . " \n";
+ $tmp .= "// description: " . $rowhelper['description'] . " \n\n";
$tmp .= base64_decode($rowhelper['php']);
$tmp .= "\n";
}
@@ -65,16 +65,13 @@ function backup_sync_package_php()
}
}
-
-function backup_sync_package()
-{
- global $config;
+function backup_sync_package() {
+ global $config;
backup_sync_package_php();
}
-function backup_install_command()
-{
+function backup_install_command() {
global $config;
conf_mount_rw();
@@ -87,7 +84,7 @@ function backup_install_command()
backup_sync_package();
conf_mount_ro();
-
+
}
?>
diff --git a/config/backup/backup.php b/config/backup/backup.php
index 3cada9b3..d4debcd3 100644
--- a/config/backup/backup.php
+++ b/config/backup/backup.php
@@ -32,7 +32,6 @@ require("/usr/local/pkg/backup.inc");
$a_backup = &$config['installedpackages']['backup']['config'];
-
if ($_GET['act'] == "del") {
if ($_GET['type'] == 'backup') {
if ($a_backup[$_GET['id']]) {
@@ -58,13 +57,13 @@ if ($_GET['a'] == "download") {
if (count($a_backup) > 0) {
$backup_cmd = 'tar --create --verbose --gzip --file '.$tmp.$filename.' --directory / ';
foreach ($a_backup as $ent) {
- if ($ent['enabled'] =="true"){
+ if ($ent['enabled'] == "true") {
//htmlspecialchars($ent['name']);
//htmlspecialchars($ent['path']);
//htmlspecialchars($ent['description']);
$backup_cmd .= htmlspecialchars($ent['path']).' ';
}
- $i++;
+ $i++;
}
//echo $backup_cmd; //exit;
system($backup_cmd);
@@ -74,7 +73,7 @@ if ($_GET['a'] == "download") {
$fd = fopen($tmp.$filename, "rb");
header("Content-Type: binary/octet-stream");
header("Content-Length: " . filesize($tmp.$filename));
- header('Content-Disposition: attachment; filename="'.$filename.'"');
+ header('Content-Disposition: attachment; filename="' . $filename . '"');
fpassthru($fd);
conf_mount_ro();
@@ -90,13 +89,12 @@ if ($_GET['a'] == "other") {
//extract the tgz file
if (file_exists('/root/backup/'.$filename)) {
- //echo "The file $filename exists";
- system('cd /; tar xvpfz /root/backup/'.$filename.' ');
- header( 'Location: backup.php?savemsg=Backup+has+been+restored.' ) ;
- }
- else {
+ //echo "The file $filename exists";
+ system('cd /; tar xvpfz /root/backup/'.$filename.' ');
+ header( 'Location: backup.php?savemsg=Backup+has+been+restored.' ) ;
+ } else {
header( 'Location: backup.php?savemsg=Restore+failed.+Backup+file+not+found.' ) ;
- }
+ }
conf_mount_ro();
exit;
}
@@ -111,7 +109,6 @@ if (($_POST['submit'] == "Upload") && is_uploaded_file($_FILES['ulfile']['tmp_na
conf_mount_ro();
}
-
include("head.inc");
?>
@@ -210,91 +207,85 @@ echo " <form action='backup.php' method='post' name='iform' id='iform'>\n";
if ($config_change == 1) {
write_config();
- $config_change = 0;
+ $config_change = 0;
}
-//if ($savemsg) print_info_box($savemsg);
+//if ($savemsg) print_info_box($savemsg);
//if (file_exists($d_hostsdirty_path)): echo"<p>";
//print_info_box_np("This is an info box.");
//echo"<br />";
-//endif;
+//endif;
?>
- <table width="100%" border="0" cellpadding="0" cellspacing="0">
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="30%" class="listhdrr">Name</td>
<td width="20%" class="listhdrr">Enabled</td>
<td width="40%" class="listhdr">Description</td>
<td width="10%" class="list">
-
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td width="17"></td>
- <td valign="middle"><a href="backup_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
-
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="17"></td>
+ <td valign="middle"><a href="backup_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ </table>
</td>
</tr>
+ <?php
- <?php
-
$i = 0;
if (count($a_backup) > 0) {
foreach ($a_backup as $ent) {
?>
- <tr>
- <td class="listr" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
- <?=$ent['name'];?>&nbsp;
- </td>
- <td class="listr" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
- <?=$ent['enabled'];?>&nbsp;
- </td>
- <td class="listbg" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
- <font color="#FFFFFF"><?=htmlspecialchars($ent['description']);?>&nbsp;
- </td>
- <td valign="middle" nowrap class="list">
- <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td class="listr" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
+ <?=$ent['name'];?>&nbsp;
+ </td>
+ <td class="listr" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
+ <?=$ent['enabled'];?>&nbsp;
+ </td>
+ <td class="listbg" ondblclick="document.location='backup_edit.php?id=<?=$i;?>';">
+ <font color="#FFFFFF"><?=htmlspecialchars($ent['description']);?>&nbsp;
+ </td>
+ <td valign="middle" nowrap class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
<tr>
- <td valign="middle"><a href="backup_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td>
- <td><a href="backup_edit.php?type=backup&act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td>
+ <td valign="middle"><a href="backup_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td>
+ <td><a href="backup_edit.php?type=backup&act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td>
</tr>
- </table>
- </td>
- </tr>
- <?php
-
- $i++;
+ </table>
+ </td>
+ </tr>
+ <?php
+ $i++;
}
}
?>
<tr>
- <td class="list" colspan="3"></td>
- <td class="list">
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td width="17"></td>
- <td valign="middle"><a href="backup_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
- </td>
+ <td class="list" colspan="3"></td>
+ <td class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="17"></td>
+ <td valign="middle"><a href="backup_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ </table>
+ </td>
</tr>
-
<tr>
- <td class="list" colspan="3"></td>
- <td class="list"></td>
+ <td class="list" colspan="3"></td>
+ <td class="list"></td>
</tr>
- </table>
+</table>
</form>
-
<br>
<br>
<br>
@@ -310,7 +301,6 @@ if ($config_change == 1) {
</div>
-
<?php include("fend.inc"); ?>
</body>
</html>
diff --git a/config/backup/backup.xml b/config/backup/backup.xml
index ae1adf52..f9cf36b9 100644
--- a/config/backup/backup.xml
+++ b/config/backup/backup.xml
@@ -2,46 +2,46 @@
<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
/* ========================================================================== */
/*
- backup.xml
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
+ backup.xml
+ Copyright (C) 2008 Mark J Crane
+ All rights reserved.
+*/
/* ========================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
/* ========================================================================== */
- ]]>
- </copyright>
- <description>Backup</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ ]]>
+ </copyright>
+ <description>Backup</description>
+ <requirements>Describe your package requirements here</requirements>
+ <faq>Currently there are no FAQ items provided.</faq>
<name>Backup Settings</name>
- <version>0.1.6</version>
+ <version>0.1.8</version>
<title>Settings</title>
<include_file>/usr/local/pkg/backup.inc</include_file>
<menu>
diff --git a/config/backup/backup_edit.php b/config/backup/backup_edit.php
index c7dbc38a..fbaa9096 100755
--- a/config/backup/backup_edit.php
+++ b/config/backup/backup_edit.php
@@ -1,4 +1,4 @@
-<?php
+<?php
/* $Id$ */
/*
@@ -66,7 +66,7 @@ if ($_POST) {
unset($input_errors);
$pconfig = $_POST;
-
+
if (!$input_errors) {
$ent = array();
@@ -76,11 +76,10 @@ if ($_POST) {
$ent['description'] = $_POST['description'];
if (isset($id) && $a_backup[$id]) {
- //update
- $a_backup[$id] = $ent;
- }
- else {
- //add
+ //update
+ $a_backup[$id] = $ent;
+ } else {
+ //add
$a_backup[] = $ent;
}
@@ -99,7 +98,7 @@ include("head.inc");
<script type="text/javascript" language="JavaScript">
function show_advanced_config() {
- document.getElementById("showadvancedbox").innerHTML='';
+ document.getElementById("showadvancedbox").innerHTML = '';
aodiv = document.getElementById('showadvanced');
aodiv.style.display = "block";
</script>
@@ -124,87 +123,87 @@ function show_advanced_config() {
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td class="tabcont" >
-
- <!--
- <table width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
- <td><p><span class="vexpl"><span class="red"><strong>PHP<br>
- </strong></span>
- </p></td>
- </tr>
- </table>
- -->
- <br />
-
- <form action="backup_edit.php" method="post" name="iform" id="iform">
- <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <td class="tabcont" >
- <tr>
- <td width="25%" valign="top" class="vncellreq">Name</td>
- <td width="75%" class="vtable">
- <input name="name" type="text" class="formfld" id="name" size="40" value="<?=htmlspecialchars($pconfig['name']);?>">
- </td>
- </tr>
-
- <tr>
- <td width="22%" valign="top" class="vncellreq">Path</td>
- <td width="78%" class="vtable">
- <input name="path" type="text" class="formfld" id="path" size="40" value="<?=htmlspecialchars($pconfig['path']);?>">
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq">Enabled</td>
- <td width="78%" class="vtable">
- <?php
- echo " <select name='enabled' class='formfld'>\n";
- echo " <option></option>\n";
- switch (htmlspecialchars($pconfig['enabled'])) {
- case "true":
- echo " <option value='true' selected='yes'>true</option>\n";
- echo " <option value='false'>false</option>\n";
- break;
- case "false":
- echo " <option value='true'>true</option>\n";
- echo " <option value='false' selected='yes'>false</option>\n";
-
- break;
- default:
- echo " <option value='true' selected='yes'>true</option>\n";
- echo " <option value='false'>false</option>\n";
- }
- echo " </select>\n";
- ?>
- </td>
- </tr>
- <tr>
- <td width="25%" valign="top" class="vncellreq">Description</td>
- <td width="75%" class="vtable">
- <input name="description" type="text" class="formfld" id="description" size="40" value="<?=htmlspecialchars($pconfig['description']);?>">
- <br><span class="vexpl">Enter the description here.<br></span>
- </td>
- </tr>
-
- <tr>
- <td valign="top">&nbsp;</td>
- <td>
- <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()">
- <?php if (isset($id) && $a_backup[$id]): ?>
- <input name="id" type="hidden" value="<?=$id;?>">
- <?php endif; ?>
- </td>
- </tr>
+ <!--
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td><p><span class="vexpl"><span class="red"><strong>PHP<br>
+ </strong></span>
+ </p></td>
+ </tr>
</table>
- </form>
-
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
-
- </td>
+ -->
+ <br />
+
+ <form action="backup_edit.php" method="post" name="iform" id="iform">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+
+ <tr>
+ <td width="25%" valign="top" class="vncellreq">Name</td>
+ <td width="75%" class="vtable">
+ <input name="name" type="text" class="formfld" id="name" size="40" value="<?=htmlspecialchars($pconfig['name']);?>">
+ </td>
+ </tr>
+
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Path</td>
+ <td width="78%" class="vtable">
+ <input name="path" type="text" class="formfld" id="path" size="40" value="<?=htmlspecialchars($pconfig['path']);?>">
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Enabled</td>
+ <td width="78%" class="vtable">
+ <?php
+ echo " <select name='enabled' class='formfld'>\n";
+ echo " <option></option>\n";
+ switch (htmlspecialchars($pconfig['enabled'])) {
+ case "true":
+ echo " <option value='true' selected='yes'>true</option>\n";
+ echo " <option value='false'>false</option>\n";
+ break;
+ case "false":
+ echo " <option value='true'>true</option>\n";
+ echo " <option value='false' selected='yes'>false</option>\n";
+
+ break;
+ default:
+ echo " <option value='true' selected='yes'>true</option>\n";
+ echo " <option value='false'>false</option>\n";
+ }
+ echo " </select>\n";
+ ?>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%" valign="top" class="vncellreq">Description</td>
+ <td width="75%" class="vtable">
+ <input name="description" type="text" class="formfld" id="description" size="40" value="<?=htmlspecialchars($pconfig['description']);?>">
+ <br><span class="vexpl">Enter the description here.<br></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td valign="top">&nbsp;</td>
+ <td>
+ <input name="Submit" type="submit" class="formbtn" value="Save"> <input class="formbtn" type="button" value="Cancel" onclick="history.back()">
+ <?php if (isset($id) && $a_backup[$id]): ?>
+ <input name="id" type="hidden" value="<?=$id;?>">
+ <?php endif; ?>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+
+ </td>
</tr>
</table>
diff --git a/config/blinkled/binaries/blinkled b/config/blinkled/binaries/blinkled
deleted file mode 100644
index 2a8681a5..00000000
--- a/config/blinkled/binaries/blinkled
+++ /dev/null
Binary files differ
diff --git a/config/blinkled/blinkled.inc b/config/blinkled/blinkled.inc
deleted file mode 100644
index ef2b6db8..00000000
--- a/config/blinkled/blinkled.inc
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/*
- blinkled.inc
- part of pfSense (https://www.pfSense.org/)
- Copyright (C) 2009 Jim Pingle
- Copyright (C) 2015 ESF, LLC
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once("config.inc");
-require_once("functions.inc");
-
-function sync_package_blinkled() {
- global $config;
- $blinkled_config = $config['installedpackages']['blinkled']['config'][0];
- /* Kill all instances of blinkled */
- if (is_process_running("blinkled")) {
- mwexec("/usr/bin/killall -9 blinkled");
- }
- /* If blinkled is not running, start it */
- if (!is_process_running("blinkled")) {
- blinkled_start();
- }
-}
-
-function blinkled_launch($int, $led) {
- mwexec("/usr/local/bin/blinkled -i " . escapeshellarg($int) . " -l /dev/led/led" . escapeshellarg($led));
-}
-
-function blinkled_start() {
- global $config;
- $blinkled_config = $config['installedpackages']['blinkled']['config'][0];
- if (!($blinkled_config['enable'])) {
- return;
- }
-
- if (($blinkled_config['enable_led2']) && ($blinkled_config['iface_led2'])) {
- blinkled_launch(convert_friendly_interface_to_real_interface_name($blinkled_config['iface_led2']), 2);
- }
- if (($blinkled_config['enable_led3']) && ($blinkled_config['iface_led3'])) {
- blinkled_launch(convert_friendly_interface_to_real_interface_name($blinkled_config['iface_led3']), 3);
- }
-}
-
-function validate_form_blinkled($post, &$input_errors) {
- /* Make sure both aren't using the same interface */
- if (($post['iface_led2']) && ($post['iface_led3']) &&
- (($post['enable_led2']) && ($post['enable_led3'])) &&
- ($post['iface_led2'] == $post['iface_led3'])) {
- $input_errors[] = 'You cannot set two LEDs for a single interface. Please choose seperate interfaces.';
- }
-}
-
-?>
diff --git a/config/blinkled/blinkled.xml b/config/blinkled/blinkled.xml
deleted file mode 100644
index 65a574af..00000000
--- a/config/blinkled/blinkled.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
-<packagegui>
- <copyright>
- <![CDATA[
-/* $Id$ */
-/* ====================================================================================== */
-/*
- blinkled.xml
- part of pfSense (https://www.pfSense.org/)
- Copyright (C) 2009-2012 Jim Pingle
- Copyright (C) 2015 ESF, LLC
- All rights reserved.
-*/
-/* ====================================================================================== */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-/* ====================================================================================== */
- ]]>
- </copyright>
- <title>Interfaces: Assign LEDs</title>
- <name>blinkled</name>
- <version>0.4.4</version>
- <savetext>Save</savetext>
- <include_file>/usr/local/pkg/blinkled.inc</include_file>
- <menu>
- <name>Assign LEDs</name>
- <tooltiptext>Assign LEDs to indicate network activity.</tooltiptext>
- <section>Interfaces</section>
- <url>/pkg_edit.php?xml=blinkled.xml</url>
- </menu>
- <additional_files_needed>
- <item>https://packages.pfsense.org/packages/config/blinkled/blinkled.inc</item>
- <prefix>/usr/local/pkg/</prefix>
- </additional_files_needed>
- <!-- TODO: Make the blinkled.sh script really usable for start/stop/restart -->
- <service>
- <name>blinkled</name>
- <rcfile>blinkled.sh</rcfile>
- <executable>blinkled</executable>
- <description>Network Activity LED Indicator Daemon</description>
- </service>
- <fields>
- <field>
- <fielddescr>Enable blinkled</fielddescr>
- <fieldname>enable</fieldname>
- <type>checkbox</type>
- <enablefields>enable_led2,enable_led3,iface_led2,iface_led3</enablefields>
- <description>if this is enabled, it will use LED #2 and #3 to
- indicate network activity. Be aware, however, that this will
- possibly consume some system resources in the process.</description>
- </field>
- <field>
- <fielddescr>Enable LED #2</fielddescr>
- <fieldname>enable_led2</fieldname>
- <type>checkbox</type>
- </field>
- <field>
- <fielddescr>Interface For LED #2</fielddescr>
- <fieldname>iface_led2</fieldname>
- <type>interfaces_selection</type>
- <description>Pick an interface to blink for activity on LED #2</description>
- </field>
- <field>
- <fielddescr>Enable LED #3</fielddescr>
- <fieldname>enable_led3</fieldname>
- <type>checkbox</type>
- </field>
- <field>
- <fielddescr>Interface For LED #3</fielddescr>
- <fieldname>iface_led3</fieldname>
- <type>interfaces_selection</type>
- <description>Pick an interface to blink for activity on LED #3</description>
- </field>
- </fields>
- <custom_php_validation_command>
- validate_form_blinkled($_POST, $input_errors);
- </custom_php_validation_command>
- <custom_php_resync_config_command>
- sync_package_blinkled();
- </custom_php_resync_config_command>
-</packagegui>
diff --git a/config/blinkled8/blinkled.inc b/config/blinkled8/blinkled.inc
index 6d0da039..6e76c157 100644
--- a/config/blinkled8/blinkled.inc
+++ b/config/blinkled8/blinkled.inc
@@ -1,4 +1,33 @@
<?php
+/*
+ blinkled.inc
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+require_once("config.inc");
require_once("functions.inc");
function blinkled_rcfile() {
@@ -28,53 +57,42 @@ EOD;
conf_mount_ro();
}
-function blinkled_running () {
- return ((int)exec('pgrep blinkled | wc -l') > 0);
-}
function sync_package_blinkled() {
global $config;
+
+ blinkled_rcfile();
+
$blinkled_config = $config['installedpackages']['blinkled']['config'][0];
- /* kill all instances of blinkled */
- if(blinkled_running()) {
- blinkled_stop();
+ /* If the service (being) disabled, stop it (if running) and do nothing else */
+ if (!($blinkled_config['enable'])) {
+ if (is_process_running("blinkled")) {
+ stop_service("blinkled");
+ }
+ return;
}
- /* if blinkled not running start it */
- if(!blinkled_running()) {
- blinkled_start();
+ /* Kill all instances of blinkled */
+ if (is_process_running("blinkled")) {
+ stop_service("blinkled");
}
- blinkled_rcfile();
+ start_service("blinkled");
}
function blinkled_launch($int, $led, $return = false) {
$cmd = "/usr/local/bin/blinkled -i " . escapeshellarg($int) . " -l " . escapeshellarg("/dev/led/led{$led}");
- if ($return)
+ if ($return) {
return $cmd;
- else
+ } else {
mwexec($cmd);
-}
-
-function blinkled_start() {
- global $config;
- $blinkled_config = $config['installedpackages']['blinkled']['config'][0];
- if (!($blinkled_config['enable']))
- return;
-
- if (($blinkled_config['enable_led2']) && ($blinkled_config['iface_led2']))
- blinkled_launch(convert_friendly_interface_to_real_interface_name($blinkled_config['iface_led2']), 2);
- if (($blinkled_config['enable_led3']) && ($blinkled_config['iface_led3']))
- blinkled_launch(convert_friendly_interface_to_real_interface_name($blinkled_config['iface_led3']), 3);
-}
-
-function blinkled_stop() {
- mwexec("/usr/bin/killall -9 blinkled");
+ }
}
function validate_form_blinkled($post, &$input_errors) {
/* Make sure both aren't using the same interface */
- if (($post['iface_led2']) && ($post['iface_led3']) &&
+ if (($post['iface_led2']) && ($post['iface_led3']) &&
(($post['enable_led2']) && ($post['enable_led3'])) &&
- ($post['iface_led2'] == $post['iface_led3']))
+ ($post['iface_led2'] == $post['iface_led3'])) {
$input_errors[] = 'You cannot set two LEDs for a single interface. Please choose seperate interfaces.';
+ }
}
?>
diff --git a/config/blinkled8/blinkled.xml b/config/blinkled8/blinkled.xml
index ec70f392..2502f3ff 100644
--- a/config/blinkled8/blinkled.xml
+++ b/config/blinkled8/blinkled.xml
@@ -1,8 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ====================================================================================== */
+/*
+ blinkled.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009-2012 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<title>Interfaces: Assign LEDs</title>
<name>blinkled</name>
- <version>0.4.1</version>
+ <version>0.4.5</version>
<savetext>Save</savetext>
<include_file>/usr/local/pkg/blinkled.inc</include_file>
<menu>
@@ -14,13 +55,12 @@
<additional_files_needed>
<item>https://packages.pfsense.org/packages/config/blinkled8/blinkled.inc</item>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
</additional_files_needed>
<service>
<name>blinkled</name>
<rcfile>blinkled.sh</rcfile>
<executable>blinkled</executable>
- <description>Blinks LEDs to indicate network activity</description>
+ <description>Network Activity LED Indicator Daemon</description>
</service>
<fields>
<field>
@@ -28,7 +68,7 @@
<fieldname>enable</fieldname>
<type>checkbox</type>
<enablefields>enable_led2,enable_led3,iface_led2,iface_led3</enablefields>
- <description>if this is enabled, it will use LED #2 and #3 to
+ <description>If this is enabled, it will use LED #2 and #3 to
indicate network activity. Be aware, however, that this will
possibly consume some system resources in the process.</description>
</field>
@@ -41,7 +81,7 @@
<fielddescr>Interface For LED #2</fielddescr>
<fieldname>iface_led2</fieldname>
<type>interfaces_selection</type>
- <description>Pick an interface to blink for activity on LED #2</description>
+ <description>Pick an interface to blink for activity on LED #2.</description>
</field>
<field>
<fielddescr>Enable LED #3</fielddescr>
@@ -52,7 +92,7 @@
<fielddescr>Interface For LED #3</fielddescr>
<fieldname>iface_led3</fieldname>
<type>interfaces_selection</type>
- <description>Pick an interface to blink for activity on LED #3</description>
+ <description>Pick an interface to blink for activity on LED #3.</description>
</field>
</fields>
<custom_php_validation_command>
diff --git a/config/darkstat/darkstat.sh b/config/darkstat/darkstat.sh
deleted file mode 100644
index a7706142..00000000
--- a/config/darkstat/darkstat.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-rc_start() {
- /usr/local/sbin/darkstat --detach
-}
-
-rc_stop() {
- killall darkstat
-}
-
-case $1 in
- start)
- rc_start
- ;;
- stop)
- rc_stop
- ;;
- restart)
- rc_stop
- rc_start
- ;;
-esac
diff --git a/config/darkstat/darkstat.xml b/config/darkstat/darkstat.xml
index 3263012b..d0b71cac 100644
--- a/config/darkstat/darkstat.xml
+++ b/config/darkstat/darkstat.xml
@@ -2,55 +2,50 @@
<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- authng.xml
- part of pfSense (http://www.pfSense.com)
- Copyright (C) 2007 to whom it may belong
- All rights reserved.
-
- Based on m0n0wall (http://m0n0.ch/wall)
- Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>.
- All rights reserved.
- */
-/* ========================================================================== */
+ darkstat.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009-2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-/* ========================================================================== */
- ]]>
- </copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>Darkstat</name>
- <version>3.0</version>
+ <version>3.1</version>
<title>Diagnostics: Darkstat</title>
<menu>
<name>Darkstat Settings</name>
- <tooltiptext>Setup darkstat specific settings</tooltiptext>
+ <tooltiptext>Setup darkstat specific settings.</tooltiptext>
<section>Diagnostics</section>
<url>/pkg_edit.php?xml=darkstat.xml&amp;id=0</url>
</menu>
@@ -60,6 +55,7 @@
<executable>darkstat</executable>
<description>Darkstat bandwidth monitoring daemon</description>
</service>
+ <configpath>installedpackages->package->$packagename->configuration->settings</configpath>
<tabs>
<tab>
<text>Darkstat Settings</text>
@@ -71,47 +67,348 @@
<url>http://$myurl:666</url>
</tab>
</tabs>
+ <advanced_options>enabled</advanced_options>
<fields>
<field>
- <fielddescr>Interface</fielddescr>
- <fieldname>interface_array</fieldname>
+ <fielddescr>Enable darkstat</fielddescr>
+ <fieldname>enable</fieldname>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Interface(s) to capture traffic on</fielddescr>
+ <fieldname>capture_interfaces</fieldname>
+ <description><![CDATA[
+ Capture traffic on the specified network interface(s).<br />
+ (Default is LAN.)
+ ]]>
+ </description>
<type>interfaces_selection</type>
+ <hideinterfaceregex>loopback</hideinterfaceregex>
<size>3</size>
+ <multiple>true</multiple>
<value>lan</value>
+ <required>true</required>
+ </field>
+ <field>
+ <fielddescr>Darkstat web interface should listen on</fielddescr>
+ <fieldname>bind_interfaces</fieldname>
+ <description>
+ <![CDATA[
+ Bind the web interface to IP address(es) of the specified interface(s).<br />
+ (The default is to listen on all interfaces.)
+ ]]>
+ </description>
+ <type>interfaces_selection</type>
+ <size>3</size>
<multiple>true</multiple>
</field>
- </fields>
+ <!-- Disabled until there is some way to handle the $myurl thing in the tabs/url tag above -->
+ <!--
+ <field>
+ <fielddescr>Port</fielddescr>
+ <fieldname>port</fieldname>
+ <description>
+ <![CDATA[
+ Bind the darkstat web interface to the specified port.<br />
+ <strong>WARNING: Do NOT set this to the same port where pfSense WebGUI is running (usually 80/443)!</strong><br />
+ (Default is 666.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>5</size>
+ </field>
+ -->
+ <field>
+ <fielddescr>Enable the "local network" feature</fielddescr>
+ <fieldname>localnetworkenable</fieldname>
+ <description>
+ <![CDATA[
+ All traffic entering or leaving this network will be graphed.<br />
+ (The default behaviour is to only graph traffic to and from the local host.)
+ ]]>
+ </description>
+ <type>checkbox</type>
+ <enablefields>localnetworkonly</enablefields>
+ <disablefields>localnetworkonly</disablefields>
+ </field>
+ <field>
+ <fielddescr>Make the web interface ONLY display hosts on the "local network"</fielddescr>
+ <fieldname>localnetworkonly</fieldname>
+ <description>
+ <![CDATA[
+ If the "local network" feature is enabled above, the web interface<br />
+ will only display hosts on the "local network" defined below.
+ ]]>
+ </description>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Define a "local network"</fielddescr>
+ <fieldname>localnetwork</fieldname>
+ <description>Traffic from/to the network/netmask of the selected interface will be considered as "local network".</description>
+ <type>interfaces_selection</type>
+ <hideinterfaceregex>(wan|loopback)</hideinterfaceregex>
+ </field>
+ <field>
+ <fielddescr>Do not use promiscuous mode to capture</fielddescr>
+ <fieldname>nopromisc</fieldname>
+ <description>
+ <![CDATA[
+ Note that an interface may already be in promiscuous mode,<br />
+ or may later enter promiscuous mode, due to circumstances beyond darkstat's control.<br />
+ <strong>This cannot be used when the "local network" feature is enabled above.</strong>
+ ]]>
+ </description>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Do not resolve IPs to host names</fielddescr>
+ <fieldname>nodns</fieldname>
+ <description>
+ <![CDATA[
+ This can significantly reduce memory footprint on small systems,<br />
+ as an extra process is created for DNS resolution.
+ ]]>
+ </description>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Do not display MAC addresses in the hosts table</fielddescr>
+ <fieldname>nomacs</fieldname>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Do not display the last seen time in the hosts table</fielddescr>
+ <fieldname>nolastseen</fieldname>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Maximum hosts count</fielddescr>
+ <fieldname>hostsmax</fieldname>
+ <description>
+ <![CDATA[
+ The maximum number of hosts that will be kept in the hosts table.<br />
+ This is used to limit how much accounting data will be kept in memory.<br />
+ (If filled in, the number must be greater than 'Maximum number of hosts to keep' below.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>5</size>
+ </field>
+ <field>
+ <fielddescr>Maximum number of hosts to keep</fielddescr>
+ <fieldname>hostskeep</fieldname>
+ <description>
+ <![CDATA[
+ When the hosts table hits 'Maximum hosts count' and traffic is seen from a new host,<br />
+ we clean out the hosts table, keeping only the top number of hosts, sorted by total traffic.<br />
+ (If filled in, the number must be lower than 'Maximum hosts count' above.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>5</size>
+ </field>
+ <field>
+ <fielddescr>Maximum ports count</fielddescr>
+ <fieldname>portsmax</fieldname>
+ <description>
+ <![CDATA[
+ The maximum number of ports that will be tracked for each host.<br />
+ This is used to limit how much accounting data will be kept in memory.<br />
+ (If filled in, the number must be greater than 'Maximum number of ports to keep' below.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>5</size>
+ </field>
+ <field>
+ <fielddescr>Maximum number of ports to keep</fielddescr>
+ <fieldname>portskeep</fieldname>
+ <description>
+ <![CDATA[
+ When a ports table fills up, this many ports are kept and the rest are discarded.<br />
+ (If filled in, the number must be lower than 'Maximum ports count' above.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>5</size>
+ </field>
+ <field>
+ <fielddescr>Advanced traffic filtering options</fielddescr>
+ <fieldname>advfilter</fieldname>
+ <description>
+ <![CDATA[
+ Use the specified filter expression when capturing traffic.<br /><br />
+ Example 1: We only want to account for SSH traffic.<br />
+ Filter expression: <em>port 22</em><br /><br />
+ Example 2: We don't want to account for traffic between internal IPs.<br />
+ Filter expression: <em>not (src net 192.168.0 and dst net 192.168.0)</em><br /><br />
+ NOTE: Filter syntax is beyond the scope of this description; please refer to
+ <a href="https://www.freebsd.org/cgi/man.cgi?query=tcpdump&amp;sektion=1&amp;apropos=0&amp;manpath=FreeBSD+10.1-RELEASE+and+Ports">tcpdump(1)</a>,
+ <a href="https://www.freebsd.org/cgi/man.cgi?query=pcap-filter&amp;sektion=7&amp;apropos=0&amp;manpath=FreeBSD+10.1-RELEASE+and+Ports">pcap-filter(7)</a>
+ and <a href="https://www.freebsd.org/cgi/man.cgi?query=darkstat&apropos=0&sektion=0&manpath=FreeBSD+10.1-RELEASE+and+Ports&arch=default&format=html">darkstat(8)</a>
+ documentation.<br />
+ <strong>WARNING: You are completely on your own with this! If misconfigured, darkstat will malfunction or even not start at all.</strong>
+ ]]>
+ </description>
+ <type>textarea</type>
+ <encoding>base64</encoding>
+ <cols>65</cols>
+ <rows>5</rows>
+ <advancedfield/>
+ </field>
+ </fields>
<custom_php_global_functions>
+ <![CDATA[
function sync_package_darkstat() {
- if (!is_array($_POST['interface_array']))
- return;
conf_mount_rw();
- $first = 0;
- foreach($_POST['interface_array'] as $iface) {
+ config_lock();
+ global $config, $darkstat_config;
+ $darkstat_config =& $config['installedpackages']['darkstat']['config'][0];
+
+ /* Configure capture interface(s) */
+ $capture_interfaces = $darkstat_config['capture_interfaces'] ?: 'lan';
+ foreach (explode(",", $capture_interfaces) as $iface) {
+ $if = convert_friendly_interface_to_real_interface_name($iface);
+ if ($if) {
+ $ifaces_final .= " -i {$if}";
+ }
+ }
+ $start = "/usr/local/sbin/darkstat {$ifaces_final}";
+
+ /* Configure bind interface(s) */
+ foreach (explode(",", $darkstat_config['bind_interfaces']) as $iface) {
$if = convert_friendly_interface_to_real_interface_name($iface);
- if($if) {
- $ifaces_final .= " -i " . $if;
- $first = 1;
+ $if = get_interface_ip("$iface");
+ if ($if) {
+ $bind_ifaces_final .= " -b {$if}";
+ }
+ }
+ $start .= "{$bind_ifaces_final}";
+
+ /* Configure darkstat webgui port
+ NOTE: This will be always be 666 for now, until the 'Port' field is re-enabled in darkstat.xml
+ */
+ $port = $darkstat_config['port'] ?: '666';
+ $start .= " -p {$port}";
+
+ /* Deal with the rest of configured options here */
+ $localnetworkenable = $darkstat_config['localnetworkenable'];
+ $lif = $darkstat_config['localnetwork'];
+ if ($localnetworkenable != "") {
+ if (is_ipaddrv4(get_interface_ip($lif))) {
+ $start .= " -l " . escapeshellarg(gen_subnet(get_interface_ip($lif), get_interface_subnet($lif)) . '/' . gen_subnet_mask(get_interface_subnet($lif)));
+ }
+ if ($darkstat_config['localnetworkonly'] != "") {
+ $start .= " --local-only";
}
}
- $start = "/usr/local/sbin/darkstat" . $ifaces_final . " -p 666 ";
+ if (($localnetworkenable == "") && ($darkstat_config['nopromisc'] != "")) {
+ $start .= " --no-promisc";
+ }
+ if ($darkstat_config['nodns'] != "") {
+ $start .= " --no-dns";
+ }
+ if ($darkstat_config['nomacs'] != "") {
+ $start .= " --no-macs";
+ }
+ if ($darkstat_config['nolastseen'] != "") {
+ $start .= " --no-lastseen";
+ }
+ $hostsmax = $darkstat_config['hostsmax'];
+ $hostskeep = $darkstat_config['hostskeep'];
+ if (($hostsmax > 0) && ($hostsmax > $hostskeep)) {
+ $start .= " --hosts-max {$hostsmax}";
+ }
+ if (($hostskeep > 0) && ($hostskeep < $hostsmax)) {
+ $start .= " --hosts-keep {$hostskeep}";
+ }
+ $portsmax = $darkstat_config['portsmax'];
+ $portskeep = $darkstat_config['portskeep'];
+ if (($portsmax > 0) && ($portsmax > $portskeep)) {
+ $start .= " --ports-max {$portsmax}";
+ }
+ if (($portskeep > 0) && ($portskeep < $portsmax)) {
+ $start .= " --ports-keep {$portskeep}";
+ }
+ $advfilter = $darkstat_config['advfilter'];
+ if ($advfilter != "") {
+ $start .= " -f " . escapeshellarg(base64_decode($advfilter));
+ }
+
write_rcfile(array(
"file" => "darkstat.sh",
"start" => $start,
"stop" => "/usr/bin/killall darkstat"
)
);
- start_service("darkstat");
+
+ /* If the service is (being) disabled, stop it (if running) and do nothing else */
+ if (!($darkstat_config['enable'])) {
+ if (is_process_running("darkstat")) {
+ stop_service("darkstat");
+ }
+ return;
+ } else {
+ restart_service("darkstat");
+ }
+
+ config_unlock();
conf_mount_ro();
}
+
+ function validate_input_darkstat($post, &$input_errors) {
+ if (($_POST['port']) && ($_POST['port'] < 1 || $_POST['port'] < 65535 || !is_numericint($_POST['port']))) {
+ $input_errors[] .= gettext("The value for 'Maximum number of ports' to keep' must be a positive integer between 1 and 65535.");
+ }
+ if (($_POST['hostsmax']) && ($_POST['hostsmax'] < 1 || !is_numericint($_POST['hostsmax']))) {
+ $input_errors[] = gettext("The value for 'Maximum hosts count' must be a positive integer.");
+ }
+ if (($_POST['hostskeep']) && ($_POST['hostskeep'] < 1 || !is_numericint($_POST['hostskeep']))) {
+ $input_errors[] .= gettext("The value for 'Maximum number of hosts to keep' must be a positive integer.");
+ }
+ if ($_POST['hostsmax'] || $_POST['hostskeep']) {
+ if ($_POST['hostsmax'] <= $_POST['hostskeep']) {
+ $input_errors[] .= gettext("'Maximum hosts count' must be greater than 'Maximum number of hosts to keep'.");
+ }
+ }
+ if (($_POST['portsmax']) && ($_POST['portsmax'] < 1 || !is_numericint($_POST['portsmax']))) {
+ $input_errors[] .= gettext("The value for 'Maximum ports count' must be a positive integer.");
+ }
+ if (($_POST['portskeep']) && ($_POST['portskeep'] < 1 || !is_numericint($_POST['portskeep']))) {
+ $input_errors[] .= gettext("The value for 'Maximum number of ports' to keep' must be a positive integer.");
+ }
+ if ($_POST['portsmax'] || $_POST['portskeep']) {
+ if ($_POST['portsmax'] <= $_POST['portskeep']) {
+ $input_errors[] .= gettext("'Maximum ports count' must be greater than 'Maximum number of ports to keep'.");
+ }
+ }
+ if ($_POST['localnetworkenable'] && $_POST['nopromisc'] != "") {
+ $input_errors[] .= gettext("'Do not use promiscuous mode to capture' cannot be used when the 'local network' feature is enabled.");
+ }
+ if ($_POST['localnetwork']) {
+ $int = convert_friendly_interface_to_real_interface_name($post['localnetwork']);
+ $ip = find_interface_ip($int);
+ if (!is_ipaddrv4($ip)) {
+ $input_errors[] .= gettext("The selected 'local network' interface has no IPv4 configured. Configured IPv4 is required.");
+ }
+ }
+ if (($post['advfilter']) && !preg_match("/^[a-zA-Z0-9\+\-\=\(\):. ]*$/", $post['advfilter'])) {
+ $input_errors[] .= gettext('Advanced traffic filtering options may only contain characters matching ^[a-zA-Z0-9\+\-\=\(\):. ]*$ regexp.');
+ }
+ }
+ ]]>
</custom_php_global_functions>
- <custom_add_php_command>
- sync_package_darkstat();
+ <custom_add_php_command>
+ sync_package_darkstat();
</custom_add_php_command>
<custom_php_resync_config_command>
sync_package_darkstat();
</custom_php_resync_config_command>
<custom_php_deinstall_command>
- exec("rm -f /usr/local/etc/rc.d/darkstat.sh");
+ unlink_if_exists("/usr/local/etc/rc.d/darkstat.sh");
</custom_php_deinstall_command>
+ <custom_php_validation_command>
+ validate_input_darkstat($_POST, $input_errors);
+ </custom_php_validation_command>
</packagegui>
diff --git a/config/filer/filer.inc b/config/filer/filer.inc
index 3a012dd2..7b795acb 100644
--- a/config/filer/filer.inc
+++ b/config/filer/filer.inc
@@ -44,7 +44,7 @@ function sync_package_filer() {
if ($config['installedpackages']['filer']['config'] != "") {
$count = 0;
foreach ($config['installedpackages']['filer']['config'] as $file) {
- if ($file['filedata']=="" && file_exists($file['fullfile'])) {
+ if ($file['filedata'] == "" && file_exists($file['fullfile'])) {
$config['installedpackages']['filer']['config'][$count]['filedata'] = base64_encode(file_get_contents($file['fullfile']));
$file['filedata'] = base64_encode(file_get_contents($file['fullfile']));
$update_conf++;
@@ -65,10 +65,10 @@ function sync_package_filer() {
switch ($file['background']) {
case "background":
mwexec_bg($file['cmd']);
- break;
+ break;
case "foreground":
mwexec($file['cmd']);
- break;
+ break;
}
}
}
@@ -90,13 +90,13 @@ function filer_validate_input($post, &$input_errors) {
continue;
}
if (substr($key, 0, 3) == "mod" && !preg_match("/^0?[0-7]{3}$/", $value)) {
- $input_errors[] = "{$value} is not valid permissions mode number.";
+ $input_errors[] = "{$value} is not valid permissions mode number.";
}
if (substr($key, 0, 11) == "description" && !preg_match("@^[a-zA-Z0-9 _/.-]+$@", $value)) {
- $input_errors[] = "Do not use special characters in description.";
+ $input_errors[] = "Do not use special characters in description.";
}
if (substr($key, 0, 8) == "fullfile" && !preg_match("@^[a-zA-Z0-9_/.-]+$@", $value)) {
- $input_errors[] = "Do not use special characters in filename.";
+ $input_errors[] = "Do not use special characters in filename.";
}
}
}
diff --git a/config/filer/filer.xml b/config/filer/filer.xml
index ab49bb21..57125927 100644
--- a/config/filer/filer.xml
+++ b/config/filer/filer.xml
@@ -44,7 +44,7 @@
]]>
</copyright>
<name>filer</name>
- <version>0.60.2</version>
+ <version>0.60.4</version>
<title>Filer</title>
<include_file>/usr/local/pkg/filer.inc</include_file>
<additional_files_needed>
@@ -84,14 +84,14 @@
<columnitem>
<fielddescr>Description</fielddescr>
<fieldname>description</fieldname>
- </columnitem>
+ </columnitem>
</adddeleteeditpagefields>
<fields>
<field>
<type>listtopic</type>
<fieldname>temp</fieldname>
<name>File configuration</name>
- </field>
+ </field>
<field>
<fielddescr>File</fielddescr>
<fieldname>fullfile</fieldname>
@@ -129,7 +129,7 @@
<type>listtopic</type>
<fieldname>temp</fieldname>
<name>Command to run after file save/sync.</name>
- </field>
+ </field>
<field>
<fielddescr>Script/Command</fielddescr>
<fieldname>cmd</fieldname>
@@ -142,7 +142,7 @@
<fielddescr>Execute mode</fielddescr>
<fieldname>background</fieldname>
<type>select</type>
- <options>
+ <options>
<option>
<name>Background (default)</name>
<value>background</value>
@@ -164,7 +164,7 @@
</custom_php_validation_command>
<custom_delete_php_command>
sync_package_filer();
- </custom_delete_php_command>
+ </custom_delete_php_command>
<custom_php_resync_config_command>
sync_package_filer();
</custom_php_resync_config_command>
diff --git a/config/iperf/iperf.xml b/config/iperf/iperf.xml
index 4312cf25..182d866b 100644
--- a/config/iperf/iperf.xml
+++ b/config/iperf/iperf.xml
@@ -1,52 +1,48 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- iperf.xml
- part of pfSense (http://www.pfSense.com)
- Copyright (C) 2007 to whom it may belong
- All rights reserved.
-
- Based on m0n0wall (http://m0n0.ch/wall)
- Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>.
- All rights reserved.
- */
-/* ========================================================================== */
+ iperf.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2015 Renato Botelho
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-/* ========================================================================== */
- ]]>
- </copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>iperf</name>
- <version>1.7.0</version>
+ <version>2.0.5.2</version>
<title>iperf: Client</title>
<preoutput>yes</preoutput>
<donotsave>true</donotsave>
@@ -57,10 +53,10 @@
<configfile>iperf.xml</configfile>
</menu>
<service>
- <name>iperf</name>
- <executable>iperf</executable>
+ <name>iperf</name>
+ <executable>iperf</executable>
<description>iperf network performance testing daemon/client</description>
- </service>
+ </service>
<tabs>
<tab>
<text>Client</text>
@@ -85,13 +81,13 @@
<field>
<fielddescr>Port</fielddescr>
<fieldname>port</fieldname>
- <description>Enter the port that iperf will connect to. (default 5001)</description>
+ <description>Enter the port that iperf will connect to. (Default is 5001.)</description>
<type>input</type>
</field>
<field>
<fielddescr>Protocol</fielddescr>
<fieldname>protocol</fieldname>
- <description>Choose whether to use TCP or UDP here. (default is TCP)</description>
+ <description>Choose whether to use TCP or UDP here. (Default is TCP.)</description>
<type>select</type>
<options>
<option>
@@ -107,7 +103,7 @@
<field>
<fielddescr>Output format</fielddescr>
<fieldname>format</fieldname>
- <description>Choose to display output in bits/sec or bytes/sec. (default is bits)</description>
+ <description>Choose to display output in bits/sec or bytes/sec. (Default is bits.)</description>
<type>select</type>
<options>
<option>
@@ -123,13 +119,13 @@
<field>
<fielddescr>Interval</fielddescr>
<fieldname>interval</fieldname>
- <description>Enter the desired interval between bandwidth, jitter and loss reports here. (default is 0 for no periodic reports)</description>
+ <description>Enter the desired interval between bandwidth, jitter and loss reports here. (Default is 0 for no periodic reports.)</description>
<type>input</type>
</field>
<field>
<fielddescr>Buffer length</fielddescr>
<fieldname>length</fieldname>
- <description>Enter the length of buffers to read or write here. (default 8KB for TCP, 1470B for UDP)</description>
+ <description>Enter the length of buffers to read or write here. (Default 8KB for TCP, 1470B for UDP.)</description>
<type>input</type>
</field>
<field>
@@ -141,21 +137,37 @@
<field>
<fielddescr>UDP Bandwidth</fielddescr>
<fieldname>udpbandwidth</fieldname>
- <description>Enter the UDP bandwidth to send at in bits/sec. (default is 1Mbit/sec)</description>
+ <description>Enter the UDP bandwidth to send at in bits/sec. (Default is 1Mbit/sec.)</description>
<type>input</type>
</field>
</fields>
<custom_add_php_command>
- mwexec("killall iperf");
+ <![CDATA[
+ mwexec("/usr/bin/killall iperf");
$iperf_options = "";
- if($_POST['protocol'] == "udp") $iperf_options .= " -u";
- if($_POST['format'] == "bytes") $iperf_options .= " -f A";
- if($_POST['interval'] != "") $iperf_options .= " -i " . escapeshellarg($_POST['interval']);
- if($_POST['length'] != "") $iperf_options .= " -l " . escapeshellarg($_POST['length']);
- if($_POST['window'] != "") $iperf_options .= " -w " . escapeshellarg($_POST['window']);
- if($_POST['udpbandwidth'] != "") $iperf_options .= " -b " . escapeshellarg($_POST['udpbandwidth']);
- if($_POST['port'] != "") $iperf_options .= " -p " . escapeshellarg($_POST['port']);
+ if ($_POST['protocol'] == "udp") {
+ $iperf_options .= " -u";
+ }
+ if ($_POST['format'] == "bytes") {
+ $iperf_options .= " -f A";
+ }
+ if ($_POST['interval'] != "") {
+ $iperf_options .= " -i " . escapeshellarg($_POST['interval']);
+ }
+ if ($_POST['length'] != "") {
+ $iperf_options .= " -l " . escapeshellarg($_POST['length']);
+ }
+ if ($_POST['window'] != "") {
+ $iperf_options .= " -w " . escapeshellarg($_POST['window']);
+ }
+ if ($_POST['udpbandwidth'] != "") {
+ $iperf_options .= " -b " . escapeshellarg($_POST['udpbandwidth']);
+ }
+ if ($_POST['port'] != "") {
+ $iperf_options .= " -p " . escapeshellarg($_POST['port']);
+ }
$iperf_options .= " -c " . escapeshellarg($_POST['hostname']);
system("/usr/local/bin/iperf" . $iperf_options);
+ ]]>
</custom_add_php_command>
</packagegui>
diff --git a/config/iperf/iperfserver.xml b/config/iperf/iperfserver.xml
index f0dc074a..524e8366 100644
--- a/config/iperf/iperfserver.xml
+++ b/config/iperf/iperfserver.xml
@@ -2,51 +2,47 @@
<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- iperfserver.xml
- part of pfSense (http://www.pfSense.com)
- Copyright (C) 2007 to whom it may belong
- All rights reserved.
-
- Based on m0n0wall (http://m0n0.ch/wall)
- Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>.
- All rights reserved.
- */
-/* ========================================================================== */
+ iperfserver.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2015 Renato Botelho
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-/* ========================================================================== */
- ]]>
- </copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>iperf</name>
- <version>1.7.0</version>
+ <version>2.0.5.2</version>
<title>iperf: Server</title>
<preoutput>yes</preoutput>
<donotsave>true</donotsave>
@@ -71,13 +67,13 @@
<field>
<fielddescr>Port</fielddescr>
<fieldname>port</fieldname>
- <description>Enter the port that iperf will listen for connections on. (default 5001)</description>
+ <description>Enter the port that iperf will listen for connections on. (Default is 5001.)</description>
<type>input</type>
</field>
<field>
<fielddescr>Protocol</fielddescr>
<fieldname>protocol</fieldname>
- <description>Choose whether to use TCP or UDP here. (default is TCP)</description>
+ <description>Choose whether to use TCP or UDP here. (Default is TCP.)</description>
<type>select</type>
<options>
<option>
@@ -93,7 +89,7 @@
<field>
<fielddescr>Output format</fielddescr>
<fieldname>format</fieldname>
- <description>Choose to display output in bits/sec or bytes/sec. (default is bits)</description>
+ <description>Choose to display output in bits/sec or bytes/sec. (Default is bits.)</description>
<type>select</type>
<options>
<option>
@@ -109,13 +105,13 @@
<field>
<fielddescr>Interval</fielddescr>
<fieldname>interval</fieldname>
- <description>Enter the desired interval between bandwidth, jitter and loss reports here. (default is 0 for no periodic reports)</description>
+ <description>Enter the desired interval between bandwidth, jitter and loss reports here. (Default is 0 for no periodic reports.)</description>
<type>input</type>
</field>
<field>
<fielddescr>Buffer length</fielddescr>
<fieldname>length</fieldname>
- <description>Enter the length of buffers to read or write here. (default 8KB for TCP, 1470B for UDP)</description>
+ <description>Enter the length of buffers to read or write here. (Default 8KB for TCP, 1470B for UDP.)</description>
<type>input</type>
</field>
<field>
@@ -126,16 +122,29 @@
</field>
</fields>
<custom_add_php_command>
- mwexec("killall iperf");
+ <![CDATA[
+ mwexec("/usr/bin/killall iperf");
$iperf_options = "";
- if($_POST['protocol'] == "udp") $iperf_options .= " -u";
- if($_POST['format'] == "bytes") $iperf_options .= " -f A";
- if($_POST['interval'] != "") $iperf_options .= " -i " . escapeshellarg($_POST['interval']);
- if($_POST['length'] != "") $iperf_options .= " -l " . escapeshellarg($_POST['length']);
- if($_POST['window'] != "") $iperf_options .= " -w " . escapeshellarg($_POST['window']);
- if($_POST['port'] != "") $iperf_options .= " -p " . escapeshellarg($_POST['port']);
+ if ($_POST['protocol'] == "udp") {
+ $iperf_options .= " -u";
+ }
+ if ($_POST['format'] == "bytes") {
+ $iperf_options .= " -f A";
+ }
+ if ($_POST['interval'] != "") {
+ $iperf_options .= " -i " . escapeshellarg($_POST['interval']);
+ }
+ if ($_POST['length'] != "") {
+ $iperf_options .= " -l " . escapeshellarg($_POST['length']);
+ }
+ if ($_POST['window'] != "") {
+ $iperf_options .= " -w " . escapeshellarg($_POST['window']);
+ }
+ if ($_POST['port'] != "") {
+ $iperf_options .= " -p " . escapeshellarg($_POST['port']);
+ }
$iperf_options .= " -s";
mwexec_bg("/usr/local/bin/iperf" . $iperf_options);
+ ]]>
</custom_add_php_command>
</packagegui>
-
diff --git a/config/lcdproc/lcdproc.inc b/config/lcdproc/lcdproc.inc
index d4b4856a..2251618c 100644
--- a/config/lcdproc/lcdproc.inc
+++ b/config/lcdproc/lcdproc.inc
@@ -39,7 +39,7 @@
} else {
define('LCDPROC_CONFIG','/usr/local/etc/LCDd.conf');
}
- define('LCDPROC_HOST','localhost');
+ define('LCDPROC_HOST','127.0.0.1');
define('LCDPROC_PORT','13666');
function lcdproc_notice ($msg) { syslog(LOG_NOTICE, "lcdproc: {$msg}"); }
diff --git a/config/notes/notes.inc b/config/notes/notes.inc
index f4bfe2cc..29b51396 100644
--- a/config/notes/notes.inc
+++ b/config/notes/notes.inc
@@ -3,10 +3,10 @@
/*
/* ========================================================================== */
/*
- notes.inc
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
+ notes.inc
+ Copyright (C) 2008 Mark J Crane
+ All rights reserved.
+*/
/* ========================================================================== */
/*
Redistribution and use in source and binary forms, with or without
@@ -31,61 +31,53 @@
POSSIBILITY OF SUCH DAMAGE.
*/
-function notes_sync_package()
-{
-
- //global $config;
+function notes_sync_package() {
+
+ //global $config;
}
-
-function notes_install_command()
-{
+
+function notes_install_command() {
global $config;
conf_mount_rw();
config_lock();
if (!is_dir('/usr/local/www/packages/')) {
- exec("mkdir /usr/local/www/packages/");
+ exec("mkdir /usr/local/www/packages/");
}
-
+
//if (!is_dir('/usr/local/www/packages/notes/')) {
// exec("mkdir /usr/local/www/packages/notes/");
//}
-
//rename PHP files from .tmp to .php
//exec("cp /tmp/notes.tmp /usr/local/www/packages/phpservice/notes.php");
//unlink_if_exists("/tmp/notes.tmp");
-
- //write_config();
+ //write_config();
-
//write_rcfile(array(
// "file" => "notes.sh",
// "start" => "/usr/local/bin/php /usr/local/pkg/notes.php",
// "stop" => "rm /tmp/phpmonitor.pid"
// )
//);
-
-
+
notes_sync_package();
-
- //if (pkg_is_service_running('notes')) {
+ //if (pkg_is_service_running('notes')) {
//documentation purposes
//}
conf_mount_ro();
config_unlock();
-
+
}
-function notes_deinstall_command()
-{
+function notes_deinstall_command() {
conf_mount_rw();
config_lock();
@@ -93,7 +85,7 @@ function notes_deinstall_command()
unlink_if_exists("/usr/local/pkg/notes.inc");
conf_mount_ro();
config_unlock();
-
+
}
?> \ No newline at end of file
diff --git a/config/notes/notes.xml b/config/notes/notes.xml
index 513bf922..34d2f676 100644
--- a/config/notes/notes.xml
+++ b/config/notes/notes.xml
@@ -2,46 +2,46 @@
<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
/* ========================================================================== */
/*
- notes.xml
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
+ notes.xml
+ Copyright (C) 2008 Mark J Crane
+ All rights reserved.
+*/
/* ========================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
/* ========================================================================== */
- ]]>
- </copyright>
- <description>Notes</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ ]]>
+ </copyright>
+ <description>Notes</description>
+ <requirements>Describe your package requirements here</requirements>
+ <faq>Currently there are no FAQ items provided.</faq>
<name>Notes</name>
- <version>0.2.3</version>
+ <version>0.2.5</version>
<title>Settings</title>
<include_file>/usr/local/pkg/notes.inc</include_file>
<menu>
@@ -56,24 +56,24 @@
<text>Settings</text>
<url>/pkg_edit.php?xml=notes.xml</url>
<active/>
- </tab>
+ </tab>
</tabs>
- <configpath>installedpackages->package->$packagename->configuration->notes</configpath>
+ <configpath>installedpackages->package->$packagename->configuration->notes</configpath>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
+ <chmod>0755</chmod>
<item>https://packages.pfsense.org/packages/config/notes/notes.inc</item>
</additional_files_needed>
<adddeleteeditpagefields>
<columnitem>
<fielddescr>Title</fielddescr>
<fieldname>title</fieldname>
- </columnitem>
+ </columnitem>
<columnitem>
<fielddescr>Category</fielddescr>
<fieldname>category</fieldname>
</columnitem>
- </adddeleteeditpagefields>
+ </adddeleteeditpagefields>
<fields>
<field>
<fielddescr>Title</fielddescr>
@@ -86,7 +86,7 @@
<fieldname>category</fieldname>
<description>Enter a category.</description>
<type>input</type>
- </field>
+ </field>
<field>
<fielddescr>&lt;b&gt;Notes&lt;/b&gt; &lt;br /&gt; &lt;br /&gt;</fielddescr>
<fieldname>notes</fieldname>
@@ -94,16 +94,16 @@
<type>textarea</type>
<encoding>base64</encoding>
<size>30</size>
- <cols>70</cols>
+ <cols>70</cols>
<rows>20</rows>
</field>
- </fields>
+ </fields>
<custom_add_php_command>
</custom_add_php_command>
<custom_php_resync_config_command>
notes_sync_package();
</custom_php_resync_config_command>
- <custom_delete_php_command>
+ <custom_delete_php_command>
notes_sync_package();
</custom_delete_php_command>
<custom_php_install_command>
diff --git a/config/nrpe2/nrpe2.inc b/config/nrpe2/nrpe2.inc
index 7d541e6b..b5e6a7d9 100644
--- a/config/nrpe2/nrpe2.inc
+++ b/config/nrpe2/nrpe2.inc
@@ -1,42 +1,49 @@
<?php
-
-/**
- * Author: Erik Kristensen
- * Email: erik@erikkristensen.com
- *
- * Developed for: pfSense.com
- *
- * Copyright (c) 2009, pfSense.com
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in thedocumentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
+/*
+ nrpe2.inc
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 Erik Kristensen <erik@erikkristensen.com>
+ Copyright (C) 2011-2013 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
require_once('filter.inc');
-$pfs_version = substr(trim(file_get_contents("/etc/version")),0,3);
+global $pfs_version;
+$pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
-if ($pfs_version == "2.0") {
- define('NRPE_BASE', '/usr/local');
-} else {
+if ($pfs_version == "2.1" || $pfs_version == "2.2") {
define('NRPE_BASE', '/usr/pbi/nrpe-' . php_uname("m"));
+} else {
+ define('NRPE_BASE', '/usr/local');
}
-if ($pfs_version == "2.1")
+if ($pfs_version == "2.1") {
define('NRPE_BINARY', NRPE_BASE . "/sbin/nrpe2");
-else
+} else {
define('NRPE_BINARY', "/usr/local/sbin/nrpe2");
+}
define('NRPE_CONFIG_DIR', NRPE_BASE . '/etc');
define('NRPE_RCFILE', '/usr/local/etc/rc.d/nrpe2.sh');
@@ -202,22 +209,21 @@ connection_timeout=300
{$commands}
EOD;
if (defined($config['installedpackages']['nrpe2']['config'][0]['server_address'])) {
- $server_address = $config['installedpackages']['nrpe2']['config'][0]['server_address'];
- $nrpe_cfg .= "server_address={$server_address}";
- }
+ $server_address = $config['installedpackages']['nrpe2']['config'][0]['server_address'];
+ $nrpe_cfg .= "server_address={$server_address}";
+ }
fwrite($fd, $nrpe_cfg);
fclose($fd);
conf_mount_ro();
}
function nrpe2_custom_php_service() {
- global $g, $config;
+ global $config;
if ($config['installedpackages']['nrpe2']['config'][0]['enabled'] == "on") {
- exec(NRPE_RCFILE . " restart");
- }
- else {
- exec(NRPE_RCFILE . " stop");
+ restart_service("nrpe2");
+ } else {
+ stop_service("nrpe2");
}
}
diff --git a/config/nrpe2/nrpe2.xml b/config/nrpe2/nrpe2.xml
index 8d6f0b09..1204e8ec 100644
--- a/config/nrpe2/nrpe2.xml
+++ b/config/nrpe2/nrpe2.xml
@@ -1,9 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ====================================================================================== */
+/*
+ nrpe2.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 Erik Kristensen
+ Copyright (C) 2011-2013 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<description>Nagios NRPEv2</description>
- <requirements>Describe your package requirements here</requirements>
<name>nrpe2</name>
- <version>2.2</version>
+ <version>2.2.1</version>
<title>NRPEv2</title>
<aftersaveredirect>/pkg_edit.php?xml=nrpe2.xml&amp;id=0</aftersaveredirect>
<include_file>/usr/local/pkg/nrpe2.inc</include_file>
@@ -22,7 +63,6 @@
<configpath>installedpackages->package->nrpe2</configpath>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <chmod>077</chmod>
<item>https://packages.pfsense.org/packages/config/nrpe2/nrpe2.inc</item>
</additional_files_needed>
<fields>
@@ -34,7 +74,7 @@
<field>
<fielddescr>Enabled</fielddescr>
<fieldname>enabled</fieldname>
- <description>Check this to enable NRPE daemon</description>
+ <description>Check this to enable NRPE daemon.</description>
<type>checkbox</type>
</field>
<field>
@@ -52,20 +92,20 @@
<field>
<fielddescr>Bind IP Address</fielddescr>
<fieldname>server_address</fieldname>
- <description>Set this to the IP address of the interface you want the daemon to listen on. (optional)</description>
+ <description>Set this to the IP address of the interface you want the daemon to listen on. (Optional)</description>
<type>input</type>
</field>
<field>
<fielddescr>Nagios Server(s)</fielddescr>
<fieldname>allowed_hosts</fieldname>
- <description>IP Address of Nagios server, usualy a single IP, but if multiple delimit by comma</description>
+ <description>IP Address of Nagios server. Usually a single IP; multiple IPs must be delimited by comma.</description>
<type>input</type>
<required/>
</field>
<field>
<fielddescr>Allow Arguments (dont_blame_nrpe)</fielddescr>
<fieldname>dont_blame_nrpe</fieldname>
- <description>Check this to enable accept NRPE arguments (Default: 0)</description>
+ <description>Check this to enable accept NRPE arguments. (Default: 0)</description>
<type>checkbox</type>
</field>
@@ -118,7 +158,7 @@
<rowhelperfield>
<fielddescr>Extra Options (Example: -s Z \$ARG1\$ \$ARG2\$)</fielddescr>
<fieldname>extra</fieldname>
- <description>Warning! Use at your own risk, incorrect settings here may prevent NRPE from starting!</description>
+ <description><![CDATA[<strong>Warning! Use at your own risk, incorrect settings here may prevent NRPE from starting!</strong>]]></description>
<type>input</type>
<size>25</size>
</rowhelperfield>
diff --git a/config/nut/nut.inc b/config/nut/nut.inc
index dae2269e..578bb82f 100644
--- a/config/nut/nut.inc
+++ b/config/nut/nut.inc
@@ -126,7 +126,7 @@
if (!$post['remotename']) {
$input_errors[] = 'You must specify a name in the \'Remote UPS Name\' field';
}
- if ($post['remotename'] && !preg_match("/^[a-zA-Z0-9-_]+$/", $post['name'])) {
+ if ($post['remotename'] && !preg_match("/^[a-zA-Z0-9-_]+$/", $post['remotename'])) {
$input_errors[] = 'Only [Aa-Zz], [0-9], and [-_] accepted in the \'Remote UPS Name\' field';
}
if (!$post['remoteaddr'] || !is_ipaddr($post['remoteaddr'])) {
diff --git a/config/openvpn-client-export/openvpn-client-export.inc b/config/openvpn-client-export/openvpn-client-export.inc
index 979c5f1b..963a2604 100755
--- a/config/openvpn-client-export/openvpn-client-export.inc
+++ b/config/openvpn-client-export/openvpn-client-export.inc
@@ -40,8 +40,8 @@ require_once("util.inc");
require_once("pfsense-utils.inc");
global $current_openvpn_version, $current_openvpn_version_rev;
-$current_openvpn_version = "2.3.6";
-$current_openvpn_version_rev = "03";
+$current_openvpn_version = "2.3.8";
+$current_openvpn_version_rev = "01";
function openvpn_client_export_install() {
global $current_openvpn_version;
@@ -90,10 +90,10 @@ function openvpn_client_export_prefix($srvid, $usrid = null, $crtid = null) {
$host = empty($config['system']['hostname']) ? "openvpn" : $config['system']['hostname'];
$prot = ($settings['protocol'] == 'UDP' ? 'udp' : $settings['protocol']);
$port = $settings['local_port'];
-
+
$filename_addition = "";
if ($usrid && is_numeric($usrid)) {
- $filename_addition = "-".$config['system']['user'][$usrid]['name'];
+ $filename_addition = "-" . $config['system']['user'][$usrid]['name'];
} elseif ($crtid && is_numeric($crtid) && function_exists("cert_get_cn")) {
$filename_addition = "-" . str_replace(' ', '_', cert_get_cn($config['cert'][$crtid]['crt']));
}
@@ -185,9 +185,9 @@ function openvpn_client_export_validate_config($srvid, $usrid, $crtid) {
return array($settings, $server_cert, $server_ca, $servercn, $user, $cert, $nokeys);
}
-function openvpn_client_export_config($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, $nokeys = false, $proxy, $expformat = "baseconf", $outpass = "", $skiptls=false, $doslines=false, $openvpnmanager, $advancedoptions = "") {
+function openvpn_client_export_config($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, $nokeys = false, $proxy, $expformat = "baseconf", $outpass = "", $skiptls = false, $doslines = false, $openvpnmanager, $advancedoptions = "") {
global $config, $input_errors, $g;
- $pfs_version = substr(trim(file_get_contents("/etc/version")),0,3);
+ $pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
$nl = ($doslines) ? "\r\n" : "\n";
$conf = "";
@@ -374,7 +374,7 @@ function openvpn_client_export_config($srvid, $usrid, $crtid, $useaddr, $verifys
$conf .= "management-forget-disconnect{$nl}";
$conf .= $nl;
};
-
+
// add advanced options
$advancedoptions = str_replace("\r\n", "\n", $advancedoptions);
$advancedoptions = str_replace("\n", $nl, $advancedoptions);
@@ -668,12 +668,13 @@ function viscosity_openvpn_client_config_exporter($srvid, $usrid, $crtid, $usead
}
$conf = openvpn_client_export_config($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, true, $proxy, "baseconf", $outpass, true, true, $openvpnmanager, $advancedoptions);
- if (!$conf)
+ if (!$conf) {
return false;
+ }
// We need to nuke the ca line from the above config if it exists.
$conf = explode("\n", $conf);
- for ($i=0; $i < count($conf); $i++) {
+ for ($i = 0; $i < count($conf); $i++) {
if ((substr($conf[$i], 0, 3) == "ca ") || (substr($conf[$i], 0, 7) == "pkcs12 ")) {
unset($conf[$i]);
}
@@ -866,10 +867,11 @@ function openvpn_client_export_sharedkey_config($srvid, $useaddr, $proxy, $zipco
$shkeyfile = "{$tempdir}/{$shkeyfile}";
file_put_contents("{$shkeyfile}", base64_decode($settings['shared_key']));
- if(file_exists("/usr/pbi/zip-{$uname_p}/bin/zip"))
+ if (file_exists("/usr/pbi/zip-{$uname_p}/bin/zip")) {
exec("cd {$tempdir}/.. && /usr/pbi/zip-{$uname_p}/bin/zip -r {$g['tmp_path']}/{$prefix}-config.zip {$prefix}");
- else
+ } else {
exec("cd {$tempdir}/.. && /usr/local/bin/zip -r {$g['tmp_path']}/{$prefix}-config.zip {$prefix}");
+ }
// Remove temporary directory
exec("rm -rf {$tempdir}");
@@ -952,7 +954,7 @@ function openvpn_client_export_find_port_forwards($targetip, $targetport, $targe
}
$dstaddr = trim(filter_generate_address($natent, 'destination', true));
- if(!$dstaddr) {
+ if (!$dstaddr) {
$dstaddr = $FilterIflist[$natif]['ip'];
}
diff --git a/config/openvpn-client-export/openvpn-client-export.xml b/config/openvpn-client-export/openvpn-client-export.xml
index a9630730..1a150dc5 100755
--- a/config/openvpn-client-export/openvpn-client-export.xml
+++ b/config/openvpn-client-export/openvpn-client-export.xml
@@ -44,7 +44,7 @@
]]>
</copyright>
<name>OpenVPN Client Export</name>
- <version>1.2.17</version>
+ <version>1.2.19</version>
<title>OpenVPN Client Export</title>
<include_file>/usr/local/pkg/openvpn-client-export.inc</include_file>
<tabs>
@@ -65,7 +65,7 @@
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <item>https://files.pfsense.org/packages/openvpn-client-export/openvpn-client-export-2.3.6.tgz</item>
+ <item>https://files.pfsense.org/packages/openvpn-client-export/openvpn-client-export-2.3.8.tgz</item>
<do_not_add_to_port/>
</additional_files_needed>
<additional_files_needed>
diff --git a/config/openvpn-client-export/vpn_openvpn_export.php b/config/openvpn-client-export/vpn_openvpn_export.php
index a445e986..246e7421 100755
--- a/config/openvpn-client-export/vpn_openvpn_export.php
+++ b/config/openvpn-client-export/vpn_openvpn_export.php
@@ -40,40 +40,48 @@ global $current_openvpn_version, $current_openvpn_version_rev;
$pgtitle = array("OpenVPN", "Client Export Utility");
-if (!is_array($config['openvpn']['openvpn-server']))
+if (!is_array($config['openvpn']['openvpn-server'])) {
$config['openvpn']['openvpn-server'] = array();
+}
$a_server = $config['openvpn']['openvpn-server'];
-if (!is_array($config['system']['user']))
+if (!is_array($config['system']['user'])) {
$config['system']['user'] = array();
+}
$a_user = $config['system']['user'];
-if (!is_array($config['cert']))
+if (!is_array($config['cert'])) {
$config['cert'] = array();
+}
$a_cert = $config['cert'];
$ras_server = array();
-foreach($a_server as $sindex => $server) {
- if (isset($server['disable']))
+foreach ($a_server as $sindex => $server) {
+ if (isset($server['disable'])) {
continue;
+ }
$ras_user = array();
$ras_certs = array();
- if (stripos($server['mode'], "server") === false)
+ if (stripos($server['mode'], "server") === false) {
continue;
+ }
if (($server['mode'] == "server_tls_user") && ($server['authmode'] == "Local Database")) {
- foreach($a_user as $uindex => $user) {
- if (!is_array($user['cert']))
+ foreach ($a_user as $uindex => $user) {
+ if (!is_array($user['cert'])) {
continue;
- foreach($user['cert'] as $cindex => $cert) {
+ }
+ foreach ($user['cert'] as $cindex => $cert) {
// If $cert is not an array, it's a certref not a cert.
- if (!is_array($cert))
+ if (!is_array($cert)) {
$cert = lookup_cert($cert);
+ }
- if ($cert['caref'] != $server['caref'])
+ if ($cert['caref'] != $server['caref']) {
continue;
+ }
$ras_userent = array();
$ras_userent['uindex'] = $uindex;
$ras_userent['cindex'] = $cindex;
@@ -83,9 +91,10 @@ foreach($a_server as $sindex => $server) {
}
}
} elseif (($server['mode'] == "server_tls") || (($server['mode'] == "server_tls_user") && ($server['authmode'] != "Local Database"))) {
- foreach($a_cert as $cindex => $cert) {
- if (($cert['caref'] != $server['caref']) || ($cert['refid'] == $server['certref']))
+ foreach ($a_cert as $cindex => $cert) {
+ if (($cert['caref'] != $server['caref']) || ($cert['refid'] == $server['certref'])) {
continue;
+ }
$ras_cert_entry['cindex'] = $cindex;
$ras_cert_entry['certname'] = $cert['descr'];
$ras_cert_entry['certref'] = $cert['refid'];
@@ -96,10 +105,11 @@ foreach($a_server as $sindex => $server) {
$ras_serverent = array();
$prot = $server['protocol'];
$port = $server['local_port'];
- if ($server['description'])
+ if ($server['description']) {
$name = "{$server['description']} {$prot}:{$port}";
- else
+ } else {
$name = "Server {$prot}:{$port}";
+ }
$ras_serverent['index'] = $sindex;
$ras_serverent['name'] = $name;
$ras_serverent['users'] = $ras_user;
@@ -109,12 +119,14 @@ foreach($a_server as $sindex => $server) {
}
$id = $_GET['id'];
-if (isset($_POST['id']))
+if (isset($_POST['id'])) {
$id = $_POST['id'];
+}
$act = $_GET['act'];
-if (isset($_POST['act']))
+if (isset($_POST['act'])) {
$act = $_POST['act'];
+}
if (!empty($act)) {
@@ -125,19 +137,21 @@ if (!empty($act)) {
pfSenseHeader("vpn_openvpn_export.php");
exit;
} else if (($config['openvpn']['openvpn-server'][$srvid]['mode'] != "server_user") &&
- (($usrid === false) || ($crtid === false))) {
+ (($usrid === false) || ($crtid === false))) {
pfSenseHeader("vpn_openvpn_export.php");
exit;
}
- if ($config['openvpn']['openvpn-server'][$srvid]['mode'] == "server_user")
+ if ($config['openvpn']['openvpn-server'][$srvid]['mode'] == "server_user") {
$nokeys = true;
- else
+ } else {
$nokeys = false;
+ }
$useaddr = '';
- if (isset($_GET['useaddr']) && !empty($_GET['useaddr']))
+ if (isset($_GET['useaddr']) && !empty($_GET['useaddr'])) {
$useaddr = trim($_GET['useaddr']);
+ }
if (!(is_ipaddr($useaddr) || is_hostname($useaddr) ||
in_array($useaddr, array("serveraddr", "servermagic", "servermagichost", "serverhostname")))) {
@@ -192,10 +206,10 @@ if (!empty($act)) {
$exp_name = openvpn_client_export_prefix($srvid, $usrid, $crtid);
- if(substr($act, 0, 4) == "conf") {
+ if (substr($act, 0, 4) == "conf") {
switch ($act) {
case "confzip":
- $exp_name = urlencode($exp_name."-config.zip");
+ $exp_name = urlencode($exp_name . "-config.zip");
$expformat = "zip";
break;
case "conf_yealink_t28":
@@ -215,30 +229,30 @@ if (!empty($act)) {
$expformat = "snom";
break;
case "confinline":
- $exp_name = urlencode($exp_name."-config.ovpn");
+ $exp_name = urlencode($exp_name . "-config.ovpn");
$expformat = "inline";
break;
case "confinlinedroid":
- $exp_name = urlencode($exp_name."-android-config.ovpn");
+ $exp_name = urlencode($exp_name . "-android-config.ovpn");
$expformat = "inlinedroid";
break;
case "confinlineios":
- $exp_name = urlencode($exp_name."-ios-config.ovpn");
+ $exp_name = urlencode($exp_name . "-ios-config.ovpn");
$expformat = "inlineios";
break;
default:
- $exp_name = urlencode($exp_name."-config.ovpn");
+ $exp_name = urlencode($exp_name . "-config.ovpn");
$expformat = "baseconf";
}
$exp_path = openvpn_client_export_config($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, $nokeys, $proxy, $expformat, $password, false, false, $openvpnmanager, $advancedoptions);
}
- if($act == "visc") {
- $exp_name = urlencode($exp_name."-Viscosity.visc.zip");
+ if ($act == "visc") {
+ $exp_name = urlencode($exp_name . "-Viscosity.visc.zip");
$exp_path = viscosity_openvpn_client_config_exporter($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, $password, $proxy, $openvpnmanager, $advancedoptions);
}
- if(substr($act, 0, 4) == "inst") {
+ if (substr($act, 0, 4) == "inst") {
$exp_name = urlencode($exp_name."-install.exe");
$exp_path = openvpn_client_export_installer($srvid, $usrid, $crtid, $useaddr, $verifyservercn, $randomlocalport, $usetoken, $password, $proxy, $openvpnmanager, $advancedoptions, substr($act, 5));
}
@@ -316,8 +330,9 @@ function download_begin(act, i, j) {
return;
}
useaddr = document.getElementById("useaddr_hostname").value;
- } else
+ } else {
useaddr = document.getElementById("useaddr").value;
+ }
advancedoptions = document.getElementById("advancedoptions").value;
@@ -325,21 +340,25 @@ function download_begin(act, i, j) {
verifyservercn = document.getElementById("verifyservercn").value;
var randomlocalport = 0;
- if (document.getElementById("randomlocalport").checked)
+ if (document.getElementById("randomlocalport").checked) {
randomlocalport = 1;
+ }
var usetoken = 0;
- if (document.getElementById("usetoken").checked)
+ if (document.getElementById("usetoken").checked) {
usetoken = 1;
+ }
var usepass = 0;
- if (document.getElementById("usepass").checked)
+ if (document.getElementById("usepass").checked) {
usepass = 1;
+ }
var openvpnmanager = 0;
- if (document.getElementById("openvpnmanager").checked)
+ if (document.getElementById("openvpnmanager").checked) {
openvpnmanager = 1;
+ }
var pass = document.getElementById("pass").value;
var conf = document.getElementById("conf").value;
- if (usepass && (act.substring(0,4) == "inst")) {
+ if (usepass && (act.substring(0, 4) == "inst")) {
if (!pass || !conf) {
alert("The password or confirm field is empty");
return;
@@ -352,8 +371,9 @@ function download_begin(act, i, j) {
var useproxy = 0;
var useproxypass = 0;
- if (document.getElementById("useproxy").checked)
+ if (document.getElementById("useproxy").checked) {
useproxy = 1;
+ }
var proxyaddr = document.getElementById("proxyaddr").value;
var proxyport = document.getElementById("proxyport").value;
@@ -363,8 +383,9 @@ function download_begin(act, i, j) {
return;
}
- if (document.getElementById("useproxypass").value != 'none')
+ if (document.getElementById("useproxypass").value != 'none') {
useproxypass = 1;
+ }
var proxytype = document.getElementById("useproxytype").value;
@@ -404,8 +425,9 @@ function download_begin(act, i, j) {
dlurl += "&randomlocalport=" + escape(randomlocalport);
dlurl += "&openvpnmanager=" + escape(openvpnmanager);
dlurl += "&usetoken=" + escape(usetoken);
- if (usepass)
+ if (usepass) {
dlurl += "&password=" + escape(pass);
+ }
if (useproxy) {
dlurl += "&proxy_type=" + escape(proxytype);
dlurl += "&proxy_addr=" + escape(proxyaddr);
@@ -419,19 +441,20 @@ function download_begin(act, i, j) {
dlurl += "&advancedoptions=" + escape(advancedoptions);
- window.open(dlurl,"_self");
+ window.open(dlurl, "_self");
}
function server_changed() {
var table = document.getElementById("users");
- while (table.rows.length > 1 )
+ while (table.rows.length > 1 ) {
table.deleteRow(1);
+ }
var index = document.getElementById("server").selectedIndex;
var users = servers[index][1];
var certs = servers[index][3];
- for (i=0; i < users.length; i++) {
+ for (i = 0; i < users.length; i++) {
var row = table.insertRow(table.rows.length);
var cell0 = row.insertCell(0);
var cell1 = row.insertCell(1);
@@ -462,11 +485,11 @@ function server_changed() {
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x86-win6\"," + i + ", -1)'>x86-win6<\/a>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x64-win6\"," + i + ", -1)'>x64-win6<\/a>";
- cell2.innerHTML += "<br\/>- Mac OSX:<br\/>";
+ cell2.innerHTML += "<br\/>- Mac OS X:<br\/>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"visc\"," + i + ", -1)'>Viscosity Bundle<\/a>";
}
- for (j=0; j < certs.length; j++) {
+ for (j = 0; j < certs.length; j++) {
var row = table.insertRow(table.rows.length);
var cell0 = row.insertCell(0);
var cell1 = row.insertCell(1);
@@ -501,7 +524,7 @@ function server_changed() {
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x86-win6\", -1," + j + ")'>x86-win6<\/a>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x64-win6\", -1," + j + ")'>x64-win6<\/a>";
- cell2.innerHTML += "<br\/>- Mac OSX:<br\/>";
+ cell2.innerHTML += "<br\/>- Mac OS X:<br\/>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"visc\", -1," + j + ")'>Viscosity Bundle<\/a>";
if (servers[index][2] == "server_tls") {
@@ -547,7 +570,7 @@ function server_changed() {
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x86-win6\"," + i + ")'>x86-win6<\/a>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"inst-x64-win6\"," + i + ")'>x64-win6<\/a>";
- cell2.innerHTML += "<br\/>- Mac OSX:<br\/>";
+ cell2.innerHTML += "<br\/>- Mac OS X:<br\/>";
cell2.innerHTML += "&nbsp;&nbsp; ";
cell2.innerHTML += "<a href='javascript:download_begin(\"visc\"," + i + ")'>Viscosity Bundle<\/a>";
}
@@ -555,25 +578,27 @@ function server_changed() {
function useaddr_changed(obj) {
- if (obj.value == "other")
+ if (obj.value == "other") {
$('HostName').show();
- else
+ } else {
$('HostName').hide();
+ }
}
function usepass_changed() {
- if (document.getElementById("usepass").checked)
+ if (document.getElementById("usepass").checked) {
document.getElementById("usepass_opts").style.display = "";
- else
+ } else {
document.getElementById("usepass_opts").style.display = "none";
+ }
}
function useproxy_changed(obj) {
if ((obj.id == "useproxy" && obj.checked) ||
- (obj.id == "useproxypass" && (obj.value != 'none'))) {
+ (obj.id == "useproxypass" && (obj.value != 'none'))) {
$(obj.id + '_opts').show();
} else {
$(obj.id + '_opts').hide();
@@ -590,7 +615,7 @@ function useproxy_changed(obj) {
}
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="openvpn export">
- <tr>
+ <tr>
<td>
<?php
$tab_array = array();
@@ -612,7 +637,7 @@ function useproxy_changed(obj) {
<td width="22%" valign="top" class="vncellreq">Remote Access Server</td>
<td width="78%" class="vtable">
<select name="server" id="server" class="formselect" onchange="server_changed()">
- <?php foreach($ras_server as & $server): ?>
+ <?php foreach ($ras_server as & $server): ?>
<option value="<?=$server['index'];?>"><?=$server['name'];?></option>
<?php endforeach; ?>
</select>
@@ -914,8 +939,8 @@ function useproxy_changed(obj) {
<br/><a href="https://play.google.com/store/apps/details?id=de.blinkt.openvpn"><?= gettext("OpenVPN For Android") ?></a> - <?=gettext("Recommended client for Android")?>
<br/><a href="http://www.featvpn.com/"><?= gettext("FEAT VPN For Android") ?></a> - <?=gettext("For older versions of Android")?>
<br/><?= gettext("OpenVPN Connect") ?>: <a href="https://play.google.com/store/apps/details?id=net.openvpn.openvpn"><?=gettext("Android (Google Play)")?></a> or <a href="https://itunes.apple.com/us/app/openvpn-connect/id590379981"><?=gettext("iOS (App Store)")?></a> - <?= gettext("Recommended client for iOS") ?>
- <br/><a href="http://www.sparklabs.com/viscosity/"><?= gettext("Viscosity") ?></a> - <?= gettext("Recommended client for Mac OSX") ?>
- <br/><a href="http://code.google.com/p/tunnelblick/"><?= gettext("Tunnelblick") ?></a> - <?= gettext("Free client for OSX") ?>
+ <br/><a href="https://www.sparklabs.com/viscosity/"><?= gettext("Viscosity") ?></a> - <?= gettext("Recommended client for Mac OS X") ?>
+ <br/><a href="https://tunnelblick.net"><?= gettext("Tunnelblick") ?></a> - <?= gettext("Free client for OS X") ?>
</td>
</tr>
</table>
diff --git a/config/openvpn-client-export/vpn_openvpn_export_shared.php b/config/openvpn-client-export/vpn_openvpn_export_shared.php
index 630bb253..5810e97b 100644
--- a/config/openvpn-client-export/vpn_openvpn_export_shared.php
+++ b/config/openvpn-client-export/vpn_openvpn_export_shared.php
@@ -1,22 +1,22 @@
-<?php
+<?php
/*
vpn_openvpn_export_shared.php
part of pfSense (http://www.pfSense.org)
Copyright (C) 2008 Shrew Soft Inc.
Copyright (C) 2010 Ermal Luçi
Copyright (C) 2011-2015 ESF, LLC
- All rights reserved.
+ All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
-
+
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
-
+
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
-
+
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
@@ -44,7 +44,7 @@ if (!is_array($config['openvpn']['openvpn-server'])) {
$a_server = $config['openvpn']['openvpn-server'];
$ras_server = array();
-foreach($a_server as $sindex => $server) {
+foreach ($a_server as $sindex => $server) {
if (isset($server['disable'])) {
continue;
}
@@ -57,8 +57,7 @@ foreach($a_server as $sindex => $server) {
$port = $server['local_port'];
if ($server['description']) {
$name = "{$server['description']} {$prot}:{$port}";
- }
- else {
+ } else {
$name = "Shared Key Server {$prot}:{$port}";
}
$ras_serverent['index'] = $sindex;
@@ -79,7 +78,7 @@ if (isset($_POST['act'])) {
$error = false;
-if(($act == "skconf") || ($act == "skzipconf")) {
+if (($act == "skconf") || ($act == "skzipconf")) {
$srvid = $_GET['srvid'];
if (($srvid === false) || ($config['openvpn']['openvpn-server'][$srvid]['mode'] != "p2p_shared_key")) {
pfSenseHeader("vpn_openvpn_export.php");
@@ -189,13 +188,15 @@ function download_begin(act) {
return;
}
useaddr = document.getElementById("useaddr_hostname").value;
- } else
+ } else {
useaddr = document.getElementById("useaddr").value;
+ }
var useproxy = 0;
var useproxypass = 0;
- if (document.getElementById("useproxy").checked)
+ if (document.getElementById("useproxy").checked) {
useproxy = 1;
+ }
var proxyaddr = document.getElementById("proxyaddr").value;
var proxyport = document.getElementById("proxyport").value;
@@ -205,8 +206,9 @@ function download_begin(act) {
return;
}
- if (document.getElementById("useproxypass").value != 'none')
+ if (document.getElementById("useproxypass").value != 'none') {
useproxypass = 1;
+ }
var proxytype = document.getElementById("useproxytype").value;
@@ -245,14 +247,15 @@ function download_begin(act) {
}
}
- window.open(dlurl,"_self");
+ window.open(dlurl, "_self");
}
function server_changed() {
var table = document.getElementById("clients");
- while (table.rows.length > 1 )
+ while (table.rows.length > 1 ) {
table.deleteRow(1);
+ }
var index = document.getElementById("server").selectedIndex;
@@ -271,17 +274,18 @@ function server_changed() {
function useaddr_changed(obj) {
- if (obj.value == "other")
+ if (obj.value == "other") {
$('HostName').show();
- else
+ } else {
$('HostName').hide();
-
+ }
+
}
function useproxy_changed(obj) {
if ((obj.id == "useproxy" && obj.checked) ||
- (obj.id == "useproxypass" && (obj.value != 'none'))) {
+ (obj.id == "useproxypass" && (obj.value != 'none'))) {
$(obj.id + '_opts').show();
} else {
$(obj.id + '_opts').hide();
@@ -298,9 +302,9 @@ function useproxy_changed(obj) {
}
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="openvpn export shared">
- <tr>
+ <tr>
<td>
- <?php
+ <?php
$tab_array = array();
$tab_array[] = array(gettext("Server"), false, "vpn_openvpn_server.php");
$tab_array[] = array(gettext("Client"), false, "vpn_openvpn_client.php");
@@ -320,7 +324,7 @@ function useproxy_changed(obj) {
<td width="22%" valign="top" class="vncellreq">Shared Key Server</td>
<td width="78%" class="vtable">
<select name="server" id="server" class="formselect" onchange="server_changed()">
- <?php foreach($ras_server as & $server): ?>
+ <?php foreach ($ras_server as & $server): ?>
<option value="<?=$server['sindex'];?>"><?=$server['name'];?></option>
<?php endforeach; ?>
</select>
@@ -406,7 +410,7 @@ function useproxy_changed(obj) {
</tr>
<tr>
<td width="25%">
- <br />
+ <br />
</td>
<td>
<select name="useproxypass" id="useproxypass" class="formselect" onchange="useproxy_changed(this)">
@@ -417,39 +421,39 @@ function useproxy_changed(obj) {
<span class="vexpl">
Choose proxy authentication if any.
</span>
- <br />
- <table border="0" cellpadding="2" cellspacing="0" id="useproxypass_opts" style="display:none" summary="name and password">
- <tr>
- <td align="right" width="25%">
- <span class="vexpl">
- &nbsp;Username :&nbsp;
- </span>
- </td>
- <td>
- <input name="proxyuser" id="proxyuser" class="formfld unknown" size="20" value="" />
- </td>
- </tr>
- <tr>
- <td align="right" width="25%">
- <span class="vexpl">
- &nbsp;Password :&nbsp;
- </span>
- </td>
- <td>
- <input name="proxypass" id="proxypass" type="password" class="formfld pwd" size="20" value="" />
- </td>
- </tr>
- <tr>
- <td align="right" width="25%">
- <span class="vexpl">
- &nbsp;Confirm :&nbsp;
- </span>
- </td>
- <td>
- <input name="proxyconf" id="proxyconf" type="password" class="formfld pwd" size="20" value="" />
- </td>
- </tr>
- </table>
+ <br />
+ <table border="0" cellpadding="2" cellspacing="0" id="useproxypass_opts" style="display:none" summary="name and password">
+ <tr>
+ <td align="right" width="25%">
+ <span class="vexpl">
+ &nbsp;Username :&nbsp;
+ </span>
+ </td>
+ <td>
+ <input name="proxyuser" id="proxyuser" class="formfld unknown" size="20" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right" width="25%">
+ <span class="vexpl">
+ &nbsp;Password :&nbsp;
+ </span>
+ </td>
+ <td>
+ <input name="proxypass" id="proxypass" type="password" class="formfld pwd" size="20" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right" width="25%">
+ <span class="vexpl">
+ &nbsp;Confirm :&nbsp;
+ </span>
+ </td>
+ <td>
+ <input name="proxyconf" id="proxyconf" type="password" class="formfld pwd" size="20" value="" />
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
diff --git a/config/pfflowd/pfflowd.xml b/config/pfflowd/pfflowd.xml
index 0a683bba..ea32c858 100644
--- a/config/pfflowd/pfflowd.xml
+++ b/config/pfflowd/pfflowd.xml
@@ -1,4 +1,46 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ========================================================================== */
+/*
+ pfflowd.xml
+ Copyright (C) 2008 Bill Marquette
+ Copyright (C) 2011 Ermal Luçi
+ Copyright (C) 2011 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ part of pfSense (http://www.pfSense.org/)
+ All rights reserved.
+*/
+/* ========================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ========================================================================== */
+ ]]>
+ </copyright>
<name>pfflowd</name>
<version>1.0.3</version>
<title>pfflowd: Settings</title>
@@ -82,19 +124,23 @@
conf_mount_rw();
config_lock();
global $config;
- foreach($config['installedpackages']['pfflowd']['config'] as $cf) {
- if($cf['host'] != "") {
+ foreach ($config['installedpackages']['pfflowd']['config'] as $cf) {
+ if ($cf['host'] != "") {
$start = "\n/sbin/ifconfig pfsync0 up\n";
$start .= "/usr/local/sbin/pfflowd ";
$start .= " -n {$cf['host']}";
- if($cf['port'] != "")
+ if ($cf['port'] != "") {
$start .= ":{$cf['port']}";
- if(!empty($cf['sourcehost']))
+ }
+ if (!empty($cf['sourcehost'])) {
$start .= " -s {$cf['sourcehost']} ";
- if($cf['direction'] != "")
+ }
+ if ($cf['direction'] != "") {
$start .= " -S {$cf['direction']}";
- if($cf['version'] != "")
+ }
+ if ($cf['version'] != "") {
$start .= " -v {$cf['version']}";
+ }
write_rcfile(array(
"file" => "pfflowd.sh",
"start" => $start,
@@ -110,18 +156,20 @@
}
function validate_form_pfflowd($post, &$input_errors) {
- if(($post['host'] == "") || !is_ipaddr($post['host']))
+ if (($post['host'] == "") || !is_ipaddr($post['host'])) {
$input_errors[] = 'You must specify a valid ip address in the \'Host\' field';
- if(($post['port'] == "") || !is_port($post['port']))
+ }
+ if (($post['port'] == "") || !is_port($post['port'])) {
$input_errors[] = 'You must specify a valid port number in the \'Port\' field';
+ }
}
-
+
function cleanup_config_pfflowd() {
global $a_pkg;
$pffconf = array();
if (is_array($a_pkg)) {
foreach($a_pkg as $cf) {
- if($cf['host'] != "") {
+ if ($cf['host'] != "") {
$pffconf = $cf;
}
}
diff --git a/config/servicewatchdog/services_servicewatchdog.php b/config/servicewatchdog/services_servicewatchdog.php
index bd4d4442..6c91b98e 100644
--- a/config/servicewatchdog/services_servicewatchdog.php
+++ b/config/servicewatchdog/services_servicewatchdog.php
@@ -41,14 +41,16 @@ require_once("functions.inc");
require_once("service-utils.inc");
require_once("servicewatchdog.inc");
-if (!is_array($config['installedpackages']['servicewatchdog']['item']))
+if (!is_array($config['installedpackages']['servicewatchdog']['item'])) {
$config['installedpackages']['servicewatchdog']['item'] = array();
+}
$a_pwservices = &$config['installedpackages']['servicewatchdog']['item'];
/* if a custom message has been passed along, lets process it */
-if ($_GET['savemsg'])
+if ($_GET['savemsg']) {
$savemsg = $_GET['savemsg'];
+}
if ($_GET['act'] == "del") {
if ($a_pwservices[$_GET['id']]) {
@@ -65,13 +67,15 @@ if (isset($_POST['Update'])) {
if (is_array($_POST['notifies']) && count($_POST['notifies'])) {
/* Check each service and set the notify flag only for those chosen, remove those that are unset. */
foreach ($a_pwservices as $idx => $thisservice) {
- if (!is_array($thisservice))
+ if (!is_array($thisservice)) {
continue;
+ }
if (in_array($idx, $_POST['notifies'])) {
$a_pwservices[$idx]['notify'] = true;
} else {
- if (isset($a_pwservices[$idx]['notify']))
+ if (isset($a_pwservices[$idx]['notify'])) {
unset($a_pwservices[$idx]['notify']);
+ }
}
}
} else { /* No notifies selected, remove them all. */
@@ -111,26 +115,31 @@ if (isset($_POST['del_x'])) {
/* copy all services < $movebtn and not selected */
for ($i = 0; $i < $movebtn; $i++) {
- if (!in_array($i, $_POST['pwservices']))
+ if (!in_array($i, $_POST['pwservices'])) {
$a_pwservices_new[] = $a_pwservices[$i];
+ }
}
/* copy all selected services */
for ($i = 0; $i < count($a_pwservices); $i++) {
- if ($i == $movebtn)
+ if ($i == $movebtn) {
continue;
- if (in_array($i, $_POST['pwservices']))
+ }
+ if (in_array($i, $_POST['pwservices'])) {
$a_pwservices_new[] = $a_pwservices[$i];
+ }
}
/* copy $movebtn service */
- if ($movebtn < count($a_pwservices))
+ if ($movebtn < count($a_pwservices)) {
$a_pwservices_new[] = $a_pwservices[$movebtn];
+ }
/* copy all services > $movebtn and not selected */
for ($i = $movebtn+1; $i < count($a_pwservices); $i++) {
- if (!in_array($i, $_POST['pwservices']))
+ if (!in_array($i, $_POST['pwservices'])) {
$a_pwservices_new[] = $a_pwservices[$i];
+ }
}
$a_pwservices = $a_pwservices_new;
servicewatchdog_cron_job();
@@ -141,7 +150,7 @@ if (isset($_POST['del_x'])) {
}
$closehead = false;
-$pgtitle = array(gettext("Services"),gettext("Service Watchdog"));
+$pgtitle = array(gettext("Services"), gettext("Service Watchdog"));
include("head.inc");
?>
@@ -160,83 +169,99 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="services to monitor">
<tr><td><div id="mainarea">
<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="main area">
-<tr><td colspan="8" align="center">
-<?php echo gettext("This page allows you to select services to be monitored so that they may be automatically restarted if they crash or are stopped."); ?>
-<br/><br/>
-</td></tr>
-<tr id="frheader">
-<td width="5%" class="list">&nbsp;</td>
-<td width="5%" class="listhdrr">Notify</td>
-<td width="30%" class="listhdrr"><?=gettext("Service Name");?></td>
-<td width="60%" class="listhdrr"><?=gettext("Description");?></td>
-<td width="5%" class="list">
-<table border="0" cellspacing="0" cellpadding="1" summary="buttons">
- <tr><td width="17">
- <?php if (count($a_pwservices) == 0): ?>
- <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected services");?>" border="0" alt="delete" />
- <?php else: ?>
- <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected services"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected services?");?>')" />
- <?php endif; ?>
- </td>
- <td><a href="services_servicewatchdog_add.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new service"); ?>" alt="add" /></a></td>
+ <tr>
+ <td colspan="8" align="center">
+ <?php echo gettext("This page allows you to select services to be monitored so that they may be automatically restarted if they crash or are stopped."); ?>
+ <br/><br/>
+ </td>
+ </tr>
+ <tr id="frheader">
+ <td width="5%" class="list">&nbsp;</td>
+ <td width="5%" class="listhdrr">Notify</td>
+ <td width="30%" class="listhdrr"><?=gettext("Service Name");?></td>
+ <td width="60%" class="listhdrr"><?=gettext("Description");?></td>
+ <td width="5%" class="list">
+ <table border="0" cellspacing="0" cellpadding="1" summary="buttons">
+ <tr>
+ <td width="17">
+ <?php if (count($a_pwservices) == 0): ?>
+ <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected services");?>" border="0" alt="delete" />
+ <?php else: ?>
+ <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected services"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected services?");?>')" />
+ <?php endif; ?>
+ </td>
+ <td><a href="services_servicewatchdog_add.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new service"); ?>" alt="add" /></a></td>
+ </tr>
+ </table>
+ </td>
</tr>
-</table>
-</td>
-</tr>
<?php
$nservices = $i = 0;
foreach ($a_pwservices as $thisservice):
?>
<tr valign="top" id="fr<?=$nservices;?>">
- <td class="listt"><input type="checkbox" id="frc<?=$nservices;?>" name="pwservices[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$nservices;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /></td>
- <td class="listlr"><input type="checkbox" id="notify<?=$nservices;?>" name="notifies[]" value="<?=$i;?>" style="margin: 0; padding: 0; width: 15px; height: 15px;" <?PHP if (isset($thisservice['notify'])) echo 'checked="CHECKED"';?>/></td>
- <td class="listr" onclick="fr_toggle(<?=$nservices;?>)" id="frd<?=$nservices;?>" ondblclick="document.location='services_servicewatchdog_add.php?id=<?=$nservices;?>';">
- <?=$thisservice['name'];?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$nservices;?>)" id="frd<?=$nservices;?>" ondblclick="document.location='services_servicewatchdog_add.php?id=<?=$nservices;?>';">
- <?=$thisservice['description'];?>
- </td>
- <td valign="middle" class="list" nowrap>
- <table border="0" cellspacing="0" cellpadding="1" summary="add">
- <tr>
- <td><input onmouseover="fr_insline(<?=$nservices;?>, true)" onmouseout="fr_insline(<?=$nservices;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected services before this service");?>" height="17" type="image" width="17" border="0" /></td>
- <td align="center" valign="middle"><a href="services_servicewatchdog.php?act=del&amp;id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this service?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete service");?>" alt="delete" /></a></td>
- </tr>
- </table>
- </td></tr>
-<?php $i++; $nservices++; endforeach; ?>
- <tr>
- <td class="list" colspan="4"></td>
- <td class="list" valign="middle" nowrap>
- <table border="0" cellspacing="0" cellpadding="1" summary="add">
+ <td class="listt"><input type="checkbox" id="frc<?=$nservices;?>" name="pwservices[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$nservices;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /></td>
+ <td class="listlr"><input type="checkbox" id="notify<?=$nservices;?>" name="notifies[]" value="<?=$i;?>" style="margin: 0; padding: 0; width: 15px; height: 15px;" <?PHP if (isset($thisservice['notify'])) echo 'checked="CHECKED"';?>/></td>
+ <td class="listr" onclick="fr_toggle(<?=$nservices;?>)" id="frd<?=$nservices;?>" ondblclick="document.location='services_servicewatchdog_add.php?id=<?=$nservices;?>';">
+ <?=$thisservice['name'];?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$nservices;?>)" id="frd<?=$nservices;?>" ondblclick="document.location='services_servicewatchdog_add.php?id=<?=$nservices;?>';">
+ <?=$thisservice['description'];?>
+ </td>
+ <td valign="middle" class="list" nowrap>
+ <table border="0" cellspacing="0" cellpadding="1" summary="add">
+ <tr>
+ <td><input onmouseover="fr_insline(<?=$nservices;?>, true)" onmouseout="fr_insline(<?=$nservices;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected services before this service");?>" height="17" type="image" width="17" border="0" /></td>
+ <td align="center" valign="middle"><a href="services_servicewatchdog.php?act=del&amp;id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this service?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete service");?>" alt="delete" /></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+<?php
+ $i++;
+ $nservices++;
+endforeach;
+?>
<tr>
- <td><?php if ($nservices == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected services to end"); ?>" border="0" alt="move" /><?php else: ?><input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected services to end");?>" border="0" alt="move" /><?php endif; ?></td>
+ <td class="list" colspan="4"></td>
+ <td class="list" valign="middle" nowrap>
+ <table border="0" cellspacing="0" cellpadding="1" summary="add">
+ <tr>
+ <td><?php if ($nservices == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected services to end"); ?>" border="0" alt="move" /><?php else: ?><input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected services to end");?>" border="0" alt="move" /><?php endif; ?></td>
+ </tr>
+ <tr>
+ <td width="17">
+ <?php if (count($a_pwservices) == 0): ?>
+ <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected services");?>" border="0" alt="delete" />
+ <?php else: ?>
+ <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected services"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected services?");?>')" />
+ <?php endif; ?>
+ </td>
+ <td><a href="services_servicewatchdog_add.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new service"); ?>" alt="add" /></a></td>
+ </tr>
+ </table>
+ </td>
</tr>
<tr>
- <td width="17">
- <?php if (count($a_pwservices) == 0): ?>
- <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected services");?>" border="0" alt="delete" />
- <?php else: ?>
- <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected services"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected services?");?>')" />
- <?php endif; ?>
- </td>
- <td><a href="services_servicewatchdog_add.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new service"); ?>" alt="add" /></a></td>
+ <td></td>
+ <td colspan="4">
+ <?php echo gettext("Check Notify next to services to perform an e-mail notification when the service is restarted. Configure e-mail notifications to receive the alerts."); ?>
+ <br/>
+ <input name="Update" type="submit" class="formbtn" value="<?=gettext("Update Notification Settings"); ?>" />
+ <br/>
+ <br/>
+ </td>
+ <td></td>
</tr>
- </table>
- </td>
+ <tr>
+ <td></td>
+ <td colspan="4">
+ <?php echo gettext("Click to select a service and use the arrows to re-order them in the list. Higher services are checked first."); ?>
+ </td>
+ <td></td>
</tr>
- <tr><td></td><td colspan="4">
- <?php echo gettext("Check Notify next to services to perform an e-mail notification when the service is restarted. Configure e-mail notifications to receive the alerts."); ?>
- <br/>
- <input name="Update" type="submit" class="formbtn" value="<?=gettext("Update Notification Settings"); ?>" />
- <br/>
- <br/>
- </td><td></td></tr>
- <tr><td></td><td colspan="4">
- <?php echo gettext("Click to select a service and use the arrows to re-order them in the list. Higher services are checked first."); ?>
- </td><td></td></tr>
- </table>
+</table>
</div></td></tr>
</table>
</form>
diff --git a/config/servicewatchdog/services_servicewatchdog_add.php b/config/servicewatchdog/services_servicewatchdog_add.php
index 11e5e284..10f24797 100644
--- a/config/servicewatchdog/services_servicewatchdog_add.php
+++ b/config/servicewatchdog/services_servicewatchdog_add.php
@@ -55,7 +55,7 @@ unset($input_errors);
if ($_POST) {
if (!is_numeric($_POST['svcid']))
-
+ return;
if (!isset($system_services[$_POST['svcid']])) {
$input_errors[] = gettext("The supplied service appears to be invalid.");
@@ -72,7 +72,7 @@ if ($_POST) {
}
$closehead = false;
-$pgtitle = array(gettext("Services"),gettext("servicewatchdog"), gettext("Add"));
+$pgtitle = array(gettext("Services"), gettext("servicewatchdog"), gettext("Add"));
include("head.inc");
?>
diff --git a/config/servicewatchdog/servicewatchdog.inc b/config/servicewatchdog/servicewatchdog.inc
index 5b638836..817b92e0 100644
--- a/config/servicewatchdog/servicewatchdog.inc
+++ b/config/servicewatchdog/servicewatchdog.inc
@@ -7,23 +7,27 @@ require_once("notices.inc");
function servicewatchdog_service_matches($svc1, $svc2) {
/* If the arrays are equal, it must be the same service. */
- if ($svc1 == $svc2)
+ if ($svc1 == $svc2) {
return true;
+ }
/* If the names are different, they must not be the same. */
- if ($svc1['name'] != $svc2['name'])
+ if ($svc1['name'] != $svc2['name']) {
return false;
+ }
switch ($svc1['name']) {
case "openvpn":
- if (($svc1['mode'] == $svc2['mode']) && ($svc1['vpnid'] == $svc2['vpnid']))
+ if (($svc1['mode'] == $svc2['mode']) && ($svc1['vpnid'] == $svc2['vpnid'])) {
return true;
- else
+ } else {
return false;
+ }
break;
case "captiveportal":
- if ($svc1['zone'] == $svc2['zone'])
+ if ($svc1['zone'] == $svc2['zone']) {
return true;
- else
+ } else {
return false;
+ }
break;
default:
/* Other services must be the same if the name matches. */
@@ -39,12 +43,14 @@ function servicewatchdog_is_service_watched($svc) {
$a_pwservices = &$config['installedpackages']['servicewatchdog']['item'];
$blacklisted_services = array("cron");
- if (empty($svc['name']) || in_array($svc['name'], $blacklisted_services))
+ if (empty($svc['name']) || in_array($svc['name'], $blacklisted_services)) {
return true;
+ }
foreach ($a_pwservices as $a_svc) {
- if (servicewatchdog_service_matches($svc, $a_svc))
+ if (servicewatchdog_service_matches($svc, $a_svc)) {
return true;
+ }
}
return false;
}
@@ -77,8 +83,9 @@ function servicewatchdog_check_services() {
$descr = strlen($svc['description']) > 50 ? substr($svc['description'], 0, 50) . "..." : $svc['description'];
$error_message = "Service Watchdog detected service {$svc['name']} stopped. Restarting {$svc['name']} ({$descr})";
log_error($error_message);
- if (isset($svc['notify']))
+ if (isset($svc['notify'])) {
notify_via_smtp($error_message);
+ }
service_control_start($svc['name'], $svc);
}
}
diff --git a/config/servicewatchdog/servicewatchdog.xml b/config/servicewatchdog/servicewatchdog.xml
index 685ba997..5a1aebbb 100644
--- a/config/servicewatchdog/servicewatchdog.xml
+++ b/config/servicewatchdog/servicewatchdog.xml
@@ -40,7 +40,7 @@
<requirements>None</requirements>
<faq>Monitors for stopped services and restarts them.</faq>
<name>Service Watchdog</name>
- <version>1.6</version>
+ <version>1.7</version>
<title>Services: Service Watchdog</title>
<include_file>/usr/local/pkg/servicewatchdog.inc</include_file>
<menu>
diff --git a/config/servicewatchdog/servicewatchdog_cron.php b/config/servicewatchdog/servicewatchdog_cron.php
index 004afd97..9979917e 100644
--- a/config/servicewatchdog/servicewatchdog_cron.php
+++ b/config/servicewatchdog/servicewatchdog_cron.php
@@ -6,8 +6,9 @@ require_once("servicewatchdog.inc");
global $g;
/* Do nothing at bootup. */
-if ($g['booting'] || file_exists("{$g['varrun_path']}/booting"))
+if ($g['booting'] || file_exists("{$g['varrun_path']}/booting")) {
return;
+}
servicewatchdog_check_services();
?> \ No newline at end of file
diff --git a/config/sudo/sudo.inc b/config/sudo/sudo.inc
index ed0feb9c..ccbda309 100644
--- a/config/sudo/sudo.inc
+++ b/config/sudo/sudo.inc
@@ -30,7 +30,7 @@
require_once("config.inc");
global $pfs_version;
-$pfs_version = substr(trim(file_get_contents("/etc/version")),0,3);
+$pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
switch ($pfs_version) {
case "2.1":
/* Hackish way to detect if someone manually did pkg_add rather than use pbi. */
@@ -38,7 +38,7 @@ switch ($pfs_version) {
define('SUDO_BASE', '/usr/pbi/sudo-' . php_uname("m"));
define('SUDO_LIBEXEC_DIR', '/usr/local/libexec/');
} else {
- define('SUDO_BASE','/usr/local');
+ define('SUDO_BASE', '/usr/local');
define('SUDO_LIBEXEC_DIR', '/usr/local/libexec/sudo');
}
break;
@@ -66,17 +66,17 @@ function sudo_install() {
if (!is_array($config['installedpackages']['sudo']['config'][0]['row'])) {
$config['installedpackages']['sudo']['config'][0]['row'] = array(
0 => array(
- "username" => "user:root",
+ "username" => "user:root",
"runas" => "user:root",
"cmdlist" => "ALL"
),
1 => array(
- "username" => "user:admin",
+ "username" => "user:admin",
"runas" => "user:root",
"cmdlist" => "ALL"
),
2 => array(
- "username" => "group:admins",
+ "username" => "group:admins",
"runas" => "user:root",
"cmdlist" => "ALL"
)
@@ -196,7 +196,7 @@ This also forces the user to give full paths to executables, which they should b
*/
function sudo_validate_commands(&$input_errors) {
$idx = 0;
- while(isset($_POST["cmdlist{$idx}"])) {
+ while (isset($_POST["cmdlist{$idx}"])) {
$commands = $_POST["cmdlist" . $idx++];
if (strtoupper($commands) == "ALL") {
continue;
diff --git a/config/sudo/sudo.xml b/config/sudo/sudo.xml
index e9b4dcbb..6124a641 100644
--- a/config/sudo/sudo.xml
+++ b/config/sudo/sudo.xml
@@ -42,7 +42,7 @@
<description>Sudo Command Control</description>
<requirements>None</requirements>
<name>sudo</name>
- <version>0.2.6</version>
+ <version>0.2.7</version>
<title>Sudo - Shell Command Privilege Delegation Utility</title>
<include_file>/usr/local/pkg/sudo.inc</include_file>
<menu>
diff --git a/config/systempatches/patches.inc b/config/systempatches/patches.inc
index 60c9a391..f47324c4 100644
--- a/config/systempatches/patches.inc
+++ b/config/systempatches/patches.inc
@@ -55,10 +55,11 @@ function patch_commit($patch, $action, $test=false, $fulldetail=false) {
$full_patch_command = "{$patch_cmd} --directory={$directory} {$force} {$pathstrip} {$filename} {$check} {$direction} {$whitespace}";
conf_mount_rw();
patch_write($patch);
- if (!$fulldetail)
+ if (!$fulldetail) {
$output = (mwexec($full_patch_command, true) == 0);
- else
+ } else {
$output = $full_patch_command . "\n\n" . shell_exec($full_patch_command . ' 2>&1');
+ }
patch_erase($patch);
conf_mount_ro();
return $output;
@@ -158,8 +159,9 @@ function bootup_apply_patches() {
foreach ($a_patches as $patch) {
/* Skip the patch if it should not be automatically applied. */
- if (!isset($patch['autoapply']))
+ if (!isset($patch['autoapply'])) {
continue;
+ }
/* If the patch can be reverted it is already applied, so skip it. */
if (!patch_test_revert($patch)) {
/* Only attempt to apply if it can be applied. */
@@ -173,12 +175,15 @@ function bootup_apply_patches() {
function patch_add_shellcmd() {
global $config;
$a_earlyshellcmd = &$config['system']['earlyshellcmd'];
- if (!is_array($a_earlyshellcmd))
+ if (!is_array($a_earlyshellcmd)) {
$a_earlyshellcmd = array();
+ }
$found = false;
- foreach ($a_earlyshellcmd as $idx => $cmd)
- if (stristr($cmd, "apply_patches.php"))
+ foreach ($a_earlyshellcmd as $idx => $cmd) {
+ if (stristr($cmd, "apply_patches.php")) {
$found = true;
+ }
+ }
if (!$found) {
$a_earlyshellcmd[] = "/usr/local/bin/php -f /usr/local/bin/apply_patches.php";
write_config("System Patches package added a shellcmd");
@@ -188,8 +193,9 @@ function patch_add_shellcmd() {
function patch_remove_shellcmd() {
global $config;
$a_earlyshellcmd = &$config['system']['earlyshellcmd'];
- if (!is_array($a_earlyshellcmd))
+ if (!is_array($a_earlyshellcmd)) {
$a_earlyshellcmd = array();
+ }
$removed = false;
foreach ($a_earlyshellcmd as $idx => $cmd) {
if (stristr($cmd, "apply_patches.php")) {
@@ -197,8 +203,9 @@ function patch_remove_shellcmd() {
$removed = true;
}
}
- if ($removed)
+ if ($removed) {
write_config("System Patches package removed a shellcmd");
+ }
}
?>
diff --git a/config/systempatches/system_patches.php b/config/systempatches/system_patches.php
index 43c8c22b..feeee07e 100644
--- a/config/systempatches/system_patches.php
+++ b/config/systempatches/system_patches.php
@@ -41,14 +41,16 @@ require_once("functions.inc");
require_once("itemid.inc");
require_once("patches.inc");
-if (!is_array($config['installedpackages']['patches']['item']))
+if (!is_array($config['installedpackages']['patches']['item'])) {
$config['installedpackages']['patches']['item'] = array();
+}
$a_patches = &$config['installedpackages']['patches']['item'];
/* if a custom message has been passed along, lets process it */
-if ($_GET['savemsg'])
+if ($_GET['savemsg']) {
$savemsg = $_GET['savemsg'];
+}
if ($_POST) {
$pconfig = $_POST;
@@ -116,26 +118,31 @@ if (isset($_POST['del_x'])) {
/* copy all patches < $movebtn and not selected */
for ($i = 0; $i < $movebtn; $i++) {
- if (!in_array($i, $_POST['patch']))
+ if (!in_array($i, $_POST['patch'])) {
$a_patches_new[] = $a_patches[$i];
+ }
}
/* copy all selected patches */
for ($i = 0; $i < count($a_patches); $i++) {
- if ($i == $movebtn)
+ if ($i == $movebtn) {
continue;
- if (in_array($i, $_POST['patch']))
+ }
+ if (in_array($i, $_POST['patch'])) {
$a_patches_new[] = $a_patches[$i];
+ }
}
/* copy $movebtn patch */
- if ($movebtn < count($a_patches))
+ if ($movebtn < count($a_patches)) {
$a_patches_new[] = $a_patches[$movebtn];
+ }
/* copy all patches > $movebtn and not selected */
for ($i = $movebtn+1; $i < count($a_patches); $i++) {
- if (!in_array($i, $_POST['patch']))
+ if (!in_array($i, $_POST['patch'])) {
$a_patches_new[] = $a_patches[$i];
+ }
}
$a_patches = $a_patches_new;
write_config();
@@ -164,41 +171,47 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="system patches">
<tr><td><div id="mainarea">
<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="main area">
-<tr><td colspan="8" align="center">
-<?php echo gettext("This page allows you to add patches, either from the official code repository or ones pasted in from e-mail or other sources."); ?>
-<br/><br/>
-<strong><?php echo gettext("Use with caution!"); ?></strong>
-<br/><br/>
+ <tr>
+ <td colspan="8" align="center">
+ <?php echo gettext("This page allows you to add patches, either from the official code repository or ones pasted in from e-mail or other sources."); ?>
+ <br/><br/>
+ <strong><?php echo gettext("Use with caution!"); ?></strong>
+ <br/><br/>
<?php if (!empty($fulldetail)): ?>
-</td></tr>
-<tr><td></td><td colspan="7" align="left">Output of full patch <?php echo $_GET['fulltest']; ?> test:
-<pre><?php echo $fulldetail; ?></pre>
-<a href="system_patches.php">Close</a><br/><br/>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="7" align="left">Output of full patch <?php echo $_GET['fulltest']; ?> test:
+ <pre><?php echo $fulldetail; ?></pre>
+ <a href="system_patches.php">Close</a><br/><br/>
<?php endif; ?>
-</td></tr>
-<tr id="frheader">
-<td width="5%" class="list">&nbsp;</td>
-<td width="5%" class="listhdrr"><?=gettext("Description");?></td>
-<td width="60%" class="listhdrr"><?=gettext("URL/ID");?></td>
-<td width="5%" class="listhdrr"><?=gettext("Fetch");?></td>
-<td width="5%" class="listhdrr"><?=gettext("Test");?></td>
-<td width="5%" class="listhdrr"><?=gettext("Apply");?></td>
-<td width="5%" class="listhdr"><?=gettext("Revert");?></td>
-<td width="5%" class="listhdr"><?=gettext("Auto Apply");?></td>
-<td width="5%" class="list">
-<table border="0" cellspacing="0" cellpadding="1" summary="buttons">
- <tr><td width="17">
- <?php if (count($a_patches) == 0): ?>
- <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected patches");?>" border="0" alt="delete" />
- <?php else: ?>
- <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected patches"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected patches?");?>')" />
- <?php endif; ?>
- </td>
- <td><a href="system_patches_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new patch"); ?>" alt="add" /></a></td>
+ </td>
+ </tr>
+ <tr id="frheader">
+ <td width="5%" class="list">&nbsp;</td>
+ <td width="5%" class="listhdrr"><?=gettext("Description");?></td>
+ <td width="60%" class="listhdrr"><?=gettext("URL/ID");?></td>
+ <td width="5%" class="listhdrr"><?=gettext("Fetch");?></td>
+ <td width="5%" class="listhdrr"><?=gettext("Test");?></td>
+ <td width="5%" class="listhdrr"><?=gettext("Apply");?></td>
+ <td width="5%" class="listhdr"><?=gettext("Revert");?></td>
+ <td width="5%" class="listhdr"><?=gettext("Auto Apply");?></td>
+ <td width="5%" class="list">
+ <table border="0" cellspacing="0" cellpadding="1" summary="buttons">
+ <tr>
+ <td width="17">
+ <?php if (count($a_patches) == 0): ?>
+ <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected patches");?>" border="0" alt="delete" />
+ <?php else: ?>
+ <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected patches"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected patches?");?>')" />
+ <?php endif; ?>
+ </td>
+ <td><a href="system_patches_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new patch"); ?>" alt="add" /></a></td>
+ </tr>
+ </table>
+ </td>
</tr>
-</table>
-</td>
-</tr>
<?php
$npatches = $i = 0;
@@ -208,83 +221,93 @@ foreach ($a_patches as $thispatch):
?>
<tr valign="top" id="fr<?=$npatches;?>">
- <td class="listt"><input type="checkbox" id="frc<?=$npatches;?>" name="patch[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$npatches;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /></td>
- <td class="listlr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?=$thispatch['descr'];?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
-
- <?php
- if (!empty($thispatch['location']))
- echo $thispatch['location'];
- elseif (!empty($thispatch['patch']))
- echo gettext("Saved Patch");
- ?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?php if (empty($thispatch['patch'])): ?>
- <a href="system_patches.php?id=<?=$i;?>&amp;act=fetch"><?php echo gettext("Fetch"); ?></a>
- <?php elseif (!empty($thispatch['location'])): ?>
- <a href="system_patches.php?id=<?=$i;?>&amp;act=fetch"><?php echo gettext("Re-Fetch"); ?></a>
- <?php endif; ?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?php if (!empty($thispatch['patch'])): ?>
- <a href="system_patches.php?id=<?=$i;?>&amp;act=test"><?php echo gettext("Test"); ?></a>
- <?php endif; ?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?php if ($can_apply): ?>
- <a href="system_patches.php?id=<?=$i;?>&amp;act=apply"><?php echo gettext("Apply"); ?></a>
- <?php endif; ?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?php if ($can_revert): ?>
- <a href="system_patches.php?id=<?=$i;?>&amp;act=revert"><?php echo gettext("Revert"); ?></a>
- <?php endif; ?>
- </td>
- <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
- <?= isset($thispatch['autoapply']) ? "Yes" : "No" ?>
- </td>
- <td valign="middle" class="list" nowrap>
- <table border="0" cellspacing="0" cellpadding="1" summary="edit">
- <tr>
- <td><input onmouseover="fr_insline(<?=$npatches;?>, true)" onmouseout="fr_insline(<?=$npatches;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected patches before this patch");?>" height="17" type="image" width="17" border="0" /></td>
- <td><a href="system_patches_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit patch"); ?>" alt="edit" /></a></td>
- </tr>
- <tr>
- <td align="center" valign="middle"><a href="system_patches.php?act=del&amp;id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this patch?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete patch");?>" alt="delete" /></a></td>
- <td></td>
- </tr>
- </table>
- </td></tr>
-<?php $i++; $npatches++; endforeach; ?>
- <tr>
- <td class="list" colspan="8"></td>
- <td class="list" valign="middle" nowrap>
- <table border="0" cellspacing="0" cellpadding="1" summary="edit">
- <tr>
- <td><?php if ($npatches == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected patches to end"); ?>" border="0" alt="move" /><?php else: ?><input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected patches to end");?>" border="0" alt="move" /><?php endif; ?></td>
+ <td class="listt"><input type="checkbox" id="frc<?=$npatches;?>" name="patch[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$npatches;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /></td>
+ <td class="listlr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?=$thispatch['descr'];?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+
+ <?php
+ if (!empty($thispatch['location'])) {
+ echo $thispatch['location'];
+ } elseif (!empty($thispatch['patch'])) {
+ echo gettext("Saved Patch");
+ }
+ ?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?php if (empty($thispatch['patch'])): ?>
+ <a href="system_patches.php?id=<?=$i;?>&amp;act=fetch"><?php echo gettext("Fetch"); ?></a>
+ <?php elseif (!empty($thispatch['location'])): ?>
+ <a href="system_patches.php?id=<?=$i;?>&amp;act=fetch"><?php echo gettext("Re-Fetch"); ?></a>
+ <?php endif; ?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?php if (!empty($thispatch['patch'])): ?>
+ <a href="system_patches.php?id=<?=$i;?>&amp;act=test"><?php echo gettext("Test"); ?></a>
+ <?php endif; ?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?php if ($can_apply): ?>
+ <a href="system_patches.php?id=<?=$i;?>&amp;act=apply"><?php echo gettext("Apply"); ?></a>
+ <?php endif; ?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?php if ($can_revert): ?>
+ <a href="system_patches.php?id=<?=$i;?>&amp;act=revert"><?php echo gettext("Revert"); ?></a>
+ <?php endif; ?>
+ </td>
+ <td class="listr" onclick="fr_toggle(<?=$npatches;?>)" id="frd<?=$npatches;?>" ondblclick="document.location='system_patches_edit.php?id=<?=$npatches;?>';">
+ <?= isset($thispatch['autoapply']) ? "Yes" : "No" ?>
+ </td>
+ <td valign="middle" class="list" nowrap>
+ <table border="0" cellspacing="0" cellpadding="1" summary="edit">
+ <tr>
+ <td><input onmouseover="fr_insline(<?=$npatches;?>, true)" onmouseout="fr_insline(<?=$npatches;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected patches before this patch");?>" height="17" type="image" width="17" border="0" /></td>
+ <td><a href="system_patches_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit patch"); ?>" alt="edit" /></a></td>
+ </tr>
+ <tr>
+ <td align="center" valign="middle"><a href="system_patches.php?act=del&amp;id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this patch?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete patch");?>" alt="delete" /></a></td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
</tr>
+<?php
+ $i++;
+ $npatches++;
+endforeach;
+?>
<tr>
- <td width="17">
- <?php if (count($a_patches) == 0): ?>
- <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected patches");?>" border="0" alt="delete" />
- <?php else: ?>
- <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected patches"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected patches?");?>')" />
- <?php endif; ?>
- </td>
- <td><a href="system_patches_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new patch"); ?>" alt="add" /></a></td>
+ <td class="list" colspan="8"></td>
+ <td class="list" valign="middle" nowrap>
+ <table border="0" cellspacing="0" cellpadding="1" summary="edit">
+ <tr>
+ <td><?php if ($npatches == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected patches to end"); ?>" border="0" alt="move" /><?php else: ?><input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected patches to end");?>" border="0" alt="move" /><?php endif; ?></td>
+ </tr>
+ <tr>
+ <td width="17">
+ <?php if (count($a_patches) == 0): ?>
+ <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected patches");?>" border="0" alt="delete" />
+ <?php else: ?>
+ <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected patches"); ?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected patches?");?>')" />
+ <?php endif; ?>
+ </td>
+ <td><a href="system_patches_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new patch"); ?>" alt="add" /></a></td>
+ </tr>
+ </table>
+ </td>
</tr>
- </table>
- </td>
+ <tr>
+ <td></td>
+ <td colspan="6">
+ <?php echo gettext("NOTE: Each patch is tested, and the appropriate action is shown. If neither 'Apply' or 'Revert' shows up, the patch cannot be used (check the pathstrip and whitespace options)."); ?>
+ <br/><br/>
+ <?php echo gettext("Use the 'Test' link to see if a patch can be applied or reverted. You can reorder patches so that higher patches apply later than lower patches."); ?>
+ </td>
+ <td></td>
</tr>
- <tr><td></td><td colspan="6">
- <?php echo gettext("NOTE: Each patch is tested, and the appropriate action is shown. If neither 'Apply' or 'Revert' shows up, the patch cannot be used (check the pathstrip and whitespace options)."); ?>
- <br/><br/>
- <?php echo gettext("Use the 'Test' link to see if a patch can be applied or reverted. You can reorder patches so that higher patches apply later than lower patches."); ?>
- </td><td></td></tr>
- </table>
+</table>
</div></td></tr>
</table>
</form>
diff --git a/config/systempatches/system_patches_edit.php b/config/systempatches/system_patches_edit.php
index 3e63038e..9e1f7a49 100644
--- a/config/systempatches/system_patches_edit.php
+++ b/config/systempatches/system_patches_edit.php
@@ -46,8 +46,9 @@ if (!is_array($config['installedpackages']['patches']['item'])) {
$a_patches = &$config['installedpackages']['patches']['item'];
$id = $_GET['id'];
-if (isset($_POST['id']))
+if (isset($_POST['id'])) {
$id = $_POST['id'];
+}
if (isset($_GET['dup'])) {
$id = $_GET['dup'];
@@ -69,8 +70,9 @@ if (isset($id) && $a_patches[$id]) {
$pconfig['ignorewhitespace'] = true;
}
-if (isset($_GET['dup']))
+if (isset($_GET['dup'])) {
unset($id);
+}
unset($input_errors);
@@ -87,10 +89,11 @@ if ($_POST) {
}
$pf_version=substr(trim(file_get_contents("/etc/version")),0,3);
- if ($pf_version < 2.1)
+ if ($pf_version < 2.1) {
$input_errors = eval('do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); return $input_errors;');
- else
+ } else {
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
+ }
if (!empty($_POST['location']) && !is_commit_id($_POST['location']) && !is_URL($_POST['location'])) {
$input_errors[] = gettext("The supplied commit ID/URL appears to be invalid.");
@@ -111,10 +114,11 @@ if ($_POST) {
/* Strip DOS style carriage returns from textarea input */
$thispatch['patch'] = base64_encode(str_replace("\r", "", $_POST['patch']));
}
- if (is_github_url($thispatch['location']) && ($_POST['pathstrip'] == 0))
+ if (is_github_url($thispatch['location']) && ($_POST['pathstrip'] == 0)) {
$thispatch['pathstrip'] = 1;
- else
+ } else {
$thispatch['pathstrip'] = $_POST['pathstrip'];
+ }
$thispatch['basedir'] = empty($_POST['basedir']) ? "/" : $_POST['basedir'];
$thispatch['ignorewhitespace'] = isset($_POST['ignorewhitespace']);
$thispatch['autoapply'] = isset($_POST['autoapply']);
@@ -125,18 +129,20 @@ if ($_POST) {
}
// Update the patch entry now
- if (isset($id) && $a_patches[$id])
+ if (isset($id) && $a_patches[$id]) {
$a_patches[$id] = $thispatch;
- else {
- if (is_numeric($after))
+ } else {
+ if (is_numeric($after)) {
array_splice($a_patches, $after+1, 0, array($thispatch));
- else
+ } else {
$a_patches[] = $thispatch;
+ }
}
write_config();
- if ($thispatch['autoapply'])
+ if ($thispatch['autoapply']) {
patch_add_shellcmd();
+ }
header("Location: system_patches.php");
return;
}
diff --git a/config/systempatches/systempatches.xml b/config/systempatches/systempatches.xml
index 3cc1354a..ad7f5953 100644
--- a/config/systempatches/systempatches.xml
+++ b/config/systempatches/systempatches.xml
@@ -10,17 +10,18 @@
part of pfSense (http://www.pfSense.com)
Copyright (C) 2012 Jim Pingle
All rights reserved.
+*/
/* ========================================================================== */
/*
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
@@ -32,7 +33,7 @@
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
- */
+*/
/* ========================================================================== */
]]>
</copyright>
@@ -40,7 +41,7 @@
<requirements>None</requirements>
<faq>Applies patches supplied by the user to the firewall.</faq>
<name>System Patches</name>
- <version>1.0.3</version>
+ <version>1.0.4</version>
<title>System: Patches</title>
<include_file>/usr/local/pkg/patches.inc</include_file>
<menu>
diff --git a/config/tftp2/tftp.inc b/config/tftp2/tftp.inc
index ea75e0d2..a2b7d1e3 100644
--- a/config/tftp2/tftp.inc
+++ b/config/tftp2/tftp.inc
@@ -1,23 +1,21 @@
<?php
-/* $Id$ */
/*
-/* ========================================================================== */
-/*
- tftp_inc.php
+ tftp.inc
+ part of pfSense (https://www.pfSense.org/)
Copyright (C) 2008 Mark J Crane
+ Copyright (C) 2011 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
All rights reserved.
-*/
-/* ========================================================================== */
-/*
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
@@ -30,98 +28,60 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
-function tftp_guid() {
- if (function_exists('com_create_guid')){
- return com_create_guid();
- }else{
- mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
- $charid = strtoupper(md5(uniqid(rand(), true)));
- $hyphen = chr(45);// "-"
- $uuid = chr(123)// "{"
- .substr($charid, 0, 8).$hyphen
- .substr($charid, 8, 4).$hyphen
- .substr($charid,12, 4).$hyphen
- .substr($charid,16, 4).$hyphen
- .substr($charid,20,12)
- .chr(125);// "}"
- return $uuid;
- }
-}
-
-function tftp_pkg_is_service_running($servicename) {
- exec("/bin/ps ax | awk '{ print $5 }'", $psout);
- array_shift($psout);
- foreach($psout as $line) {
- $ps[] = trim(array_pop(explode(' ', array_pop(explode('/', $line)))));
- }
- if(is_service_running($servicename, $ps) or is_process_running($servicename) ) {
- return true;
- }
- else {
- return false;
- }
-}
-
-function tftp_byte_convert( $bytes ) {
-
- if ($bytes<=0)
+function tftp_byte_convert($bytes) {
+ if ($bytes <= 0) {
return '0 Byte';
-
- $convention=1000; //[1000->10^x|1024->2^x]
- $s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
- $e=floor(log($bytes,$convention));
- return round($bytes/pow($convention,$e),2).' '.$s[$e];
+ }
+ $convention = 1000;
+ $s = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
+ $e = floor(log($bytes, $convention));
+ return round($bytes/pow($convention, $e), 2) . ' ' . $s[$e];
}
function tftp_install_command() {
global $config;
- conf_mount_rw();
-
- if (!is_dir('/tftpboot')) {
- // Create the directory
- exec("mkdir /tftpboot");
-
- //Set the directory permissions
- exec("chmod -R 777 /tftpboot");
- }
-
- if (!is_dir('/root/backup/')) {
- // Create the backup directory
- exec("mkdir /root/backup/");
- }
- // if backup file exists restore it
- $filename = 'tftp.bak.tgz';
+ $tftpdir = "/tftpboot";
+ $tftpbackup = "/root/backup/tftp.bak.tgz";
- //extract a specific directory to /usr/local/freeswitch
- if (file_exists('/root/backup/'.$filename)) {
- system('cd /; tar xvpfz /root/backup/tftp.bak.tgz');
- system('chmod -R 744 /tftpboot/*');
- unset($filename);
+ // Create the directories if required
+ conf_mount_rw();
+ safe_mkdir("{$tftpdir}", 0777);
+ safe_mkdir("/root/backup/");
+
+ // Restore backup if it exists
+ if (file_exists($tftpbackup)) {
+ system("/usr/bin/tar xvpfz {$tftpbackup} -C /");
+ system("/bin/chmod -R 0744 {$tftpdir}/*");
+ unset($tftpbackup);
}
+ conf_mount_ro();
}
function tftp_deinstall_command() {
-
- //exec("rm -R /tftpboot");
+ conf_mount_rw();
unlink_if_exists("/usr/local/etc/rc.d/tftp.sh");
unlink_if_exists("/tmp/pkg_mgr_tftp.log");
+ conf_mount_ro();
}
function tftp_generate_rules($type) {
global $config, $FilterIflist;
- if ($type != "nat")
+
+ if ($type != "nat") {
return;
+ }
+
// Open inetd.conf write handle
- $inetd_fd = fopen("/var/etc/inetd.conf","a+");
- /* add tftp daemon */
+ $inetd_fd = fopen("/var/etc/inetd.conf", "a+");
+ // Add tftp daemon
fwrite($inetd_fd, "tftp\t\tdgram\tudp\twait\t\troot\t/usr/libexec/tftpd\ttftpd /tftpboot\n");
- fclose($inetd_fd); // Close file handle
+ // Close file handle
+ fclose($inetd_fd);
if (!empty($config['installedpackages']['tftpd']['config'][0]['tftpdinterface'])) {
$tftpifs = explode(",", $config['installedpackages']['tftpd']['config'][0]['tftpdinterface']);
- foreach($tftpifs as $tftpif) {
+ foreach ($tftpifs as $tftpif) {
if ($FilterIflist[$tftpif]) {
log_error("Adding TFTP nat rules");
$natrules .= "rdr pass on {$FilterIflist[$tftpif]['if']} proto udp from any to {$FilterIflist[$tftpif]['ip']} port 69 -> 127.0.0.1 port 69\n";
diff --git a/config/tftp2/tftp.xml b/config/tftp2/tftp.xml
index 0a13548c..2a526a4c 100644
--- a/config/tftp2/tftp.xml
+++ b/config/tftp2/tftp.xml
@@ -2,44 +2,46 @@
<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- tftp.xml
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
-/* ========================================================================== */
+ tftp.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2008 Mark J Crane
+ Copyright (C) 2011 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-/* ========================================================================== */
- ]]>
- </copyright>
- <description></description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>tftp Settings</name>
<version>2.0</version>
<title>TFTP: Settings</title>
@@ -65,12 +67,10 @@
<configpath>installedpackages->$packagename</configpath>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
<item>https://packages.pfsense.org/packages/config/tftp2/tftp.inc</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/www/</prefix>
- <chmod>0755</chmod>
<item>https://packages.pfsense.org/packages/config/tftp2/tftp_files.php</item>
</additional_files_needed>
<custom_php_install_command>
@@ -79,5 +79,7 @@
<custom_php_deinstall_command>
tftp_deinstall_command();
</custom_php_deinstall_command>
- <filter_rules_needed>tftp_generate_rules</filter_rules_needed>
-</packagegui> \ No newline at end of file
+ <filter_rules_needed>
+ tftp_generate_rules
+ </filter_rules_needed>
+</packagegui>
diff --git a/config/tftp2/tftp_files.php b/config/tftp2/tftp_files.php
index 3562cd9f..eebe4c5e 100644
--- a/config/tftp2/tftp_files.php
+++ b/config/tftp2/tftp_files.php
@@ -1,10 +1,11 @@
<?php
-/* $Id$ */
/*
- tftp_files.php
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
-
+ tftp_files.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2008 Mark J Crane
+ Copyright (C) 2011 Jim Pingle
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -27,7 +28,6 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
require_once("guiconfig.inc");
require_once("/usr/local/pkg/tftp.inc");
@@ -36,9 +36,9 @@ $backup_dir = "/root/backup";
$backup_filename = "tftp.bak.tgz";
$backup_path = "{$backup_dir}/{$backup_filename}";
$files_dir = "/tftpboot";
-
$filename = $_GET['filename'];
$download_dir = $files_dir;
+
if (($_GET['a'] == "download") && $_GET['t'] == "backup") {
conf_mount_rw();
$filename = $backup_filename;
@@ -46,6 +46,7 @@ if (($_GET['a'] == "download") && $_GET['t'] == "backup") {
system("tar -czC / -f {$backup_path} tftpboot");
conf_mount_ro();
}
+
if (($_GET['a'] == "download") && file_exists("{$download_dir}/{$filename}")) {
session_cache_limiter('public');
@@ -55,8 +56,10 @@ if (($_GET['a'] == "download") && file_exists("{$download_dir}/{$filename}")) {
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
- header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
- header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
+ /* HTTP/1.1 */
+ header("Cache-Control: no-cache, must-revalidate");
+ /* Date in the past */
+ header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Content-Length: " . filesize("{$download_dir}/{$filename}"));
fpassthru($fd);
exit;
@@ -81,13 +84,15 @@ if ($_GET['a'] == "other") {
}
}
if ($_POST['submit'] == "Save") {
- if ($_POST['tftpdinterface']) {
+ if (($_POST['tftpdinterface']) != "") {
$config['installedpackages']['tftpd']['config'][0]['tftpdinterface'] = implode(",", $_POST['tftpdinterface']);
$pconfig['tftpdinterface'] = $_POST['tftpdinterface'];
write_config();
send_event("filter reload");
} else {
unset($config['installedpackages']['tftpd']['config'][0]['tftpdinterface']);
+ write_config();
+ send_event("filter reload");
}
}
@@ -122,7 +127,7 @@ include("head.inc");
<?php
$savemsg = $_GET["savemsg"];
if ($savemsg) {
- print_info_box($savemsg);
+ print_info_box($savemsg);
}
?>
@@ -141,78 +146,81 @@ if ($savemsg) {
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td class="tabcont" >
+ <td class="tabcont">
<table width="100%" border="0" cellpadding="6" cellspacing="0">
-
<tr>
<td width="78%" class="vtable">
- <form action="tftp_files.php" method="POST" enctype="multipart/form-data" name="frmInterfaces" onSubmit="">
- <p><span class="vexpl"><strong>TFTP Daemon Interfaces<br/></strong>
+ <form action="tftp_files.php" method="post" enctype="multipart/form-data" name="frmInterfaces" onsubmit="">
+ <p><span class="vexpl"><strong>TFTP Daemon Interfaces</strong></span></p>
<?=gettext("Choose the interfaces where you want the TFTP daemon to accept connections.");?><br/><br/>
- <select name="tftpdinterface[]" multiple="true" class="formselect" size="3">
-<?php
+ <select name="tftpdinterface[]" multiple="multiple" class="formselect" size="3">
+ <?php
$ifdescs = get_configured_interface_with_descr();
- foreach ($ifdescs as $ifent => $ifdesc):
-?>
- <option value="<?=$ifent;?>" <?php if (in_array($ifent, $pconfig['tftpdinterface'])) echo "selected"; ?>><?=gettext($ifdesc);?></option>
-<?php endforeach; ?>
- </select>
- <br/><input name="submit" type="submit" class="button" id="save" value="Save">
+ foreach ($ifdescs as $ifent => $ifdesc) {
+ $selected = "";
+ if (in_array($ifent, $pconfig['tftpdinterface'])) {
+ $selected = " selected=\"selected\"";
+ }
+ echo "\t\t\t<option value=\"{$ifent}\"{$selected}>" . $ifdesc . "</option>\n";
+ }
+ ?>
+ </select><br />
+ <input name="submit" type="submit" class="button" id="save" value="Save" />
</form>
</td>
</tr>
<tr>
- <td><p><span class="vexpl"><span class="red"><strong>TFTP files<br />
- </strong></span>
- Trivial File Transport Protocol is a very simple file transfer
- protocol. Use the file upload to add files to the /tftpboot directory.
- Click on the file from the file list below to download it.
- </span></p></td>
+ <td>
+ <p><span class="vexpl"><span class="red"><strong>TFTP files</strong></span><br />
+ Trivial File Transport Protocol is a very simple file transfer protocol.<br />
+ Use the file upload to add files to the /tftpboot directory.<br />
+ Click on the file from the file list below to download it.<br />
+ </span></p>
+ </td>
</tr>
</table>
<br />
<div id="niftyOutter">
- <form action="tftp_files.php" method="POST" enctype="multipart/form-data" name="frmUpload" onSubmit="">
+ <form action="tftp_files.php" method="post" enctype="multipart/form-data" name="frmUpload" onsubmit="">
<table>
<tr>
<td align="right">File to upload:</td>
<td valign="top" class="label">
- <input name="ulfile" type="file" class="button" id="ulfile"></td>
+ <input name="ulfile" type="file" class="button" id="ulfile" />
+ </td>
</tr>
<tr>
<td valign="top">&nbsp;&nbsp;&nbsp;</td>
<td valign="top" class="label">
- <input name="submit" type="submit" class="button" id="upload" value="Upload"></td>
+ <input name="submit" type="submit" class="button" id="upload" value="Upload" />
+ </td>
</tr>
</table>
- </div>
</form>
-
- <br />
- <br />
-
- <?php
- echo "<table width='690' cellpadding='0' cellspacing='0' border='0'>\n";
- echo "<tr>\n";
- echo "<td width='80%'>\n";
- echo "<b>Backup / Restore</b><br />\n";
- echo "The 'backup' button will tar gzip /tftpboot/ to /root/backup/tftp.bak.tgz it then presents a file to download. \n";
- echo "If the backup file does not exist in /root/backup/tftp.bak.tgz then the 'restore' button will be hidden. \n";
- echo "Use Diagnostics->Command->File to upload: to browse to the file and then click on upload it now ready to be restored. \n";
- echo "<br /><br />\n";
- echo "</td>\n";
- echo "<td width='20%' valign='middle' align='right'>\n";
- echo " <input type='button' value='backup' onclick=\"document.location.href='tftp_files.php?a=download&t=backup';\" />\n";
- if (file_exists('/root/backup/tftp.bak.tgz')) {
- echo " <input type='button' value='restore' onclick=\"document.location.href='tftp_files.php?a=other&t=restore';\" />\n";
- }
- echo "</td>\n";
- echo "</tr>\n";
- echo "</table>\n";
- echo "<br /><br />\n\n";
- ?>
-
+ </div>
+ <br /><br />
+
+ <table width='690' cellpadding='0' cellspacing='0' border='0'>
+ <tr>
+ <td width='80%'>
+ <strong>Backup / Restore</strong><br />
+ The 'Backup' button compresses /tftpboot/ to /root/backup/tftp.bak.tgz; after that it presents the backup for download.<br />
+ If the backup file does not exist in /root/backup/tftp.bak.tgz then the 'Restore' button will be hidden.<br />
+ Use Diagnostics -> Command -> File to upload: to browse to the file and then click on upload.<br />
+ After that, backup will be ready to be restored.<br /><br />
+ </td>
+ <td width='20%' valign='middle' align='right'>
+ <input type="button" value="Backup" onclick="document.location.href='tftp_files.php?a=download&amp;t=backup'" />
+ <?php
+ if (file_exists('/root/backup/tftp.bak.tgz')) {
+ echo "<input type='button' value='Restore' onclick=\"document.location.href='tftp_files.php?a=other&amp;t=restore';\" />\n";
+ }
+ ?>
+ </td>
+ </tr>
+ </table>
+ <br /><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
@@ -225,28 +233,33 @@ if ($savemsg) {
if ($handle = opendir('/tftpboot')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
- $tftp_filesize = filesize('/tftpboot/'.$file);
+ $tftp_filesize = filesize("/tftpboot/{$file}");
$tftp_filesize = tftp_byte_convert($tftp_filesize);
echo "<tr>\n";
- echo " <td class=\"listlr\" ondblclick=\"\">\n";
- echo " <a href=\"tftp_files.php?a=download&filename=".$file."\">\n";
- echo " $file";
- echo " </a>";
- echo " </td>\n";
- echo " <td class=\"listlr\" ondblclick=\"\">\n";
- echo date ("F d Y H:i:s", filemtime('/tftpboot/'.$file));
- echo " </td>\n";
- echo " <td class=\"listlr\" ondblclick=\"\">\n";
- echo " ".$tftp_filesize;
- echo " </td>\n";
- echo " <td valign=\"middle\" nowrap class=\"list\">\n";
- echo " <table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n";
- echo " <tr>\n";
- echo " <td valign=\"middle\"><form method='POST' action='/edit.php' target='_blank'><input type='hidden' name='savetopath' value='/tftpboot/".$file."'><input type='hidden' name='submit' value='Load'><input type='image' src=\"/themes/".$g['theme']."/images/icons/icon_e.gif\" width=\"17\" height=\"17\" border=\"0\"></form></td>\n";
- echo " <td><a href=\"tftp_files.php?type=tftp&act=del&filename=".$file."\" onclick=\"return confirm('Do you really want to delete this file?')\"><img src=\"/themes/". $g['theme']."/images/icons/icon_x.gif\" width=\"17\" height=\"17\" border=\"0\"></a></td>\n";
- echo " </tr>\n";
- echo " </table>\n";
- echo " </td>\n";
+ echo "<td class=\"listlr\" ondblclick=\"\">";
+ echo "<a href=\"tftp_files.php?a=download&amp;filename={$file}\">{$file}</a>";
+ echo "</td>\n";
+ echo "<td class=\"listlr\" ondblclick=\"\">";
+ echo "\t\t" . date("F d Y H:i:s", filemtime('/tftpboot/'. $file));
+ echo "</td>\n";
+ echo "<td class=\"listlr\" ondblclick=\"\">";
+ echo "\t\t{$tftp_filesize}";
+ echo "</td>\n";
+ echo "<td valign=\"middle\" nowrap=\"nowrap\" class=\"list\">\n";
+ echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n";
+ echo "<tr>\n";
+ echo "<td valign=\"middle\">\n";
+ echo "\t<form method=\"post\" action=\"/edit.php\" target=\"_blank\"><input type=\"hidden\" name=\"savetopath\" value=\"/tftpboot/{$file}\" />\n";
+ echo "\t\t<input type=\"hidden\" name=\"submit\" value=\"Load\" />\n";
+ echo "\t\t<input type='image' src=\"/themes/" . $g['theme'] . "/images/icons/icon_e.gif\" />\n";
+ echo "\t</form>\n";
+ echo "</td>\n";
+ echo "<td><a href=\"tftp_files.php?type=tftp&amp;act=del&amp;filename={$file}\" onclick=\"return confirm('Do you really want to delete this file?')\">";
+ echo "<img src=\"/themes/" . $g['theme'] . "/images/icons/icon_x.gif\" alt=\"\" width=\"17\" height=\"17\" border=\"0\" /></a>";
+ echo "</td>\n";
+ echo "</tr>\n";
+ echo "</table>\n";
+ echo "</td>\n";
echo "</tr>\n";
}
}
diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc
index ca8d869d..89a8b7c2 100644
--- a/config/vnstat2/vnstat2.inc
+++ b/config/vnstat2/vnstat2.inc
@@ -1,15 +1,42 @@
<?php
+/*
+ vnstat2.inc
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2010 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
require_once("util.inc");
function vnstat_install_deinstall() {
conf_mount_rw();
global $config;
// Remove Vnstat package and files
- exec("rm -d -R /usr/local/www/vnstat2");
- exec("rm -d -R /usr/local/www/vnstati");
- exec("rm -d -R /usr/local/pkg/vnstat2");
- exec("rm /usr/local/etc/vnstat.conf");
+ exec("/bin/rm -d -R /usr/local/www/vnstat2");
+ exec("/bin/rm -d -R /usr/local/www/vnstati");
+ exec("/bin/rm -d -R /usr/local/pkg/vnstat2");
+ exec("/bin/rm /usr/local/etc/vnstat.conf");
// Remove vnstat cron entry from config.xml
vnstat2_install_cron(false);
conf_mount_ro();
@@ -22,29 +49,29 @@ function vnstat2_install_cron($vnstat_cron_value) {
return;
}
$x=0;
- foreach($config['cron']['item'] as $item) {
+ foreach ($config['cron']['item'] as $item) {
if (strstr($item['command'], "/usr/local/pkg/vnstat2/vnstat2.sh")) {
$is_installed = true;
break;
}
$x++;
}
- switch($vnstat_cron_value) {
+ switch ($vnstat_cron_value) {
case true:
if (!$is_installed) {
$cron_item = array();
- $cron_item['minute'] = "*/1";
- $cron_item['hour'] = "*";
- $cron_item['mday'] = "*";
- $cron_item['month'] = "*";
- $cron_item['wday'] = "*";
- $cron_item['who'] = "root";
- $cron_item['command'] = "/usr/local/pkg/vnstat2/vnstat2.sh";
+ $cron_item['minute'] = "*/1";
+ $cron_item['hour'] = "*";
+ $cron_item['mday'] = "*";
+ $cron_item['month'] = "*";
+ $cron_item['wday'] = "*";
+ $cron_item['who'] = "root";
+ $cron_item['command'] = "/usr/local/pkg/vnstat2/vnstat2.sh";
$config['cron']['item'][] = $cron_item;
write_config();
configure_cron();
}
- break;
+ break;
case false:
if ($is_installed == true) {
if ($x > 0) {
@@ -53,7 +80,7 @@ function vnstat2_install_cron($vnstat_cron_value) {
}
configure_cron();
}
- break;
+ break;
}
}
@@ -61,14 +88,14 @@ function change_vnstat_conf() {
conf_mount_rw();
global $config;
$config['installedpackages']['vnstat2']['config'][0]['monthrotate'] = $_POST['monthrotate'];
- $config['installedpackages']['vnstat2']['config'][0]['vnstat_phpfrontend'] = $_POST['vnstat_phpfrontend'];
+ $config['installedpackages']['vnstat2']['config'][0]['vnstat_phpfrontend'] = $_POST['vnstat_phpfrontend'];
write_conf_f();
write_config();
if ($config['installedpackages']['vnstat2']['config'][0]['vnstat_phpfrontend'] == "on") {
vnstat_php_frontend();
} else {
- exec("[ -d /usr/local/www/vnstat2 ] && rm -d -R /usr/local/www/vnstat2");
+ exec("[ -d /usr/local/www/vnstat2 ] && /bin/rm -d -R /usr/local/www/vnstat2");
}
conf_mount_ro();
}
@@ -77,9 +104,9 @@ function write_conf_f() {
global $config;
$monthrotate = $config['installedpackages']['vnstat2']['config'][0]['monthrotate'];
- // ************ Write new vnstat.conf *****************
+ // Write new vnstat.conf
$vnstat_conf_file = <<<EOF
-# vnStat 1.10 config file
+# vnStat 1.12 config file
##
# location of the database directory
@@ -106,7 +133,7 @@ CRxD "-"
CTxD "-"
EOF;
- $hf2 = fopen("/usr/local/etc/vnstat.conf","w");
+ $hf2 = fopen("/usr/local/etc/vnstat.conf", "w");
if (!$hf2) {
log_error("could not open /usr/local/etc/vnstat.conf for writing");
exit;
@@ -124,11 +151,11 @@ function create_vnstati_image() {
$iface = $_POST['vnstat_interface'];
$ifaces_final = convert_friendly_interface_to_real_interface_name($iface);
$config['installedpackages']['vnstat2']['config'][0]['vnstat_interface'] = $ifaces_final;
- @mkdir($vnstat_tmp);
- exec("/usr/local/bin/vnstati -i ". escapeshellarg($ifaces_final) ." -vs -o {$vnstat_tmp}/newpicture1.png");
- exec("/usr/local/bin/vnstati -i ". escapeshellarg($ifaces_final) ." -m -o {$vnstat_tmp}/newpicture2.png");
- exec("/usr/local/bin/vnstati -i ". escapeshellarg($ifaces_final) ." -d -o {$vnstat_tmp}/newpicture3.png");
- exec("/usr/local/bin/vnstati -i ". escapeshellarg($ifaces_final) ." -t -o {$vnstat_tmp}/newpicture4.png");
+ safe_mkdir($vnstat_tmp);
+ exec("/usr/local/bin/vnstati -i " . escapeshellarg($ifaces_final) . " -vs -o {$vnstat_tmp}/newpicture1.png");
+ exec("/usr/local/bin/vnstati -i " . escapeshellarg($ifaces_final) . " -m -o {$vnstat_tmp}/newpicture2.png");
+ exec("/usr/local/bin/vnstati -i " . escapeshellarg($ifaces_final) . " -d -o {$vnstat_tmp}/newpicture3.png");
+ exec("/usr/local/bin/vnstati -i " . escapeshellarg($ifaces_final) . " -t -o {$vnstat_tmp}/newpicture4.png");
write_config();
conf_mount_ro();
}
@@ -136,7 +163,7 @@ function create_vnstati_image() {
function create_vnstat_output() {
conf_mount_rw();
global $config;
- $iface2 = $_POST['vnstat_interface2'];
+ $iface2 = $_POST['vnstat_interface2'];
$ifaces_final2 = convert_friendly_interface_to_real_interface_name($iface2);
$config['installedpackages']['vnstat2']['config'][0]['vnstat_interface2'] = $ifaces_final2;
write_config();
@@ -144,7 +171,7 @@ function create_vnstat_output() {
}
function vnstat_link_config() {
- // Check for pbi install and arch type then create symlinks
+ // Check for PBI install and arch type, then create symlinks
if (file_exists('/usr/pbi/vnstat-' . php_uname("m"))) {
$conf_path = "/usr/local/etc/vnstat.conf";
$pbi_conf_path = "/usr/pbi/vnstat-" . php_uname("m") . "/etc/vnstat.conf";
@@ -157,7 +184,7 @@ function vnstat_create_nic_dbs() {
global $config;
conf_mount_rw();
$vnstat_db_prefix = "/conf/vnstat";
- @mkdir($vnstat_db_prefix);
+ safe_mkdir($vnstat_db_prefix);
// Locate NICs and create associated databases
$array_of_real_nic_names = array();
@@ -189,9 +216,8 @@ function vnstat_install_config() {
if (is_dir("/usr/local/pkg/vnstat2/vnstat")) {
@rename("/usr/local/pkg/vnstat2/vnstat", $vnstat_db_prefix);
}
- if (!is_dir($vnstat_db_prefix)) {
- @mkdir($vnstat_db_prefix);
- }
+ safe_mkdir($vnstat_db_prefix);
+
vnstat_link_config();
// Add MonthRotate value to config.xml and write /usr/local/etc/vnstat.conf
if ($config['installedpackages']['vnstat2']['config'][0]['monthrotate'] == "") {
@@ -212,9 +238,9 @@ function vnstat_php_frontend() {
global $config;
// Copy vnstat_php_frontend to www
exec("/bin/cp -a /usr/local/pkg/vnstat2/vnstat_php_frontend/. /usr/local/www/vnstat2/");
- // Find information to be writing in config.php
+ // Find information to be written in config.php
// $iface_list_array_items
- exec("ls /conf/vnstat/ | grep -v '\.'", $vnstat_nic_in);
+ exec("/bin/ls /conf/vnstat/ | /usr/bin/grep -v '\.'", $vnstat_nic_in);
$iface_list_array_items = implode("', '", $vnstat_nic_in);
$iface_list_array = "\$iface_list = array('$iface_list_array_items');";
// $iface_title_array_items
@@ -235,8 +261,8 @@ function vnstat_php_frontend() {
}
}
$iface_title_array = implode($iface_title_array_items2);
- // php in php static items
- // added to new items for the front end version 1.5.1
+ // PHP in static items
+ // Added to new items for the front end version 1.5.1
$locale = "\$locale = 'en_US.UTF-8';";
$language = "\$language = 'en';";
$vnstat_bin2 = "\$vnstat_bin = '/usr/local/bin/vnstat';";
@@ -245,7 +271,7 @@ function vnstat_php_frontend() {
$colorscheme2 = "\$colorscheme['light'] = array(";
$colorscheme3 = "\$colorscheme['red'] = array(";
$colorscheme4 = "\$colorscheme['pfSense'] = array(";
- // ************ Write new config.php ******************
+ // Write new config.php
$config_file = <<<EOF
<?php
//
@@ -320,7 +346,7 @@ function vnstat_php_frontend() {
?>
EOF;
- $hf = fopen("/usr/local/www/vnstat2/config.php","w");
+ $hf = fopen("/usr/local/www/vnstat2/config.php", "w");
if (!$hf) {
log_error("could not open /usr/local/www/vnstat2/config.php for writing");
exit;
diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml
index f696850a..7e65d465 100644
--- a/config/vnstat2/vnstat2.xml
+++ b/config/vnstat2/vnstat2.xml
@@ -1,19 +1,53 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright></copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ====================================================================================== */
+/*
+ vnstat2.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>vnstat2</name>
- <version>11.2,3</version>
+ <version>1.12.5</version>
<title>Vnstat2</title>
<aftersaveredirect>/pkg_edit.php?xml=vnstat2.xml&amp;id=0</aftersaveredirect>
<include_file>/usr/local/pkg/vnstat2/vnstat2.inc</include_file>
<menu>
<name>Vnstat2</name>
- <tooltiptext></tooltiptext>
<section>Status</section>
<url>/pkg_edit.php?xml=vnstat2.xml&amp;id=0</url>
</menu>
@@ -42,17 +76,14 @@
</tabs>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat2.inc</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstati.xml</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstatoutput.xml</item>
</additional_files_needed>
<additional_files_needed>
@@ -62,137 +93,110 @@
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/www/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/www/diag_vnstat.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/www/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/www/diag_vnstat2.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/www/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/www/vnstat2_img.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/www/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/www/vnstati.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/lang/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/cs.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/lang/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/en.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/lang/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/nl.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/dark/style.css</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/light/style.css</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/light/theme.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/red/style.css</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/red/theme.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/config.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/COPYING</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/graph.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/graph_svg.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/index.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/localize.php</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/README</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/vera_copyright.txt</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/VeraBd.ttf</item>
</additional_files_needed>
<additional_files_needed>
<prefix>/usr/local/pkg/vnstat2/vnstat_php_frontend/</prefix>
- <chmod>0644</chmod>
<item>https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/vnstat.php</item>
</additional_files_needed>
<fields>
@@ -235,14 +239,13 @@
</options>
</field>
<field>
- <description>Enable vnstat php frontend (Note that no login will be needed)</description>
- <fielddescr>Enable php frontend for vnstat</fielddescr>
+ <description>Enable vnstat PHP frontend</description>
+ <fielddescr>Enable PHP frontend for vnstat. (Note that no login will be needed.)</fielddescr>
<fieldname>vnstat_phpfrontend</fieldname>
<type>checkbox</type>
</field>
</fields>
<custom_add_php_command>change_vnstat_conf();</custom_add_php_command>
- <custom_php_resync_config_command></custom_php_resync_config_command>
<custom_php_install_command>vnstat_install_config();</custom_php_install_command>
<custom_php_deinstall_command>vnstat_install_deinstall();</custom_php_deinstall_command>
</packagegui>
diff --git a/config/vnstat2/vnstati.xml b/config/vnstat2/vnstati.xml
index 84a104dd..b395e65f 100644
--- a/config/vnstat2/vnstati.xml
+++ b/config/vnstat2/vnstati.xml
@@ -1,19 +1,53 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright></copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ====================================================================================== */
+/*
+ vnstati.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2010 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>vnstat2</name>
- <version>1.0</version>
+ <version>1.12.5</version>
<title>Vnstat2</title>
<aftersaveredirect>/vnstati.php</aftersaveredirect>
<include_file>/usr/local/pkg/vnstat2/vnstat2.inc</include_file>
<menu>
<name>vnstat2</name>
- <tooltiptext></tooltiptext>
<section>Status</section>
<url>/pkg_edit.php?xml=vnstat2.xml&amp;id=0</url>
</menu>
@@ -48,9 +82,7 @@
<type>interfaces_selection</type>
</field>
</fields>
- <custom_php_global_functions></custom_php_global_functions>
<custom_add_php_command>create_vnstati_image();</custom_add_php_command>
- <custom_php_resync_config_command></custom_php_resync_config_command>
<custom_php_install_command>vnstat_install_config();</custom_php_install_command>
<custom_php_deinstall_command>vnstat_install_deinstall();</custom_php_deinstall_command>
</packagegui>
diff --git a/config/vnstat2/vnstatoutput.xml b/config/vnstat2/vnstatoutput.xml
index 5062be1f..297c171a 100644
--- a/config/vnstat2/vnstatoutput.xml
+++ b/config/vnstat2/vnstatoutput.xml
@@ -1,19 +1,53 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright></copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ====================================================================================== */
+/*
+ vnstatoutput.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>vnstat2</name>
- <version>1.0</version>
+ <version>1.12.5</version>
<title>Vnstat2</title>
<aftersaveredirect>/diag_vnstat2.php</aftersaveredirect>
<include_file>/usr/local/pkg/vnstat2/vnstat2.inc</include_file>
<menu>
<name>vnstat2</name>
- <tooltiptext></tooltiptext>
<section>Status</section>
<url>/pkg_edit.php?xml=vnstat2.xml&amp;id=0</url>
</menu>
@@ -48,9 +82,7 @@
<type>interfaces_selection</type>
</field>
</fields>
- <custom_php_global_functions></custom_php_global_functions>
<custom_add_php_command>create_vnstat_output();</custom_add_php_command>
- <custom_php_resync_config_command></custom_php_resync_config_command>
<custom_php_install_command>vnstat_install_config();</custom_php_install_command>
<custom_php_deinstall_command>vnstat_install_deinstall();</custom_php_deinstall_command>
</packagegui>
diff --git a/config/vnstat2/www/diag_vnstat.php b/config/vnstat2/www/diag_vnstat.php
index 5e6524c7..e5014120 100644
--- a/config/vnstat2/www/diag_vnstat.php
+++ b/config/vnstat2/www/diag_vnstat.php
@@ -1,8 +1,9 @@
<?php
-/* $Id$ */
/*
- diag_pf_info.php
- Copyright (C) 2010 Scott Ullrich
+ diag_vnstat.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,26 +27,10 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
-/*
- pfSense_BUILDER_BINARIES: /usr/bin/top
- pfSense_MODULE: system
-*/
-
-##|+PRIV
-##|*IDENT=page-diag-system-activity
-##|*NAME=Diagnostics: System Activity
-##|*DESCR=Allows access to the 'Diagnostics: System Activity' page
-##|*MATCH=diag_system_activity*
-##|-PRIV
-
-require("guiconfig.inc");
-
-$pf_version=substr(trim(file_get_contents("/etc/version")),0,3);
-
-$pgtitle = gettext("Vnstat2 summary ");
+require_once("guiconfig.inc");
+$pgtitle = gettext("Vnstat2 summary");
if ($_REQUEST['getactivity']) {
- $text = `vnstat`;
+ $text = shell_exec("/usr/local/bin/vnstat");
$text .= "<p/>";
echo $text;
exit;
@@ -55,8 +40,8 @@ include("head.inc");
?>
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
-
<script type="text/javascript">
+//<![CDATA[
function getcpuactivity() {
var url = "/diag_vnstat.php";
var pars = 'getactivity=yes';
@@ -69,37 +54,36 @@ include("head.inc");
});
}
function activitycallback(transport) {
- $('cpuactivitydiv').innerHTML = '<font face="Courier"><font size="2"><b><pre>' + transport.responseText + '</pre></font>';
- setTimeout('getcpuactivity()', 2000);
+ $('cpuactivitydiv').innerHTML = '<font face="Courier"><font size="2"><b><pre>' + transport.responseText + '</pre></font>';
+ setTimeout('getcpuactivity()', 2000);
}
- setTimeout('getcpuactivity()', 5000);
+ setTimeout('getcpuactivity()', 5000);
+//]]>
</script>
<div id='maincontent'>
<?php
- include("fbegin.inc");
- if ($pf_version < 2.0)
- echo "<p class=\"pgtitle\">{$pgtitle}</p>";
- echo "<a href=$myurl/pkg_edit.php?xml=vnstatoutput.xml&id=0>Go Back</a><br />";
+ include("fbegin.inc");
+
if ($savemsg) {
echo "<div id='savemsg'>";
print_info_box($savemsg);
- echo "</div>";
+ echo "</div>";
}
- if ($input_errors)
+ if ($input_errors) {
print_input_errors($input_errors);
+ }
?>
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table id="backuptable" class="tabcont" align="center" width="100%" border="0" cellpadding="6" cellspacing="0">
<tr>
<td>
- <center>
<table>
<tr>
<td>
<div name='cpuactivitydiv' id='cpuactivitydiv'>
- <b><?=gettext("Gathering vnstat information, please wait...");?>
+ <strong><?=gettext("Gathering vnstat information, please wait...");?></strong>
</div>
</td>
</tr>
@@ -107,7 +91,6 @@ include("head.inc");
</td>
</tr>
</table>
- </div>
</td>
</tr>
</table>
diff --git a/config/vnstat2/www/diag_vnstat2.php b/config/vnstat2/www/diag_vnstat2.php
index 504fd534..2153cc18 100644
--- a/config/vnstat2/www/diag_vnstat2.php
+++ b/config/vnstat2/www/diag_vnstat2.php
@@ -1,8 +1,9 @@
<?php
-/* $Id$ */
/*
- diag_system_pftop.php
- Copyright (C) 2008-2009 Scott Ullrich
+ diag_vnstat2.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,24 +27,10 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
-/*
- pfSense_MODULE: filter
-*/
-
-##|+PRIV
-##|*IDENT=page-diag-system-activity
-##|*NAME=Diagnostics: System Activity
-##|*DESCR=Allows access to the 'Diagnostics: System Activity' page
-##|*MATCH=diag_system_pftop*
-##|-PRIV
-
-require("guiconfig.inc");
+require_once("guiconfig.inc");
global $config;
$aaaa = $config['installedpackages']['vnstat2']['config'][0]['vnstat_interface2'];
$bbbb = convert_real_interface_to_friendly_descr($aaaa);
-
-$pf_version=substr(trim(file_get_contents("/etc/version")),0,3);
$pgtitle = gettext("Vnstat2 info for $bbbb ($aaaa)");
if ($_REQUEST['getactivity']) {
@@ -51,9 +38,9 @@ if ($_REQUEST['getactivity']) {
$sorttype = escapeshellarg($_REQUEST['sorttype']);
} else {
$sorttype = gettext("-h");
+ $text = shell_exec("/usr/local/bin/vnstat -i {$aaaa} {$sorttype}");
+ echo $text;
}
- $text = `vnstat -i $aaaa {$sorttype}`;
- echo $text;
exit;
}
@@ -69,6 +56,7 @@ if ($_REQUEST['sorttype']) {
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<form method="post" action="diag_vnstat2.php">
<script type="text/javascript">
+//<![CDATA[
function getcpuactivity() {
var url = "/diag_vnstat2.php";
var pars = 'getactivity=yes&sorttype=' + $('sorttype').value;
@@ -81,22 +69,19 @@ if ($_REQUEST['sorttype']) {
});
}
function activitycallback(transport) {
- $('cpuactivitydiv').innerHTML = '<font face="Courier"><font size="2"><b><pre>' + transport.responseText + '</pre></font>';
- setTimeout('getcpuactivity()', 2500);
+ $('cpuactivitydiv').innerHTML = '<font face="Courier"><font size="2"><b><pre>' + transport.responseText + '</pre></font>';
+ setTimeout('getcpuactivity()', 2500);
}
- setTimeout('getcpuactivity()', 1000);
+ setTimeout('getcpuactivity()', 1000);
+//]]>
</script>
<div id='maincontent'>
<?php
- include("fbegin.inc");
- if ($pf_version < 2.0) {
- echo "<p class=\"pgtitle\">{$pgtitle}</p>";
- }
- echo "<a href=$myurl/pkg_edit.php?xml=vnstatoutput.xml&id=0>Go Back</a><br />";
+ include("fbegin.inc");
if ($savemsg) {
echo "<div id='savemsg'>";
print_info_box($savemsg);
- echo "</div>";
+ echo "</div>";
}
if ($input_errors) {
print_input_errors($input_errors);
@@ -104,7 +89,7 @@ if ($_REQUEST['sorttype']) {
?>
<form method="post">
<?=gettext("Sort type:"); ?>
- <select name='sorttype' id='sorttype' onChange='this.form.submit();'>
+ <select name='sorttype' id='sorttype' onchange='this.form.submit();'>
<option value='<?=$sorttype?>'><?=$sorttype?></option>
<option value='-h'><?=gettext("Show traffic for the last 24 hours.");?></option>
<option value='-d'><?=gettext("Show traffic for days.");?></option>
@@ -113,19 +98,18 @@ if ($_REQUEST['sorttype']) {
<option value='-tr'><?=gettext("Calculate 5sec. of traffic.");?></option>
<option value='-w'><?=gettext("Show traffic for 7 days, current and previous week.");?></option>
</select>
- <p/>
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <p />
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table id="backuptable" class="tabcont" align="center" width="100%" border="0" cellpadding="6" cellspacing="0">
<tr>
<td>
- <center>
<table>
<tr>
<td>
<div name='cpuactivitydiv' id='cpuactivitydiv'>
- <b><?=gettext("Gathering vnstat activity, please wait...");?>
+ <strong><?=gettext("Gathering vnstat activity, please wait...");?></strong>
</div>
</td>
</tr>
@@ -133,7 +117,6 @@ if ($_REQUEST['sorttype']) {
</td>
</tr>
</table>
- </div>
</td>
</tr>
</table>
diff --git a/config/vnstat2/www/vnstat2_img.php b/config/vnstat2/www/vnstat2_img.php
index a83c3b06..fce29a4c 100644
--- a/config/vnstat2/www/vnstat2_img.php
+++ b/config/vnstat2/www/vnstat2_img.php
@@ -1,4 +1,32 @@
<?php
+/*
+ vnstat2_img.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
require_once("guiconfig.inc");
$image = basename($_GET['image']);
header("Content-type: image/png");
diff --git a/config/vnstat2/www/vnstati.php b/config/vnstat2/www/vnstati.php
index 01eca208..d5f8d9bf 100644
--- a/config/vnstat2/www/vnstati.php
+++ b/config/vnstat2/www/vnstati.php
@@ -1,16 +1,45 @@
<?php
+/*
+ vnstati.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 PerryMason
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
require_once("guiconfig.inc");
global $config;
include("head.inc");
+echo '<body link="#0000CC" vlink="#0000CC" alink="#0000CC">';
include("fbegin.inc");
$aaaa = $config['installedpackages']['vnstat2']['config'][0]['vnstat_interface'];
$cccc = convert_real_interface_to_friendly_descr($aaaa);
$pgtitle = gettext("Vnstati info for $cccc ($aaaa)");
-echo "<a href=$myurl/pkg_edit.php?xml=vnstati.xml&id=0>Go Back</a><br />";
-echo "<center><p class=\"pgtitle\">{$pgtitle}</p>";
?>
-<center><img src="vnstat2_img.php?image=newpicture1.png" style="border:1px solid black; center;"><br />
-<center><img src="vnstat2_img.php?image=newpicture2.png" style="border:1px solid black; center;"><br />
-<center><img src="vnstat2_img.php?image=newpicture3.png" style="border:1px solid black; center;"><br />
-<center><img src="vnstat2_img.php?image=newpicture4.png" style="border:1px solid black; center;"><br />
+<p style="text-align: center"><img src="vnstat2_img.php?image=newpicture1.png" alt="" style="border:1px solid black; center;" /></p>
+<p style="text-align: center"><img src="vnstat2_img.php?image=newpicture2.png" alt="" style="border:1px solid black; center;" /></p>
+<p style="text-align: center"><img src="vnstat2_img.php?image=newpicture3.png" alt="" style="border:1px solid black; center;" /></p>
+<p style="text-align: center"><img src="vnstat2_img.php?image=newpicture4.png" alt="" style="border:1px solid black; center;" /></p>
<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/config/widentd/widentd.xml b/config/widentd/widentd.xml
index ca73d436..27a8ffe8 100644
--- a/config/widentd/widentd.xml
+++ b/config/widentd/widentd.xml
@@ -1,58 +1,54 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
-<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?>
<packagegui>
- <copyright>
- <![CDATA[
+ <copyright>
+ <![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- authng.xml
- part of pfSense (http://www.pfSense.com)
- Copyright (C) 2007 to whom it may belong
- All rights reserved.
-
- Based on m0n0wall (http://m0n0.ch/wall)
- Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>.
- All rights reserved.
- */
-/* ========================================================================== */
+ widentd.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2009 Bill Marquette
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-/* ========================================================================== */
- ]]>
- </copyright>
- <description>Describe your package here</description>
- <requirements>Describe your package requirements here</requirements>
- <faq>Currently there are no FAQ items provided.</faq>
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/* ====================================================================================== */
+ ]]>
+ </copyright>
<name>widentd</name>
- <version>1.03_1</version>
+ <version>1.0.4</version>
<title>Services: widentd</title>
<menu>
<name>widentd</name>
<tooltiptext>Modify widentd settings.</tooltiptext>
<section>Services</section>
- <url>pkg_edit.php?xml=widentd.xml&amp;id=0</url>
+ <url>pkg_edit.php?xml=widentd.xml&amp;id=0</url>
</menu>
<service>
<name>widentd</name>
@@ -62,61 +58,114 @@
<configpath>installedpackages->package->$packagename->configuration->settings</configpath>
<fields>
<field>
- <fielddescr>Listening interface</fielddescr>
- <fieldname>interface</fieldname>
- <description>Enter the desired listening interface here.</description>
- <type>interfaces_selection</type>
+ <fielddescr>Enable widentd daemon</fielddescr>
+ <fieldname>enable</fieldname>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Listening interface</fielddescr>
+ <fieldname>interface</fieldname>
+ <description>
+ <![CDATA[
+ Enter the desired listening interface here.<br />
+ (Default: WAN)
+ ]]>
+ </description>
+ <type>interfaces_selection</type>
+ <default_value>wan</default_value>
+ <required/>
</field>
<field>
- <fielddescr>Username</fielddescr>
- <fieldname>username</fieldname>
- <description>Enter the username you'd like displayed via widentd.</description>
- <type>input</type>
+ <fielddescr>Username</fielddescr>
+ <fieldname>username</fieldname>
+ <description>
+ <![CDATA[
+ Enter the username you'd like displayed via widentd. Allowed characters: [a-zA-Z] and "." only.<br />
+ (Defaults to 'user' if left empty.)
+ ]]>
+ </description>
+ <type>input</type>
</field>
<field>
- <fielddescr>System name</fielddescr>
- <fieldname>sysname</fieldname>
- <description>Enter the system name you'd like displayed via widentd</description>
- <type>input</type>
- <value>pfSense</value>
+ <fielddescr>System name</fielddescr>
+ <fieldname>sysname</fieldname>
+ <description>
+ <![CDATA[
+ Enter the system name you'd like displayed via widentd. Allowed characters: [a-zA-Z] only.<br />
+ (Defaults to 'UNIX' if left empty.)
+ ]]>
+ </description>
+ <type>input</type>
</field>
- </fields>
+ </fields>
<custom_php_global_functions>
+ <![CDATA[
function sync_package_widentd() {
conf_mount_rw();
config_lock();
global $config;
- if (!isset($config['installedpackages']['widentd']['config'][0]['interface'])) {
- $config['installedpackages']['widentd']['config'][0]['interface'] = 'WAN';
- }
- if (!isset($config['installedpackages']['widentd']['config'][0]['username'])) {
- $config['installedpackages']['widentd']['config'][0]['username'] = 'user';
- }
- if (!isset($config['installedpackages']['widentd']['config'][0]['sysname'])) {
- $config['installedpackages']['widentd']['config'][0]['sysname'] = 'UNIX';
- }
+
+ /* Write widentd.sh */
$int = convert_friendly_interface_to_real_interface_name($config['installedpackages']['widentd']['config'][0]['interface']);
$ip = find_interface_ip($int);
- $user = $config['installedpackages']['widentd']['config'][0]['username'];
- $system = $config['installedpackages']['widentd']['config'][0]['sysname'];
+ $user = $config['installedpackages']['widentd']['config'][0]['username'] ?: 'user';
+ $system = $config['installedpackages']['widentd']['config'][0]['sysname'] ?: 'UNIX';
$start = "/usr/local/sbin/widentd -u {$user} -o {$system} -i {$ip}";
$stop = "/usr/bin/killall widentd";
write_rcfile(array(
"file" => "widentd.sh",
"start" => $start,
- "stop" => $stop
+ "stop" => $stop
)
);
- restart_service("widentd");
- conf_mount_ro();
+
+ /* If the service is (being) disabled, stop it (if running) and do nothing else */
+ if (!($config['installedpackages']['widentd']['config'][0][enable])) {
+ if (is_process_running("widentd")) {
+ stop_service("widentd");
+ }
+ return;
+ } else {
+ restart_service("widentd");
+ }
config_unlock();
+ conf_mount_ro();
}
+
+
+ function validate_input_widentd($post, &$input_errors) {
+ /* Only allow ^[a-zA-Z\.]+$ otherwise the daemon will not start; see widentd manpage */
+ if (($post['username'] != "") && !preg_match("/^[a-zA-Z\.]+$/", $post['username'])) {
+ $input_errors[] = 'Username may only contain uppercase and lowercase letters [a-zA-Z] and "." character.';
+ }
+
+ /* Technically, ^[A-Z][A-Z0-9\-.\/]+[A-Z0-9]$ should be valid characters here
+ https://www.iana.org/assignments/operating-system-names/operating-system-names.xhtml
+ However this is not supported by widentd; the service will not start.
+ */
+ if (($post['sysname'] != "") && !preg_match("/^[a-zA-Z]+$/", $post['sysname'])) {
+ $input_errors[] .= 'System name may only contain uppercase and lowercase letters [a-zA-Z].';
+ }
+
+ /* Check for IPv6-only interfaces */
+ $int = convert_friendly_interface_to_real_interface_name($post['interface']);
+ $ip = find_interface_ip($int);
+ if (!is_ipaddrv4($ip)) {
+ $input_errors[] .= 'The selected interface has no IPv4 configured. Widentd does not support IPv6.';
+ }
+ }
+ ]]>
</custom_php_global_functions>
<custom_add_php_command>
sync_package_widentd();
</custom_add_php_command>
+ <custom_php_resync_config_command>
+ sync_package_widentd();
+ </custom_php_resync_config_command>
<custom_php_install_command>
unlink_if_exists("/usr/local/etc/rc.d/widentd.sh");
</custom_php_install_command>
+ <custom_php_validation_command>
+ validate_input_widentd($_POST, $input_errors);
+ </custom_php_validation_command>
</packagegui>
-