summaryrefslogtreecommitdiffstats
path: root/src/etc/rc.initial.store_config_to_removable_device
diff options
context:
space:
mode:
Diffstat (limited to 'src/etc/rc.initial.store_config_to_removable_device')
-rwxr-xr-xsrc/etc/rc.initial.store_config_to_removable_device187
1 files changed, 107 insertions, 80 deletions
diff --git a/src/etc/rc.initial.store_config_to_removable_device b/src/etc/rc.initial.store_config_to_removable_device
index a7814c1..e7a2c63 100755
--- a/src/etc/rc.initial.store_config_to_removable_device
+++ b/src/etc/rc.initial.store_config_to_removable_device
@@ -1,92 +1,119 @@
#!/usr/local/bin/php-cgi -f
<?php
/*
- rc.initial.store_config_to_removable_device
- part of m0n0wall (http://m0n0.ch/wall)
+ * rc.initial.store_config_to_removable_device
+ *
+ * part of pfSense (https://www.pfsense.org)
+ * Copyright (c) 2004-2016 Electric Sheep Fencing, LLC
+ * All rights reserved.
+ *
+ * originally 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.
+ *
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgment:
+ * "This product includes software developed by the pfSense Project
+ * for use in the pfSense® software distribution. (http://www.pfsense.org/).
+ *
+ * 4. The names "pfSense" and "pfSense Project" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * coreteam@pfsense.org.
+ *
+ * 5. Products derived from this software may not be called "pfSense"
+ * nor may "pfSense" appear in their names without prior written
+ * permission of the Electric Sheep Fencing, LLC.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ *
+ * "This product includes software developed by the pfSense Project
+ * for use in the pfSense software distribution (http://www.pfsense.org/).
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 pfSense PROJECT OR
+ * ITS 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.
+ */
- Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
- All rights reserved.
+/* parse the configuration and include all functions used below */
+require_once("config.inc");
+require_once("functions.inc");
+require_once("util.inc");
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+$fp = fopen('php://stdin', 'r');
- 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.
-*/
-
- /* parse the configuration and include all functions used below */
- require_once("config.inc");
- require_once("functions.inc");
- require_once("util.inc");
-
- $fp = fopen('php://stdin', 'r');
-
- do {
- $dirs = array();
- $dirs = return_dir_as_array("/var/db/pfi/");
- if (!is_array($dirs)) {
- echo "\nNo capable storage devices detected.\n";
- fclose($fp);
- return;
- }
- echo "\nDevices capable of config.xml storage:\n";
- foreach ($dirs as $dir) {
- preg_match_all("/capable\_(.*)/", $dir, $match_array);
- echo $match_array[1][0] . " ";
- }
- echo "\n\n";
- echo "Enter the device that you wish the";
- echo "\n";
- echo "{$g['product_name']} configuration file to reside on: ";
- $move_config_to_device = chop(fgets($fp));
- if ($move_config_to_device == "") {
- fclose($fp);
- return 0;
- }
- } while (!$move_config_to_device);
-
- mwexec("/bin/mkdir -p /tmp/mnt/cf");
-
- $status = mwexec("/sbin/mount -w -t msdosfs /dev/{$move_config_to_device} /tmp/mnt/cf");
- if (!$status) {
- echo "Error while mounting {$move_config_to_device}.\n";
+do {
+ $dirs = array();
+ $dirs = return_dir_as_array("/var/db/pfi/");
+ if (!is_array($dirs)) {
+ echo "\nNo capable storage devices detected.\n";
fclose($fp);
return;
}
+ echo "\nDevices capable of config.xml storage:\n";
+ foreach ($dirs as $dir) {
+ preg_match_all("/capable\_(.*)/", $dir, $match_array);
+ echo $match_array[1][0] . " ";
+ }
+ echo "\n\n";
+ echo "Enter the device that you wish the";
+ echo "\n";
+ echo "{$g['product_name']} configuration file to reside on: ";
+ $move_config_to_device = chop(fgets($fp));
+ if ($move_config_to_device == "") {
+ fclose($fp);
+ return 0;
+ }
+} while (!$move_config_to_device);
+
+mwexec("/bin/mkdir -p /tmp/mnt/cf");
- echo "\n\nProcessing: ";
- $lockkey = lock('config');
- echo "moving...";
- mwexec("mkdir -p /tmp/mnt/cf/conf/");
- mwexec("/bin/mv /cf/conf/config.xml /tmp/mnt/cf/conf/");
- echo "removing old...";
- echo " nullfs... ";
- system("/sbin/umount /cf/conf");
- system("/sbin/umount /conf");
- mwexec("/bin/rm -rf /conf/*.*");
- /* use nullfs to mount */
- system("/sbin/mount_nullfs /tmp/mnt/cf/conf /conf");
- system("/sbin/mount_nullfs /tmp/mnt/cf /cf");
- echo "linking...";
- mwexec("/bin/rm -rf /var/db/pfi");
- unlock($lockkey);
- echo "done.\n";
- echo "\nYour configuration has been moved to {$move_config_to_device}\n";
- touch("/tmp/config_moved");
+$status = mwexec("/sbin/mount -w -t msdosfs /dev/{$move_config_to_device} /tmp/mnt/cf");
+if (!$status) {
+ echo "Error while mounting {$move_config_to_device}.\n";
fclose($fp);
+ return;
+}
+
+echo "\n\nProcessing: ";
+$lockkey = lock('config');
+echo "moving...";
+mwexec("mkdir -p /tmp/mnt/cf/conf/");
+mwexec("/bin/mv /cf/conf/config.xml /tmp/mnt/cf/conf/");
+echo "removing old...";
+echo " nullfs... ";
+system("/sbin/umount /cf/conf");
+system("/sbin/umount /conf");
+mwexec("/bin/rm -rf /conf/*.*");
+/* use nullfs to mount */
+system("/sbin/mount_nullfs /tmp/mnt/cf/conf /conf");
+system("/sbin/mount_nullfs /tmp/mnt/cf /cf");
+echo "linking...";
+mwexec("/bin/rm -rf /var/db/pfi");
+unlock($lockkey);
+echo "done.\n";
+echo "\nYour configuration has been moved to {$move_config_to_device}\n";
+touch("/tmp/config_moved");
+fclose($fp);
?>
OpenPOWER on IntegriCloud