mirror of
https://github.com/pi-hole/pi-hole
synced 2025-01-09 07:30:56 +00:00
Merge branch 'development' into fix/migration
This commit is contained in:
commit
b544b74f7a
@ -165,15 +165,17 @@ GetFTLData() {
|
|||||||
# get the data from querying the API as well as the http status code
|
# get the data from querying the API as well as the http status code
|
||||||
response=$(curl -skS -w "%{http_code}" -X GET "${API_URL}$1" -H "Accept: application/json" -H "sid: ${SID}" )
|
response=$(curl -skS -w "%{http_code}" -X GET "${API_URL}$1" -H "Accept: application/json" -H "sid: ${SID}" )
|
||||||
|
|
||||||
# status are the last 3 characters
|
|
||||||
status="${response#"${response%???}"}"
|
|
||||||
# data is everything from response without the last 3 characters
|
|
||||||
data="${response%???}"
|
|
||||||
|
|
||||||
if [ "${2}" = "raw" ]; then
|
if [ "${2}" = "raw" ]; then
|
||||||
# return the raw response
|
# return the raw response
|
||||||
echo "${response}"
|
echo "${response}"
|
||||||
else
|
else
|
||||||
|
|
||||||
|
# status are the last 3 characters
|
||||||
|
# not using ${response#"${response%???}"}" here because it's extremely slow on big responses
|
||||||
|
status=$(printf "%s" "${response}" | tail -c 3)
|
||||||
|
# data is everything from response without the last 3 characters
|
||||||
|
data="${response%???}"
|
||||||
|
|
||||||
# return only the data
|
# return only the data
|
||||||
if [ "${status}" = 200 ]; then
|
if [ "${status}" = 200 ]; then
|
||||||
# response OK
|
# response OK
|
||||||
@ -264,7 +266,8 @@ apiFunc() {
|
|||||||
response=$(GetFTLData "$1" raw)
|
response=$(GetFTLData "$1" raw)
|
||||||
|
|
||||||
# status are the last 3 characters
|
# status are the last 3 characters
|
||||||
status="${response#"${response%???}"}"
|
# not using ${response#"${response%???}"}" here because it's extremely slow on big responses
|
||||||
|
status=$(printf "%s" "${response}" | tail -c 3)
|
||||||
# data is everything from response without the last 3 characters
|
# data is everything from response without the last 3 characters
|
||||||
data="${response%???}"
|
data="${response%???}"
|
||||||
|
|
||||||
|
@ -388,28 +388,6 @@ os_check() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function waits for dpkg to unlock, which signals that the previous apt-get command has finished.
|
|
||||||
test_dpkg_lock() {
|
|
||||||
i=0
|
|
||||||
printf " %b Waiting for package manager to finish (up to 30 seconds)\\n" "${INFO}"
|
|
||||||
# fuser is a program to show which processes use the named files, sockets, or filesystems
|
|
||||||
# So while the lock is held,
|
|
||||||
while fuser /var/lib/dpkg/lock >/dev/null 2>&1; do
|
|
||||||
# we wait half a second,
|
|
||||||
sleep 0.5
|
|
||||||
# increase the iterator,
|
|
||||||
((i = i + 1))
|
|
||||||
# exit if waiting for more then 30 seconds
|
|
||||||
if [[ $i -gt 60 ]]; then
|
|
||||||
printf " %b %bError: Could not verify package manager finished and released lock. %b\\n" "${CROSS}" "${COL_LIGHT_RED}" "${COL_NC}"
|
|
||||||
printf " Attempt to install packages manually and retry.\\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# and then report success once dpkg is unlocked.
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Compatibility
|
# Compatibility
|
||||||
package_manager_detect() {
|
package_manager_detect() {
|
||||||
|
|
||||||
@ -2300,6 +2278,44 @@ copy_to_install_log() {
|
|||||||
chown pihole:pihole "${installLogLoc}"
|
chown pihole:pihole "${installLogLoc}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
disableLighttpd() {
|
||||||
|
# Return early when lighttpd is not active
|
||||||
|
if ! check_service_active lighttpd; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local response
|
||||||
|
# Detect if the terminal is interactive
|
||||||
|
if [[ -t 0 ]]; then
|
||||||
|
# The terminal is interactive
|
||||||
|
dialog --no-shadow --keep-tite \
|
||||||
|
--title "Pi-hole v6.0 no longer uses lighttpd" \
|
||||||
|
--yesno "\\n\\nPi-hole v6.0 has its own embedded web server so lighttpd is no longer needed *unless* you have custom configurations.\\n\\nIn this case, you can opt-out of disabling lighttpd and pihole-FTL will try to bind to an alternative port such as 8080.\\n\\nDo you want to disable lighttpd (recommended)?" "${r}" "${c}" && response=0 || response="$?"
|
||||||
|
else
|
||||||
|
# The terminal is non-interactive, assume yes. Lighttpd will be stopped
|
||||||
|
# but keeps being installed and can easily be re-enabled by the user
|
||||||
|
response=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the user does not want to disable lighttpd, return early
|
||||||
|
if [[ "${response}" -ne 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Lighttpd is not needed anymore, so disable it
|
||||||
|
# We keep all the configuration files in place, so the user can re-enable it
|
||||||
|
# if needed
|
||||||
|
|
||||||
|
# Check if lighttpd is installed
|
||||||
|
if is_command lighttpd; then
|
||||||
|
# Stop the lighttpd service
|
||||||
|
stop_service lighttpd
|
||||||
|
|
||||||
|
# Disable the lighttpd service
|
||||||
|
disable_service lighttpd
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
migrate_dnsmasq_configs() {
|
migrate_dnsmasq_configs() {
|
||||||
# Previously, Pi-hole created a number of files in /etc/dnsmasq.d
|
# Previously, Pi-hole created a number of files in /etc/dnsmasq.d
|
||||||
# During migration, their content is copied into the new single source of
|
# During migration, their content is copied into the new single source of
|
||||||
@ -2312,6 +2328,9 @@ migrate_dnsmasq_configs() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Disable lighttpd server during v6 migration
|
||||||
|
disableLighttpd
|
||||||
|
|
||||||
# Create target directory /etc/pihole/migration_backup_v6
|
# Create target directory /etc/pihole/migration_backup_v6
|
||||||
# and make it owned by pihole:pihole
|
# and make it owned by pihole:pihole
|
||||||
mkdir -p "${V6_CONF_MIGRATION_DIR}"
|
mkdir -p "${V6_CONF_MIGRATION_DIR}"
|
||||||
@ -2348,6 +2367,17 @@ migrate_dnsmasq_configs() {
|
|||||||
printf "%b" "${FTLoutput}" | sed 's/^/ /'
|
printf "%b" "${FTLoutput}" | sed 's/^/ /'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check for availability of either the "service" or "systemctl" commands
|
||||||
|
check_service_command() {
|
||||||
|
# Check for the availability of the "service" command
|
||||||
|
if ! is_command service && ! is_command systemctl; then
|
||||||
|
# If neither the "service" nor the "systemctl" command is available, inform the user
|
||||||
|
printf " %b Neither the service nor the systemctl commands are available\\n" "${CROSS}"
|
||||||
|
printf " on this machine. This Pi-hole installer cannot continue.\\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
######## FIRST CHECK ########
|
######## FIRST CHECK ########
|
||||||
# Must be root to install
|
# Must be root to install
|
||||||
@ -2396,6 +2426,9 @@ main() {
|
|||||||
# Check if SELinux is Enforcing and exit before doing anything else
|
# Check if SELinux is Enforcing and exit before doing anything else
|
||||||
checkSelinux
|
checkSelinux
|
||||||
|
|
||||||
|
# Check for availability of either the "service" or "systemctl" commands
|
||||||
|
check_service_command
|
||||||
|
|
||||||
# Check for supported package managers so that we may install dependencies
|
# Check for supported package managers so that we may install dependencies
|
||||||
package_manager_detect
|
package_manager_detect
|
||||||
|
|
||||||
@ -2421,8 +2454,8 @@ main() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# in case of an update
|
# in case of an update (can be a v5 -> v6 or v6 -> v6 update)
|
||||||
if [[ -f "${PI_HOLE_V6_CONFIG}" ]]; then
|
if [[ -f "${PI_HOLE_V6_CONFIG}" ]] || [[ -f "/etc/pihole/setupVars.conf" ]]; then
|
||||||
# if it's running unattended,
|
# if it's running unattended,
|
||||||
if [[ "${runUnattended}" == true ]]; then
|
if [[ "${runUnattended}" == true ]]; then
|
||||||
printf " %b Performing unattended setup, no dialogs will be displayed\\n" "${INFO}"
|
printf " %b Performing unattended setup, no dialogs will be displayed\\n" "${INFO}"
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
FROM buildpack-deps:lunar-scm
|
|
||||||
|
|
||||||
ENV GITDIR=/etc/.pihole
|
|
||||||
ENV SCRIPTDIR=/opt/pihole
|
|
||||||
|
|
||||||
RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole
|
|
||||||
ADD . $GITDIR
|
|
||||||
RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $GITDIR/advanced/Scripts/COL_TABLE $SCRIPTDIR/
|
|
||||||
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
RUN true && \
|
|
||||||
chmod +x $SCRIPTDIR/*
|
|
||||||
|
|
||||||
ENV SKIP_INSTALL=true
|
|
||||||
ENV OS_CHECK_DOMAIN_NAME=dev-supportedos.pi-hole.net
|
|
||||||
|
|
||||||
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \
|
|
Loading…
Reference in New Issue
Block a user