mirror of
https://github.com/vmstan/gravity-sync.git
synced 2025-05-24 00:02:22 -04:00
4.0.5 (#400)
* Simple fix for podman to work; whitespace clean up (#396) * Fix set_pihole_exec to match full container names (#390) Fix set_pihole_exec to match full container names, rather than their substrings, by adding begin and end anchors to the 'docker ps -qf name=PATTERN' being used. Signed-off-by: William Blew <william@kulian.org> * Fix the detect_xxx_pihole routines. (#389) Fix the detect_xxx_pihole routines to respect the configurable PIHOLE_CONTAINER_IMAGE variable. The ghcr.io/pi-hole/pihole image is also released by the Pi-hole project, just as the pihole/pihole image. This commit enables ghcr.io image usage by adding the following to the /etc/gravity-sync.conf file: PIHOLE_CONTAINER_IMAGE='ghcr.io/pi-hole/pihole' Signed-off-by: William Blew <william@kulian.org> Co-authored-by: Michael Stanclift <mx@vmstan.com> * Make check for sudo privileges more accurate (#375) * Make check for sudo privileges more accurate The existing method of checking if the Gravity Sync user has sudo rights is flawed, in that it will break if the user is not in the `sudo` group (on Debian based distros) or the `wheel` group (on CentOS/RHEL distros). A more accurate way of checking if a user has sudo privileges is using `sudo --validate` or `sudo -n true`; both of which return `0` if the user has sudo privileges. This commit updates the `validate_sudo_status` function to use `sudo --validate` so that Gravity Sync is actually checking if a user has sudo privileges, rather than just checking group memberships. * Fix bug in patch --------- Co-authored-by: llamalump <29816026+llamalump@users.noreply.github.com> * Fix: GS_SSH_PORT can be changed now via 'gravity-sync config <NEW_PORT>' when already set in gravity-sync.conf. Fix: Initial sync of static DHCP and CNAME to 'empty pihole' now works. Enhancement: Various settings now settable via ENV vars (for Docker) (#384) * SSH custom port: Fixed bug, where GS_SSH_PORT is overwritten by gravity-sync.conf (if set) when calling 'gravity-sync config NEW_SSH_PORT'. Docker enhancements: Made many config-variables settable via ENV vars * Fixing initial push of CNAME and Static DHCP entries to an 'empty' remote (fixes https://github.com/vmstan/gravity-sync/issues/377) * Removing unecessary 'export' keyword * Fixed 'md5_recheck' for the bug https://github.com/vmstan/gravity-sync/issues/377 * Adding ENV documentation * Fixing typo * Fixed type and nicely formatted tables with emacs --------- Co-authored-by: Michael Stanclift <mx@vmstan.com> * Update VERSION * Update gravity-sync --------- Signed-off-by: William Blew <william@kulian.org> Co-authored-by: Matt Woodson <mwoodson@gmail.com> Co-authored-by: William Blew <william@kulian.org> Co-authored-by: Seb Thomson <29816026+rst-ack@users.noreply.github.com> Co-authored-by: llamalump <29816026+llamalump@users.noreply.github.com> Co-authored-by: Klaus Zipfel <30482165+systemofapwne@users.noreply.github.com>
This commit is contained in:
parent
183190e4bb
commit
ad783f1385
85
ENV.md
Normal file
85
ENV.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<p align="center">
|
||||||
|
<img src="https://vmstan.com/content/images/2021/02/gs-logo.svg" width="300" alt="Gravity Sync">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<span align="center">
|
||||||
|
|
||||||
|
# Gravity-sync ENVs
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
These tables are a list of all gravity-sync settings, that can be tweaked via ENVs. Keep in mind that some of them are stored in `/etc/gravity-sync/gravity-sync.conf` after running `gravity-sync configure` and that `gravity-sync.conf` has higher priority than ENVs.
|
||||||
|
|
||||||
|
### Local and remote paths & settings
|
||||||
|
These settings will determine, from where (locally) to where (remotely) will be synced and with which account/permissions
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|----------------------------|------------------|------------|----------------------------------------------------|
|
||||||
|
| `LOCAL_PIHOLE_DIRECTORY` | `/etc/pihole` | path | Path to local pi-hole instance in the filesystem |
|
||||||
|
| `REMOTE_PIHOLE_DIRECTORY` | `/etc/pihole` | path | Path to remote pi-hole instanc in the filesystem |
|
||||||
|
| `LOCAL_DNSMASQ_DIRECTORY` | `/etc/dnsmasq.d` | path | Path to local dnsmasqd instance in the filesystem |
|
||||||
|
| `REMOTE_DNSMASQ_DIRECTORY` | `/etc/dnsmasq.d` | path | Path to remote dnsmasqd instance in the filesystem |
|
||||||
|
| `LOCAL_FILE_OWNER` | `pihole:pihole` | user:group | Local owner and group of the pi-hole config |
|
||||||
|
| `REMOTE_FILE_OWNER` | `pihole:pihole` | user:group | Remote owner and group of the pi-hole config |
|
||||||
|
|
||||||
|
### Docker specific settings
|
||||||
|
Gravity-sync will check your system for a native pi-hole install first (on local and remote site) and if does not detect any, tests against docker/podman pi-hole instances.
|
||||||
|
Here, you can specific the docker or podman container name, that gravity-sync should interact with.
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|---------------------------|----------|----------------|--------------------------------------------|
|
||||||
|
| `LOCAL_DOCKER_CONTAINER` | `pihole` | container name | Container name of pi-hole running locally |
|
||||||
|
| `REMOTE_DOCKER_CONTAINER` | `pihole` | container name | Container name of pi-hole running remotely |
|
||||||
|
|
||||||
|
### Paths to standard files and folders
|
||||||
|
These settings are most likely the same on all systems. No need to touch them but nice to be able to touch them, if necessary.
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|----------------------------|-------------------------|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| `DEFAULT_PIHOLE_DIRECTORY` | `/etc/pihole` | path | Docker/Podman: Path to pi-hole instance within a docker/podman containrt. Don't mix up with `LOCAL_PIHOLE_DIRECTORY`, which is only used against local pi-hole instances (non-dockerized). |
|
||||||
|
| `LOCAL_PIHOLE_BINARY` | `/usr/local/bin/pihole` | path | Path to `pihole` binary on local system |
|
||||||
|
| `REMOTE_PIHOLE_BINARY` | `/usr/local/bin/pihole` | path | Path to `pihole` binary on remote system |
|
||||||
|
| `LOCAL_FTL_BINARY` | `/usr/bin/pihole-FTL` | path | Path to `pihole-FTL` binary on local system |
|
||||||
|
| `REMOTE_FTL_BINARY` | `/usr/bin/pihole-FTL` | path | Path to `pihole-FTL` binary on remote system |
|
||||||
|
| `LOCAL_DOCKER_BINARY` | `/usr/bin/docker` | path | Path to `docker` binary on local system |
|
||||||
|
| `REMOTE_DOCKER_BINARY` | `/usr/bin/docker` | path | Path to `docker` binary on remote system |
|
||||||
|
| `LOCAL_PODMAN_BINARY` | `/usr/bin/podman` | path | Path to `podman` binary on local system |
|
||||||
|
| `REMOTE_PODMAN_BINARY` | `/usr/bin/podman` | path | Path to `podman` binary on remote system |
|
||||||
|
| `PIHOLE_CONTAINER_IMAGE` | `pihole/pihole` | path | Name of the default pi-hole docker image |
|
||||||
|
|
||||||
|
### Nitty-gritty finetuning the target files
|
||||||
|
Here, you can specifiy the gravity, DNS (A, CNAME) and DHCP settings file of pi-hole. It is almost certain, that these filenames do never change (except upstream pi-hole decides so). Better do not touch them.
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|-----------------|-------------------------------|-------|--------------------------------------------|
|
||||||
|
| `PH_GRAVITY_FI` | `gravity.db` | file | The gravity filename (blocklist) of pihole |
|
||||||
|
| `PH_CUSTOM_DNS` | `custom.list` | file | The custom DNS (A) filename of pihole |
|
||||||
|
| `PH_CNAME_CONF` | `05-pihole-custom-cname.conf` | file | The custom DNS (CNAME) filename of pihole |
|
||||||
|
| `PH_SDHCP_CONF` | `04-pihole-static-dhcp.conf` | file | The custom DHCP filename of pihole |
|
||||||
|
|
||||||
|
### Backup Customization
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|----------------------------|---------|----------------|-----------------------------------------------------------------------------------------------|
|
||||||
|
| `GS_BACKUP_TIMEOUT` | `240` | seconds | How long shall we allow a gravity.db backup task to run, before it is deemed to be timed out? |
|
||||||
|
| `GS_BACKUP_INTEGRITY_WAIT` | `5` | seconds | Some wait time, before integrity checks are performed on gravity.db |
|
||||||
|
| `GS_BACKUP_EXT` | `gsb` | file-extension | Local and remote gravity.db backup files will get this file-extension added before merge. |
|
||||||
|
|
||||||
|
### GS Folder/File Locations
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|-------------------------|-----------------------------------|-------|--------------------------------------------------------------------------------------------|
|
||||||
|
| `GS_ETC_PATH` | `/etc/gravity-sync` | path | Path to the gravity-sync work & config directory |
|
||||||
|
| `GS_CONFIG_FILE` | `gravity-sync.conf` | file | Name of the gravity.sync config file |
|
||||||
|
| `GS_SYNCING_LOG` | `gs-sync.log` | file | Logfile for gravity-sync |
|
||||||
|
| `GS_GRAVITY_FI_MD5_LOG` | `gs-gravity.md5` | file | Filename for storing `PH_GRAVITY_FI` hash (used for sync comparison locally and on remote) |
|
||||||
|
| `GS_CUSTOM_DNS_MD5_LOG` | `gs-clist.md5` | file | Filename for storing `PH_CUSTOM_DNS` hash (used for sync comparison locally and on remote) |
|
||||||
|
| `GS_CNAME_CONF_MD5_LOG` | `05-pihole-custom-cname.conf.md5` | file | Filename for storing `PH_CNAME_CONF` hash (used for sync comparison locally and on remote) |
|
||||||
|
| `GS_SDHCP_CONF_MD5_LOG` | `04-pihole-static-dhcp.conf.md5` | file | Filename for storing `PH_SDHCP_CONF` hash (used for sync comparison locally and on remote) |
|
||||||
|
|
||||||
|
### Remote SSH config
|
||||||
|
Customize parameters for accessing the remote end via SSH
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|---------------|----------------------------------|-------|---------------------------------------------------------------------------------------------------------|
|
||||||
|
| `GS_SSH_PORT` | `22` | port | Port of the remote gravity-sync container/host |
|
||||||
|
| `GS_SSH_PKIF` | `<GS_ETC_PATH>/gravity-sync.rsa` | file | Path to the local SSH private key of gravity-sync, that will be used for pubkey auth against the remote |
|
||||||
|
|
||||||
|
### Upgrade: Gravity-sync sourcecode location
|
||||||
|
Gravity-sync is locally installed as a github repo. In order to upgrade your local gravity-sync instance via `gravity-sync upgrade` to the latest version, the path to that git-repo must be known and can be specified below.
|
||||||
|
| Variable | Default | Value | Description |
|
||||||
|
|-----------------|---------------------|-------|---------------------------------------------|
|
||||||
|
| `GS_LOCAL_REPO` | `<GS_ETC_PATH>/.gs` | path | Local install path of the gravity-sync repo |
|
125
gravity-sync
125
gravity-sync
@ -4,7 +4,7 @@ GS_RUN_START=$SECONDS
|
|||||||
|
|
||||||
# GRAVITY SYNC BY VMSTAN #####################
|
# GRAVITY SYNC BY VMSTAN #####################
|
||||||
PROGRAM='Gravity Sync'
|
PROGRAM='Gravity Sync'
|
||||||
GS_VERSION='4.0.4'
|
GS_VERSION='4.0.5'
|
||||||
|
|
||||||
# For documentation or the changelog/updates visit https://github.com/vmstan/gravity-sync
|
# For documentation or the changelog/updates visit https://github.com/vmstan/gravity-sync
|
||||||
# Requires Pi-Hole 5.x or higher already be installed, for help visit https://pi-hole.net
|
# Requires Pi-Hole 5.x or higher already be installed, for help visit https://pi-hole.net
|
||||||
@ -19,61 +19,61 @@ GS_VERSION='4.0.4'
|
|||||||
# CUSTOM VARIABLES ###########################
|
# CUSTOM VARIABLES ###########################
|
||||||
|
|
||||||
# Pi-hole Folder/File Customization - Only need to be customized when using containers
|
# Pi-hole Folder/File Customization - Only need to be customized when using containers
|
||||||
LOCAL_PIHOLE_DIRECTORY='/etc/pihole' # replace in gravity-sync.conf to overwrite
|
LOCAL_PIHOLE_DIRECTORY=${LOCAL_PIHOLE_DIRECTORY:-'/etc/pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
REMOTE_PIHOLE_DIRECTORY='/etc/pihole' # replace in gravity-sync.conf to overwrite
|
REMOTE_PIHOLE_DIRECTORY=${REMOTE_PIHOLE_DIRECTORY:-'/etc/pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
LOCAL_DNSMASQ_DIRECTORY='/etc/dnsmasq.d' # replace in gravity-sync.conf to overwrite
|
LOCAL_DNSMASQ_DIRECTORY=${LOCAL_DNSMASQ_DIRECTORY:-'/etc/dnsmasq.d'} # replace in gravity-sync.conf to overwrite
|
||||||
REMOTE_DNSMASQ_DIRECTORY='/etc/dnsmasq.d' # replace in gravity-sync.conf to overwrite
|
REMOTE_DNSMASQ_DIRECTORY=${REMOTE_DNSMASQ_DIRECTORY:-'/etc/dnsmasq.d'} # replace in gravity-sync.conf to overwrite
|
||||||
LOCAL_FILE_OWNER='pihole:pihole' # replace in gravity-sync.conf to overwrite
|
LOCAL_FILE_OWNER=${LOCAL_FILE_OWNER:-'pihole:pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
REMOTE_FILE_OWNER='pihole:pihole' # replace in gravity-sync.conf to overwrite
|
REMOTE_FILE_OWNER=${REMOTE_FILE_OWNER:-'pihole:pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# Pi-hole Docker/Podman container name - Docker will pattern match anything set below
|
# Pi-hole Docker/Podman container name - Docker will pattern match anything set below
|
||||||
LOCAL_DOCKER_CONTAINER='pihole' # replace in gravity-sync.conf to overwrite
|
LOCAL_DOCKER_CONTAINER=${LOCAL_DOCKER_CONTAINER:-'pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
REMOTE_DOCKER_CONTAINER='pihole' # replace in gravity-sync.conf to overwrite
|
REMOTE_DOCKER_CONTAINER=${REMOTE_DOCKER_CONTAINER:-'pihole'} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# STANDARD VARIABLES #########################
|
# STANDARD VARIABLES #########################
|
||||||
|
|
||||||
DEFAULT_PIHOLE_DIRECTORY='/etc/pihole' # Default Pi-hole data directory
|
DEFAULT_PIHOLE_DIRECTORY=${DEFAULT_PIHOLE_DIRECTORY:-'/etc/pihole'} # Default Pi-hole data directory
|
||||||
LOCAL_PIHOLE_BINARY='/usr/local/bin/pihole' # Local Pi-hole binary directory (default)
|
LOCAL_PIHOLE_BINARY=${LOCAL_PIHOLE_BINARY:-'/usr/local/bin/pihole'} # Local Pi-hole binary directory (default)
|
||||||
REMOTE_PIHOLE_BINARY='/usr/local/bin/pihole' # Remote Pi-hole binary directory (default)
|
REMOTE_PIHOLE_BINARY=${REMOTE_PIHOLE_BINARY:-'/usr/local/bin/pihole'} # Remote Pi-hole binary directory (default)
|
||||||
LOCAL_FTL_BINARY='/usr/bin/pihole-FTL' # Local FTL binary directory (default)
|
LOCAL_FTL_BINARY=${LOCAL_FTL_BINARY:-'/usr/bin/pihole-FTL'} # Local FTL binary directory (default)
|
||||||
REMOTE_FTL_BINARY='/usr/bin/pihole-FTL' # Remote FTL binary directory (default)
|
REMOTE_FTL_BINARY=${REMOTE_FTL_BINARY:-'/usr/bin/pihole-FTL'} # Remote FTL binary directory (default)
|
||||||
LOCAL_DOCKER_BINARY='/usr/bin/docker' # Local Docker binary directory (default)
|
LOCAL_DOCKER_BINARY=${LOCAL_DOCKER_BINARY:-'/usr/bin/docker'} # Local Docker binary directory (default)
|
||||||
REMOTE_DOCKER_BINARY='/usr/bin/docker' # Remote Docker binary directory (default)
|
REMOTE_DOCKER_BINARY=${REMOTE_DOCKER_BINARY:-'/usr/bin/docker'} # Remote Docker binary directory (default)
|
||||||
LOCAL_PODMAN_BINARY='/usr/bin/podman' # Local Podman binary directory (default)
|
LOCAL_PODMAN_BINARY=${LOCAL_PODMAN_BINARY:-'/usr/bin/podman'} # Local Podman binary directory (default)
|
||||||
REMOTE_PODMAN_BINARY='/usr/bin/podman' # Remote Podman binary directory (default)
|
REMOTE_PODMAN_BINARY=${REMOTE_PODMAN_BINARY:-'/usr/bin/podman'} # Remote Podman binary directory (default)
|
||||||
PIHOLE_CONTAINER_IMAGE='pihole/pihole' # Official Pi-hole container image name
|
PIHOLE_CONTAINER_IMAGE=${PIHOLE_CONTAINER_IMAGE:-'pihole/pihole'} # Official Pi-hole container image name
|
||||||
|
|
||||||
###############################################
|
###############################################
|
||||||
####### THE NEEDS OF THE MANY, OUTWEIGH #######
|
####### THE NEEDS OF THE MANY, OUTWEIGH #######
|
||||||
############ THE NEEDS OF THE FEW #############
|
############ THE NEEDS OF THE FEW #############
|
||||||
###############################################
|
###############################################
|
||||||
|
|
||||||
PH_GRAVITY_FI='gravity.db' # Pi-hole database file name
|
PH_GRAVITY_FI=${PH_GRAVITY_FI:-'gravity.db'} # Pi-hole database file name
|
||||||
PH_CUSTOM_DNS='custom.list' # Pi-hole DNS lookup filename
|
PH_CUSTOM_DNS=${PH_CUSTOM_DNS:-'custom.list'} # Pi-hole DNS lookup filename
|
||||||
PH_CNAME_CONF='05-pihole-custom-cname.conf' # DNSMASQ CNAME alias file
|
PH_CNAME_CONF=${PH_CNAME_CONF:-'05-pihole-custom-cname.conf'} # DNSMASQ CNAME alias file
|
||||||
PH_SDHCP_CONF='04-pihole-static-dhcp.conf' # DNSMASQ Static DHCP file
|
PH_SDHCP_CONF=${PH_SDHCP_CONF:-'04-pihole-static-dhcp.conf'} # DNSMASQ Static DHCP file
|
||||||
|
|
||||||
# Backup Customization
|
# Backup Customization
|
||||||
GS_BACKUP_TIMEOUT='240' # replace in gravity-sync.conf to overwrite
|
GS_BACKUP_TIMEOUT=${GS_BACKUP_TIMEOUT:-'240'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_BACKUP_INTEGRITY_WAIT='5' # replace in gravity-sync.conf to overwrite
|
GS_BACKUP_INTEGRITY_WAIT=${GS_BACKUP_INTEGRITY_WAIT:-'5'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_BACKUP_EXT='gsb' # replace in gravity-sync.conf to overwrite
|
GS_BACKUP_EXT=${GS_BACKUP_EXT:-'gsb'} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# GS Folder/File Locations
|
# GS Folder/File Locations
|
||||||
GS_FILEPATH='/usr/local/bin/gravity-sync'
|
GS_FILEPATH='/usr/local/bin/gravity-sync'
|
||||||
GS_ETC_PATH="/etc/gravity-sync" # replace in gravity-sync.conf to overwrite
|
GS_ETC_PATH=${GS_ETC_PATH:-"/etc/gravity-sync"} # replace in gravity-sync.conf to overwrite
|
||||||
GS_CONFIG_FILE='gravity-sync.conf' # replace in gravity-sync.conf to overwrite
|
GS_CONFIG_FILE=${GS_CONFIG_FILE:-'gravity-sync.conf'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_SYNCING_LOG='gs-sync.log' # replace in gravity-sync.conf to overwrite
|
GS_SYNCING_LOG=${GS_SYNCING_LOG:-'gs-sync.log'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_GRAVITY_FI_MD5_LOG='gs-gravity.md5' # replace in gravity-sync.conf to overwrite
|
GS_GRAVITY_FI_MD5_LOG=${GS_GRAVITY_FI_MD5_LOG:-'gs-gravity.md5'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_CUSTOM_DNS_MD5_LOG='gs-clist.md5' # replace in gravity-sync.conf to overwrite
|
GS_CUSTOM_DNS_MD5_LOG=${GS_CUSTOM_DNS_MD5_LOG:-'gs-clist.md5'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_CNAME_CONF_MD5_LOG='05-pihole-custom-cname.conf.md5' # replace in gravity-sync.conf to overwrite
|
GS_CNAME_CONF_MD5_LOG=${GS_CNAME_CONF_MD5_LOG:-'05-pihole-custom-cname.conf.md5'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_SDHCP_CONF_MD5_LOG='04-pihole-static-dhcp.conf.md5' # replace in gravity-sync.conf to overwrite
|
GS_SDHCP_CONF_MD5_LOG=${GS_SDHCP_CONF_MD5_LOG:-'04-pihole-static-dhcp.conf.md5'} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# SSH Customization
|
# SSH Customization
|
||||||
GS_SSH_PORT='22' # replace in gravity-sync.conf to overwrite
|
GS_SSH_PORT=${GS_SSH_PORT:-'22'} # replace in gravity-sync.conf to overwrite
|
||||||
GS_SSH_PKIF="${GS_ETC_PATH}/gravity-sync.rsa" # replace in gravity-sync.conf to overwrite
|
GS_SSH_PKIF=${GS_SSH_PKIF:-"${GS_ETC_PATH}/gravity-sync.rsa"} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# Github Customization
|
# Github Customization
|
||||||
GS_LOCAL_REPO="${GS_ETC_PATH}/.gs" # replace in gravity-sync.conf to overwrite
|
GS_LOCAL_REPO=${GS_LOCAL_REPO:-"${GS_ETC_PATH}/.gs"} # replace in gravity-sync.conf to overwrite
|
||||||
|
|
||||||
# OS Settings
|
# OS Settings
|
||||||
OS_DAEMON_PATH='/etc/systemd/system'
|
OS_DAEMON_PATH='/etc/systemd/system'
|
||||||
@ -272,8 +272,8 @@ function set_pihole_exec {
|
|||||||
PH_EXEC="${LOCAL_PIHOLE_BINARY}"
|
PH_EXEC="${LOCAL_PIHOLE_BINARY}"
|
||||||
FTL_EXEC="${LOCAL_FTL_BINARY}"
|
FTL_EXEC="${LOCAL_FTL_BINARY}"
|
||||||
elif [ "$LOCAL_PIHOLE_TYPE" == "docker" ]; then
|
elif [ "$LOCAL_PIHOLE_TYPE" == "docker" ]; then
|
||||||
PH_EXEC="sudo ${LOCAL_DOCKER_BINARY} exec $(sudo ${LOCAL_DOCKER_BINARY} ps -qf name=${LOCAL_DOCKER_CONTAINER}) pihole"
|
PH_EXEC="sudo ${LOCAL_DOCKER_BINARY} exec $(sudo ${LOCAL_DOCKER_BINARY} ps -qf name=^${LOCAL_DOCKER_CONTAINER}$) pihole"
|
||||||
FTL_EXEC="sudo ${LOCAL_DOCKER_BINARY} exec $(sudo ${LOCAL_DOCKER_BINARY} ps -qf name=${LOCAL_DOCKER_CONTAINER}) pihole-FTL"
|
FTL_EXEC="sudo ${LOCAL_DOCKER_BINARY} exec $(sudo ${LOCAL_DOCKER_BINARY} ps -qf name=^${LOCAL_DOCKER_CONTAINER}$) pihole-FTL"
|
||||||
elif [ "$LOCAL_PIHOLE_TYPE" == "podman" ]; then
|
elif [ "$LOCAL_PIHOLE_TYPE" == "podman" ]; then
|
||||||
PH_EXEC="sudo ${LOCAL_PODMAN_BINARY} exec ${LOCAL_DOCKER_CONTAINER} pihole"
|
PH_EXEC="sudo ${LOCAL_PODMAN_BINARY} exec ${LOCAL_DOCKER_CONTAINER} pihole"
|
||||||
FTL_EXEC="sudo ${LOCAL_PODMAN_BINARY} exec ${LOCAL_DOCKER_CONTAINER} pihole-FTL"
|
FTL_EXEC="sudo ${LOCAL_PODMAN_BINARY} exec ${LOCAL_DOCKER_CONTAINER} pihole-FTL"
|
||||||
@ -283,11 +283,11 @@ function set_pihole_exec {
|
|||||||
RH_EXEC="${REMOTE_PIHOLE_BINARY}"
|
RH_EXEC="${REMOTE_PIHOLE_BINARY}"
|
||||||
RFTL_EXEC="${REMOTE_FTL_BINARY}"
|
RFTL_EXEC="${REMOTE_FTL_BINARY}"
|
||||||
elif [ "$REMOTE_PIHOLE_TYPE" == "docker" ]; then
|
elif [ "$REMOTE_PIHOLE_TYPE" == "docker" ]; then
|
||||||
RH_EXEC="sudo ${REMOTE_DOCKER_BINARY} exec \$(sudo ${REMOTE_DOCKER_BINARY} ps -qf name=${REMOTE_DOCKER_CONTAINER}) pihole"
|
RH_EXEC="sudo ${REMOTE_DOCKER_BINARY} exec \$(sudo ${REMOTE_DOCKER_BINARY} ps -qf name=^${REMOTE_DOCKER_CONTAINER}$) pihole"
|
||||||
RFTL_EXEC="sudo ${REMOTE_DOCKER_BINARY} exec \$(sudo ${REMOTE_DOCKER_BINARY} ps -qf name=${REMOTE_DOCKER_CONTAINER}) pihole-FTL"
|
RFTL_EXEC="sudo ${REMOTE_DOCKER_BINARY} exec \$(sudo ${REMOTE_DOCKER_BINARY} ps -qf name=^${REMOTE_DOCKER_CONTAINER}$) pihole-FTL"
|
||||||
elif [ "$REMOTE_PIHOLE_TYPE" == "podman" ]; then
|
elif [ "$REMOTE_PIHOLE_TYPE" == "podman" ]; then
|
||||||
RH_EXEC="sudo ${REMOTE_PODMAN_BINARY} exec ${REMOTE_DOCKER_CONTAINER} pihole"
|
RH_EXEC="sudo ${REMOTE_PODMAN_BINARY} exec ${REMOTE_DOCKER_CONTAINER} pihole"
|
||||||
RFTL_EXEC="sudo ${REMOTE_PODMAN_BINARY} exec ${REMOTE_DOCKER_CONTAINER} pihole"
|
RFTL_EXEC="sudo ${REMOTE_PODMAN_BINARY} exec ${REMOTE_DOCKER_CONTAINER} pihole-FTL"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1069,7 +1069,11 @@ function md5_compare {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF} ]; then
|
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF} ]; then
|
||||||
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF}; then
|
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}; then
|
||||||
|
CMD_TIMEOUT=$GS_BACKUP_TIMEOUT
|
||||||
|
CMD_REQUESTED="sudo touch ${REMOTE_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF}"
|
||||||
|
create_ssh_cmd
|
||||||
|
|
||||||
REMOTE_CNAME_DNS="1"
|
REMOTE_CNAME_DNS="1"
|
||||||
MESSAGE="${UI_HASHING_HASHING} ${UI_CNAME_NAME}"
|
MESSAGE="${UI_HASHING_HASHING} ${UI_CNAME_NAME}"
|
||||||
echo_stat
|
echo_stat
|
||||||
@ -1106,7 +1110,11 @@ function md5_compare {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF} ]; then
|
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF} ]; then
|
||||||
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF}; then
|
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}; then
|
||||||
|
CMD_TIMEOUT=$GS_BACKUP_TIMEOUT
|
||||||
|
CMD_REQUESTED="sudo touch ${REMOTE_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF}"
|
||||||
|
create_ssh_cmd
|
||||||
|
|
||||||
REMOTE_SDHCP_DNS="1"
|
REMOTE_SDHCP_DNS="1"
|
||||||
MESSAGE="${UI_HASHING_HASHING} ${UI_SDHCP_NAME}"
|
MESSAGE="${UI_HASHING_HASHING} ${UI_SDHCP_NAME}"
|
||||||
echo_stat
|
echo_stat
|
||||||
@ -1231,7 +1239,11 @@ function md5_recheck {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF} ]; then
|
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF} ]; then
|
||||||
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF}; then
|
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}; then
|
||||||
|
CMD_TIMEOUT=$GS_BACKUP_TIMEOUT
|
||||||
|
CMD_REQUESTED="sudo touch ${REMOTE_DNSMASQ_DIRECTORY}/${PH_CNAME_CONF}"
|
||||||
|
create_ssh_cmd
|
||||||
|
|
||||||
REMOTE_CNAME_DNS="1"
|
REMOTE_CNAME_DNS="1"
|
||||||
MESSAGE="${UI_HASHING_REHASHING} ${UI_CNAME_NAME}"
|
MESSAGE="${UI_HASHING_REHASHING} ${UI_CNAME_NAME}"
|
||||||
echo_stat
|
echo_stat
|
||||||
@ -1259,7 +1271,11 @@ function md5_recheck {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF} ]; then
|
if [ -f ${LOCAL_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF} ]; then
|
||||||
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF}; then
|
if ${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} test -e ${REMOTE_DNSMASQ_DIRECTORY}; then
|
||||||
|
CMD_TIMEOUT=$GS_BACKUP_TIMEOUT
|
||||||
|
CMD_REQUESTED="sudo touch ${REMOTE_DNSMASQ_DIRECTORY}/${PH_SDHCP_CONF}"
|
||||||
|
create_ssh_cmd
|
||||||
|
|
||||||
REMOTE_SDHCP_DNS="1"
|
REMOTE_SDHCP_DNS="1"
|
||||||
MESSAGE="${UI_HASHING_REHASHING} ${UI_SDHCP_NAME}"
|
MESSAGE="${UI_HASHING_REHASHING} ${UI_SDHCP_NAME}"
|
||||||
echo_stat
|
echo_stat
|
||||||
@ -1471,7 +1487,7 @@ function detect_local_pihole {
|
|||||||
LOCAL_PIHOLE_TYPE="default"
|
LOCAL_PIHOLE_TYPE="default"
|
||||||
echo_good
|
echo_good
|
||||||
elif hash docker 2>/dev/null; then
|
elif hash docker 2>/dev/null; then
|
||||||
PH_FTL_CHECK=$(sudo docker container ls | grep 'pihole/pihole')
|
PH_FTL_CHECK=$(sudo docker container ls | grep ${PIHOLE_CONTAINER_IMAGE})
|
||||||
if [ "$PH_FTL_CHECK" != "" ]; then
|
if [ "$PH_FTL_CHECK" != "" ]; then
|
||||||
LOCAL_PIHOLE_TYPE="docker"
|
LOCAL_PIHOLE_TYPE="docker"
|
||||||
echo_good
|
echo_good
|
||||||
@ -1480,7 +1496,7 @@ function detect_local_pihole {
|
|||||||
echo_fail
|
echo_fail
|
||||||
fi
|
fi
|
||||||
elif hash podman 2>/dev/null; then
|
elif hash podman 2>/dev/null; then
|
||||||
PH_FTL_CHECK=$(sudo podman container ls | grep 'pihole/pihole')
|
PH_FTL_CHECK=$(sudo podman container ls | grep ${PIHOLE_CONTAINER_IMAGE})
|
||||||
if [ "$PH_FTL_CHECK" != "" ]; then
|
if [ "$PH_FTL_CHECK" != "" ]; then
|
||||||
LOCAL_PIHOLE_TYPE="podman"
|
LOCAL_PIHOLE_TYPE="podman"
|
||||||
echo_good
|
echo_good
|
||||||
@ -1502,8 +1518,8 @@ function detect_remote_pihole {
|
|||||||
REMOTE_PIHOLE_TYPE="default"
|
REMOTE_PIHOLE_TYPE="default"
|
||||||
echo_good
|
echo_good
|
||||||
else
|
else
|
||||||
REMOTE_DETECT_DOCKER=$(${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "sudo docker container ls | grep 'pihole/pihole'" 2>/dev/null)
|
REMOTE_DETECT_DOCKER=$(${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "sudo docker container ls | grep ${PIHOLE_CONTAINER_IMAGE}" 2>/dev/null)
|
||||||
REMOTE_DETECT_PODMAN=$(${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "sudo podman container ls | grep 'pihole/pihole'" 2>/dev/null)
|
REMOTE_DETECT_PODMAN=$(${OS_SSH_CMD} -p ${GS_SSH_PORT} -i "${GS_SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "sudo podman container ls | grep ${PIHOLE_CONTAINER_IMAGE}" 2>/dev/null)
|
||||||
|
|
||||||
if [ "${REMOTE_DETECT_DOCKER}" != "" ]; then
|
if [ "${REMOTE_DETECT_DOCKER}" != "" ]; then
|
||||||
REMOTE_PIHOLE_TYPE="docker"
|
REMOTE_PIHOLE_TYPE="docker"
|
||||||
@ -1653,8 +1669,9 @@ function validate_sudo_status {
|
|||||||
if [ ! "$EUID" -ne 0 ]; then
|
if [ ! "$EUID" -ne 0 ]; then
|
||||||
OS_LOCAL_ADMIN=""
|
OS_LOCAL_ADMIN=""
|
||||||
else
|
else
|
||||||
OS_SUDO_CHECK=$(groups ${OS_CURRENT_USER} | grep -e 'sudo' -e 'wheel')
|
/usr/bin/sudo -u ${OS_CURRENT_USER} --validate
|
||||||
if [ "$OS_SUDO_CHECK" == "" ]; then
|
OS_SUDO_CHECK=$?
|
||||||
|
if [ $OS_SUDO_CHECK -ne 0 ]; then
|
||||||
OS_LOCAL_ADMIN="nosudo"
|
OS_LOCAL_ADMIN="nosudo"
|
||||||
else
|
else
|
||||||
OS_LOCAL_ADMIN="sudo"
|
OS_LOCAL_ADMIN="sudo"
|
||||||
@ -1996,7 +2013,13 @@ function advanced_config_generate {
|
|||||||
## Delete Existing Configuration
|
## Delete Existing Configuration
|
||||||
function config_delete {
|
function config_delete {
|
||||||
# shellcheck source=/etc/gravity-sync/gravity-sync.conf
|
# shellcheck source=/etc/gravity-sync/gravity-sync.conf
|
||||||
|
if [ -n "${GS_SSH_PORT}" ]; then
|
||||||
|
_GS_SSH_PORT=${GS_SSH_PORT}
|
||||||
|
fi
|
||||||
source ${GS_ETC_PATH}/${GS_CONFIG_FILE}
|
source ${GS_ETC_PATH}/${GS_CONFIG_FILE}
|
||||||
|
if [ -n "${_GS_SSH_PORT}" ]; then
|
||||||
|
GS_SSH_PORT=${_GS_SSH_PORT}
|
||||||
|
fi
|
||||||
MESSAGE="${GS_CONFIG_FILE} ${UI_CONFIG_ALREADY}"
|
MESSAGE="${GS_CONFIG_FILE} ${UI_CONFIG_ALREADY}"
|
||||||
echo_warn
|
echo_warn
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user