aboutsummaryrefslogtreecommitdiffstats
path: root/packages/freenas/www/services_ftp.php
diff options
context:
space:
mode:
Diffstat (limited to 'packages/freenas/www/services_ftp.php')
-rw-r--r--packages/freenas/www/services_ftp.php392
1 files changed, 0 insertions, 392 deletions
diff --git a/packages/freenas/www/services_ftp.php b/packages/freenas/www/services_ftp.php
deleted file mode 100644
index 050361e5..00000000
--- a/packages/freenas/www/services_ftp.php
+++ /dev/null
@@ -1,392 +0,0 @@
-<?php
-/* $Id$ */
-/* ========================================================================== */
-/*
- services_ftp.php
- part of pfSense (http://www.pfSense.com)
- Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name>
- All rights reserved.
-
- Based on FreeNAS (http://www.freenas.org)
- Copyright (C) 2005-2006 Olivier Cochard-Labbé <olivier@freenas.org>.
- All rights reserved.
-
- Based on m0n0wall (http://m0n0.ch/wall)
- Copyright (C) 2003-2006 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.
- */
-/* ========================================================================== */
-
-$pgtitle = array(gettext("Services"),
- gettext("FTP"));
-
-require_once("freenas_config.inc");
-require_once("guiconfig.inc");
-require_once("freenas_guiconfig.inc");
-require_once("freenas_functions.inc");
-
-if (!is_array($freenas_config['ftp']))
-{
- $freenas_config['ftp'] = array();
-}
-
-$pconfig['enable'] = isset($freenas_config['ftp']['enable']);
-$pconfig['port'] = $freenas_config['ftp']['port'];
-$pconfig['authbackend'] = $freenas_config['ftp']['authentication_backend'];
-$pconfig['numberclients'] = $freenas_config['ftp']['numberclients'];
-$pconfig['maxconperip'] = $freenas_config['ftp']['maxconperip'];
-$pconfig['timeout'] = $freenas_config['ftp']['timeout'];
-$pconfig['anonymous'] = isset($freenas_config['ftp']['anonymous']);
-$pconfig['localuser'] = isset($freenas_config['ftp']['localuser']);
-$pconfig['pasv_max_port'] = $freenas_config['ftp']['pasv_max_port'];
-$pconfig['pasv_min_port'] = $freenas_config['ftp']['pasv_min_port'];
-$pconfig['pasv_address'] = $freenas_config['ftp']['pasv_address'];
-$pconfig['banner'] = $freenas_config['ftp']['banner'];
-$pconfig['natmode'] = isset($freenas_config['ftp']['natmode']);
-$pconfig['passiveip'] = $freenas_config['ftp']['passiveip'];
-$pconfig['fxp'] = isset($freenas_config['ftp']['fxp']);
-
-if (! empty($_POST))
-{
- /* hash */
- unset($error_bucket);
- /* simple error list */
- unset($input_errors);
- $pconfig = $_POST;
-
- /* input validation */
- if ($_POST['enable']) {
- $reqdfields = array_merge($reqdfields, explode(" ", "numberclients maxconperip timeout port"));
- $reqdfieldsn = array_merge($reqdfieldsn, explode(",", "Numberclients,Maxconperip,Timeout,Port"));
- }
-
- do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
-
- if ($_POST['enable'] && !is_port($_POST['port']))
- {
- $error_bucket[] = array("error" => gettext("The TCP port must be a valid port number."),
- "field" => "port");
- }
- if ($_POST['enable'] && !is_numericint($_POST['numberclients'])) {
- $error_bucket[] = array("error" => gettext("The maximum Number of client must be a number."),
- "field" => "numberclients");
- }
-
- if ($_POST['enable'] && !is_numericint($_POST['maxconperip'])) {
- $error_bucket[] = array("error" => gettext("The max con per ip must be a number."),
- "field" => "maxconperip");
- }
- if ($_POST['enable'] && !is_numericint($_POST['timeout'])) {
- $error_bucket[] = array("error" => gettext("The maximum idle time be a number."),
- "field" => "timeout");
- }
-
- if ($_POST['enable'] && ($_POST['pasv_address']))
- {
- if (!is_ipaddr($_POST['pasv_address']))
- $error_bucket[] = array("error" => gettext("The pasv address must be a public IP address."),
- "field" => "pasv_address");
-
- }
-
- if ($_POST['enable'] && ($_POST['pasv_max_port']))
- {
- if (!is_port($_POST['pasv_max_port']))
- $error_bucket[] = array("error" => gettext("The pasv_max_port port must be a valid port number."),
- "field" => "pasv_max_port");
- }
-
- if ($_POST['enable'] && ($_POST['pasv_min_port']))
- {
- if (!is_port($_POST['pasv_min_port']))
- $error_bucket[] = array("error" => gettext("The pasv_min_port port must be a valid port number."),
- "field" => "pasv_min_port");
-
- }
-
- if (($_POST['passiveip'] && !is_ipaddr($_POST['passiveip']))) {
- $error_bucket[] = array("error" => gettext("A valid IP address must be specified."),
- "field" => "passiveip");
-
- }
-
- if (!($_POST['anonymous']) && !($_POST['localuser'])) {
- $input_errors[] = _SRVFTP_MSGVALIDAUTH;
- $error_bucket[] = array("error" => gettext("You must select at minium anonymous or/and local user authentication."),
- "field" => "localuser");
-
- }
-
- if (is_array($error_bucket))
- foreach($error_bucket as $elem)
- $input_errors[] =& $elem["error"];
-
- /* if this is an AJAX caller then handle via JSON */
- if(isAjax() && is_array($error_bucket)) {
- input_errors2Ajax(NULL, $error_bucket);
- exit;
- }
-
- if (!$input_errors)
- {
- $freenas_config['ftp']['numberclients'] = $_POST['numberclients'];
- $freenas_config['ftp']['maxconperip'] = $_POST['maxconperip'];
- $freenas_config['ftp']['timeout'] = $_POST['timeout'];
- $freenas_config['ftp']['port'] = $_POST['port'];
- $freenas_config['ftp']['authentication_backend'] = $_POST['authbackend'];
- $freenas_config['ftp']['anonymous'] = $_POST['anonymous'] ? true : false;
- $freenas_config['ftp']['localuser'] = $_POST['localuser'] ? true : false;
- $freenas_config['ftp']['pasv_max_port'] = $_POST['pasv_max_port'];
- $freenas_config['ftp']['pasv_min_port'] = $_POST['pasv_min_port'];
- $freenas_config['ftp']['pasv_address'] = $_POST['pasv_address'];
- $freenas_config['ftp']['banner'] = $_POST['banner'];
- $freenas_config['ftp']['passiveip'] = $_POST['passiveip'];
- $freenas_config['ftp']['fxp'] = $_POST['fxp'] ? true : false;
- $freenas_config['ftp']['natmode'] = $_POST['natmode'] ? true : false;
- $freenas_config['ftp']['enable'] = $_POST['enable'] ? true : false;
-
- write_config();
-
- $retval = 0;
- if (!file_exists($d_sysrebootreqd_path)) {
- /* nuke the cache file */
- config_lock();
- services_wzdftpd_configure();
- services_zeroconf_configure();
- config_unlock();
- }
- $savemsg = get_std_save_message($retval);
- }
-}
-
-include("head.inc");
-/* put your custom HTML head content here */
-/* using some of the $pfSenseHead function calls */
-
-$jscriptstr = <<<EOD
-<script type="text/javascript">
-<!--
-function enable_change(enable_change) {
- var endis;
-
- endis = !(document.iform.enable.checked || enable_change);
- endis ? color = '#D4D0C8' : color = '#FFFFFF';
-
- document.iform.port.disabled = endis;
- document.iform.authbackend.disabled = endis;
- document.iform.timeout.disabled = endis;
- document.iform.numberclients.disabled = endis;
- document.iform.maxconperip.disabled = endis;
- document.iform.anonymous.disabled = endis;
- document.iform.localuser.disabled = endis;
- document.iform.banner.disabled = endis;
- document.iform.fxp.disabled = endis;
- document.iform.natmode.disabled = endis;
- document.iform.passiveip.disabled = endis;
- document.iform.pasv_max_port.disabled = endis;
- document.iform.pasv_min_port.disabled = endis;
- /* color adjustments */
- document.iform.port.style.backgroundColor = color;
- document.iform.authbackend.backgroundColor = color;
- document.iform.timeout.style.backgroundColor = color;
- document.iform.numberclients.style.backgroundColor = color;
- document.iform.maxconperip.style.backgroundColor = color;
- document.iform.anonymous.style.backgroundColor = color;
- document.iform.localuser.style.backgroundColor = color;
- document.iform.banner.style.backgroundColor = color;
- document.iform.fxp.style.backgroundColor = color;
- document.iform.natmode.style.backgroundColor = color;
- document.iform.passiveip.style.backgroundColor = color;
- document.iform.pasv_max_port.style.backgroundColor = color;
- document.iform.pasv_min_port.style.backgroundColor = color;
-}
-//-->
-</script>
-
-EOD;
-
-$pfSenseHead->addScript($jscriptstr);
-echo $pfSenseHead->getHTML();
-
-?>
-
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onload="<?= $jsevents["body"]["onload"] ?>">
-<?php include("fbegin.inc"); ?>
-
-<?php if ($input_errors) print_input_errors($input_errors); ?>
-<?php if ($savemsg) print_info_box($savemsg); ?>
- <div id="inputerrors"></div>
- <form id="iform" name="iform" action="services_ftp.php" method="post">
- <table width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
- <td width="100%" valign="middle" class="listtopic" colspan="2">
- <span style="vertical-align: middle; position: relative; left: 0px;"><?=gettext("FTP Server");?></span>
- <span style="vertical-align: middle; position: relative; left: 84%;">
- <input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> onClick="enable_change(false)" />&nbsp;<?= gettext("Enable"); ?>
- </span>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("TCP port");?></td>
- <td width="78%" class="vtable">
- <input name="port" type="text" class="formfld unknown" id="port" size="20" value="<?=htmlspecialchars($pconfig['port']);?>" />
- </td>
- </tr>
- <?php
- if (file_exists("/usr/local/sbin/wzdftpd")) {
- $a_backends = array();
-
- $dh = opendir("/usr/local/share/wzdftpd/backends");
- while (false !== ($filename = readdir($dh))) {
- if (preg_match("/\.so$/", $filename)) {
- $lastslash = strrpos($filename, "/");
- $dot = strrpos($filename, ".");
-
- $backend_name = str_replace("libwzd",
- "",
- substr($filename,
- $lastslash,
- $dot - $lastslash));
- $a_backends[] = $backend_name;
- }
- }
- }
- ?>
- <?php if (is_array($a_backends)) : ?>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Authentication Backend");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <select name="authbackend" id="authbackend" class="formselect">
- <?php foreach ($a_backends as $backend) : ?>
- <option value="<?= $backend ?>"><?= $backend ?></option>
- <?php endforeach; ?>
- </select><br />
- <?= gettext("Choose a particular backend, that will be used to authenticate FTP users."); ?>
- </td>
- </tr>
- <?php endif; ?>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Number of clients");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="numberclients" type="text" class="formfld unknown" id="numberclients" size="20" value="<?=htmlspecialchars($pconfig['numberclients']);?>" />
- <br />
- <?= gettext("Maximum number of simultaneous clients."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Max conn per ip");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="maxconperip" type="text" class="formfld unknown" id="maxconperip" size="20" value="<?=htmlspecialchars($pconfig['maxconperip']);?>" />
- <br />
- <?= gettext("Maximum connection per IP address."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Timeout");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="timeout" type="text" class="formfld unknown" id="timeout" size="20" value="<?=htmlspecialchars($pconfig['timeout']);?>" />
- <br />
- <?= gettext("Maximum idle time in seconds."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Anonymous login");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="anonymous" type="checkbox" id="anonymous" value="yes" <?php if ($pconfig['anonymous']) echo "checked=\"checked\""; ?> />
- <?= gettext("Enable Anonymous login"); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Local User");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="localuser" type="checkbox" id="localuser" value="yes" <?php if ($pconfig['localuser']) echo "checked=\"checked\""; ?> />
- <?= gettext("Enable local User login"); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Banner");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <textarea name="banner" cols="65" rows="7" id="banner" class="formpre"><?=htmlspecialchars($pconfig['banner']);?></textarea>
- <br />
- <?= gettext("Greeting banner displayed by FTP when a connection first comes in."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("FXP");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="fxp" type="checkbox" id="fxp" value="yes" <?php if ($pconfig['fxp']) echo "checked=\"checked\""; ?> />
- <?= gettext("Enable FXP protocol."); ?>
- <br />
- <?= gettext("FXP allows transfers between two remote servers without any file data going to the client asking for the transfer (insecure!)."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("NAT mode");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="natmode" type="checkbox" id="natmode" value="yes" <?php if ($pconfig['natmode']) echo "checked=\"checked\""; ?> />
- <?= gettext("Force NAT mode"); ?>
- <br />
- <?= gettext("Enable it if your FTP server is behind a NAT box that doesn't support applicative FTP proxying"); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Passive IP address");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="passiveip" type="text" class="formfld unknown" id="passiveip" size="30" value="<?=htmlspecialchars($pconfig['passiveip']);?>" />
- <?= gettext("Use this option to override the IP address that FTP daemon will advertise in response to the PASV command."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("pasv_min_port");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="pasv_min_port" type="text" class="formfld unknown" id="pasv_min_port" size="20" value="<?=htmlspecialchars($pconfig['pasv_min_port']);?>" />
- <?= gettext("The minimum port to allocate for PASV style data connections."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("pasv_max_port");?></td>
- <td width="78%" class="vtable" align="left" valign="middle">
- <input name="pasv_max_port" type="text" class="formfld unknown" id="pasv_max_port" size="20" value="<?=htmlspecialchars($pconfig['pasv_max_port']);?>" />
- <?= gettext("The maximum port to allocate for PASV style data connections."); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input id="submitt" name="Submitt" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
- </td>
- </tr>
- </table>
- </form>
-<?php include("fend.inc"); ?>
-<?= checkForInputErrors(); ?>
-<script type="text/javascript">
-<!--
-enable_change(false);
-//-->
-</script>
-</body>
-</html>