Skip to content

Commit

Permalink
https://github.com/qzeleza/kvas/issues/53
Browse files Browse the repository at this point in the history
  • Loading branch information
qzeleza committed Dec 17, 2023
1 parent 136053e commit 6a34f00
Show file tree
Hide file tree
Showing 21 changed files with 267 additions and 226 deletions.
2 changes: 2 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
- Доработана функция обновления пакета при удалении кеша.
- Исправлены ошибки в функции ip4_add_route_table, которая заботится о добавлении vpn сети в таблицу 1001
- Исправлены ошибки в функциях ikev2_net_access_del и ikev2_net_access_add и переписана функция ip4_add_selected_guest_to_ssr_network
- Внесены правки в код по тикету [#53](https://github.com/qzeleza/kvas/issues/53), которые улучшают логику работы с гостевой сетью ikev2
- Внесены правки в код по тикету [#92](https://github.com/qzeleza/kvas/issues/92), которые правильно добавляют домены с тире внутри их имен.

## 1.1.5 pre-release 4
- В скрипт обновления пакета [ipk/update.sh] добавлены дополнительные проверки для корректной его работы.
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:=final_26
PKG_RELEASE:=final_28
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=final
RELEASE=26
RELEASE=28
Binary file removed ipk/kvas_1.1.5-final_26_all.ipk
Binary file not shown.
Binary file added ipk/kvas_1.1.5-final_28_all.ipk
Binary file not shown.
Binary file modified ipk/old/kvas_1.1.5-final_26_all.ipk
Binary file not shown.
Binary file added ipk/old/kvas_1.1.5-final_27_all.ipk
Binary file not shown.
9 changes: 3 additions & 6 deletions opt/bin/kvas
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,8 @@ case "${1}" in
esac
;;

debug)
case "${2}" in
nofiles) cmd_print_debug "${2}" | sed 's/\[1;32m/-/g; s/\[36m/-/g; s/\[m/-/g' ;;
*) cmd_print_debug '' | sed 's/\[1;32m/-/g; s/\[36m/-/g; s/\[m/-/g' ;;
esac
debug) REP='_'
cmd_print_debug '' | sed 's/\[1;32m/'"${REP}"'/g; s/\[36m/'"${REP}"'/g; s/\[m/'"${REP}"'/g'
;;
test | check) cmd_state_checker
;;
Expand All @@ -148,7 +145,7 @@ case "${1}" in
;;
upgrade) /opt/apps/kvas/bin/main/upgrade "${2}" "${3}"
;;
version | ver) version | tr '-' ' '
version | ver) version
;;
help|-h|--h ) cmd_help
;;
Expand Down
8 changes: 4 additions & 4 deletions opt/bin/libs/adblock
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ cmd_ads_protect_on() {
print_line
ready "Перезапуск службы dnsmasq"
/opt/etc/init.d/S56dnsmasq restart &> /dev/null
[ $? = 0 ] && when_ok "ГОТОВО" || when_bad "ОШИБКА"
[ $? = 0 ] && when_ok "УСПЕШНО" || when_bad "ОШИБКА"
}
}
# ------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -166,7 +166,7 @@ restart_dns_service(){

ready "${prefix}Перезапускаем сервис dnsmasq"
/opt/etc/init.d/S56dnsmasq restart &>/dev/null
[ $? = 0 ] && when_ok "ГОТОВО" || when_bad "ОШИБКА"
[ $? = 0 ] && when_ok "УСПЕШНО" || when_bad "ОШИБКА"
}

#--------------------------------------------------------------
Expand Down Expand Up @@ -234,7 +234,7 @@ ads_remove_white_hosts(){
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 "ГОТОВО"
when_ok "УСПЕШНО"
fi
}

Expand All @@ -250,7 +250,7 @@ ads_remove_exception_hosts(){
ready "Удаляем хосты, находящиеся в списке исключений"
exclude_all="$(get_separated_host_list "${ADBLOCK_LIST_EXCEPTION}")"
sed -i "/${exclude_all}/d" "${ADS_HOSTS_FILE}"
when_ok "ГОТОВО"
when_ok "УСПЕШНО"
fi
}

Expand Down
2 changes: 1 addition & 1 deletion opt/bin/libs/check
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ adblock_dnsmasq_check() {
/opt/apps/kvas/bin/main/adblock
ready "Перезапуск службы dnsmasq"
/opt/etc/init.d/S56dnsmasq restart &> /dev/null
[ $? = 0 ] && when_ok "ГОТОВО" || when_bad "ОШИБКА"
[ $? = 0 ] && when_ok "УСПЕШНО" || when_bad "ОШИБКА"

ready "Повторная проверка заполнения списка блокировки рекламы"
if [ "$(cat </opt/etc/adblock.dnsmasq | wc -l)" -gt 0 ]; then
Expand Down
16 changes: 8 additions & 8 deletions opt/bin/libs/debug
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,8 @@ dnscrypt_proxy_debug() {
# ------------------------------------------------------------------------------------------
kvas_list_debug() {

result=$(cat < "${UNBLOCK_LIST_FILE}" | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d' | tail -20)
echo_debug "Список разблокировки /opt/etc/hosts.list (20 записей)" "${result}"
result=$(cat < "${UNBLOCK_LIST_FILE}" | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d')
echo_debug "Список разблокировки /opt/etc/hosts.list (все записи)" "${result}"
}

# ------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -236,8 +236,8 @@ unblock_ipset_debug() {
echo_debug "DNS сервер, используемый в /opt/apps/kvas/bin/main/ipset" "${result}"
# /opt/apps/kvas/bin/main/ipset &>/dev/null
result_ipset=$(ipset list unblock | grep -vEi '^[a-z]' | sort)
result=$(echo "${result_ipset}" | tail -20)
echo_debug "Таблица ipset (20 записей)\nкоманда: 'ipset list unblock'" "${result}"
result=$(echo "${result_ipset}" )
echo_debug "Таблица ipset (все записи)\nкоманда: 'ipset list unblock'" "${result}"
print_line
unblock_list_ipset_check

Expand All @@ -252,8 +252,8 @@ unblock_dnsmasq_debug() {

# result=$(cat < "/opt/apps/kvas/bin/main/dnsmasq" | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d')
# echo_debug "Скрипт заполнения списка разблокировки /opt/apps/kvas/bin/main/dnsmasq" "${result}"
result=$(cat < '/opt/etc/kvas.dnsmasq' | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d' | tail -20)
echo_debug "Список разблокировки в /opt/etc/kvas.dnsmasq (20 записей)" "${result}"
result=$(cat < '/opt/etc/kvas.dnsmasq' | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d' )
echo_debug "Список разблокировки в /opt/etc/kvas.dnsmasq (все записи)" "${result}"
}
# ------------------------------------------------------------------------------------------
#
Expand Down Expand Up @@ -281,8 +281,8 @@ adblock_dnsmasq_debug() {
if [ -n "$(cat < '/opt/etc/dnsmasq.conf' | sed '/^$/d' | sed 's/^\(.*\)\(#.*\)/\2/; /^#/d; /^$/d' | grep "adblock.dnsmasq")" ]; then
# result=$(cat < "/opt/apps/kvas/bin/main/adblock")
# echo_debug "Скрипт заполнения списка блокировки рекламы/opt/apps/kvas/bin/main/adblock" "${result}"
result=$(cat < '/opt/etc/adblock.dnsmasq' | sed -e '/^#/d; /^$/d' | tail -20)
echo_debug "Список блокировки рекламы /opt/etc/adblock.dnsmasq (20 записей)" "${result}"
result=$(cat < '/opt/etc/adblock.dnsmasq' | sed -e '/^#/d; /^$/d' )
echo_debug "Список блокировки рекламы /opt/etc/adblock.dnsmasq (все записи)" "${result}"
fi
}

Expand Down
47 changes: 47 additions & 0 deletions opt/bin/libs/ipset
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/sh

HOST_LIST=/opt/etc/hosts.list
TABLE_NAME=$(cat < /opt/apps/kvas/bin/libs/ndm | grep 'table_name=' | cut -d'=' -f2)
IP_FILTER='[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

# ------------------------------------------------------------------------------
# Добавляем переданные в функцию IP адреса в ipset таблицу unblock
# ------------------------------------------------------------------------------
add_host_by_iplist_to_ipset(){
host=${1//\*/}
# получаем список из адресов от текущего dns сервера
# и исключаем из списка адреса типа 0.0.0.0
ip_list=$(kdig +short "${host}" @localhost \
| grep -Eo "${IP_FILTER}" \
| grep -v '0.0.0.0' )

# если список не пуст
if [ -n "${ip_list}" ]; then
for ip in ${ip_list}; do
ipset list "${TABLE_NAME}" | grep -q "${ip}" || {
ipset -exist add "${TABLE_NAME}" "${ip}"
mess="Обнаружен новый IP=${ip} для домена ${host} и успешно добавлен в таблицу ipset."
# echo "${mess}"
logger -t "КВАС" "${mess}"
}
done

fi
}

# ------------------------------------------------------------------------------
# Добавляем список AS IP диапазонов, в который может входить переданный host
# ------------------------------------------------------------------------------
add_host_by_ASlist_to_ipset(){
host=${1//\*/};
if [ "${host}" ]; then
for ip in $(kdig +short "${host}" @localhost); do
as_number=$(whois -h whois.radb.net "${ip}" | grep 'origin:' | tr -d ' ' | cut -d ':' -f2)
for net in $(whois -h whois.radb.net "!g${as_number}" | tr '\n' ' '); do
if echo "${net}" | grep -Eo "${IP_FILTER}" | grep -qv '0.0.0.0' ; then
ipset -exist add "${TABLE_NAME}" "${net}" &>/dev/null
fi
done
done
fi
}
24 changes: 19 additions & 5 deletions opt/bin/libs/main
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,13 @@ DNSMASQ_IPSET_HOSTS=/opt/etc/kvas.dnsmasq
# из обращений к VPN или SHADOWSOCKS подключениям
EXCLUDED_NET_FILE=/opt/apps/kvas/etc/conf/excluded.net

IP_FILTER='[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

ERROR_LOG_FILE=/opt/tmp/kvas.err.log
APP_NAME_DESC=КВАС

MAIN_DNS_PORT=53
LOCALHOST_IP=127.0.0.1
INFACE_REQUEST="${LOCALHOST_IP}:79/rci/show/interface"
INFACE_PART_REQUEST="${LOCALHOST_IP}:79/rci/interface"
SSR_ENTWARE_TEMPL=ezcfg
Expand Down Expand Up @@ -132,6 +136,15 @@ reset_connection() {
inface_cli=${1}
# получаем текущее состояние инф-са для возвращения его к исходному состоянию
state=$(curl -s "${INFACE_REQUEST}" | jq -r '.[] | select(.id=="'"${inface_cli}"'") | .state')
isp_state=$(curl -s "${INFACE_REQUEST}" | jq -r '.[] | select(.defaultgw==true and .global==true) | .state')
if echo "${isp_state}" | grep -q down ; then
reset_ISP_connection || {
error "Проверьте соединение с провайдером и/или настройки DNS."
exit 1
}
fi


# в зависимости от состояния - включаем и выключаем или выключаем и включаем интерфейс
# для того, чтобы сработал наш хук в файле /opt/etc/ndm/ifstatechanged.d/100-save-inface_entware
if [ "${state}" = 'up' ]; then
Expand Down Expand Up @@ -162,7 +175,8 @@ APP_VERSION=$(get_config_value APP_VERSION)
APP_RELEASE=$(get_config_value APP_RELEASE)

version(){
[ -n "${APP_RELEASE}" ] && APP_RELEASE="-${APP_RELEASE}"
[ -n "${APP_RELEASE}" ] && APP_RELEASE=" ${APP_RELEASE}"
APP_VERSION=$(echo "${APP_VERSION}" | tr '-' ' ')
warning "Версия пакета ${APP_VERSION}${APP_RELEASE}"
}

Expand Down Expand Up @@ -592,10 +606,10 @@ print_error(){
warning "${error_mess}"; print_line

# Вывод сообщения в лог роутера
while read -r line || [ -n "${line}" ]; do
[ -z "${line}" ] && continue
logger -p err -t "${APP_NAME_DESC}" "${err_signal}${line}"
done < "${ERROR_LOG_FILE}"
# while read -r line || [ -n "${line}" ]; do
# [ -z "${line}" ] && continue
# logger -p err -t "${APP_NAME_DESC}" "${err_signal}${line}"
# done < "${ERROR_LOG_FILE}"
}


Expand Down
Loading

0 comments on commit 6a34f00

Please sign in to comment.