aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/shellcmd/shellcmd.inc124
-rw-r--r--config/shellcmd/shellcmd.tmp231
-rw-r--r--config/shellcmd/shellcmd.xml115
-rw-r--r--config/shellcmd/shellcmd_edit.tmp236
-rwxr-xr-xpkg_config.7.xml14
5 files changed, 720 insertions, 0 deletions
diff --git a/config/shellcmd/shellcmd.inc b/config/shellcmd/shellcmd.inc
new file mode 100644
index 00000000..76ceeb31
--- /dev/null
+++ b/config/shellcmd/shellcmd.inc
@@ -0,0 +1,124 @@
+<?php
+/* $Id$ */
+/*
+/* ========================================================================== */
+/*
+ shellcmd.inc
+ 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:
+
+ 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("services.inc");
+
+function 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 php_sync_package()
+{
+
+ global $config;
+ //synch shellcmd tab
+ //configure_shellcmd();
+ //$handle = popen("/usr/local/etc/rc.d/shellcmd.sh stop", "r");
+ //pclose($handle);
+ //$handle = popen("/usr/local/etc/rc.d/shellcmd.sh start", "r");
+ //pclose($handle);
+
+}
+
+
+function php_install_command()
+{
+
+ global $config;
+ conf_mount_rw();
+ config_lock();
+
+ if (!is_dir('/usr/local/www/packages/')) {
+ exec("mkdir /usr/local/www/packages/");
+ }
+
+ if (!is_dir('/usr/local/www/packages/shellcmd/')) {
+ exec("mkdir /usr/local/www/packages/shellcmd/");
+ }
+
+
+ //rename PHP files from .tmp to .php
+ exec("cp /tmp/shellcmd.tmp /usr/local/www/packages/shellcmd/shellcmd.php");
+ unlink_if_exists("/tmp/shellcmd.tmp");
+
+ exec("cp /tmp/shellcmd_edit.tmp /usr/local/www/packages/shellcmd/shellcmd_edit.php");
+ unlink_if_exists("/tmp/shellcmd_edit.tmp");
+
+ //write_config();
+
+ //write_rcfile(array(
+ // "file" => "shellcmd.sh",
+ // "start" => "/usr/sbin/shellcmd -s &",
+ // "stop" => "kill -9 `cat /var/run/shellcmd.pid`"
+ // )
+ //);
+
+ php_sync_package();
+
+ //if (pkg_is_service_running('shellcmd')) {
+ //documentation purposes
+ //}
+
+ conf_mount_ro();
+ config_unlock();
+
+}
+
+
+function deinstall_command()
+{
+
+ conf_mount_rw();
+ config_lock();
+ $handle = popen("/usr/local/etc/rc.d/shellcmd.sh stop", "r");
+ unlink_if_exists("/usr/local/pkg/shellcmd.xml");
+ unlink_if_exists("/usr/local/www/shellcmd.inc");
+ exec("rm -R /usr/local/www/packages/shellcmd");
+ //unlink_if_exists("/usr/local/etc/rc.d/shellcmd.sh");
+ conf_mount_ro();
+ config_unlock();
+
+}
+
+?> \ No newline at end of file
diff --git a/config/shellcmd/shellcmd.tmp b/config/shellcmd/shellcmd.tmp
new file mode 100644
index 00000000..66e32c44
--- /dev/null
+++ b/config/shellcmd/shellcmd.tmp
@@ -0,0 +1,231 @@
+<?php
+/* $Id$ */
+/*
+ shellcmd.php
+ 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:
+
+ 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("guiconfig.inc");
+require("/usr/local/pkg/shellcmd.inc");
+
+$a_earlyshellcmd = &$config['system']['earlyshellcmd'];
+$a_shellcmd = &$config['system']['shellcmd'];
+$a_afterfilterchangeshellcmd = &$config['system']['afterfilterchangeshellcmd'];
+
+if ($_GET['act'] == "del") {
+ if ($_GET['type'] == 'cmd') {
+ if ($a_shellcmd[$_GET['id']]) {
+ unset($a_shellcmd[$_GET['id']]);
+ write_config();
+ header("Location: shellcmd.php");
+ exit;
+ }
+ }
+}
+
+include("head.inc");
+
+?>
+
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<p class="pgtitle">Shellcmd: Settings</p>
+
+<div id="mainlevel">
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td class="tabnavtbl">
+<?php
+
+ $tab_array = array();
+ $tab_array[] = array(gettext("Settings"), false, "/packages/shellcmd/shellcmd.php");
+ display_top_tabs($tab_array);
+
+?>
+</td></tr>
+</table>
+
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="tabcont" >
+
+<form action="shellcmd.php" method="post" name="iform" id="iform">
+<?php
+
+if ($config_change == 1) {
+ write_config();
+ $config_change = 0;
+}
+
+//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;
+
+?>
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td><p><!--<span class="vexpl"><span class="red"><strong>shellcmd<br></strong></span>-->
+ shellcmd controls the commands that are started when the sytems is booted up.
+ <br /><br />
+ <!--For more information see: <a href='http://www.' target='_blank'>http://www.</a>-->
+ </p></td>
+ </tr>
+ </table>
+ <br />
+
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="50%" class="listhdrr">command</td>
+ <td width="30%" class="listhdrr">type</td>
+ <td width="10%" class="list">
+
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="17"></td>
+ <td valign="middle"><a href="shellcmd_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
+
+ $i = 0;
+ if (count($a_earlyshellcmd) > 0) {
+ foreach ($a_earlyshellcmd as $ent) {
+ echo " <tr>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " ".$ent['command']."&nbsp;\n";
+ echo " </td>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " earlyshellcmd&nbsp;\n";
+ 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\"><a href=\"shellcmd_edit.php?t=earlyshellcmd&id=".$i."\"><img src=\"/themes/".$g['theme']."/images/icons/icon_e.gif\" width=\"17\" height=\"17\" border=\"0\"></a></td>\n";
+ echo " <td><a href=\"shellcmd_edit.php?type=cmd&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>\n";
+ echo " </tr>\n";
+ echo " </table>\n";
+ echo " </td>\n";
+ echo " </tr>";
+ $i++;
+ }
+ }
+
+
+ $i = 0;
+ if (count($a_shellcmd) > 0) {
+ foreach ($a_shellcmd as $ent) {
+ echo " <tr>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " ".$ent['command']."&nbsp;\n";
+ echo " </td>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " shellcmd&nbsp;\n";
+ 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\"><a href=\"shellcmd_edit.php?t=shellcmd&id=".$i."\"><img src=\"/themes/".$g['theme']."/images/icons/icon_e.gif\" width=\"17\" height=\"17\" border=\"0\"></a></td>\n";
+ echo " <td><a href=\"shellcmd_edit.php?type=cmd&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>\n";
+ echo " </tr>\n";
+ echo " </table>\n";
+ echo " </td>\n";
+ echo " </tr>";
+ $i++;
+ }
+ }
+
+
+ $i = 0;
+ if (count($a_afterfilterchangeshellcmd) > 0) {
+ foreach ($a_afterfilterchangeshellcmd as $ent) {
+ echo " <tr>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " ".$ent['command']."&nbsp;\n";
+ echo " </td>\n";
+ echo " <td class=\"listr\" ondblclick=\"document.location='shellcmd_edit.php?id=".$i."';\">\n";
+ echo " afterfilterchangeshellcmd&nbsp;\n";
+ 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\"><a href=\"shellcmd_edit.php?t=afterfilterchangeshellcmd&id=".$i."\"><img src=\"/themes/".$g['theme']."/images/icons/icon_e.gif\" width=\"17\" height=\"17\" border=\"0\"></a></td>\n";
+ echo " <td><a href=\"shellcmd_edit.php?type=cmd&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>\n";
+ echo " </tr>\n";
+ echo " </table>\n";
+ echo " </td>\n";
+ echo " </tr>";
+ $i++;
+ }
+ }
+?>
+
+ <tr>
+ <td class="list" colspan="7"></td>
+ <td class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="17"></td>
+ <td valign="middle"><a href="shellcmd_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="8"></td>
+ <td class="list"></td>
+ </tr>
+ </table>
+
+</form>
+
+
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+
+</td>
+</tr>
+</table>
+
+</div>
+
+
+<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/config/shellcmd/shellcmd.xml b/config/shellcmd/shellcmd.xml
new file mode 100644
index 00000000..7e5af996
--- /dev/null
+++ b/config/shellcmd/shellcmd.xml
@@ -0,0 +1,115 @@
+<?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$ */
+/* ========================================================================== */
+/*
+ shellcmd.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:
+
+ 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>Shellcmd</description>
+ <requirements>Describe your package requirements here</requirements>
+ <faq>Currently there are no FAQ items provided.</faq>
+ <name>Shellcmd Settings</name>
+ <version>0.1</version>
+ <title>Settings</title>
+ <include_file>/usr/local/pkg/shellcmd.inc</include_file>
+ <menu>
+ <name>Shellcmd</name>
+ <tooltiptext>shellcmd settings.</tooltiptext>
+ <section>Services</section>
+ <configfile>shellcmd.xml</configfile>
+ <url>/packages/shellcmd/shellcmd.php</url>
+ </menu>
+ <tabs>
+ <tab>
+ <text>Settings</text>
+ <url>/pkg_edit.php?xml=shellcmd.xml&amp;id=0</url>
+ <active/>
+ </tab>
+ <tab>
+ <text>Settings</text>
+ <url>/packages/shellcmd.php</url>
+ <active/>
+ </tab>
+ </tabs>
+ <configpath>installedpackages->package->$packagename->configuration->shellcmd</configpath>
+ <additional_files_needed>
+ <prefix>/usr/local/pkg/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/usr/local/pkg/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/shellcmd/shellcmd.inc</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/tmp/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/shellcmd/shellcmd.tmp</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/tmp/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/shellcmd/shellcmd_edit.tmp</item>
+ </additional_files_needed>
+ <fields>
+ <field>
+ <fielddescr>Variable One</fielddescr>
+ <fieldname>var1</fieldname>
+ <description>Enter the variable one here.</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Variable Two</fielddescr>
+ <fieldname>var1</fieldname>
+ <description>Enter the variable one here.</description>
+ <type>input</type>
+ </field>
+ </fields>
+ <custom_add_php_command>
+ </custom_add_php_command>
+ <custom_php_resync_config_command>
+ php_sync_package();
+ </custom_php_resync_config_command>
+ <custom_delete_php_command>
+ php_sync_package();
+ </custom_delete_php_command>
+ <custom_php_install_command>
+ php_install_command();
+ </custom_php_install_command>
+ <custom_php_deinstall_command>
+ deinstall_command();
+ </custom_php_deinstall_command>
+</packagegui> \ No newline at end of file
diff --git a/config/shellcmd/shellcmd_edit.tmp b/config/shellcmd/shellcmd_edit.tmp
new file mode 100644
index 00000000..904c6008
--- /dev/null
+++ b/config/shellcmd/shellcmd_edit.tmp
@@ -0,0 +1,236 @@
+<?php
+/* $Id$ */
+/*
+
+ shellcmd_edit.php
+ 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:
+
+ 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("guiconfig.inc");
+require("/usr/local/pkg/shellcmd.inc");
+
+
+$a_earlyshellcmd = &$config['system']['earlyshellcmd'];
+$a_shellcmd = &$config['system']['shellcmd'];
+$a_afterfilterchangeshellcmd = &$config['system']['afterfilterchangeshellcmd'];
+
+$id = $_GET['id'];
+if (isset($_POST['id'])) {
+ $id = $_POST['id'];
+}
+
+$type = $_GET['t'];
+if (isset($_POST['t'])) {
+ $type = $_POST['t'];
+}
+
+if ($_GET['act'] == "del") {
+ if ($_GET['type'] == 'cmd') {
+ if ($a_shellcmd[$_GET['id']]) {
+ unset($a_shellcmd[$_GET['id']]);
+ write_config();
+ php_sync_package();
+ header("Location: shellcmd.php");
+ exit;
+ }
+ }
+}
+
+if (isset($id) && $a_shellcmd[$id]) {
+
+ $pconfig['command'] = $a_shellcmd[$id]['command'];
+
+
+}
+
+if ($_POST) {
+
+ unset($input_errors);
+ $pconfig = $_POST;
+
+ if (!$input_errors) {
+
+ $ent = array();
+ $ent['command'] = $_POST['command'];
+
+ if (isset($id) && $a_shellcmd[$id]) {
+ //update
+ $a_shellcmd[$id] = $ent;
+ }
+ else {
+ //add
+ switch (htmlspecialchars($type)) {
+ case "earlyshellcmd":
+ $a_earlyshellcmd[] = $ent;
+ break;
+ case "shellcmd":
+ $a_shellcmd[] = $ent;
+ break;
+ case "afterfilterchangeshellcmd":
+ $a_afterfilterchangeshellcmd[] = $ent;
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ write_config();
+ php_sync_package();
+
+ header("Location: shellcmd.php");
+ exit;
+ }
+}
+
+include("head.inc");
+
+?>
+
+<script type="text/javascript" language="JavaScript">
+
+function show_advanced_config() {
+ document.getElementById("showadvancedbox").innerHTML='';
+ aodiv = document.getElementById('showadvanced');
+ aodiv.style.display = "block";
+</script>
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<p class="pgtitle">shellcmd: Edit</p>
+<?php if ($input_errors) print_input_errors($input_errors); ?>
+
+
+<div id="mainlevel">
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td class="tabnavtbl">
+<?php
+
+ $tab_array = array();
+ $tab_array[] = array(gettext("Settings"), false, "/packages/shellcmd/shellcmd.php");
+ display_top_tabs($tab_array);
+
+?>
+</td></tr>
+</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>shellcmd<br>
+ </strong></span>
+ </p></td>
+ </tr>
+ </table>
+ -->
+ <br />
+
+
+ <form action="shellcmd_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">type</td>
+ <td width="75%" class="vtable">
+ <?php
+ echo " <select name='t' class='formfld'>\n";
+ echo " <option></option>\n";
+ switch (htmlspecialchars($type)) {
+ case "earlyshellcmd":
+ echo " <option value='earlyshellcmd' selected='yes'>earlyshellcmd</option>\n";
+ echo " <option value='shellcmd'>shellcmd</option>\n";
+ echo " <option value='afterfilterchangeshellcmd'>afterfilterchangeshellcmd</option>\n";
+ break;
+ case "shellcmd":
+ echo " <option value='earlyshellcmd'>earlyshellcmd</option>\n";
+ echo " <option value='shellcmd' selected='yes'>shellcmd</option>\n";
+ echo " <option value='afterfilterchangeshellcmd'>afterfilterchangeshellcmd</option>\n";
+ break;
+ case "afterfilterchangeshellcmd":
+ echo " <option value='earlyshellcmd'>earlyshellcmd</option>\n";
+ echo " <option value='shellcmd'>shellcmd</option>\n";
+ echo " <option value='afterfilterchangeshellcmd' selected='yes'>afterfilterchangeshellcmd</option>\n";
+ break;
+ default:
+ echo " <option value=''></option>\n";
+ echo " <option value='earlyshellcmd'>earlyshellcmd</option>\n";
+ echo " <option value='shellcmd'>shellcmd</option>\n";
+ echo " <option value='afterfilterchangeshellcmd'>afterfilterchangeshellcmd</option>\n";
+ break;
+ }
+ echo " </select>\n";
+ ?>
+ <input name="type" type="text" class="formfld" id="minute" size="40" value="<?=htmlspecialchars($pconfig['type']);?>">
+ </td>
+ </tr>
+
+ <tr>
+ <td width="25%" valign="top" class="vncellreq">command</td>
+ <td width="75%" class="vtable">
+ <input name="command" type="text" class="formfld" id="command" size="40" value="<?=htmlspecialchars($pconfig['command']);?>">
+ </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_shellcmd[$id]): ?>
+ <input name="id" type="hidden" value="<?=$id;?>">
+ <?php endif; ?>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+
+ </td>
+ </tr>
+</table>
+
+</div>
+
+<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/pkg_config.7.xml b/pkg_config.7.xml
index 95ed5ca4..804adbb0 100755
--- a/pkg_config.7.xml
+++ b/pkg_config.7.xml
@@ -169,6 +169,20 @@
<configurationfile>cron.xml</configurationfile>
</package>
<package>
+ <name>Shellcmd</name>
+ <website/>
+ <descr>The shellcmd utility is used to manage commands on a system startup.</descr>
+ <category>Services</category>
+ <pkginfolink></pkginfolink>
+ <config_file>http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml</config_file>
+ <depends_on_package_base_url>http://files.pfsense.org/packages/7/All/</depends_on_package_base_url>
+ <version>0.1</version>
+ <status>Alpha</status>
+ <required_version>1.2</required_version>
+ <maintainer>markjcrane@gmail.com</maintainer>
+ <configurationfile>shellcmd.xml</configurationfile>
+ </package>
+ <package>
<name>snort</name>
<descr>Snort is a libpcap-based packet sniffer/logger which can be used as a lightweight network intrusion detection system. It features rules based logging and can perform content searching/matching in addition to being used to detect a variety of other attacks and probes, such as buffer overflows, stealth port scans, CGI attacks, SMB probes, and much more.</descr>
<category>Security</category>