#!/usr/local/bin/php-cgi -f . * 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. */ /* 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"; 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); ?>