Skip to content

Commit

Permalink
Проведена работа над ошибками для блока блокировки рекламы - adblock.
Browse files Browse the repository at this point in the history
  • Loading branch information
qzeleza committed Nov 24, 2023
1 parent 67f97c9 commit 94a9abb
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 21 deletions.
21 changes: 20 additions & 1 deletion HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
## 1.1.5
## 1.1.5 pre-release 4
- В скрипт обновления пакета [ipk/update.sh] добавлены дополнительные проверки для корректной его работы.
- Проведена работа над ошибками для блока блокировки рекламы adblock.

## 1.1.5 pre-release 3
- Исправления и доработки закрывают тикеты #69, #73, #74, #79, #82:
- Исправлена проблема с поддержкой поддоменов (wildcard) для dnsmasq.
- Исправлена проблема с остановкой работы обхода через VPN при добавлении и/или удалении доменого имени.
- Доработана функция вывода информации о номере версии пакета.
- В процедуру установки пакета добавлены опции Q-выход и S-повторное сканирование интерфейсов, а так же при нажатии на Q, останавливается dnsmasq и выводится инструкция по восстановлению интернета.
- Исправлена ошибка возникающая при старте или перезагрузке AdguardHome сервиса, на шаге 'Очищаем все ранее созданные iptables правила для VPN'. Так же, исправлена ошибка определения статуса Adguard сервиса.
- Теперь нет необходимости ставить * перед доменым именем. При добавлении Квас сделает запрос - добавлять ли поддомены или оставить как есть.
- Обновлен код скрипта обновления пакета ipk/update.sh

## 1.1.5 pre-release 2
- Исправление старых ошибок, указанных в [issues](https://github.com/qzeleza/kvas/issues).
- Плюс доработка механизма добавления гостевых сетей для работы в тандеме со списком разблокировки.


## 1.1.5 beta
- В данной версии, для соединения ssr теперь не происходит переподключение интернета.
- Добавлен скрипт, который проверяет работу VPN соединения и в случае, если соединение зависло - пытается восстановить его. Проводится трехразовая попытка восстановления VPN соединения - в случае неудачи, попытки прекращаются.
- Исправлена ошибка при удалении хоста - поставлен фильтр на удаление записей ipset из файла конфигурации AGH только при его наличии (AGH) в системе.
Expand Down
2 changes: 1 addition & 1 deletion build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=kvas
PKG_VERSION:=1.1.5
PKG_RELEASE:=pre_release_3
PKG_RELEASE:=pre_release_4
PKG_BUILD_DIR:=$(BUILD_DIR)/${FULL_PACKAGE_NAME}_

include $(INCLUDE_DIR)/package.mk
Expand Down
2 changes: 1 addition & 1 deletion build/version
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
VERSION=1.1.5
STAGE=pre_release
RELEASE=3
RELEASE=4
Binary file removed ipk/kvas_1.1.5-pre_release_3_all.ipk
Binary file not shown.
Binary file added ipk/kvas_1.1.5-pre_release_4_all.ipk
Binary file not shown.
52 changes: 43 additions & 9 deletions opt/bin/libs/adblock
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ cmd_ads_protect_on() {
sed -i '/addn-hosts=\/opt\/tmp\/adblock/d' '/opt/etc/dnsmasq.conf'
sed -i 's/\(^ADS_BLOCKER_ON=.*\)/\11/' '/opt/apps/kvas/bin/main/update'
echo "addn-hosts=${ADS_HOSTS_FILE}" >> '/opt/etc/dnsmasq.conf'
OFF="ОТКЛЮЧЕНА.\nПроизошла не предвиденная ошибка."
OFF="ОТКЛЮЧЕНА.\nПроизошла непредвиденная ошибка."
[ $? = 0 ] && when_ok "ВКЛЮЧЕНА" || when_bad "${OFF}"
ads_request_to_upload "${perform_to_aks}"
fi
Expand Down Expand Up @@ -141,7 +141,7 @@ ads_request_to_upload() {
get_separated_host_list() {
list_file="${1}"
clear_file_content "${list_file}"
exclude_com=".*$(cat < "${list_file}" | tr -d '*' | sed ':a;N;$!ba;s/\n/$\\|.*./g')$"
exclude_com=".*.$(cat < "${list_file}" | tr -d '*' | sed ':a;N;$!ba;s/\n/$|.*./g')$"
echo "${exclude_com}"
}

Expand Down Expand Up @@ -209,16 +209,50 @@ cmd_ads_del_from_skip_list(){
}


#--------------------------------------------------------------
#
# Удаляем все доменные имена, которые у нас имеются
# в списке разблокировки (белый список)
#
#--------------------------------------------------------------
ads_remove_white_hosts(){

if [ -f "${UNBLOCK_LIST_FILE}" ] && [ "$(cat < "${UNBLOCK_LIST_FILE}" | wc -l )" -ge 1 ]; then
exclude_com=".*.$(cat < "${UNBLOCK_LIST_FILE}" | tr -d '*' | sed ':a;N;$!ba;s/\n/$|.*./g')$"
ready "Удаляем хосты, находящиеся в списке разблокировки"
TMP_FILE="/opt/tmp/hosts.tmp"
cat < "${ADS_HOSTS_FILE}" | grep -vE "${exclude_com}" > "${TMP_FILE}"
mv -f "${TMP_FILE}" "${ADS_HOSTS_FILE}"
when_ok "ГОТОВО"
fi
}

#--------------------------------------------------------------
#
# Удаляем все доменные имена, которые у нас имеются
# в списке исключений (белый список)
#
#--------------------------------------------------------------
ads_remove_exception_hosts(){

if [ -f "${ADBLOCK_LIST_EXCEPTION}" ] && [ "$(cat < "${ADBLOCK_LIST_EXCEPTION}" | wc -l )" -ge 1 ]; then
ready "Удаляем хосты, находящиеся в списке исключений"
exclude_all="$(get_separated_host_list "${ADBLOCK_LIST_EXCEPTION}")"
sed -i "/${exclude_all}/d" "${ADS_HOSTS_FILE}"
when_ok "ГОТОВО"
fi
}

# ------------------------------------------------------------------------------------------
#
# Удаляем из /opt/tmp/adsblock/hosts переданное доменное имя
# $1 - список доменных имен разделенных '|'
#
# ------------------------------------------------------------------------------------------
ads_del_white_list_hosts() {
exclude_all=$(get_separated_host_list "${UNBLOCK_LIST_FILE}")
tmp_file="/opt/tmp/hosts.tmp"
ready "Исключаем из списка блокировки хосты из белого списка"
grep -vE "${exclude_all}" "${ADS_HOSTS_FILE}"
when_ok "ГОТОВО"
}
ads_list_hosts_update() {
# Удаляем все доменные имена, которые у нас имеются в списке разблокировки (белый список)
# и в списке исключений
ads_remove_white_hosts
ads_remove_exception_hosts
}

4 changes: 2 additions & 2 deletions opt/bin/libs/main
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ DNSMASQ_DEMON=/opt/etc/init.d/S56dnsmasq
HOME_PATH=/opt/apps/kvas
KVAS_BACKUP_PATH=/opt/etc/.kvas/backup

ADBLOCK_LIST_EXCEPTION=/opt/etc/ads_exception.list
ADS_HOSTS_FILE=/opt/tmp/adblock/hosts
ADBLOCK_LIST_EXCEPTION=/opt/etc/adblock/exception.list
ADS_HOSTS_FILE=/opt/etc/adblock/adshosts.list

APP_NAME=kvas
INSTALL_LOG=/opt/tmp/kvas.install.log
Expand Down
11 changes: 9 additions & 2 deletions opt/bin/libs/vpn
Original file line number Diff line number Diff line change
Expand Up @@ -1886,7 +1886,7 @@ host_add() {
echo "${_host}" >> "${UNBLOCK_LIST_FILE}"
# если включен блокировщик рекламы
if cmd_ads_status | grep -q ВКЛЮЧЕН ; then
ads_del_white_list_hosts &> /dev/null
ads_list_hosts_update &> /dev/null
fi
[ "${reset}" = 'yes' ] && iptables_reset &> /dev/null

Expand Down Expand Up @@ -1962,6 +1962,13 @@ cmd_del_one_host() {
# cmd_kvas_init "no" &> /dev/null
iptables_reset &> /dev/null
[ $? = 0 ] && when_ok "УДАЛЕН" || when_bad "НЕ УДАЛЕН"
# если включен блокировщик рекламы
if cmd_ads_status | grep -q ВКЛЮЧЕН ; then
ready "Удаляем ${YELLOW}${host_}${NOCL} из списка блокировки рекламы..."
/opt/apps/kvas/bin/main/adblock &> /dev/null
[ $? = 0 ] && when_ok "УДАЛЕН" || when_bad "НЕ УДАЛЕН"
fi

else
error "Такая запись отсутствует в списке разблокировки!"
fi
Expand Down Expand Up @@ -2067,7 +2074,7 @@ cmd_import_hosts() {

# если включен блокировщик рекламы
if cmd_ads_status | grep -q ВКЛЮЧЕН ; then
ads_del_white_list_hosts &> /dev/null
ads_list_hosts_update &> /dev/null
fi

# cmd_kvas_init "no" &> /dev/null
Expand Down
12 changes: 8 additions & 4 deletions opt/bin/main/adblock
Original file line number Diff line number Diff line change
Expand Up @@ -143,16 +143,16 @@ remove_white_hosts(){

nlines_amount=$(cat < "${ADS_HOSTS_FILE}" | wc -l)
if [ -f "${UNBLOCK_LIST_FILE}" ] && [ "$(cat < "${UNBLOCK_LIST_FILE}" | wc -l )" -ge 1 ]; then
exclude_com=".$(cat < "${UNBLOCK_LIST_FILE}" | sed ':a;N;$!ba;s/\n/$| /g')$"
exclude_com=".*.$(cat < "${UNBLOCK_LIST_FILE}" | tr -d '*' | sed ':a;N;$!ba;s/\n/$|.*./g')$"
ready "Удаляем хосты, находящиеся в списке разблокировки"
cat < "${TMP_FILE}" | grep -vE "${exclude_com}" > "${ADS_HOSTS_FILE}"
when_ok "ГОТОВО"
rm "${TMP_FILE}"
nlines_excluded_wl=$(cat < "${ADS_HOSTS_FILE}" | wc -l)
rm "${TMP_FILE}"

else
mv "${TMP_FILE}" "${ADS_HOSTS_FILE}"
nlines_excluded_wl="${nlines_amount}"
nlines_excluded_wl="${nlines_sorted}"
fi
}

Expand Down Expand Up @@ -213,6 +213,8 @@ result_show(){
nlines_exc_wl=$((nlines_sorted - nlines_excluded_wl))
nlines_exc_ex=$((nlines_excluded_wl - nlines_excluded_ex))

print_line

mess="Скачено хостов для блокировки рекламы"
nlines_all_txt=$(dig_frm "${nlines_all}")
ready "${mess}"; when_alert "${nlines_all_txt}"
Expand All @@ -233,7 +235,9 @@ result_show(){
ready "${mess}"; when_alert "${nlines_exc_txt_ex}"
logger "${mess} ${nlines_exc_txt_ex}"

mess="Добавлено всего хостов для блокировки рекламы"
print_line

mess="ИТОГО ДОБАВЛЕНО ХОСТОВ ДЛЯ БЛОКИРОВКИ РЕКЛАМЫ"
nlines_add_txt=$(dig_frm "${nlines_excluded_ex}")
ready "${mess}"; when_alert "${nlines_add_txt}"
logger "${mess} ${nlines_add_txt}"
Expand Down
1 change: 1 addition & 0 deletions opt/bin/main/setup
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ rm_package_files(){

rm -rf /opt/bin/kvas
rm -fr /opt/tmp/*kvas*
rm -fr /opt/etc/adblock
rm -fr /opt/tmp/host*
rm -f /opt/lib/opkg/info/kvas*
rm -fr /opt/apps/kvas
Expand Down
2 changes: 1 addition & 1 deletion opt/etc/conf/kvas.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
APP_VERSION=1.1.5
APP_RELEASE=pre_release-3
APP_RELEASE=pre_release-4

DNS_DEFAULT=9.9.9.9
DNS_STATIC_1=9.9.9.9
Expand Down

0 comments on commit 94a9abb

Please sign in to comment.