diff --git a/README.md b/README.md
index 76e293e..4cf28f7 100644
--- a/README.md
+++ b/README.md
@@ -1,26 +1,30 @@
-
+
-What is better than a [Pi-hole](https://github.com/pi-hole/pi-hole) blocking ads via DNS on your network? That's right, **two** Pi-hole blocking ads on your network!
+
+
+# Gravity Sync
+
+
+
+###
+
+What is better than a [Pi-hole](https://github.com/pi-hole/pi-hole) blocking trackers, advertisements, and other malicious domains on your network? That's right, **two** Pi-hole blocking all that junk on your network!
- [Seriously. Why two Pi-hole?](https://github.com/vmstan/gravity-sync/wiki/Frequent-Questions#why-do-i-need-more-than-one-pi-hole)
-But if you have more than one Pi-hole in your network you'll want a simple way to keep the list configurations and local DNS settings identical between the two. That's Gravity Sync. With proper preparation it should only take a few minutes to install. Ideally you set up Gravity Sync and forget about it -- and in the long term, it would be awesome if the Pi-hole team made this entire script unnecessary.
+But if you have more than one Pi-hole in your network you'll want a simple way to keep the list configurations and local DNS settings identical between the two. That's where Gravity Sync comes in. With proper preparation, it should only take a few minutes to install. Ideally you setup Gravity Sync and forget about it -- and in the long term, it would be awesome if the Pi-hole team made this entire script unnecessary.
-# Features
-
-Gravity Sync replicates the `gravity.db` database, which includes:
+## Features
+Gravity Sync replicates the Pi-hole Domain Database (`gravity.db`), which includes:
- Blocklist settings with status and comments.
- Domain whitelist and blacklist along with status with comments.
- Custom RegEx whitelist and blacklists.
- Clients and groups along with any list assignments.
-Gravity Sync can also (optionally) replicate FTLDNS/DNSMASQ configuration files, including:
-
-- Local DNS (A Records) which are stored in a separate `custom.list` file within the `/etc/pihole` directory.
-- CNAME Records which are stored in a separate `05-pihole-custom-cname.conf` file in the `/etc/dnsmasq.d` directory.
+Gravity Sync can also (optionally) replicate the Local DNS Records and CNAMEs configuration files.
### Limitations
@@ -32,7 +36,7 @@ Gravity Sync will **not**:
- Sync DHCP settings or monitor device leases.
- Merge long term data, query logs, or statistics.
-# Setup Steps
+## Setup Steps
1. [Review System Requirements](https://github.com/vmstan/gravity-sync/wiki/System-Requirements)
2. [Prepare Your Pi-hole](https://github.com/vmstan/gravity-sync/wiki/Installing#primary-pi-hole)
@@ -42,16 +46,16 @@ Gravity Sync will **not**:
6. [Automate Gravity Sync](https://github.com/vmstan/gravity-sync/wiki/Installing#automation)
7. [Profit](https://memory-alpha.fandom.com/wiki/Rules_of_Acquisition)
-# Disclaimer
+## Disclaimer
Gravity Sync is not developed by or affiliated with the Pi-hole project. This is project an unofficial, community effort, that seeks to implement replication (which is currently not a part of the core Pi-hole product) in a way that provides stability and value to Pi-hole users. The code has been tested across multiple user environments but there always is an element of risk involved with running any arbitrary software you find on the Internet.
Pi-hole is and the Pi-hole logo are [registered trademarks](https://pi-hole.net/trademark-rules-and-brand-guidelines/) of Pi-hole LLC.
-# Additional Documentation
+## Additional Documentation
Please refer to the [Wiki](https://github.com/vmstan/gravity-sync/wiki) for more information:
- [Frequently Asked Questions](https://github.com/vmstan/gravity-sync/wiki/Frequent-Questions)
- [Advanced Installation Options](https://github.com/vmstan/gravity-sync/wiki/Under-The-Covers)
-- [Changelog](https://github.com/vmstan/gravity-sync/blob/master/CHANGELOG.md)
+- [Changelog](https://github.com/vmstan/gravity-sync/wiki/Changelog)
\ No newline at end of file
diff --git a/VERSION b/VERSION
index 4772543..fbcbf73 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.3.2
+3.4.0
\ No newline at end of file
diff --git a/gravity-sync.sh b/gravity-sync.sh
index 443b898..957b46d 100755
--- a/gravity-sync.sh
+++ b/gravity-sync.sh
@@ -3,7 +3,7 @@ SCRIPT_START=$SECONDS
# GRAVITY SYNC BY VMSTAN #####################
PROGRAM='Gravity Sync'
-VERSION='3.3.2'
+VERSION='3.4.0'
# For documentation or downloading updates visit https://github.com/vmstan/gravity-sync
@@ -76,6 +76,9 @@ BASH_PATH='/bin/bash' # default OS bash path
### NEVER CHANGE ANYTHING BELOW THIS LINE! ###
##############################################
+# Import UI Fields
+source ${LOCAL_FOLDR}/includes/gs-ui.sh
+
# Import Color/Message Includes
source ${LOCAL_FOLDR}/includes/gs-colors.sh
diff --git a/includes/gs-automate.sh b/includes/gs-automate.sh
index 0c1e72a..435d3a2 100644
--- a/includes/gs-automate.sh
+++ b/includes/gs-automate.sh
@@ -7,26 +7,26 @@
## Automate Task
function task_automate {
TASKTYPE='AUTOMATE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
CRON_EXIST='0'
CRON_CHECK=$(crontab -l | grep -q "${GS_FILENAME}" && echo '1' || echo '0')
if [ ${CRON_CHECK} == 1 ]
then
- MESSAGE="Automation Task Already Exists"
- echo_info
+ MESSAGE="${UI_AUTO_CRON_EXISTS}"
+ echo_warn
CRON_EXIST='1'
fi
- MESSAGE="Configuring Automated Synchronization"
+ MESSAGE="${UI_AUTO_CRON_DISPLAY_FREQ}"
echo_info
if [[ $1 =~ ^[0-9][0-9]?$ ]]
then
INPUT_AUTO_FREQ=$1
else
- MESSAGE="Synchronization Frequency in Minutes (5, 10, 15, 30) or 0 to Disable (default 15)"
+ MESSAGE="${UI_AUTO_CRON_SELECT_FREQ}"
echo_need
read INPUT_AUTO_FREQ
INPUT_AUTO_FREQ="${INPUT_AUTO_FREQ:-15}"
@@ -39,7 +39,7 @@ function task_automate {
clear_cron
fi
- MESSAGE="Saving New Synchronization Automation"
+ MESSAGE="${UI_AUTO_CRON_SAVING}"
echo_stat
(crontab -l 2>/dev/null; echo "*/${INPUT_AUTO_FREQ} * * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} smart > ${LOG_PATH}/${CRONJOB_LOG}") | crontab -
error_validate
@@ -49,52 +49,24 @@ function task_automate {
then
clear_cron
- MESSAGE="Synchronization Automation Disabled"
- echo_warn
+ # MESSAGE="Synchronization automation has been disabled"
+ # echo_warn
else
- MESSAGE="No Synchronization Automation Scheduled"
+ MESSAGE="${UI_AUTO_CRON_DISABLED}"
echo_warn
fi
else
- MESSAGE="Invalid Frequency Range"
+ MESSAGE="${UI_INVALID_SELECTION}"
echo_fail
exit_nochange
fi
- # MESSAGE="Configuring Daily Backup Frequency"
- # echo_info
-
- # if [[ $2 =~ ^[0-9][0-9]?$ ]]
- # then
- # INPUT_AUTO_BACKUP=$2
- # else
- # MESSAGE="Hour of Day to Backup (1-24) or 0 to Disable"
- # echo_need
- # read INPUT_AUTO_BACKUP
- # fi
-
- # if [ $INPUT_AUTO_BACKUP -gt 24 ]
- # then
- # MESSAGE="Invalid Frequency Range"
- # echo_fail
- # exit_nochange
- # elif [ $INPUT_AUTO_BACKUP -lt 1 ]
- # then
- # MESSAGE="No Backup Automation Scheduled"
- # echo_warn
- # else
- # MESSAGE="Saving New Backup Automation"
- # echo_stat
- # (crontab -l 2>/dev/null; echo "0 ${INPUT_AUTO_BACKUP} * * * ${BASH_PATH} ${LOCAL_FOLDR}/${GS_FILENAME} backup >/dev/null 2>&1") | crontab -
- # error_validate
- # fi
-
exit_withchange
}
## Clear Existing Automation Settings
function clear_cron {
- MESSAGE="Removing Existing Automation"
+ MESSAGE="${UI_AUTO_CRON_DISABLED}"
echo_stat
crontab -l > cronjob-old.tmp
@@ -108,7 +80,7 @@ function clear_cron {
## Cron Task
function task_cron {
TASKTYPE='CRON'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_crontab
diff --git a/includes/gs-backup.sh b/includes/gs-backup.sh
index f138e1a..0bfc01e 100644
--- a/includes/gs-backup.sh
+++ b/includes/gs-backup.sh
@@ -5,9 +5,9 @@
# This code is called from the main gravity-sync.sh file and should not execute directly!
## Backup Task
-function task_backup {
+function task_backup() {
TASKTYPE='BACKUP'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
backup_settime
@@ -20,54 +20,54 @@ function task_backup {
exit_withchange
}
-function backup_settime {
+function backup_settime() {
BACKUPTIMESTAMP=$(date +%F-%H%M%S)
}
-function backup_local_gravity {
- MESSAGE="Performing Backup of Local ${GRAVITY_FI}"
+function backup_local_gravity() {
+ MESSAGE="${UI_BACKUP_SECONDARY} ${UI_GRAVITY_NAME}"
echo_stat
sqlite3 ${PIHOLE_DIR}/${GRAVITY_FI} ".backup '${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup'"
error_validate
}
-function backup_local_custom {
+function backup_local_custom() {
if [ "$SKIP_CUSTOM" != '1' ]
then
if [ -f ${PIHOLE_DIR}/${CUSTOM_DNS} ]
then
- MESSAGE="Performing Backup Up Local ${CUSTOM_DNS}"
+ MESSAGE="${UI_BACKUP_SECONDARY} ${UI_CUSTOM_NAME}"
echo_stat
cp ${PIHOLE_DIR}/${CUSTOM_DNS} ${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup
error_validate
else
- MESSAGE="No Local ${CUSTOM_DNS} Detected"
+ MESSAGE="No local ${CUSTOM_DNS} detected"
echo_info
fi
fi
}
-function backup_local_cname {
+function backup_local_cname() {
if [ "${INCLUDE_CNAME}" == '1' ]
then
if [ -f ${DNSMAQ_DIR}/${CNAME_CONF} ]
then
- MESSAGE="Performing Backup Up Local ${CNAME_CONF}"
+ MESSAGE="${UI_BACKUP_SECONDARY} ${UI_CNAME_NAME}"
echo_stat
cp ${DNSMAQ_DIR}/${CNAME_CONF} ${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CNAME_CONF}.backup
error_validate
else
- MESSAGE="No Local ${CNAME_CONF} Detected"
+ MESSAGE="No local ${CNAME_CONF} detected"
echo_info
fi
fi
}
-function backup_remote_gravity {
- MESSAGE="Performing Backup of Remote ${GRAVITY_FI}"
+function backup_remote_gravity() {
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_GRAVITY_NAME}"
echo_stat
CMD_TIMEOUT='60'
@@ -75,10 +75,10 @@ function backup_remote_gravity {
create_sshcmd
}
-function backup_remote_custom {
+function backup_remote_custom() {
if [ "$SKIP_CUSTOM" != '1' ]
then
- MESSAGE="Performing Backup of Remote ${CUSTOM_DNS}"
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_CUSTOM_NAME}"
echo_stat
CMD_TIMEOUT='15'
@@ -87,10 +87,10 @@ function backup_remote_custom {
fi
}
-function backup_remote_cname {
+function backup_remote_cname() {
if [ "$INCLUDE_CNAME" == '1' ]
then
- MESSAGE="Performing Backup of Remote ${CNAME_CONF}"
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_CNAME_NAME}"
echo_stat
CMD_TIMEOUT='15'
@@ -99,10 +99,15 @@ function backup_remote_cname {
fi
}
-function backup_cleanup {
- MESSAGE="Scrubbing ${BACKUP_RETAIN} Redundant Antimatter Containment Pods"
+function backup_cleanup() {
+ MESSAGE="${UI_BACKUP_PURGE}"
echo_stat
find ${LOCAL_FOLDR}/${BACKUP_FOLD}/*.backup -mtime +${BACKUP_RETAIN} -type f -delete
error_validate
+
+ BACKUP_FOLDER_SIZE=$(du -h ${LOCAL_FOLDR}/${BACKUP_FOLD} | sed 's/\s.*$//')
+
+ MESSAGE="${BACKUP_RETAIN} ${UI_BACKUP_REMAIN} (${BACKUP_FOLDER_SIZE})"
+ echo_info
}
\ No newline at end of file
diff --git a/includes/gs-colors.sh b/includes/gs-colors.sh
index 6ef56f2..44186b9 100644
--- a/includes/gs-colors.sh
+++ b/includes/gs-colors.sh
@@ -44,6 +44,12 @@ function echo_good {
echo -e "\r${GOOD} ${MESSAGE}"
}
+### Success
+function echo_sameline {
+ echo -en " "
+ echo -en "\r"
+}
+
### Failure
function echo_fail {
echo -e "\r${FAIL} ${MESSAGE}"
diff --git a/includes/gs-compare.sh b/includes/gs-compare.sh
index bb3b17e..8ab8dbc 100644
--- a/includes/gs-compare.sh
+++ b/includes/gs-compare.sh
@@ -7,7 +7,7 @@
## Compare Task
function task_compare {
TASKTYPE='COMPARE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_target
diff --git a/includes/gs-config.sh b/includes/gs-config.sh
index 8e85fd7..b7d7e6e 100644
--- a/includes/gs-config.sh
+++ b/includes/gs-config.sh
@@ -7,7 +7,7 @@
## Configure Task
function task_configure {
TASKTYPE='CONFIGURE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
relocate_config_gs
diff --git a/includes/gs-core.sh b/includes/gs-core.sh
index 64f98c2..8b57928 100644
--- a/includes/gs-core.sh
+++ b/includes/gs-core.sh
@@ -4,11 +4,47 @@
# For documentation or downloading updates visit https://github.com/vmstan/gravity-sync
# This code is called from the main gravity-sync.sh file and should not execute directly!
+# Standard Output
+function start_gs {
+ MESSAGE="${UI_CORE_INIT}"
+ echo_grav
+ cd ${LOCAL_FOLDR}
+
+ import_gs
+ ph_type
+
+ MESSAGE="${UI_CORE_EVALUATING}"
+ echo_stat
+
+ if [ "${ROOT_CHECK_AVOID}" != "1" ]
+ then
+ new_root_check
+ fi
+
+ if [ "${INCLUDE_CNAME}" == "1" ] && [ "${SKIP_CUSTOM}" == "1" ]
+ then
+ MESSAGE="${UI_INVALID_DNS_CONFIG} ${CONFIG_FILE}"
+ echo_fail
+
+ exit_nochange
+ fi
+}
+
+# Standard Output No Config
+function start_gs_noconfig {
+ MESSAGE="${UI_CORE_INIT}"
+ echo_grav
+ cd ${LOCAL_FOLDR}
+
+ MESSAGE="${UI_CORE_EVALUATING}"
+ echo_stat
+}
+
## Import Settings
function import_gs {
relocate_config_gs
- MESSAGE="Importing ${CONFIG_FILE} Settings"
+ MESSAGE="${UI_CORE_LOADING} ${CONFIG_FILE}"
echo -en "${STAT} $MESSAGE"
if [ -f ${LOCAL_FOLDR}/settings/${CONFIG_FILE} ]
then
@@ -22,7 +58,7 @@ function import_gs {
else
echo_fail
- MESSAGE="${CONFIG_FILE} Missing"
+ MESSAGE="${UI_CORE_MISSING} ${CONFIG_FILE}"
echo_info
TASKTYPE='CONFIG'
@@ -33,7 +69,7 @@ function import_gs {
function relocate_config_gs {
if [ -f ${LOCAL_FOLDR}/${CONFIG_FILE} ]
then
- MESSAGE="Relocating ${CONFIG_FILE}"
+ MESSAGE="${UI_CORE_RELOCATING} ${CONFIG_FILE}"
echo -en "${STAT} $MESSAGE"
mv ${LOCAL_FOLDR}/${CONFIG_FILE} ${LOCAL_FOLDR}/settings/${CONFIG_FILE}
@@ -42,7 +78,7 @@ function relocate_config_gs {
if [ -f ${LOCAL_FOLDR}/${SYNCING_LOG} ]
then
- MESSAGE="Relocating ${SYNCING_LOG}"
+ MESSAGE="${UI_CORE_RELOCATING} ${SYNCING_LOG}"
echo -en "${STAT} $MESSAGE"
mv ${LOCAL_FOLDR}/${SYNCING_LOG} ${LOG_PATH}/${SYNCING_LOG}
@@ -51,7 +87,7 @@ function relocate_config_gs {
if [ -f ${LOCAL_FOLDR}/${CRONJOB_LOG} ]
then
- MESSAGE="Relocating ${CRONJOB_LOG}"
+ MESSAGE="${UI_CORE_RELOCATING} ${CRONJOB_LOG}"
echo -en "${STAT} $MESSAGE"
mv ${LOCAL_FOLDR}/${CRONJOB_LOG} ${LOG_PATH}/${CRONJOB_LOG}
@@ -60,7 +96,7 @@ function relocate_config_gs {
if [ -f ${LOCAL_FOLDR}/${HISTORY_MD5} ]
then
- MESSAGE="Relocating ${HISTORY_MD5}"
+ MESSAGE="${UI_CORE_RELOCATING} ${HISTORY_MD5}"
echo -en "${STAT} $MESSAGE"
mv ${LOCAL_FOLDR}/${HISTORY_MD5} ${LOG_PATH}/${HISTORY_MD5}
@@ -85,6 +121,17 @@ function error_validate {
fi
}
+## Error Validation
+function silent_error_validate {
+ if [ "$?" != "0" ]
+ then
+ echo_fail
+ exit 1
+ else
+ echo_sameline
+ fi
+}
+
function ph_type {
if [ "$PH_IN_TYPE" == "default" ]
then
@@ -102,45 +149,9 @@ function ph_type {
RH_EXEC="${RIHOLE_BIN}"
elif [ "$RH_IN_TYPE" == "docker" ]
then
- RH_EXEC="sudo ${ROCKER_BIN} exec $(sudo ${ROCKER_BIN} ps -qf name=${ROCKER_CON}) pihole"
+ RH_EXEC="sudo ${ROCKER_BIN} exec \$(sudo ${ROCKER_BIN} ps -qf name=${ROCKER_CON}) pihole"
elif [ "$RH_IN_TYPE" == "podman" ]
then
RH_EXEC="sudo ${RODMAN_BIN} exec ${ROCKER_CON} pihole"
fi
}
-
-# Standard Output
-function start_gs {
- MESSAGE="${PROGRAM} ${VERSION} Executing"
- echo_grav
- cd ${LOCAL_FOLDR}
-
- import_gs
- ph_type
-
- MESSAGE="Evaluating Arguments"
- echo_stat
-
- if [ "${ROOT_CHECK_AVOID}" != "1" ]
- then
- new_root_check
- fi
-
- if [ "${INCLUDE_CNAME}" == "1" ] && [ "${SKIP_CUSTOM}" == "1" ]
- then
- MESSAGE="Invalid Local DNS Settings in ${CONFIG_FILE}"
- echo_fail
-
- exit_nochange
- fi
-}
-
-# Standard Output No Config
-function start_gs_noconfig {
- MESSAGE="${PROGRAM} ${VERSION} Executing"
- echo_grav
- cd ${LOCAL_FOLDR}
-
- MESSAGE="Evaluating Arguments"
- echo_stat
-}
diff --git a/includes/gs-exit.sh b/includes/gs-exit.sh
index c5a6245..339ae3d 100644
--- a/includes/gs-exit.sh
+++ b/includes/gs-exit.sh
@@ -10,9 +10,9 @@ function exit_nochange {
if [ "${TASKTYPE}" == "" ]
then
- MESSAGE="${PROGRAM} Aborting ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ MESSAGE="${PROGRAM} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END}"
else
- MESSAGE="${PROGRAM} ${TASKTYPE} Aborting ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END}"
fi
echo_grav
@@ -25,9 +25,9 @@ function exit_withchange {
if [ "${TASKTYPE}" == "" ]
then
- MESSAGE="${PROGRAM} Completed ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ MESSAGE="${PROGRAM} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END}"
else
- MESSAGE="${PROGRAM} ${TASKTYPE} Completed ($((SCRIPT_END-SCRIPT_START)) seconds)"
+ MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END}"
fi
echo_grav
diff --git a/includes/gs-hashing.sh b/includes/gs-hashing.sh
index af5cedd..9548052 100644
--- a/includes/gs-hashing.sh
+++ b/includes/gs-hashing.sh
@@ -8,12 +8,12 @@
function md5_compare {
HASHMARK='0'
- MESSAGE="Analyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_HASHING} ${UI_GRAVITY_NAME}"
echo_stat
primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
error_validate
- MESSAGE="Analyzing ${GRAVITY_FI} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_COMPARING} ${UI_GRAVITY_NAME}"
echo_stat
secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
error_validate
@@ -22,7 +22,7 @@ function md5_compare {
then
HASHMARK=$((HASHMARK+0))
else
- MESSAGE="Differenced ${GRAVITY_FI} Detected"
+ MESSAGE="${UI_HASHING_DIFFERNCE} ${UI_GRAVITY_NAME}"
echo_warn
HASHMARK=$((HASHMARK+1))
fi
@@ -34,13 +34,13 @@ function md5_compare {
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
then
REMOTE_CUSTOM_DNS="1"
- MESSAGE="Analyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_HASHING} ${UI_CUSTOM_NAME}"
echo_stat
primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
error_validate
- MESSAGE="Analyzing ${CUSTOM_DNS} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_COMPARING} ${UI_CUSTOM_NAME}"
echo_stat
secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
error_validate
@@ -49,23 +49,23 @@ function md5_compare {
then
HASHMARK=$((HASHMARK+0))
else
- MESSAGE="Differenced ${CUSTOM_DNS} Detected"
+ MESSAGE="${UI_HASHING_DIFFERNCE} ${UI_CUSTOM_NAME}"
echo_warn
HASHMARK=$((HASHMARK+1))
fi
else
- MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
else
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
then
REMOTE_CUSTOM_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_DETECTED} ${UI_HASHING_PRIMARY}"
HASHMARK=$((HASHMARK+1))
echo_info
fi
- MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_SECONDARY}"
echo_info
fi
fi
@@ -79,13 +79,13 @@ function md5_compare {
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RNSMAQ_DIR}/${CNAME_CONF}
then
REMOTE_CNAME_DNS="1"
- MESSAGE="Analyzing ${CNAME_CONF} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_HASHING} ${UI_CNAME_NAME}"
echo_stat
primaryCNMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//'")
error_validate
- MESSAGE="Analyzing ${CNAME_CONF} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_COMPARING} ${UI_CNAME_NAME}"
echo_stat
secondCNMD5=$(md5sum ${DNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//')
error_validate
@@ -94,24 +94,24 @@ function md5_compare {
then
HASHMARK=$((HASHMARK+0))
else
- MESSAGE="Differenced ${CNAME_CONF} Detected"
+ MESSAGE="${UI_HASHING_DIFFERNCE} ${UI_CNAME_NAME}"
echo_warn
HASHMARK=$((HASHMARK+1))
fi
else
- MESSAGE="No ${CNAME_CONF} Detected on ${REMOTE_HOST}"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
else
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RNSMAQ_DIR}/${CNAME_CONF}
then
REMOTE_CNAME_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CNAME_CONF}"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_DETECTED} ${UI_HASHING_PRIMARY}"
HASHMARK=$((HASHMARK+1))
echo_info
fi
- MESSAGE="No ${CNAME_CONF} Detected on $HOSTNAME"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_SECONDARY}"
echo_info
fi
fi
@@ -119,11 +119,11 @@ function md5_compare {
if [ "$HASHMARK" != "0" ]
then
- MESSAGE="Replication Required"
+ MESSAGE="${UI_HASHING_REQUIRED}"
echo_warn
HASHMARK=$((HASHMARK+0))
else
- MESSAGE="No Replication Required"
+ MESSAGE="${UI_HASHING_NOREP}"
echo_info
backup_cleanup
exit_nochange
@@ -150,20 +150,20 @@ function previous_md5 {
}
function md5_recheck {
- MESSAGE="Performing Replicator Diagnostics"
+ MESSAGE="${UI_HASHING_DIAGNOSTICS}"
echo_info
HASHMARK='0'
- MESSAGE="Reanalyzing ${GRAVITY_FI} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_REHASHING} ${UI_GRAVITY_NAME}"
echo_stat
primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//')
- error_validate
+ silent_error_validate
- MESSAGE="Reanalyzing ${GRAVITY_FI} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_RECOMPARING} ${UI_GRAVITY_NAME}"
echo_stat
secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//')
- error_validate
+ silent_error_validate
if [ "$SKIP_CUSTOM" != '1' ]
then
@@ -172,28 +172,28 @@ function md5_recheck {
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
then
REMOTE_CUSTOM_DNS="1"
- MESSAGE="Reanalyzing ${CUSTOM_DNS} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_REHASHING} ${UI_CUSTOM_NAME}"
echo_stat
primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'")
- error_validate
+ silent_error_validate
- MESSAGE="Reanalyzing ${CUSTOM_DNS} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_RECOMPARING} ${UI_CUSTOM_NAME}"
echo_stat
secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//')
- error_validate
+ silent_error_validate
else
- MESSAGE="No ${CUSTOM_DNS} Detected on ${REMOTE_HOST}"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
else
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RIHOLE_DIR}/${CUSTOM_DNS}
then
REMOTE_CUSTOM_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CUSTOM_DNS}"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_DETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
- MESSAGE="No ${CUSTOM_DNS} Detected on $HOSTNAME"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_SECONDARY}"
echo_info
fi
fi
@@ -207,29 +207,29 @@ function md5_recheck {
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RNSMAQ_DIR}/${CNAME_CONF}
then
REMOTE_CNAME_DNS="1"
- MESSAGE="Reanalyzing ${CNAME_CONF} on ${REMOTE_HOST}"
+ MESSAGE="${UI_HASHING_REHASHING} ${UI_CNAME_NAME}"
echo_stat
primaryCNMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//'")
- error_validate
+ silent_error_validate
- MESSAGE="Reanalyzing ${CNAME_CONF} on $HOSTNAME"
+ MESSAGE="${UI_HASHING_RECOMPARING} ${UI_CNAME_NAME}"
echo_stat
secondCNMD5=$(md5sum ${DNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//')
- error_validate
+ silent_error_validate
else
- MESSAGE="No ${CNAME_CONF} Detected on ${REMOTE_HOST}"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
else
if ${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${RNSMAQ_DIR}/${CNAME_CONF}
then
REMOTE_CNAME_DNS="1"
- MESSAGE="${REMOTE_HOST} has ${CNAME_CONF}"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}"
echo_info
fi
- MESSAGE="No ${CNAME_CONF} Detected on $HOSTNAME"
+ MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_SECONDARY}"
echo_info
fi
fi
diff --git a/includes/gs-intent.sh b/includes/gs-intent.sh
index dd0286c..e166b28 100644
--- a/includes/gs-intent.sh
+++ b/includes/gs-intent.sh
@@ -23,19 +23,19 @@ function intent_validate {
INTENT="ENGAGE TRACTOR BEAM"
fi
- MESSAGE="Type ${INTENT} to Confirm"
+ MESSAGE="Type ${INTENT} to confirm"
echo_need
read INPUT_INTENT
if [ "${INPUT_INTENT}" != "${INTENT}" ]
then
- MESSAGE="${TASKTYPE} Aborted"
+ MESSAGE="${TASKTYPE} aborted"
echo_info
exit_nochange
fi
else
- MESSAGE="Verification Bypassed"
+ MESSAGE="Verification bypassed"
echo_warn
fi
}
\ No newline at end of file
diff --git a/includes/gs-logging.sh b/includes/gs-logging.sh
index e8de821..5d7e60d 100644
--- a/includes/gs-logging.sh
+++ b/includes/gs-logging.sh
@@ -7,7 +7,7 @@
## Logs Task
function task_logs {
TASKTYPE='LOGS'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
logs_gs
@@ -18,7 +18,7 @@ function task_logs {
function logs_export {
if [ "${TASKTYPE}" != "BACKUP" ]
then
- MESSAGE="Saving File Hashes"
+ MESSAGE="${UI_LOGGING_HASHES}"
echo_stat
rm -f ${LOG_PATH}/${HISTORY_MD5}
echo -e ${primaryDBMD5} >> ${LOG_PATH}/${HISTORY_MD5}
@@ -30,7 +30,7 @@ function logs_export {
error_validate
fi
- MESSAGE="Logging Successful ${TASKTYPE}"
+ MESSAGE="${UI_LOGGING_SUCCESS} ${TASKTYPE}"
echo_stat
echo -e $(date) "[${TASKTYPE}]" >> ${LOG_PATH}/${SYNCING_LOG}
error_validate
@@ -38,21 +38,21 @@ function logs_export {
### Output Sync Logs
function logs_gs {
- MESSAGE="Tailing ${LOG_PATH}/${SYNCING_LOG}"
+ MESSAGE="${UI_LOGGING_DISPLAY}"
echo_info
- echo -e "========================================================"
- echo -e "Recent Complete ${YELLOW}SMART${NC} Executions"
+ echo_lines
+ echo -e "${UI_LOGGING_RECENT_COMPLETE} ${YELLOW}SMART${NC}"
tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep SMART
- echo -e "Recent Complete ${YELLOW}PULL${NC} Executions"
+ echo -e "${UI_LOGGING_RECENT_COMPLETE} ${YELLOW}PULL${NC}"
tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PULL
- echo -e "Recent Complete ${YELLOW}PUSH${NC} Executions"
+ echo -e "${UI_LOGGING_RECENT_COMPLETE} ${YELLOW}PUSH${NC}"
tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep PUSH
- echo -e "Recent Complete ${YELLOW}BACKUP${NC} Executions"
+ echo -e "${UI_LOGGING_RECENT_COMPLETE} ${YELLOW}BACKUP${NC}"
tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep BACKUP
- echo -e "Recent Complete ${YELLOW}RESTORE${NC} Executions"
+ echo -e "${UI_LOGGING_RECENT_COMPLETE} ${YELLOW}RESTORE${NC}"
tail -n 7 "${LOG_PATH}/${SYNCING_LOG}" | grep RESTORE
- echo -e "========================================================"
+ echo_lines
exit_nochange
}
@@ -60,7 +60,7 @@ function logs_gs {
## Crontab Logs
### Core Crontab Logs
function show_crontab {
- MESSAGE="Replaying Last Cronjob"
+ MESSAGE="${UI_LOGGING_DISPLAY}"
echo_stat
if [ -f ${LOG_PATH}/${CRONJOB_LOG} ]
@@ -68,19 +68,19 @@ function show_crontab {
if [ -s ${LOG_PATH}/${CRONJOB_LOG} ]
echo_good
- MESSAGE="Tailing ${LOG_PATH}/${CRONJOB_LOG}"
- echo_info
+ # MESSAGE="Tailing ${LOG_PATH}/${CRONJOB_LOG}"
+ # echo_info
- echo -e "========================================================"
+ echo_lines
date -r ${LOG_PATH}/${CRONJOB_LOG}
cat ${LOG_PATH}/${CRONJOB_LOG}
- echo -e "========================================================"
+ echo_lines
exit_nochange
then
echo_fail
- MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Empty"
+ MESSAGE="${LOG_PATH}/${CRONJOB_LOG} ${UI_LOGGING_EMPTY}"
echo_info
exit_nochange
@@ -88,7 +88,7 @@ function show_crontab {
else
echo_fail
- MESSAGE="${LOG_PATH}/${CRONJOB_LOG} is Missing"
+ MESSAGE="${LOG_PATH}/${CRONJOB_LOG} ${UI_LOGGING_MISSING}"
echo_info
exit_nochange
diff --git a/includes/gs-pull.sh b/includes/gs-pull.sh
index d5a9c96..e1b26d9 100644
--- a/includes/gs-pull.sh
+++ b/includes/gs-pull.sh
@@ -7,7 +7,7 @@
## Pull Task
function task_pull {
TASKTYPE='PULL'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_target
@@ -32,67 +32,19 @@ function pull_gs_grav {
backup_local_gravity
backup_remote_gravity
- MESSAGE="Pulling ${GRAVITY_FI} from ${REMOTE_HOST}"
+ MESSAGE="${UI_PULL_PRIMARY} ${UI_GRAVITY_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull"
create_rsynccmd
- MESSAGE="Replacing ${GRAVITY_FI} on $HOSTNAME"
+ MESSAGE="${UI_REPLACE_SECONDARY} ${UI_GRAVITY_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.pull ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
error_validate
- if [ "$FILE_OWNER" != "named:docker" ]
- then
- MESSAGE="Validating Settings of ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
- if [ "$GRAVDB_OWN" != "$FILE_OWNER" ]
- then
- MESSAGE="Validating Ownership on ${GRAVITY_FI}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
- else
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
-
-
- GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
- if [ "$GRAVDB_RWE" != "-rw-rw-r--" ]
- then
- MESSAGE="Validating Permissions on ${GRAVITY_FI}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Permissions on ${GRAVITY_FI}"
- echo_stat
- sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- echo_good
+ validate_gravity_permissions
}
## Pull Custom
@@ -104,58 +56,19 @@ function pull_gs_cust {
backup_local_custom
backup_remote_custom
- MESSAGE="Pulling ${CUSTOM_DNS} from ${REMOTE_HOST}"
+ MESSAGE="${UI_PULL_PRIMARY} ${UI_CUSTOM_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull"
create_rsynccmd
- MESSAGE="Replacing ${CUSTOM_DNS} on $HOSTNAME"
+ MESSAGE="${UI_REPLACE_SECONDARY} ${UI_CUSTOM_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.pull ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
error_validate
- MESSAGE="Validating Settings on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
- if [ "$CUSTOMLS_OWN" != "rootroot" ]
- then
- MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
- if [ "$CUSTOMLS_RWE" != "-rw-r--r--" ]
- then
- MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
-
- MESSAGE="Continuing Validation of ${GRAVITY_FI}"
- echo_stat
- fi
-
- echo_good
+ validate_custom_permissions
fi
fi
}
@@ -169,40 +82,35 @@ function pull_gs_cname {
backup_local_cname
backup_remote_cname
- MESSAGE="Pulling ${CNAME_CONF} from ${REMOTE_HOST}"
+ MESSAGE="${UI_PULL_PRIMARY} ${UI_CNAME_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/dnsmasq.d-${CNAME_CONF}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CNAME_CONF}.pull"
create_rsynccmd
- MESSAGE="Replacing ${CNAME_CONF} on $HOSTNAME"
+ MESSAGE="${UI_REPLACE_SECONDARY} ${UI_CNAME_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${CNAME_CONF}.pull ${DNSMAQ_DIR}/${CNAME_CONF} >/dev/null 2>&1
error_validate
- MESSAGE="Validating Settings on ${CNAME_CONF}"
- echo_stat
-
validate_cname_permissions
-
- echo_good
fi
fi
}
## Pull Reload
function pull_gs_reload {
- MESSAGE="Isolating Regeneration Pathways"
+ MESSAGE="${UI_PULL_RELOAD_WAIT}"
echo_info
sleep 1
- MESSAGE="Updating FTLDNS Configuration"
+ MESSAGE="${UI_FTLDNS_CONFIG_UPDATE}"
echo_stat
${PH_EXEC} restartdns reloadlists >/dev/null 2>&1
error_validate
- MESSAGE="Reloading FTLDNS Services"
+ MESSAGE="${UI_FTLDNS_CONFIG_RELOAD}"
echo_stat
${PH_EXEC} restartdns >/dev/null 2>&1
error_validate
diff --git a/includes/gs-purge.sh b/includes/gs-purge.sh
index eace19d..35910dd 100644
--- a/includes/gs-purge.sh
+++ b/includes/gs-purge.sh
@@ -7,51 +7,39 @@
## Purge Task
function task_purge {
TASKTYPE="THE-PURGE"
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
- MESSAGE="THIS WILL RESET YOUR ENTIRE GRAVITY SYNC INSTALLATION"
- echo_warn
- MESSAGE="This will remove:"
- echo_warn
- MESSAGE="- All backups files."
- echo_warn
- MESSAGE="- Your ${CONFIG_FILE} file."
- echo_warn
-
+ echo_lines
+ echo -e "THIS WILL RESET YOUR ENTIRE GRAVITY SYNC INSTALLATION"
+ echo -e "This will remove:"
+ echo -e "- All backups files."
+ echo -e "- Your ${CONFIG_FILE} file."
+
if [ -f "${LOCAL_FOLDR}/dev" ]
then
- MESSAGE="- Your development branch updater."
+ echo -e "- Your development branch updater."
elif [ -f "${LOCAL_FOLDR}/beta" ]
then
- MESSAGE="- Your beta branch updater."
+ echo -e "- Your beta branch updater."
fi
- echo_warn
-
- MESSAGE="- All cronjob/automation tasks."
- echo_warn
- MESSAGE="- All job history/logs."
- echo_warn
- MESSAGE="- Associated SSH id_rsa keys."
- echo_warn
- MESSAGE="This function cannot be undone!"
- echo_warn
-
- MESSAGE="YOU WILL NEED TO REBUILD GRAVITY SYNC AFTER EXECUTION"
- echo_warn
-
- MESSAGE="Pi-hole binaries, configuration and services ARE NOT impacted!"
- echo_info
- MESSAGE="Your device will continue to resolve and block DNS requests,"
- echo_info
- MESSAGE="but your ${GRAVITY_FI} and ${CUSTOM_DNS} WILL NOT sync anymore,"
- echo_info
- MESSAGE="until you reconfigure Gravity Sync on this device."
- echo_info
-
+
+ echo -e "- All cronjob/automation tasks."
+ echo -e "- All job history/logs."
+ echo -e "- Associated SSH id_rsa keys."
+ echo -e ""
+ echo -e "This function cannot be undone!"
+ echo -e ""
+ echo -e "YOU WILL NEED TO REBUILD GRAVITY SYNC AFTER EXECUTION"
+ echo -e "Pi-hole binaries, configuration and services ARE NOT impacted!"
+ echo -e "Your device will continue to resolve and block DNS requests,"
+ echo -e "but your ${UI_GRAVITY_NAME} and ${UI_CUSTOM_NAME} WILL NOT sync anymore,"
+ echo -e "until you reconfigure Gravity Sync on this device."
+ echo_lines
+
intent_validate
- MESSAGE="Cleaning Gravity Sync Directory"
+ MESSAGE="${UI_PURGE_CLEANING_DIR}"
echo_stat
git clean -f -X -d >/dev/null 2>&1
@@ -59,20 +47,20 @@ function task_purge {
clear_cron
- MESSAGE="Deleting SSH Key-files"
+ MESSAGE="${UI_PURGE_DELETE_SSH_KEYS}"
echo_stat
rm -f $HOME/${SSH_PKIF} >/dev/null 2>&1
rm -f $HOME/${SSH_PKIF}.pub >/dev/null 2>&1
error_validate
- MESSAGE="Realigning Dilithium Matrix"
- echo_stat
+ MESSAGE="${UI_PURGE_MATRIX_ALIGNMENT}"
+ echo_info
sleep 1
- MESSAGE="Realigning Dilithium Matrix"
- echo_good
+ # MESSAGE="Realigning Dilithium Matrix"
+ # echo_good
update_gs
}
\ No newline at end of file
diff --git a/includes/gs-push.sh b/includes/gs-push.sh
index e4dbc4f..2ff4762 100644
--- a/includes/gs-push.sh
+++ b/includes/gs-push.sh
@@ -7,7 +7,7 @@
## Push Task
function task_push {
TASKTYPE='PUSH'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_target
@@ -31,31 +31,31 @@ function push_gs_grav {
backup_remote_gravity
backup_local_gravity
- MESSAGE="Copying ${GRAVITY_FI} from ${REMOTE_HOST}"
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_GRAVITY_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${GRAVITY_FI}.push"
create_rsynccmd
- MESSAGE="Pushing ${GRAVITY_FI} to ${REMOTE_HOST}"
+ MESSAGE="${UI_PUSH_SECONDARY} ${UI_GRAVITY_NAME}"
echo_stat
RSYNC_REPATH="sudo rsync"
RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup"
RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${GRAVITY_FI}"
create_rsynccmd
- MESSAGE="Setting Permissions on ${GRAVITY_FI}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chmod 664 ${RIHOLE_DIR}/${GRAVITY_FI}"
- create_sshcmd
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_GRAVITY_NAME}"
echo_stat
CMD_TIMEOUT='15'
CMD_REQUESTED="sudo chown ${RILE_OWNER} ${RIHOLE_DIR}/${GRAVITY_FI}"
create_sshcmd
+
+ MESSAGE="${UI_SET_FILE_PERMISSION} ${UI_GRAVITY_NAME}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chmod 664 ${RIHOLE_DIR}/${GRAVITY_FI}"
+ create_sshcmd
}
## Push Custom
@@ -67,31 +67,31 @@ function push_gs_cust {
backup_remote_custom
backup_local_custom
- MESSAGE="Copying ${CUSTOM_DNS} from ${REMOTE_HOST}"
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_CUSTOM_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CUSTOM_DNS}.push"
create_rsynccmd
- MESSAGE="Pushing ${CUSTOM_DNS} to ${REMOTE_HOST}"
+ MESSAGE="${UI_PUSH_SECONDARY} ${UI_CUSTOM_NAME}"
echo_stat
RSYNC_REPATH="sudo rsync"
RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CUSTOM_DNS}.backup"
RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/${CUSTOM_DNS}"
create_rsynccmd
- MESSAGE="Setting Permissions on ${CUSTOM_DNS}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chmod 644 ${RIHOLE_DIR}/${CUSTOM_DNS}"
- create_sshcmd
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_CUSTOM_NAME}"
echo_stat
CMD_TIMEOUT='15'
CMD_REQUESTED="sudo chown root:root ${RIHOLE_DIR}/${CUSTOM_DNS}"
create_sshcmd
+
+ MESSAGE="${UI_SET_FILE_PERMISSIONS} ${UI_CUSTOM_NAME}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chmod 644 ${RIHOLE_DIR}/${CUSTOM_DNS}"
+ create_sshcmd
fi
fi
}
@@ -105,48 +105,49 @@ function push_gs_cname {
backup_remote_cname
backup_local_cname
- MESSAGE="Copying ${CNAME_CONF} from ${REMOTE_HOST}"
+ MESSAGE="${UI_BACKUP_PRIMARY} ${UI_CNAME_NAME}"
echo_stat
RSYNC_REPATH="rsync"
RSYNC_SOURCE="${REMOTE_USER}@${REMOTE_HOST}:${RIHOLE_DIR}/dnsmasq.d-${CNAME_CONF}.backup"
RSYNC_TARGET="${LOCAL_FOLDR}/${BACKUP_FOLD}/${CNAME_CONF}.push"
create_rsynccmd
- MESSAGE="Pushing ${CNAME_CONF} to ${REMOTE_HOST}"
+ MESSAGE="${UI_PUSH_SECONDARY} ${UI_CNAME_NAME}"
echo_stat
RSYNC_REPATH="sudo rsync"
RSYNC_SOURCE="${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${CNAME_CONF}.backup"
RSYNC_TARGET="${REMOTE_USER}@${REMOTE_HOST}:${RNSMAQ_DIR}/${CNAME_CONF}"
create_rsynccmd
- MESSAGE="Setting Permissions on ${CNAME_CONF}"
- echo_stat
- CMD_TIMEOUT='15'
- CMD_REQUESTED="sudo chmod 644 ${RNSMAQ_DIR}/${CNAME_CONF}"
- create_sshcmd
-
- MESSAGE="Setting Ownership on ${CNAME_CONF}"
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_CNAME_NAME}"
echo_stat
CMD_TIMEOUT='15'
CMD_REQUESTED="sudo chown root:root ${RNSMAQ_DIR}/${CNAME_CONF}"
create_sshcmd
+
+
+ MESSAGE="${UI_SET_FILE_PERMISSIONS} ${UI_CNAME_NAME}"
+ echo_stat
+ CMD_TIMEOUT='15'
+ CMD_REQUESTED="sudo chmod 644 ${RNSMAQ_DIR}/${CNAME_CONF}"
+ create_sshcmd
fi
fi
}
## Push Reload
function push_gs_reload {
- MESSAGE="Inverting Tachyon Pulses"
+ MESSAGE="${UI_PUSH_RELOAD_WAIT}"
echo_info
sleep 1
- MESSAGE="Updating Remote FTLDNS Configuration"
+ MESSAGE="${UI_FTLDNS_CONFIG_PUSH_UPDATE}"
echo_stat
CMD_TIMEOUT='15'
CMD_REQUESTED="${RH_EXEC} restartdns reloadlists"
create_sshcmd
- MESSAGE="Reloading Remote FTLDNS Services"
+ MESSAGE="${UI_FTLDNS_CONFIG_PUSH_RELOAD}"
echo_stat
CMD_TIMEOUT='15'
CMD_REQUESTED="${RH_EXEC} restartdns"
diff --git a/includes/gs-restore.sh b/includes/gs-restore.sh
index 3a69f5a..f99ac54 100644
--- a/includes/gs-restore.sh
+++ b/includes/gs-restore.sh
@@ -7,7 +7,7 @@
## Restore Task
function task_restore {
TASKTYPE='RESTORE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_target
@@ -27,14 +27,14 @@ function task_restore {
## Restore Gravity
function restore_gs {
- MESSAGE="This will restore your settings on $HOSTNAME with a previous version!"
+ MESSAGE=""
echo_warn
GRAVITY_DATE_LIST=$(ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${GRAVITY_FI} | colrm 18)
if [ "${GRAVITY_DATE_LIST}" != "" ]
then
- MESSAGE="Previous ${GRAVITY_FI} Versions Available to Restore"
+ MESSAGE="${UI_RESTORE_WARNING}"
echo_info
echo_lines
@@ -42,22 +42,22 @@ function restore_gs {
echo -e "IGNORE-GRAVITY"
echo_lines
- MESSAGE="Select backup date to restore ${GRAVITY_FI} from"
+ MESSAGE="${UI_RESTORE_SELECT_DATE} ${UI_GRAVITY_NAME}"
echo_need
read INPUT_BACKUP_DATE
if [ "$INPUT_BACKUP_DATE" == "IGNORE-GRAVITY" ]
then
- MESSAGE="Skipping Gravity"
+ MESSAGE="${UI_RESTORE_SKIPPING} ${UI_GRAVITY_NAME}"
echo_warn
elif [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ]
then
- MESSAGE="Backup Selected"
+ MESSAGE="${UI_GRAVITY_NAME} ${UI_RESTORE_BACKUP_SELECTED}"
echo_good
DO_GRAVITY_RESTORE='1'
else
- MESSAGE="Invalid Request"
+ MESSAGE="${UI_RESTORE_INVALID}"
echo_info
exit_nochange
@@ -72,36 +72,36 @@ function restore_gs {
if [ "${CUSTOM_DATE_LIST}" != "" ]
then
- MESSAGE="Previous ${CUSTOM_DNS} Versions Available to Restore"
- echo_info
+ # MESSAGE="${UI_RESTORE_SELECT_DATE} ${UI_CUSTOM_NAME}"
+ # echo_info
echo_lines
ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${CUSTOM_DNS} | colrm 18
echo -e "IGNORE-CUSTOM"
echo_lines
- MESSAGE="Select backup date to restore ${CUSTOM_DNS} from"
+ MESSAGE="${UI_RESTORE_SELECT_DATE} ${UI_CUSTOM_NAME}"
echo_need
read INPUT_DNSBACKUP_DATE
if [ "$INPUT_DNSBACKUP_DATE" == "IGNORE-CUSTOM" ]
then
- MESSAGE="Skipping DNS"
+ MESSAGE="${UI_RESTORE_SKIPPING} ${UI_CUSTOM_NAME}"
echo_warn
elif [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
then
- MESSAGE="Backup Selected"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_RESTORE_BACKUP_SELECTED}"
echo_good
DO_CUSTOM_RESTORE='1'
else
- MESSAGE="Invalid Request"
+ MESSAGE="${UI_RESTORE_INVALID}"
echo_fail
exit_nochange
fi
else
- MESSAGE="No ${CUSTOM_DNS} Backups"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_RESTORE_BACKUP_UNAVAILABLE}"
echo_info
fi
fi
@@ -115,36 +115,36 @@ function restore_gs {
if [ "${CNAME_DATE_LIST}" != "" ]
then
- MESSAGE="Previous ${CNAME_CONF} Versions Available to Restore"
- echo_info
+ # MESSAGE="${UI_RESTORE_SELECT_DATE} ${UI_CNAME_NAME}"
+ # echo_info
echo_lines
ls ${LOCAL_FOLDR}/${BACKUP_FOLD} | grep $(date +%Y) | grep ${CNAME_CONF} | colrm 18
echo -e "IGNORE-CNAME"
echo_lines
- MESSAGE="Select backup date to restore ${CNAME_CONF} from"
+ MESSAGE="${UI_RESTORE_SELECT_DATE} ${UI_CNAME_NAME}"
echo_need
read INPUT_CNAMEBACKUP_DATE
if [ "$INPUT_CNAMEBACKUP_DATE" == "IGNORE-CNAME" ]
then
- MESSAGE="Skipping CNAME"
+ MESSAGE="${UI_RESTORE_SKIPPING} ${UI_CNAME_NAME}"
echo_warn
elif [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_CNAMEBACKUP_DATE}-${CNAME_CONF}.backup ]
then
- MESSAGE="Backup Selected"
+ MESSAGE="${UI_CNAME_NAME} ${UI_RESTORE_BACKUP_SELECTED}"
echo_good
DO_CNAME_RESTORE='1'
else
- MESSAGE="Invalid Request"
+ MESSAGE="${UI_RESTORE_INVALID}"
echo_fail
exit_nochange
fi
else
- MESSAGE="No ${CNAME_CONF} Backups"
+ MESSAGE="${UI_CNAME_NAME} ${UI_RESTORE_BACKUP_UNAVAILABLE}"
echo_info
fi
fi
@@ -152,134 +152,62 @@ function restore_gs {
if [ "$DO_GRAVITY_RESTORE" == "1" ]
then
- MESSAGE="${GRAVITY_FI} from ${INPUT_BACKUP_DATE} Selected"
+ MESSAGE="${UI_GRAVITY_NAME} ${UI_RESTORE_FROM} ${INPUT_BACKUP_DATE}"
echo_info
else
- MESSAGE="${GRAVITY_FI} Restore Unavailable"
+ MESSAGE="${UI_GRAVITY_NAME} ${UI_RESTORE_BACKUP_UNAVAILABLE}"
echo_info
fi
if [ "$DO_CUSTOM_RESTORE" == "1" ]
then
- MESSAGE="${CUSTOM_DNS} from ${INPUT_DNSBACKUP_DATE} Selected"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_RESTORE_FROM} ${INPUT_DNSBACKUP_DATE}"
echo_info
else
- MESSAGE="${CUSTOM_DNS} Restore Unavailable"
+ MESSAGE="${UI_CUSTOM_NAME} ${UI_RESTORE_BACKUP_UNAVAILABLE}"
echo_info
fi
if [ "$DO_CNAME_RESTORE" == "1" ]
then
- MESSAGE="${CNAME_CONF} from ${INPUT_CNAMEBACKUP_DATE} Selected"
+ MESSAGE="${UI_CNAME_NAME} ${UI_RESTORE_FROM} ${INPUT_CNAMEBACKUP_DATE}"
echo_info
else
- MESSAGE="${CNAME_CONF} Restore Unavailable"
+ MESSAGE="${UI_CNAME_NAME} ${UI_RESTORE_BACKUP_UNAVAILABLE}"
echo_info
fi
intent_validate
- MESSAGE="Making Time Warp Calculations"
+ MESSAGE="${UI_RESTORE_TIME_TRAVEL}"
echo_info
- MESSAGE="Stopping Pi-hole Services"
- echo_stat
+ # MESSAGE="Stopping FTLDNS services on $HOSTNAME"
+ # echo_stat
- ${PH_EXEC} stop >/dev/null 2>&1
- error_validate
+ # ${PH_EXEC} stop >/dev/null 2>&1
+ # error_validate
- if [ "$DO_CUSTOM_RESTORE" == "1" ]
+ if [ "$DO_GRAVITY_RESTORE" == "1" ]
then
- MESSAGE="Restoring ${GRAVITY_FI} on $HOSTNAME"
+ MESSAGE="${UI_RESTORE_SECONDARY} ${UI_GRAVITY_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_BACKUP_DATE}-${GRAVITY_FI}.backup ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
error_validate
- MESSAGE="Validating Ownership on ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
- if [ "$GRAVDB_OWN" == "$FILE_OWNER" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
-
- MESSAGE="Validating Permissions on ${GRAVITY_FI}"
- echo_stat
-
- GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
- if [ "$GRAVDB_RWE" = "-rw-rw-r--" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${GRAVITY_FI}"
- echo_stat
- sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
- error_validate
- fi
+ validate_gravity_permissions
fi
if [ "$DO_CUSTOM_RESTORE" == '1' ]
then
if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ]
then
- MESSAGE="Restoring ${CUSTOM_DNS} on $HOSTNAME"
+ MESSAGE="${UI_RESTORE_SECONDARY} ${UI_CUSTOM_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_DNSBACKUP_DATE}-${CUSTOM_DNS}.backup ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
error_validate
- MESSAGE="Validating Ownership on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
- if [ "$CUSTOMLS_OWN" == "rootroot" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
- fi
-
- MESSAGE="Validating Permissions on ${CUSTOM_DNS}"
- echo_stat
-
- CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
- if [ "$CUSTOMLS_RWE" == "-rw-r--r--" ]
- then
- echo_good
- else
- echo_fail
-
- MESSAGE="Attempting to Compensate"
- echo_warn
-
- MESSAGE="Setting Ownership on ${CUSTOM_DNS}"
- echo_stat
- sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
- error_validate
- fi
+ validate_custom_permissions
fi
fi
@@ -287,21 +215,18 @@ function restore_gs {
then
if [ -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_CNAMEBACKUP_DATE}-${CNAME_CONF}.backup ]
then
- MESSAGE="Restoring ${CNAME_CONF} on $HOSTNAME"
+ MESSAGE="${UI_RESTORE_SECONDARY} ${UI_CNAME_NAME}"
echo_stat
sudo cp ${LOCAL_FOLDR}/${BACKUP_FOLD}/${INPUT_CNAMEBACKUP_DATE}-${CNAME_CONF}.backup ${DNSMAQ_DIR}/${CNAME_CONF} >/dev/null 2>&1
error_validate
- MESSAGE="Validating Ownership on ${CNAME_CONF}"
- echo_stat
-
validate_cname_permissions
fi
fi
pull_gs_reload
- MESSAGE="Do you want to push the restored configuration to the primary Pi-hole? (yes/no)"
+ MESSAGE="${UI_RESTORE_PUSH_PROMPT}"
echo_need
read PUSH_TO_PRIMARY
@@ -310,10 +235,13 @@ function restore_gs {
push_gs
elif [ "${PUSH_TO_PRIMARY}" == "No" ] || [ "${PUSH_TO_PRIMARY}" == "no" ] || [ "${PUSH_TO_PRIMARY}" == "N" ] || [ "${PUSH_TO_PRIMARY}" == "n" ]
then
+ MESSAGE="${UI_RESTORE_PUSH_NOPUSH}"
+ echo_info
+
logs_export
exit_withchange
else
- MESSAGE="Invalid Selection - Defaulting No"
+ MESSAGE="${UI_INVALID_SELECTION} - ${UI_RESTORE_PUSH_NOPUSH}"
echo_warn
logs_export
diff --git a/includes/gs-root.sh b/includes/gs-root.sh
index 5a02329..342dbd0 100644
--- a/includes/gs-root.sh
+++ b/includes/gs-root.sh
@@ -7,17 +7,17 @@
## Sudo Creation Task
function task_sudo {
TASKTYPE='SUDO'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
- MESSAGE="Creating Sudoer.d Template"
+ MESSAGE="Creating sudoers.d template file"
echo_stat
NEW_SUDO_USER=$(whoami)
echo -e "${NEW_SUDO_USER} ALL=(ALL) NOPASSWD: ALL" > ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo
error_validate
- MESSAGE="Installing Sudoer.d File"
+ MESSAGE="Installing sudoers.d file on $HOSTNAME"
echo_stat
sudo install -m 0440 ${LOCAL_FOLDR}/templates/gs-nopasswd.sudo /etc/sudoers.d/gs-nopasswd
@@ -34,7 +34,7 @@ function root_check {
MESSAGE="${MESSAGE} ${TASKTYPE}"
echo_fail
- MESSAGE="${PROGRAM} Should Not Run As 'root'"
+ MESSAGE="${PROGRAM} should not run as 'root'"
echo_warn
exit_nochange
@@ -63,7 +63,7 @@ function new_root_check {
MESSAGE="${MESSAGE} ${TASKTYPE}"
echo_fail
- MESSAGE="Insufficent User Rights"
+ MESSAGE="${CURRENTUSER} has insufficent user rights for ${PROGRAM}"
echo_warn
exit_nochange
diff --git a/includes/gs-smart.sh b/includes/gs-smart.sh
index aa3fe9a..b0dd02f 100644
--- a/includes/gs-smart.sh
+++ b/includes/gs-smart.sh
@@ -7,7 +7,7 @@
## Smart Task
function task_smart {
TASKTYPE='SMART'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_target
diff --git a/includes/gs-ssh.sh b/includes/gs-ssh.sh
index 95b9787..35e7dac 100644
--- a/includes/gs-ssh.sh
+++ b/includes/gs-ssh.sh
@@ -36,15 +36,15 @@ function create_rsynccmd {
## Detect SSH-KEYGEN
function detect_sshkeygen {
- MESSAGE="Validating SSH-KEYGEN install on $HOSTNAME"
+ MESSAGE="Validating SSH-KEYGEN install"
echo_stat
if hash ssh-keygen >/dev/null 2>&1
then
- echo_good
+ echo_sameline
else
echo_fail
- MESSAGE="SSH-KEYGEN is Required"
+ MESSAGE="SSH-KEYGEN is required on $HOSTNAME"
echo_info
exit_nochange
@@ -56,18 +56,18 @@ function generate_sshkey {
then
if [ -f $HOME/${SSH_PKIF} ]
then
- MESSAGE="Using Existing ~/${SSH_PKIF}"
+ MESSAGE="Using existing ~/${SSH_PKIF} file"
echo_info
else
if hash ssh-keygen >/dev/null 2>&1
then
- MESSAGE="Generating ~/${SSH_PKIF} (SSH-KEYGEN)"
+ MESSAGE="Generating ~/${SSH_PKIF} file"
echo_stat
ssh-keygen -q -P "" -t rsa -f $HOME/${SSH_PKIF} >/dev/null 2>&1
error_validate
else
- MESSAGE="No SSH Key Generator Located"
+ MESSAGE="No SSH-KEYGEN available"
echo_warn
exit_nochange
fi
@@ -80,12 +80,12 @@ function export_sshkey {
then
if [ -f $HOME/${SSH_PKIF} ]
then
- MESSAGE="Registering Key-Pair on ${REMOTE_HOST}"
+ MESSAGE="Registering key-pair to ${REMOTE_HOST}"
echo_info
ssh-copy-id -f -p ${SSH_PORT} -i $HOME/${SSH_PKIF}.pub ${REMOTE_USER}@${REMOTE_HOST}
else
- MESSAGE="Error Registering Key-Pair"
+ MESSAGE="Error registering key-pair to ${REMOTE_HOST}"
echo_warn
fi
fi
@@ -93,59 +93,62 @@ function export_sshkey {
## Detect SSH & RSYNC
function detect_ssh {
- MESSAGE="Validating SSH Client on $HOSTNAME"
+ MESSAGE="Validating OpenSSH client"
echo_stat
if hash ssh 2>/dev/null
then
MESSAGE="${MESSAGE} (OpenSSH)"
- echo_good
+ echo_sameline
SSH_CMD='ssh'
elif hash dbclient 2>/dev/null
then
MESSAGE="${MESSAGE} (Dropbear)"
echo_fail
- MESSAGE="Dropbear not supported in GS ${VERSION}"
- echo_info
+ MESSAGE="Dropbear is not supported in ${PROGRAM} ${VERSION}"
+ echo_warn
exit_nochange
else
echo_fail
+ exit_nochange
- MESSAGE="Attempting to Compensate"
- echo_warn
- MESSAGE="Installing SSH Client with ${PKG_MANAGER}"
- echo_stat
+ # MESSAGE="Attempting to Compensate"
+ # echo_warn
+ # MESSAGE="Installing SSH Client with ${PKG_MANAGER}"
+ # echo_stat
- ${PKG_INSTALL} ssh-client >/dev/null 2>&1
- error_validate
+ # ${PKG_INSTALL} ssh-client >/dev/null 2>&1
+ # error_validate
fi
- MESSAGE="Validating RSYNC Installed on $HOSTNAME"
+ MESSAGE="Validating RSYNC client"
echo_stat
if hash rsync 2>/dev/null
then
- echo_good
+ echo_sameline
else
echo_fail
- MESSAGE="RSYNC is Required"
+
+ MESSAGE="RSYNC client install is required"
echo_warn
+ exit_nochange
- distro_check
+ # distro_check
- MESSAGE="Attempting to Compensate"
- echo_warn
+ # MESSAGE="Attempting to Compensate"
+ # echo_warn
- MESSAGE="Installing RSYNC with ${PKG_MANAGER}"
- echo_stat
- ${PKG_INSTALL} rsync >/dev/null 2>&1
- error_validate
+ # MESSAGE="Installing RSYNC with ${PKG_MANAGER}"
+ # echo_stat
+ # ${PKG_INSTALL} rsync >/dev/null 2>&1
+ # error_validate
fi
}
function detect_remotersync {
- MESSAGE="Creating Test File on ${REMOTE_HOST}"
+ MESSAGE="Creating test file on ${REMOTE_HOST}"
echo_stat
CMD_TIMEOUT='15'
@@ -155,7 +158,7 @@ function detect_remotersync {
MESSAGE="If pull test fails ensure RSYNC is installed on ${REMOTE_HOST}"
echo_warn
- MESSAGE="Pulling Test File to $HOSTNAME"
+ MESSAGE="Pulling test file to $HOSTNAME"
echo_stat
RSYNC_REPATH="rsync"
@@ -163,13 +166,13 @@ function detect_remotersync {
RSYNC_TARGET="${LOCAL_FOLDR}/gs.test"
create_rsynccmd
- MESSAGE="Cleaning Up Local Test File"
+ MESSAGE="Cleaning up local test file"
echo_stat
rm ${LOCAL_FOLDR}/gs.test
error_validate
- MESSAGE="Cleaning Up Remote Test File"
+ MESSAGE="Cleaning up remote test file"
echo_stat
CMD_TIMEOUT='15'
@@ -178,7 +181,7 @@ function detect_remotersync {
}
function show_target {
- MESSAGE="Targeting ${REMOTE_USER}@${REMOTE_HOST}"
+ MESSAGE="Remote Pi-hole: ${REMOTE_USER}@${REMOTE_HOST}"
echo_info
detect_ssh
diff --git a/includes/gs-ui.sh b/includes/gs-ui.sh
new file mode 100644
index 0000000..6996618
--- /dev/null
+++ b/includes/gs-ui.sh
@@ -0,0 +1,107 @@
+# GRAVITY SYNC BY VMSTAN #####################
+# gs-ui.sh ###################################
+
+# For documentation or downloading updates visit https://github.com/vmstan/gravity-sync
+# This code is called from the main gravity-sync.sh file and should not execute directly!
+
+# Interface Settings
+UI_GRAVITY_NAME='Domain Database'
+UI_CUSTOM_NAME='Local DNS Records'
+UI_CNAME_NAME='Local DNS CNAMEs'
+
+# Core
+UI_INVALID_SELECTION='Invalid selection'
+UI_INVALID_DNS_CONFIG='Invalid DNS replication settings in'
+UI_CORE_MISSING='Missing'
+UI_CORE_LOADING='Loading'
+UI_CORE_EVALUATING='Evaluating arguments'
+UI_CORE_INIT="Initalizing ${PROGRAM} (${VERSION})"
+UI_CORE_RELOCATING='Relocating'
+
+# Exit
+UI_EXIT_CALC_END="after $((SCRIPT_END-SCRIPT_START)) seconds"
+UI_EXIT_ABORT='aborted'
+UI_EXIT_COMPLETE='completed'
+
+# Hashing
+UI_HASHING_HASHING='Hashing the primary'
+UI_HASHING_COMPARING='Comparing to the secondary'
+UI_HASHING_DIFFERNCE='Differences detected in the'
+UI_HASHING_DETECTED='has been detected on the'
+UI_HASHING_NOTDETECTED='not detected on the'
+UI_HASHING_PRIMARY='primary host'
+UI_HASHING_SECONDARY='secondary host'
+UI_HASHING_REQUIRED='Replication of Pi-hole settings is required'
+UI_HASHING_NOREP='No replication is required at this time'
+UI_HASHING_DIAGNOSTICS='Performing replicator diagnostics'
+UI_HASHING_REHASHING='Rehashing the primary'
+UI_HASHING_RECOMPARING='Recomparing to the secondary'
+
+# Validation
+UI_VALIDATING='Validating configuration of'
+UI_VALIDATING_FAIL_CONTAINER='Unable to validate running container instance of'
+UI_VALIDATING_FAIL_FOLDER='Unable to validate configuration folder for'
+UI_VALIDATING_FAIL_BINARY='Unable to validate the availibility of'
+UI_CORE_APP='Pi-hole'
+UI_CORE_APP_DNS='DNSMASQ'
+UI_CORE_APP_SQL='SQLITE3'
+UI_COMPENSATE='Attempting to compensate'
+UI_SET_FILE_OWNERSHIP='Setting file ownership on'
+UI_SET_FILE_PERMISSION='Setting file permissions on'
+UI_VAL_FILE_OWNERSHIP='Validating file ownership on'
+UI_VAL_FILE_PERMISSION='Validating file permissions on'
+UI_VAL_GS_FOLDERS="Validating ${PROGRAM} folders on $HOSTNAME"
+UI_VAL_GS_FOLDERS_FAIL="Unable to validate ${PROGRAM} folders on $HOSTNAME"
+
+# Configuration
+UI_DROPBEAR_DEP='Dropbear support has been deprecated'
+
+# Pull/Push
+UI_PULL_PRIMARY='Pulling the primary'
+UI_PUSH_SECONDARY='Pushing the secondary'
+UI_REPLACE_SECONDARY='Replacing the secondary'
+UI_PULL_RELOAD_WAIT='Isolating regeneration pathways'
+UI_PUSH_RELOAD_WAIT='Inverting tachyon pulses'
+UI_FTLDNS_CONFIG_UPDATE='Updating secondary FTLDNS configuration'
+UI_FTLDNS_CONFIG_RELOAD='Reloading secondary FTLDNS services'
+UI_FTLDNS_CONFIG_PUSH_UPDATE='Updating primary FTLDNS configuration'
+UI_FTLDNS_CONFIG_PUSH_RELOAD='Reloading primary FTLDNS services'
+
+# Logging
+UI_LOGGING_SUCCESS='Logging successful'
+UI_LOGGING_HASHES='Saving the updated hashes from this replication'
+UI_LOGGING_DISPLAY='Displaying output of previous jobs'
+UI_LOGGING_EMPTY='is empty'
+UI_LOGGING_MISSING='is missing'
+UI_LOGGING_RECENT_COMPLETE='Recent complete executions of'
+
+# Backup
+UI_BACKUP_PRIMARY='Performing backup of primary'
+UI_BACKUP_SECONDARY='Performing backup of secondary'
+UI_BACKUP_PURGE='Purging redundant backups on secondary Pi-hole instance'
+UI_BACKUP_REMAIN='days of backups remain'
+
+# Restore
+UI_RESTORE_WARNING="This will overwrite your current Pi-hole settings on $HOSTNAME with a previous version!"
+UI_RESTORE_INVALID='Invalid restoration request'
+UI_RESTORE_SELECT_DATE='Select backup date from which to restore the'
+UI_RESTORE_SKIPPING='Skipping restore of'
+UI_RESTORE_BACKUP_SELECTED='backup selected for restoration'
+UI_RESTORE_BACKUP_UNAVAILABLE='backups are unavailable'
+UI_RESTORE_FROM='restoring from'
+UI_RESTORE_TIME_TRAVEL='Preparing calculations for time travel'
+UI_RESTORE_SECONDARY='Restoring the secondary'
+UI_RESTORE_PUSH_PROMPT='Do you want to push the restored configuration to the primary Pi-hole? (Y/N)'
+UI_RESTORE_PUSH_NOPUSH="Configuration will not be pushed to the primaryp Pi-hole"
+
+# Purge
+UI_PURGE_MATRIX_ALIGNMENT='Realigning dilithium crystal matrix'
+UI_PURGE_DELETE_SSH_KEYS='Deleting SSH key-files'
+UI_PURGE_CLEANING_DIR="Purging ${PROGRAM} directory"
+
+# Automation
+UI_AUTO_CRON_EXISTS='Automation task already exists in crontab'
+UI_AUTO_CRON_DISPLAY_FREQ='Select synchronization frequency (in minutes)'
+UI_AUTO_CRON_SELECT_FREQ='Valid options are 5, 10, 15, 30 or 0 to disable (default: 15)'
+UI_AUTO_CRON_SAVING='Saving new synchronization task to crontab'
+UI_AUTO_CRON_DISABLED='Synchronization automation has been disabled'
diff --git a/includes/gs-update.sh b/includes/gs-update.sh
index 19e5d94..0c78e93 100644
--- a/includes/gs-update.sh
+++ b/includes/gs-update.sh
@@ -22,15 +22,15 @@ function update_gs {
GIT_CHECK=$(git status | awk '{print $1}')
if [ "$GIT_CHECK" == "fatal:" ]
then
- MESSAGE="Requires GitHub Installation"
+ MESSAGE="Updater usage requires GitHub installation"
echo_warn
exit_nochange
else
- MESSAGE="Updating Cache"
+ MESSAGE="Downloading updates via GitHub"
echo_stat
git fetch --all >/dev/null 2>&1
error_validate
- MESSAGE="Applying Update"
+ MESSAGE="Deploying the latest ${PROGRAM} code"
echo_stat
git reset --hard ${BRANCH} >/dev/null 2>&1
error_validate
@@ -40,7 +40,7 @@ function update_gs {
## Show Version
function show_version {
echo_lines
- MESSAGE="${BOLD}${PROGRAM}${NC} by ${CYAN}@vmstan${NC}"
+ MESSAGE="${PURPLE}${PROGRAM}${NC} for Pi-hole"
echo_info
MESSAGE="${BLUE}https://github.com/vmstan/gravity-sync${NC}"
@@ -56,19 +56,19 @@ function show_version {
DEVVERSION=""
fi
- MESSAGE="Running Version: ${GREEN}${VERSION}${NC} ${DEVVERSION}"
+ MESSAGE="Running version: ${GREEN}${VERSION}${NC} ${DEVVERSION}"
echo_info
GITVERSION=$(curl -sf https://raw.githubusercontent.com/vmstan/gravity-sync/master/VERSION)
if [ -z "$GITVERSION" ]
then
- MESSAGE="Latest Version: ${RED}Unknown${NC}"
+ MESSAGE="Latest version: ${RED}Unknown${NC}"
else
if [ "$GITVERSION" != "$VERSION" ]
then
- MESSAGE="Update Available: ${PURPLE}${GITVERSION}${NC}"
+ MESSAGE="Update available: ${RED}${GITVERSION}${NC}"
else
- MESSAGE="Latest Version: ${GREEN}${GITVERSION}${NC}"
+ MESSAGE="Latest version: ${GREEN}${GITVERSION}${NC}"
fi
fi
echo_info
@@ -76,7 +76,6 @@ function show_version {
}
function show_info() {
-
if [ -f ${LOCAL_FOLDR}/dev ]
then
DEVVERSION="-dev"
@@ -89,7 +88,7 @@ function show_info() {
echo_lines
echo -e "${YELLOW}Local Software Versions${NC}"
- echo -e "${RED}Gravity Sync${NC} ${VERSION}${DEVVERSION}"
+ echo -e "${PURPLE}Gravity Sync${NC} ${VERSION}${DEVVERSION}"
echo -e "${BLUE}Pi-hole${NC}"
if [ "${PH_IN_TYPE}" == "default" ]
then
@@ -222,7 +221,7 @@ function show_info() {
## Devmode Task
function task_devmode {
TASKTYPE='DEV'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
if [ -f ${LOCAL_FOLDR}/dev ]
@@ -248,14 +247,14 @@ function task_devmode {
touch ${LOCAL_FOLDR}/dev
error_validate
- MESSAGE="Updating Cache"
+ MESSAGE="Checking available branches"
echo_stat
git fetch --all >/dev/null 2>&1
error_validate
git branch -r
- MESSAGE="Select Branch to Update Against"
+ MESSAGE="Select GitHub branch to update against"
echo_need
read INPUT_BRANCH
@@ -270,7 +269,7 @@ function task_devmode {
## Update Task
function task_update {
TASKTYPE='UPDATE'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
dbclient_warning
@@ -283,7 +282,7 @@ function task_update {
## Version Task
function task_version {
TASKTYPE='VERSION'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_version
@@ -294,7 +293,7 @@ function task_version {
function task_info() {
TASKTYPE='INFO'
- MESSAGE="${MESSAGE}: ${TASKTYPE} Requested"
+ MESSAGE="${MESSAGE}: ${TASKTYPE}"
echo_good
show_info
diff --git a/includes/gs-validate.sh b/includes/gs-validate.sh
index 61d8a3e..2355320 100644
--- a/includes/gs-validate.sh
+++ b/includes/gs-validate.sh
@@ -6,34 +6,29 @@
## Validate GS Folders
function validate_gs_folders {
- MESSAGE="Validating ${PROGRAM} Folders on $HOSTNAME"
+ MESSAGE="${UI_VAL_GS_FOLDERS}"
echo_stat
- if [ ! -d ${LOCAL_FOLDR} ]
+
+ if [ ! -d ${LOCAL_FOLDR} ] || [ ! -d ${LOCAL_FOLDR}/${BACKUP_FOLD} ] || [ ! -d ${LOCAL_FOLDR}/settings ] || [ ! -d ${LOG_PATH} ]
then
- MESSAGE="Unable to Validate ${PROGRAM} Folders on $HOSTNAME"
+ MESSAGE="${UI_VAL_GS_FOLDERS_FAIL}"
echo_fail
exit_nochange
fi
- if [ ! -d ${LOCAL_FOLDR}/${BACKUP_FOLD} ]
- then
- MESSAGE="Unable to Validate ${PROGRAM} Backup Folder on $HOSTNAME"
- echo_fail
- exit_nochange
- fi
- echo_good
+ echo_sameline
}
## Validate Pi-hole Folders
function validate_ph_folders {
- MESSAGE="Validating Pi-hole Configuration"
+ MESSAGE="${UI_VALIDATING} ${UI_CORE_APP}"
echo_stat
if [ "$PH_IN_TYPE" == "default" ]
then
if [ ! -f ${PIHOLE_BIN} ]
then
- MESSAGE="Unable to Validate that Pi-Hole is Installed"
+ MESSAGE="${UI_VALIDATING_FAIL_BINARY} ${UI_CORE_APP}"
echo_fail
exit_nochange
fi
@@ -42,7 +37,7 @@ function validate_ph_folders {
FTLCHECK=$(sudo docker container ls | grep "${CONTAIMAGE}")
if [ "$FTLCHECK" == "" ]
then
- MESSAGE="Unable to Validate that Pi-Hole is Installed"
+ MESSAGE="${UI_VALIDATING_FAIL_CONTAINER} ${UI_CORE_APP}"
echo_fail
exit_nochange
fi
@@ -51,7 +46,7 @@ function validate_ph_folders {
FTLCHECK=$(sudo podman container ls | grep "${CONTAIMAGE}")
if [ "$FTLCHECK" == "" ]
then
- MESSAGE="Unable to Validate that Pi-Hole is Installed"
+ MESSAGE="${UI_VALIDATING_FAIL_CONTAINER} ${UI_CORE_APP}"
echo_fail
exit_nochange
fi
@@ -59,87 +54,56 @@ function validate_ph_folders {
if [ ! -d ${PIHOLE_DIR} ]
then
- MESSAGE="Unable to Validate Pi-Hole Configuration Directory"
+ MESSAGE="${UI_VALIDATING_FAIL_FOLDER} ${UI_CORE_APP}"
echo_fail
exit_nochange
fi
- echo_good
+
+ echo_sameline
}
## Validate DNSMASQ Folders
function validate_dns_folders {
- MESSAGE="Validating DNSMASQ Configuration"
+ MESSAGE="${UI_VALIDATING} ${UI_CORE_APP_DNS}"
echo_stat
if [ ! -d ${DNSMAQ_DIR} ]
then
- MESSAGE="Unable to Validate DNSMASQ Configuration Directory"
+ MESSAGE="${UI_VALIDATING_FAIL_FOLDER} ${UI_CORE_APP_DNS}"
echo_fail
exit_nochange
fi
- echo_good
+ echo_sameline
}
## Validate SQLite3
function validate_sqlite3 {
- MESSAGE="Validating SQLITE Installed on $HOSTNAME"
+ MESSAGE="${UI_VALIDATING} ${UI_CORE_APP_SQL}"
echo_stat
if hash sqlite3 2>/dev/null
then
# MESSAGE="SQLITE3 Utility Detected"
- echo_good
+ echo_sameline
else
- MESSAGE="Unable to Validate SQLITE Install on $HOSTNAME"
+ MESSAGE="${UI_VALIDATING_FAIL_BINARY} ${UI_CORE_APP_SQL}"
echo_warn
- MESSAGE="Installing SQLLITE3 with ${PKG_MANAGER}"
- echo_stat
+ #MESSAGE="Installing SQLLITE3 with ${PKG_MANAGER}"
+ #echo_stat
- ${PKG_INSTALL} sqllite3 >/dev/null 2>&1
- error_validate
+ #${PKG_INSTALL} sqllite3 >/dev/null 2>&1
+ #error_validate
fi
}
## Validate SSHPASS
function validate_os_sshpass {
- # SSHPASSWORD=''
-
- # if hash sshpass 2>/dev/null
- # then
- # MESSAGE="SSHPASS Utility Detected"
- # echo_warn
- # if [ -z "$REMOTE_PASS" ]
- # then
- # MESSAGE="Using SSH Key-Pair Authentication"
- # echo_info
- # else
- # MESSAGE="Testing Authentication Options"
- # echo_stat
-
- # timeout 5 ssh -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'exit' >/dev/null 2>&1
- # if [ "$?" != "0" ]
- # then
- # SSHPASSWORD="sshpass -p ${REMOTE_PASS}"
- # MESSAGE="Using SSH Password Authentication"
- # echo_warn
- # else
- # MESSAGE="Valid Key-Pair Detected ${NC}(${RED}Password Ignored${NC})"
- # echo_info
- # fi
- # fi
- # else
- # SSHPASSWORD=''
- # MESSAGE="Using SSH Key-Pair Authentication"
- # echo_info
- # fi
-
- MESSAGE="Validating Connection to ${REMOTE_HOST}"
+ MESSAGE="Connecting to ${REMOTE_HOST}"
echo_stat
CMD_TIMEOUT='5'
CMD_REQUESTED="exit"
create_sshcmd
-
}
## Detect Package Manager
@@ -177,14 +141,99 @@ function dbclient_warning {
then
NOEMPTYBASHIF="1"
else
- MESSAGE="Dropbear support has been deprecated - please convert to OpenSSH"
+ MESSAGE="${UI_DROPBEAR_DEP}"
echo_warn
fi
fi
}
-## Validate CNAME Permissions
-function validate_cname_permissions {
+## Validate Domain Database Permissions
+function validate_gravity_permissions() {
+ MESSAGE="${UI_VAL_FILE_OWNERSHIP} ${UI_GRAVITY_NAME}"
+ echo_stat
+
+ GRAVDB_OWN=$(ls -ld ${PIHOLE_DIR}/${GRAVITY_FI} | awk 'OFS=":" {print $3,$4}')
+ if [ "$GRAVDB_OWN" == "$FILE_OWNER" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="${UI_COMPENSATE}"
+ echo_warn
+
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_GRAVITY_NAME}"
+ echo_stat
+ sudo chown ${FILE_OWNER} ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+ fi
+
+ MESSAGE="${UI_VAL_FILE_PERMISSION} of ${UI_GRAVITY_NAME}"
+ echo_stat
+
+ GRAVDB_RWE=$(namei -m ${PIHOLE_DIR}/${GRAVITY_FI} | grep -v f: | grep ${GRAVITY_FI} | awk '{print $1}')
+ if [ "$GRAVDB_RWE" = "-rw-rw-r--" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="${UI_COMPENSATE}"
+ echo_warn
+
+ MESSAGE="${UI_SET_FILE_PERMISSION} ${UI_GRAVITY_NAME}"
+ echo_stat
+ sudo chmod 664 ${PIHOLE_DIR}/${GRAVITY_FI} >/dev/null 2>&1
+ error_validate
+ fi
+}
+
+## Validate Local DNS Records Permissions
+function validate_custom_permissions() {
+ MESSAGE="${UI_VAL_FILE_OWNERSHIP} ${UI_CUSTOM_NAME}"
+ echo_stat
+
+ CUSTOMLS_OWN=$(ls -ld ${PIHOLE_DIR}/${CUSTOM_DNS} | awk '{print $3 $4}')
+ if [ "$CUSTOMLS_OWN" == "rootroot" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="${UI_COMPENSATE}"
+ echo_warn
+
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_CUSTOM_NAME}"
+ echo_stat
+ sudo chown root:root ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+ fi
+
+ MESSAGE="${UI_VAL_FILE_PERMISSION} ${UI_CUSTOM_NAME}"
+ echo_stat
+
+ CUSTOMLS_RWE=$(namei -m ${PIHOLE_DIR}/${CUSTOM_DNS} | grep -v f: | grep ${CUSTOM_DNS} | awk '{print $1}')
+ if [ "$CUSTOMLS_RWE" == "-rw-r--r--" ]
+ then
+ echo_good
+ else
+ echo_fail
+
+ MESSAGE="${UI_COMPENSATE}"
+ echo_warn
+
+ MESSAGE="${UI_SET_FILE_PERMISSION} ${UI_CUSTOM_NAME}"
+ echo_stat
+ sudo chmod 644 ${PIHOLE_DIR}/${CUSTOM_DNS} >/dev/null 2>&1
+ error_validate
+ fi
+}
+
+## Validate Local DNS CNAME Permissions
+function validate_cname_permissions() {
+ MESSAGE="${UI_VAL_FILE_OWNERSHIP} ${UI_CNAME_NAME}"
+ echo_stat
+
CNAMELS_OWN=$(ls -ld ${DNSMAQ_DIR}/${CNAME_CONF} | awk '{print $3 $4}')
if [ "$CNAMELS_OWN" == "rootroot" ]
then
@@ -192,16 +241,16 @@ function validate_cname_permissions {
else
echo_fail
- MESSAGE="Attempting to Compensate"
+ MESSAGE="${UI_COMPENSATE}"
echo_warn
- MESSAGE="Setting Ownership on ${CNAME_CONF}"
+ MESSAGE="${UI_SET_FILE_OWNERSHIP} ${UI_CNAME_NAME}"
echo_stat
sudo chown root:root ${DNSMAQ_DIR}/${CNAME_CONF} >/dev/null 2>&1
error_validate
fi
- MESSAGE="Validating Permissions on ${CNAME_CONF}"
+ MESSAGE="${UI_VAL_FILE_PERMISSION} ${UI_CNAME_NAME}"
echo_stat
CNAMELS_RWE=$(namei -m ${DNSMAQ_DIR}/${CNAME_CONF} | grep -v f: | grep ${CNAME_CONF} | awk '{print $1}')
@@ -211,12 +260,13 @@ function validate_cname_permissions {
else
echo_fail
- MESSAGE="Attempting to Compensate"
+ MESSAGE="${UI_COMPENSATE}"
echo_warn
- MESSAGE="Setting Ownership on ${CNAME_CONF}"
+ MESSAGE="${UI_SET_FILE_PERMISSION} ${UI_CNAME_NAME}"
echo_stat
sudo chmod 644 ${DNSMAQ_DIR}/${CNAME_CONF} >/dev/null 2>&1
error_validate
fi
-}
\ No newline at end of file
+}
+