aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfig/Fit123/bin/dnssrv/system.abc347
-rw-r--r--config/Fit123/fit123.inc11
-rw-r--r--config/Fit123/fit123.xml6
3 files changed, 364 insertions, 0 deletions
diff --git a/config/Fit123/bin/dnssrv/system.abc b/config/Fit123/bin/dnssrv/system.abc
new file mode 100755
index 00000000..24021aab
--- /dev/null
+++ b/config/Fit123/bin/dnssrv/system.abc
@@ -0,0 +1,347 @@
+<?php
+/* $Id$ */
+/*
+ system.php
+ part of m0n0wall (http://m0n0.ch/wall)
+
+ Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
+ 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");
+
+$pconfig['hostname'] = $config['system']['hostname'];
+$pconfig['domain'] = $config['system']['domain'];
+list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = $config['system']['dnsserver'];
+
+$pconfig['dnsallowoverride'] = isset($config['system']['dnsallowoverride']);
+$pconfig['username'] = $config['system']['username'];
+if (!$pconfig['username'])
+ $pconfig['username'] = "admin";
+$pconfig['webguiproto'] = $config['system']['webgui']['protocol'];
+if (!$pconfig['webguiproto'])
+ $pconfig['webguiproto'] = "http";
+$pconfig['webguiport'] = $config['system']['webgui']['port'];
+$pconfig['timezone'] = $config['system']['timezone'];
+$pconfig['timeupdateinterval'] = $config['system']['time-update-interval'];
+$pconfig['timeservers'] = $config['system']['timeservers'];
+$pconfig['theme'] = $config['system']['theme'];
+
+if (!isset($pconfig['timeupdateinterval']))
+ $pconfig['timeupdateinterval'] = 300;
+if (!$pconfig['timezone'])
+ $pconfig['timezone'] = "Etc/UTC";
+if (!$pconfig['timeservers'])
+ $pconfig['timeservers'] = "pool.ntp.org";
+
+$changedesc = "System: ";
+$changecount = 0;
+
+function is_timezone($elt) {
+ return !preg_match("/\/$/", $elt);
+}
+
+if($pconfig['timezone'] <> $_POST['timezone']) {
+ /* restart firewall log dumper helper */
+ require_once("functions.inc");
+ $pid = `ps awwwux | grep -v "grep" | grep "tcpdump -v -l -n -e -ttt -i pflog0" | awk '{ print $2 }'`;
+ if($pid) {
+ mwexec("kill $pid");
+ usleep(1000);
+ }
+ filter_pflog_start();
+}
+
+exec('/usr/bin/tar -tzf /usr/share/zoneinfo.tgz', $timezonelist);
+$timezonelist = array_filter($timezonelist, 'is_timezone');
+sort($timezonelist);
+
+if ($_POST) {
+
+ $changecount++;
+
+ unset($input_errors);
+ $pconfig = $_POST;
+
+ /* input validation */
+ $reqdfields = split(" ", "hostname domain username");
+ $reqdfieldsn = split(",", "Hostname,Domain,Username");
+
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+
+ if ($_POST['hostname'] && !is_hostname($_POST['hostname'])) {
+ $input_errors[] = "The hostname may only contain the characters a-z, 0-9 and '-'.";
+ }
+ if ($_POST['domain'] && !is_domain($_POST['domain'])) {
+ $input_errors[] = "The domain may only contain the characters a-z, 0-9, '-' and '.'.";
+ }
+ if (($_POST['dns1'] && !is_ipaddr($_POST['dns1'])) || ($_POST['dns2'] && !is_ipaddr($_POST['dns2'])) || ($_POST['dns3'] && !is_ipaddr($_POST['dns3'])) || ($_POST['dns4'] && !is_ipaddr($_POST['dns4']))) {
+ $input_errors[] = "A valid IP address must be specified for the primary/secondary DNS server.";
+ }
+ if ($_POST['username'] && !preg_match("/^[a-zA-Z0-9]*$/", $_POST['username'])) {
+ $input_errors[] = "The username may only contain the characters a-z, A-Z and 0-9.";
+ }
+ if ($_POST['webguiport'] && (!is_numericint($_POST['webguiport']) ||
+ ($_POST['webguiport'] < 1) || ($_POST['webguiport'] > 65535))) {
+ $input_errors[] = "A valid TCP/IP port must be specified for the webGUI port.";
+ }
+ if (($_POST['password']) && ($_POST['password'] != $_POST['password2'])) {
+ $input_errors[] = "The passwords do not match.";
+ }
+
+ $t = (int)$_POST['timeupdateinterval'];
+ if (($t < 0) || (($t > 0) && ($t < 6)) || ($t > 1440)) {
+ $input_errors[] = "The time update interval must be either 0 (disabled) or between 6 and 1440.";
+ }
+ foreach (explode(' ', $_POST['timeservers']) as $ts) {
+ if (!is_domain($ts)) {
+ $input_errors[] = "A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'.";
+ }
+ }
+
+ if (!$input_errors) {
+ update_if_changed("hostname", $config['system']['hostname'], strtolower($_POST['hostname']));
+ update_if_changed("domain", $config['system']['domain'], strtolower($_POST['domain']));
+ update_if_changed("username", $config['system']['username'], $_POST['username']);
+
+ if (update_if_changed("webgui protocol", $config['system']['webgui']['protocol'], $_POST['webguiproto']))
+ $restart_webgui = true;
+ if (update_if_changed("webgui port", $config['system']['webgui']['port'], $_POST['webguiport']))
+ $restart_webgui = true;
+
+ update_if_changed("timezone", $config['system']['timezone'], $_POST['timezone']);
+ update_if_changed("NTP servers", $config['system']['timeservers'], strtolower($_POST['timeservers']));
+ update_if_changed("NTP update interval", $config['system']['time-update-interval'], $_POST['timeupdateinterval']);
+
+ /* pfSense themes */
+ update_if_changed("System Theme", $config['theme'], $_POST['theme']);
+
+ /* XXX - billm: these still need updating after figuring out how to check if they actually changed */
+ unset($config['system']['dnsserver']);
+ if ($_POST['dns1'])
+ $config['system']['dnsserver'][] = $_POST['dns1'];
+ if ($_POST['dns2'])
+ $config['system']['dnsserver'][] = $_POST['dns2'];
+ if ($_POST['dns3'])
+ $config['system']['dnsserver'][] = $_POST['dns3'];
+ if ($_POST['dns4'])
+ $config['system']['dnsserver'][] = $_POST['dns4'];
+
+ $olddnsallowoverride = $config['system']['dnsallowoverride'];
+
+ unset($config['system']['dnsallowoverride']);
+ $config['system']['dnsallowoverride'] = $_POST['dnsallowoverride'] ? true : false;
+ if ($_POST['password']) {
+ $config['system']['password'] = crypt($_POST['password']);
+ update_changedesc("password changed via webConfigurator");
+ sync_webgui_passwords();
+ }
+
+ if ($changecount > 0)
+ write_config($changedesc);
+
+ if ($restart_webgui) {
+ global $_SERVER;
+ list($host) = explode(":", $_SERVER['HTTP_HOST']);
+ if ($config['system']['webgui']['port']) {
+ $url="{$config['system']['webgui']['protocol']}://{$host}:{$config['system']['webgui']['port']}/system.php";
+ } else {
+ $url = "{$config['system']['webgui']['protocol']}://{$host}/system.php";
+ }
+ }
+
+ $retval = 0;
+ config_lock();
+ $retval = system_hostname_configure();
+ $retval |= system_hosts_generate();
+ $retval |= system_resolvconf_generate();
+ $retval |= system_password_configure();
+ $retval |= services_dnsmasq_configure();
+ $retval |= system_timezone_configure();
+ $retval |= system_ntp_configure();
+
+ if ($olddnsallowoverride != $config['system']['dnsallowoverride'])
+ $retval |= interfaces_wan_configure();
+
+ config_unlock();
+
+ // Reload filter -- plugins might need to run
+ filter_configure();
+
+ $savemsg = get_std_save_message($retval);
+ if ($restart_webgui)
+ $savemsg .= "<br />One moment...redirecting to {$url} in 10 seconds.";
+ }
+}
+
+$pgtitle = "System: General Setup";
+include("head.inc");
+
+?>
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<p class="pgtitle"><?=$pgtitle?></p>
+<?php if ($input_errors) print_input_errors($input_errors); ?>
+<?php if ($savemsg) print_info_box($savemsg); ?>
+<form action="system.php" method="post">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Hostname</td>
+ <td width="78%" class="vtable"> <input name="hostname" type="text" class="formfld" id="hostname" size="40" value="<?=htmlspecialchars($pconfig['hostname']);?>">
+ <br> <span class="vexpl">name of the firewall host, without
+ domain part<br>
+ e.g. <em>firewall</em></span></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Domain</td>
+ <td width="78%" class="vtable"> <input name="domain" type="text" class="formfld" id="domain" size="40" value="<?=htmlspecialchars($pconfig['domain']);?>">
+ <br> <span class="vexpl">e.g. <em>mycorp.com</em> </span></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">DNS servers</td>
+ <td width="78%" class="vtable"> <p>
+ <input name="dns1" type="text" class="formfld" id="dns1" size="20" value="<?=htmlspecialchars($pconfig['dns1']);?>">
+ <br>
+ <input name="dns2" type="text" class="formfld" id="dns22" size="20" value="<?=htmlspecialchars($pconfig['dns2']);?>">
+ <br>
+ <input name="dns3" type="text" class="formfld" id="dns3" size="20" value="<?=htmlspecialchars($pconfig['dns3']);?>">
+ <br>
+ <input name="dns4" type="text" class="formfld" id="dns4" size="20" value="<?=htmlspecialchars($pconfig['dns4']);?>">
+ <br>
+ <span class="vexpl">IP addresses; these are also used for
+ the DHCP service, DNS forwarder and for PPTP VPN clients<br>
+ <br>
+ <input name="dnsallowoverride" type="checkbox" id="dnsallowoverride" value="yes" <?php if ($pconfig['dnsallowoverride']) echo "checked"; ?>>
+ <strong>Allow DNS server list to be overridden by DHCP/PPP
+ on WAN</strong><br>
+ If this option is set, <?=$g['product_name']?> will use DNS servers assigned
+ by a DHCP/PPP server on WAN for its own purposes (including
+ the DNS forwarder). They will not be assigned to DHCP and
+ PPTP VPN clients, though.</span></p></td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncell">Username</td>
+ <td class="vtable"> <input name="username" type="text" class="formfld" id="username" size="20" value="<?=$pconfig['username'];?>">
+ <br>
+ <span class="vexpl">If you want
+ to change the username for accessing the webGUI, enter it
+ here.</span></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">Password</td>
+ <td width="78%" class="vtable"> <input name="password" type="password" class="formfld" id="password" size="20">
+ <br> <input name="password2" type="password" class="formfld" id="password2" size="20">
+ &nbsp;(confirmation) <br> <span class="vexpl">If you want
+ to change the password for accessing the webGUI, enter it
+ here twice.</span></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">webGUI protocol</td>
+ <td width="78%" class="vtable"> <input name="webguiproto" type="radio" value="http" <?php if ($pconfig['webguiproto'] == "http") echo "checked"; ?>>
+ HTTP &nbsp;&nbsp;&nbsp; <input type="radio" name="webguiproto" value="https" <?php if ($pconfig['webguiproto'] == "https") echo "checked"; ?>>
+ HTTPS</td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncell">webGUI port</td>
+ <td class="vtable"> <input name="webguiport" type="text" class="formfld" id="webguiport" "size="5" value="<?=htmlspecialchars($config['system']['webgui']['port']);?>">
+ <br>
+ <span class="vexpl">Enter a custom port number for the webGUI
+ above if you want to override the default (80 for HTTP, 443
+ for HTTPS). Changes will take effect immediately after save.</span></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">Time zone</td>
+ <td width="78%" class="vtable"> <select name="timezone" id="timezone">
+ <?php foreach ($timezonelist as $value): ?>
+ <option value="<?=htmlspecialchars($value);?>" <?php if ($value == $pconfig['timezone']) echo "selected"; ?>>
+ <?=htmlspecialchars($value);?>
+ </option>
+ <?php endforeach; ?>
+ </select> <br> <span class="vexpl">Select the location closest
+ to you</span></td>
+ </tr>
+ <!--
+ <tr>
+ <td width="22%" valign="top" class="vncell">Time update interval</td>
+ <td width="78%" class="vtable"> <input name="timeupdateinterval" type="text" class="formfld" id="timeupdateinterval" size="4" value="<?=htmlspecialchars($pconfig['timeupdateinterval']);?>">
+ <br> <span class="vexpl">Minutes between network time sync.;
+ 300 recommended, or 0 to disable </span></td>
+ </tr>
+ -->
+ <tr>
+ <td width="22%" valign="top" class="vncell">NTP time server</td>
+ <td width="78%" class="vtable"> <input name="timeservers" type="text" class="formfld" id="timeservers" size="40" value="<?=htmlspecialchars($pconfig['timeservers']);?>">
+ <br> <span class="vexpl">Use a space to separate multiple
+ hosts (only one required). Remember to set up at least one
+ DNS server if you enter a host name here!</span></td>
+ </tr>
+ <tr>
+ <td colspan="2" class="list" height="12">&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan="2" valign="top" class="listtopic">Theme</td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">&nbsp;</td>
+ <td width="78%" class="vtable">
+ <select name="theme">
+<?php
+ $files = return_dir_as_array("/usr/local/www/themes/");
+ foreach($files as $f) {
+ if ( (substr($f, 0, 1) == "_") && !isset($config['system']['developer']) ) continue;
+ if($f == "CVS") continue;
+ $selected = "";
+ if($f == $config['theme'])
+ $selected = " SELECTED";
+ if($config['theme'] == "" and $f == "pfsense")
+ $selceted = " SELECTED";
+ echo "\t\t\t\t\t"."<option{$selected}>{$f}</option>\n";
+ }
+?>
+ </select>
+ <strong>This will change the look and feel of <?=$g['product_name']?></strong>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top">&nbsp;</td>
+ <td width="78%"> <input name="Submit" type="submit" class="formbtn" value="Save">
+ </td>
+ </tr>
+ </table>
+</form>
+<?php include("fend.inc"); ?>
+<?php
+ // restart webgui if proto or port changed
+ if ($restart_webgui) {
+ echo "<meta http-equiv=\"refresh\" content=\"10;url={$url}\">";
+ }
+?>
+</body>
+</html>
+<?php
+if ($restart_webgui) {
+ touch("/tmp/restart_webgui");
+}
+?>
diff --git a/config/Fit123/fit123.inc b/config/Fit123/fit123.inc
index 4dcc2f36..646ab65f 100644
--- a/config/Fit123/fit123.inc
+++ b/config/Fit123/fit123.inc
@@ -27,6 +27,8 @@ function Fit123_install_config() {
//LTSP network boot Option
exec("cp /etc/inc/services.inc /usr/local/pkg/Fit123/backup/");
exec("cp /usr/local/www/services_dhcp.php /usr/local/pkg/Fit123/backup/");
+ //DNS Server adds option for a 3th and 4th DNS Server
+ exec("cp /usr/local/www/system.php /usr/local/pkg/Fit123/backup/");
//Greate directories and downloading files to them
//Date
exec("mkdir /usr/local/pkg/Fit123/date");
@@ -47,6 +49,9 @@ function Fit123_install_config() {
exec("chmod 744 /usr/local/pkg/Fit123/afc/reset_states.sh");
//DDNS
exec("mkdir /usr/local/pkg/Fit123/ddns");
+ //DNS Server adds option for a 3th and 4th DNS Server
+ exec("mkdir /usr/local/pkg/Fit123/dnssrv");
+ exec("fetch -o /usr/local/pkg/Fit123/dnssrv/system.php http://www.pfsense.com/packages/config/Fit123/bin/dnssrv/system.abc");
conf_mount_ro();
config_unlock();
}
@@ -91,6 +96,12 @@ global $config;
$config['system']['afterfilterchangeshellcmd'] = "/usr/local/bin/reset_states.sh";
else
$config['system']['afterfilterchangeshellcmd'] = "";
+
+ $dnssrv = $config['installedpackages']['fit123']['config'][0]['dnssrv'];
+ if($dnssrv)
+ exec("cp /usr/local/pkg/Fit123/dnssrv/system.php /usr/local/www/system.php");
+ else
+ exec("cp /usr/local/pkg/Fit123/backup/system.php /usr/local/www/system.php");
}
function ddns_config(){
diff --git a/config/Fit123/fit123.xml b/config/Fit123/fit123.xml
index 063a0f4b..04274234 100644
--- a/config/Fit123/fit123.xml
+++ b/config/Fit123/fit123.xml
@@ -65,6 +65,12 @@
</description>
<type>checkbox</type>
</field>
+ <field>
+ <fielddescr>DNS Servers</fielddescr>
+ <fieldname>dnssrv</fieldname>
+ <description>Adds option for a 3th and 4th DNS Server</description>
+ <type>checkbox</type>
+ </field>
</fields>
<custom_php_command_before_form>Fit123_config();</custom_php_command_before_form>
<custom_php_after_form_command></custom_php_after_form_command>