summaryrefslogtreecommitdiffstats
path: root/src/etc/rc.restore_ramdisk_store
diff options
context:
space:
mode:
authorNOYB <Al_Stu@Frontier.com>2016-10-09 21:55:32 -0700
committerNOYB <Al_Stu@Frontier.com>2017-01-08 19:14:16 -0800
commit029d6129c500a97952ab3b2473080c44974847de (patch)
tree98c391a2d323c6f051d4add0b9ad2407ceeb4465 /src/etc/rc.restore_ramdisk_store
parent0869605131ba3e5d7e502af7a799e54f27d2e7f6 (diff)
downloadpfsense-029d6129c500a97952ab3b2473080c44974847de.zip
pfsense-029d6129c500a97952ab3b2473080c44974847de.tar.gz
RAM Disk Management - Update II - Restore RAM Disk Soon as it is Created and Include Logs
Restoring the RAM disk as soon as it is available will make it easier to include additional content that needs to persist across reboots for packages etc. Include the logs in the RAM disk store so they will persist across reboots.
Diffstat (limited to 'src/etc/rc.restore_ramdisk_store')
-rwxr-xr-xsrc/etc/rc.restore_ramdisk_store82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/etc/rc.restore_ramdisk_store b/src/etc/rc.restore_ramdisk_store
new file mode 100755
index 0000000..cd33324
--- /dev/null
+++ b/src/etc/rc.restore_ramdisk_store
@@ -0,0 +1,82 @@
+#!/bin/sh
+#
+# rc.restore_ramdisk_store
+#
+# part of pfSense (https://www.pfsense.org)
+# Copyright (c) 2004-2016 Rubicon Communications, LLC (Netgate)
+# All rights reserved.
+#
+# Based on src/etc/rc.d/savecore from FreeBSD
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Wildcard file existence check function
+wildcard_file_exists() {
+ for file in "$1"; do
+ if [ -f "$file" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+: ${DBPATH:=/var/dhcpd/var/db}
+: ${CF_CONF_PATH:=/cf/conf}
+
+: ${RAM_Disk_Store:=${CF_CONF_PATH}/RAM_Disk_Store}
+
+# See if there are any backup files (*.tgz) in the RAM disk store. If so, restore them.
+if wildcard_file_exists "${RAM_Disk_Store}/"*".tgz"; then
+
+ mesg="Restoring contents of RAM disk store..."
+ echo -n "$mesg"
+
+ USE_MFS_TMPVAR=$(/usr/local/sbin/read_xml_tag.sh boolean system/use_mfs_tmpvar)
+
+ # Restore the ram disk
+ for backup_file in "${RAM_Disk_Store}/"*".tgz"; do
+ if [ -f "$backup_file" ]; then
+ /usr/bin/tar -xzf "${backup_file}" -C / 2>&1
+ exit_code=$?
+ if [ $exit_code -ne 0 ]; then
+ mesg="$mesg\nRAM disk restore failed: exit code $exit_code: $backup_file"
+ error=1;
+ continue
+ fi
+
+ mesg="$mesg\nRAM disk restore succeeded: $backup_file"
+
+ #If this backup is still there on a full install, but we aren't going to use ram disks, remove the archive since this is a transition.
+ if [ "${USE_MFS_TMPVAR}" != "true" ]; then
+ /bin/rm -f "${backup_file}"
+ fi
+ fi
+ done
+
+ if [ $error ]; then
+ mesg="$mesg\nRAM disk restore failed."
+ echo " error.";
+ else
+ mesg="$mesg\nRAM disk restore succeeded."
+ echo " done.";
+ fi
+
+ /bin/mkdir -p /var/log/
+ printf "$mesg" > /var/log/restore_ramdisk_store.boot
+
+ # See if there are any backup files (*.tgz) in the RAM disk store. If not, and no error, clean up.
+ if ! wildcard_file_exists "${RAM_Disk_Store}/"*".tgz" && [ ! $error ]; then
+ /bin/rmdir "$RAM_Disk_Store" >/dev/null 2>&1
+ /bin/rm -f /var/log/restore_ramdisk_store.boot
+ fi
+fi
OpenPOWER on IntegriCloud