diff --git a/plist b/plist index e8af3ca97..1fd050493 100644 --- a/plist +++ b/plist @@ -71,6 +71,7 @@ /usr/local/etc/pkg/fingerprints/OPNsense/trusted/opnsense-update.deciso.com.20160725 /usr/local/etc/pkg/fingerprints/OPNsense/trusted/pkg.opnsense.org.20161210 /usr/local/etc/rc +/usr/local/etc/rc.backup_captiveportal /usr/local/etc/rc.backup_dhcpleases /usr/local/etc/rc.backup_netflow /usr/local/etc/rc.backup_rrd diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc index f793ca42e..251bdc908 100644 --- a/src/etc/inc/system.inc +++ b/src/etc/inc/system.inc @@ -1606,6 +1606,10 @@ function system_cron_configure($verbose = false) $autocron[] = generate_cron_job('/usr/local/etc/rc.backup_netflow', '0', '*/' . $config['system']['netflowbackup']); } + if (!empty($config['system']['captiveportalbackup'])) { + $autocron[] = generate_cron_job('/usr/local/etc/rc.backup_captiveportal', '0', '*/' . $config['system']['captiveportalbackup']); + } + if (!empty($config['system']['remotebackup']['GDriveEnabled'])) { $autocron[] = generate_cron_job('/usr/local/opnsense/scripts/remote_backup.php', 0, 1); } diff --git a/src/etc/rc b/src/etc/rc index 9531d5641..6e89279e0 100755 --- a/src/etc/rc +++ b/src/etc/rc @@ -241,10 +241,10 @@ done # Startup configd /usr/local/etc/rc.d/configd start -# Restore backups from previous shutdown (if any) -/usr/local/etc/rc.backup_dhcpleases restore -/usr/local/etc/rc.backup_netflow restore -/usr/local/etc/rc.backup_rrd restore +# Restore backups from previous shutdown +for BACKUP in captiveportal dhcpleases netflow rrd; do + /usr/local/etc/rc.backup_${BACKUP} restore +done # Execute the early syshook / plugin commands /usr/local/etc/rc.syshook early diff --git a/src/etc/rc.backup_captiveportal b/src/etc/rc.backup_captiveportal new file mode 100755 index 000000000..e199c1b9e --- /dev/null +++ b/src/etc/rc.backup_captiveportal @@ -0,0 +1,14 @@ +#!/bin/sh + +BACKUPFILE="/conf/captiveportal.sqlite" +BACKUPDB="/var/captiveportal/captiveportal.sqlite" + +if [ "${1}" = "restore" ]; then + if [ -f "${BACKUPFILE}" ]; then + cp "${BACKUPFILE}" "${BACKUPDB}" + fi +else + if [ -f "${BACKUPDB}" ]; then + sqlite3 "${BACKUPDB}" ".backup ${BACKUPFILE}" + fi +fi diff --git a/src/etc/rc.shutdown b/src/etc/rc.shutdown index a5bdc0973..d16d3d2b6 100755 --- a/src/etc/rc.shutdown +++ b/src/etc/rc.shutdown @@ -10,9 +10,9 @@ /usr/local/etc/rc.opnsense stop # backup volatile internals -/usr/local/etc/rc.backup_dhcpleases stop -/usr/local/etc/rc.backup_netflow stop -/usr/local/etc/rc.backup_rrd stop +for BACKUP in captiveportal dhcpleases netflow rrd; do + /usr/local/etc/rc.backup_${BACKUP} stop +done # wait for config lock to release php -a >/dev/null << EOF diff --git a/src/www/system_advanced_misc.php b/src/www/system_advanced_misc.php index 991fecdd0..cbc14cd1f 100644 --- a/src/www/system_advanced_misc.php +++ b/src/www/system_advanced_misc.php @@ -85,6 +85,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { $pconfig['rrdbackup'] = !empty($config['system']['rrdbackup']) ? $config['system']['rrdbackup'] : null; $pconfig['dhcpbackup'] = !empty($config['system']['dhcpbackup']) ? $config['system']['dhcpbackup'] : null; $pconfig['netflowbackup'] = !empty($config['system']['netflowbackup']) ? $config['system']['netflowbackup'] : null; + $pconfig['captiveportalbackup'] = !empty($config['system']['captiveportalbackup']) ? $config['system']['captiveportalbackup'] : null; $pconfig['powerd_ac_mode'] = "hadp"; if (!empty($config['system']['powerd_ac_mode'])) { $pconfig['powerd_ac_mode'] = $config['system']['powerd_ac_mode']; @@ -174,6 +175,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { unset($config['system']['netflowbackup']); } + if (!empty($pconfig['captiveportalbackup'])) { + $config['system']['captiveportalbackup'] = $pconfig['captiveportalbackup']; + } elseif (isset($config['system']['captiveportalbackup'])) { + unset($config['system']['captiveportalbackup']); + } + write_config(); $savemsg = get_std_save_message(); @@ -340,6 +347,24 @@ include("head.inc"); + + + + + + +