1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/pihole_ynh.git synced 2024-09-03 20:05:58 +02:00

Start to work on an upgrade to 4.x

This commit is contained in:
Maniack Crudelis 2020-04-22 15:01:46 +02:00
parent 67a49f5b8c
commit 2beb564e7c
11 changed files with 156 additions and 29 deletions

6
conf/FTL_last.src Normal file
View file

@ -0,0 +1,6 @@
SOURCE_URL=https://github.com/pi-hole/FTL/archive/v4.3.1.tar.gz
SOURCE_SUM=1c0df5fa42e7f7b89c7e704fdc1b5154
SOURCE_SUM_PRG=md5sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=

19
conf/adlists.default Normal file
View file

@ -0,0 +1,19 @@
# The below list amalgamates several lists we used previously.
# See `https://github.com/StevenBlack/hosts` for details
##StevenBlack's list
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
##MalwareDomains
https://mirror1.malwaredomains.com/files/justdomains
##Cameleon
http://sysctl.org/cameleon/hosts
##Disconnect.me Tracking
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
##Disconnect.me Ads
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
##Hosts-file.net
https://hosts-file.net/ad_servers.txt

View file

@ -0,0 +1,6 @@
SOURCE_URL=https://github.com/pi-hole/AdminLTE/archive/v4.3.3.tar.gz
SOURCE_SUM=3f9da0e1f9134393758b7a1425ca66f6
SOURCE_SUM_PRG=md5sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=

6
conf/app_last.src Normal file
View file

@ -0,0 +1,6 @@
SOURCE_URL=https://github.com/pi-hole/pi-hole/archive/v4.4.tar.gz
SOURCE_SUM=970013bf8e273b868dd184ac2ffb1348
SOURCE_SUM_PRG=md5sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=

View file

@ -76,6 +76,20 @@
"fr": "Si vous voulez faire ça, <a href=https://github.com/YunoHost-Apps/pihole_ynh/blob/master/dhcp.md target=_blank>vous devez vraiment lire cela avant</a> !"
},
"default": false
},
{
"name": "pihole_version",
"type": "string",
"ask": {
"en": "Which version of Pi-Hole do you want to install ?",
"fr": "Quelle version de Pi-Hole voulez-vous installer ?"
},
"help": {
"en": "The last 3.X version is the last version available with the Debian version of dnsmasq.",
"fr": "The last available version will replace the Debian version of dnsmasq by FTLDNS.<br>See the readme for more information."
},
"choices" : ["Last 3.X","Last available"],
"default": "Last 3.X"
}
]
}

View file

@ -1,4 +1,4 @@
#!/bin/bash
# Dependencies
app_depencencies="sqlite idn2 php7.0-sqlite3"
app_depencencies="sqlite idn2 php7.0-sqlite3 nettle-dev libcap2-bin"

View file

@ -28,6 +28,7 @@ path_url=$YNH_APP_ARG_PATH
admin=$YNH_APP_ARG_ADMIN
query_logging=$YNH_APP_ARG_QUERY_LOGGING
enable_dhcp=$YNH_APP_ARG_ENABLE_DHCP
pihole_version="$YNH_APP_ARG_PIHOLE_VERSION"
app=$YNH_APP_INSTANCE_NAME
@ -52,6 +53,7 @@ ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=admin --value=$admin
ynh_app_setting_set --app=$app --key=query_logging --value=$query_logging
ynh_app_setting_set --app=$app --key=enable_dhcp --value=$enable_dhcp
ynh_app_setting_set --app=$app --key=pihole_version --value="$pihole_version"
ynh_app_setting_set --app=$app --key=overwrite_setupvars --value=1
ynh_app_setting_set --app=$app --key=overwrite_ftl --value=1
@ -95,9 +97,18 @@ ynh_script_progression --message="Setting up source files..." --weight=4
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Make a copy of local pihole repository (for Gravity)
pihole_local_repo="/etc/.pihole"
ynh_setup_source --dest_dir="$pihole_local_repo"
# Install admin dashboard
ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard
if [ "$pihole_version" == "Last 3.X" ]
then
# Install the version 3.3.1
ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_3
# Install admin dashboard
ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_3
else
# Install the last version available
ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_last
# Install admin dashboard
ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_last
fi
#=================================================
# NGINX CONFIGURATION
@ -166,7 +177,12 @@ chown $dnsmasq_user:root /var/log/pihole.log
#=================================================
# This sudoers config allow pihole to execute /usr/local/bin/pihole as root without password. Nothing more.
cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole
if [ "$pihole_version" == "Last 3.X" ]
then
cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole
else
cp "$pihole_local_repo/advanced/Templates/pihole.sudo" /etc/sudoers.d/pihole
fi
echo "$app ALL=NOPASSWD: /usr/local/bin/pihole" >> /etc/sudoers.d/pihole
# echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" >> /etc/sudoers.d/pihole
chmod 0440 /etc/sudoers.d/pihole
@ -175,7 +191,12 @@ chmod 0440 /etc/sudoers.d/pihole
# INSTALL LOGROTATE SCRIPT FOR PI-HOLE
#=================================================
cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate"
if [ "$pihole_version" == "Last 3.X" ]
then
cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate"
else
cp "$pihole_local_repo/advanced/Templates/logrotate" "$pihole_storage/logrotate"
fi
sed -i "/# su #/d;" "$pihole_storage/logrotate"
#=================================================
@ -185,7 +206,14 @@ ynh_script_progression --message="Installing PiHole-FTL..." --weight=30
# Get the source of Pi-Hole-FTL
FTL_temp_path=$(mktemp -d)
ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL
if [ "$pihole_version" == "Last 3.X" ]
then
# Install the version 3.3.1
ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_3
else
# Install the last version available
ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_last
fi
# Instead of downloading a binary file, we're going to compile it
( cd "$FTL_temp_path"
@ -197,9 +225,24 @@ cp "../conf/pihole-FTL.conf" "$pihole_storage"
# Calculate and store the config file checksum into the app settings
ynh_store_file_checksum --file="$pihole_storage/pihole-FTL.conf"
cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL
chmod +x /etc/init.d/pihole-FTL
ynh_exec_warn_less systemctl enable pihole-FTL
if [ "$pihole_version" == "Last 3.X" ]
then
# Version 3.3.1
cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL
chmod +x /etc/init.d/q
ynh_exec_warn_less systemctl enable pihole-FTL
else
# Last version available
# Stopped dnsmasq to replace it by pihole-FTL
ynh_systemd_action --action=stop --service_name=dnsmasq
# Move dnsmasq to preserve the current version
mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole
# Replace dnsmasq by pihole-FTL
# NOTE: pihole-FTL is actually a modified version of dnsmasq
# https://github.com/pi-hole/FTL/tree/master/dnsmasq
update-alternatives --install /usr/sbin/dnsmasq dnsmasq /usr/bin/pihole-FTL 50
update-alternatives --install /usr/sbin/dnsmasq dnsmasq /usr/sbin/dnsmasq.backup_by_pihole 40
fi
#=================================================
# BUILD VARIABLES FILE
@ -312,6 +355,20 @@ fi
# Open the UDP port 67 for dhcp
ynh_exec_fully_quiet yunohost firewall allow UDP 67 --no-upnp
#=================================================
# INSTALL CRON JOB
#=================================================
if [ "$pihole_version" == "Last 3.X" ]
then
cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole
else
cp $pihole_local_repo/advanced/Templates/pihole.cron /etc/cron.d/pihole
fi
# Remove git usage for version. Which fails because we use here a release instead of master.
ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --target_file=/etc/cron.d/pihole
#=================================================
# RESTART DNSMASQ
#=================================================
@ -320,28 +377,29 @@ ynh_script_progression --message="Restarting Dnsmasq..." --weight=2
ynh_systemd_action --action=restart --service_name=dnsmasq
#=================================================
# INSTALL CRON JOB
# START PIHOLE-FTL
#=================================================
cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole
# Remove git usage for version. Which fails because we use here a release instead of master.
ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --target_file=/etc/cron.d/pihole
if [ "$pihole_version" == "Last 3.X" ]
then
ynh_script_progression --message="Restarting PiHole-FTL..." --weight=2
ynh_systemd_action --action=restart --service_name=pihole-FTL
fi
#=================================================
# BUILD THE LISTS WITH GRAVITY
#=================================================
ynh_script_progression --message="Building the lists with Gravity..." --weight=7
cp "$pihole_local_repo/adlists.default" "$pihole_storage/adlists.default"
if [ "$pihole_version" == "Last 3.X" ]
then
cp "$pihole_local_repo/adlists.default" "$pihole_storage/adlists.default"
else
cp "../conf/adlists.default" "$pihole_storage/adlists.list"
fi
ynh_exec_warn_less /opt/pihole/gravity.sh
#=================================================
# START PIHOLE-FTL
#=================================================
ynh_script_progression --message="Restarting PiHole-FTL..." --weight=2
ynh_systemd_action --action=restart --service_name=pihole-FTL
#=================================================
# SET UP CONF_REGEN HOOK
#=================================================
@ -354,7 +412,10 @@ cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmas
# ADVERTISE SERVICE IN ADMIN PANEL
#=================================================
yunohost service add pihole-FTL --description "PiHole backend service" --log "/var/log/pihole-FTL.log"
if [ "$pihole_version" == "Last 3.X" ]
then
yunohost service add pihole-FTL --description "PiHole backend service" --log "/var/log/pihole-FTL.log"
fi
#=================================================
# RESTRAIN THE ACCESS TO THE ADMIN ONLY

View file

@ -18,6 +18,7 @@ app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
port=$(ynh_app_setting_get --app=$app --key=port)
pihole_version="$(ynh_app_setting_get --app=$app --key=pihole_version)"
#=================================================
# STANDARD REMOVE
@ -25,11 +26,14 @@ port=$(ynh_app_setting_get --app=$app --key=port)
# REMOVE SERVICE FROM ADMIN PANEL
#=================================================
# Check if the service is declared in YunoHost
if ynh_exec_fully_quiet yunohost service status pihole-FTL
if [ "$pihole_version" == "Last 3.X" ]
then
ynh_script_progression --message="Removing pihole-FTL service..." --weight=2
yunohost service remove pihole-FTL
# Check if the service is declared in YunoHost
if ynh_exec_fully_quiet yunohost service status pihole-FTL
then
ynh_script_progression --message="Removing pihole-FTL service..." --weight=2
yunohost service remove pihole-FTL
fi
fi
#=================================================
@ -37,8 +41,19 @@ fi
#=================================================
ynh_script_progression --message="Stop and remove the service"
ynh_systemd_action --action=stop --service_name=pihole-FTL
ynh_exec_warn_less systemctl disable pihole-FTL
if [ "$pihole_version" == "Last 3.X" ]
then
ynh_systemd_action --action=stop --service_name=pihole-FTL
ynh_exec_warn_less systemctl disable pihole-FTL
else
ynh_systemd_action --action=stop --service_name=dnsmasq
# Restore dnsmasq as main DNS resolver
# Remove alternatives
update-alternatives --remove dnsmasq /usr/bin/pihole-FTL
update-alternatives --remove dnsmasq /usr/sbin/dnsmasq.backup_by_pihole
# Move dnsmasq back to its original place
mv /usr/sbin/dnsmasq.backup_by_pihole /usr/sbin/dnsmasq
fi
rm -f "/etc/init.d/pihole-FTL" "/usr/bin/pihole-FTL" "/var/run/pihole-FTL.pid" "/var/run/pihole-FTL.port"
#=================================================