mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-14 06:30:59 +00:00
Dnsmasq confdir from ubus.
This commit is contained in:
@@ -5,17 +5,30 @@ STOP=01
|
||||
|
||||
APP_NAME="ruantiblock"
|
||||
APP_EXEC="/usr/bin/${APP_NAME}"
|
||||
DNSMASQ_VAR_DIR="/tmp"
|
||||
VAR_DIR="/tmp"
|
||||
|
||||
get_dnsmasq_cfg_dir() {
|
||||
local _first_instance
|
||||
if [ -d "${DNSMASQ_VAR_DIR}/dnsmasq.d" ]; then
|
||||
printf "${DNSMASQ_VAR_DIR}/dnsmasq.d"
|
||||
get_dnsmasq_confdir() {
|
||||
local _first_instance_dir
|
||||
if [ -d "${VAR_DIR}/dnsmasq.d" ]; then
|
||||
printf "${VAR_DIR}/dnsmasq.d"
|
||||
return 0
|
||||
else
|
||||
_first_instance=`ls -1 "$DNSMASQ_VAR_DIR" | grep -e "^dnsmasq" | head -n 1`
|
||||
if [ -n "$_first_instance" ]; then
|
||||
printf "${DNSMASQ_VAR_DIR}/${_first_instance}"
|
||||
_first_instance_dir=`ubus call service list | jsonfilter -e "VAR=$.dnsmasq.instances.*.mount" | awk '
|
||||
BEGIN {
|
||||
RS = " ";
|
||||
}
|
||||
{
|
||||
sub("VAR=", "", $0);
|
||||
gsub(/[\047,\134,\073]/, "", $0);
|
||||
if($0 ~ /^\/tmp\/dnsmasq\./ && !($0 in a)) {
|
||||
a[length(a)] = $0;
|
||||
};
|
||||
}
|
||||
END {
|
||||
print a[0];
|
||||
}'`
|
||||
if [ -n "$_first_instance_dir" ]; then
|
||||
printf "$_first_instance_dir"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
@@ -23,14 +36,14 @@ get_dnsmasq_cfg_dir() {
|
||||
}
|
||||
|
||||
start() {
|
||||
local _update_at_startup _dnsmasq_cfg_dir
|
||||
local _update_at_startup _dnsmasq_confdir
|
||||
config_load $APP_NAME
|
||||
config_get _update_at_startup config update_at_startup
|
||||
config_get _dnsmasq_cfg_dir config dnsmasq_cfg_dir ""
|
||||
if [ -z "$_dnsmasq_cfg_dir" ]; then
|
||||
_dnsmasq_cfg_dir=`get_dnsmasq_cfg_dir`
|
||||
if [ $? -eq 0 -a -n "$_dnsmasq_cfg_dir" ]; then
|
||||
uci set "${APP_NAME}.config.dnsmasq_cfg_dir"="$_dnsmasq_cfg_dir"
|
||||
config_get _dnsmasq_confdir config dnsmasq_confdir ""
|
||||
if [ -z "$_dnsmasq_confdir" ]; then
|
||||
_dnsmasq_confdir=`get_dnsmasq_confdir`
|
||||
if [ $? -eq 0 -a -n "$_dnsmasq_confdir" ]; then
|
||||
uci set "${APP_NAME}.config.dnsmasq_confdir"="$_dnsmasq_confdir"
|
||||
uci commit ruantiblock
|
||||
else
|
||||
exit 1
|
||||
|
||||
@@ -8,7 +8,7 @@ MODULES_DIR="/usr/libexec/ruantiblock"
|
||||
### Директория PID-файлов и файлов статуса
|
||||
RUN_FILES_DIR="/var/run"
|
||||
### Директория доп. конфигов dnsmasq
|
||||
DNSMASQ_CFG_DIR="/var/dnsmasq.d"
|
||||
DNSMASQ_CONFDIR="/var/dnsmasq.d"
|
||||
### Команда для перезапуска dnsmasq
|
||||
DNSMASQ_RESTART_CMD="/etc/init.d/dnsmasq restart"
|
||||
### Директория для html-страницы статуса (не используется в OpenWrt)
|
||||
@@ -103,7 +103,7 @@ BLLIST_MODULE=""
|
||||
BLLIST_PRESET=""
|
||||
### В случае если из источника получено менее указанного кол-ва записей, то обновления списков не происходит
|
||||
BLLIST_MIN_ENTRIES=3000
|
||||
### Лимит ip адресов. При достижении, в конфиг ipset будет добавлена вся подсеть /24 вместо множества ip-адресов пренадлежащих этой сети (0 - выкл)
|
||||
### Лимит ip адресов. При достижении, в конфиг nftables будет добавлена вся подсеть /24 вместо множества ip-адресов пренадлежащих этой сети (0 - выкл)
|
||||
BLLIST_IP_LIMIT=0
|
||||
### Файл с подсетями класса C (/24). IP адреса из этих подсетей не группируются при оптимизации (записи д.б. в виде: 68.183.221. 149.154.162. и пр. Одна запись на строку)
|
||||
BLLIST_GR_EXCLUDED_NETS_FILE="/etc/ruantiblock/gr_excluded_nets"
|
||||
@@ -111,7 +111,7 @@ BLLIST_GR_EXCLUDED_NETS_FILE="/etc/ruantiblock/gr_excluded_nets"
|
||||
BLLIST_SUMMARIZE_IP=0
|
||||
### Группировать идущие подряд подсети /24 в диапазоны CIDR
|
||||
BLLIST_SUMMARIZE_CIDR=0
|
||||
### Фильтрация записей блэклиста по шаблонам из файла BLLIST_IP_FILTER_FILE. Записи (IP, CIDR) попадающие под шаблоны исключаются из кофига ipset (0 - выкл, 1 - вкл)
|
||||
### Фильтрация записей блэклиста по шаблонам из файла BLLIST_IP_FILTER_FILE. Записи (IP, CIDR) попадающие под шаблоны исключаются из кофига nftables (0 - выкл, 1 - вкл)
|
||||
BLLIST_IP_FILTER=0
|
||||
### Тип фильтра IP (0 - все записи, кроме совпадающих с шаблонами; 1 - только записи, совпадающие с шаблонами)
|
||||
BLLIST_IP_FILTER_TYPE=0
|
||||
|
||||
@@ -22,7 +22,7 @@ export DATA_DIR="/var/${NAME}"
|
||||
export MODULES_DIR="/usr/libexec/${NAME}"
|
||||
RUN_FILES_DIR="/var/run"
|
||||
### Директория доп. конфигов dnsmasq
|
||||
export DNSMASQ_CFG_DIR="/var/dnsmasq.d"
|
||||
export DNSMASQ_CONFDIR="/var/dnsmasq.d"
|
||||
### Команда для перезапуска dnsmasq
|
||||
export DNSMASQ_RESTART_CMD="/etc/init.d/dnsmasq restart"
|
||||
### Директория для html-страницы статуса (не используется в OpenWrt)
|
||||
@@ -137,7 +137,7 @@ export BLLIST_MODULE=""
|
||||
export BLLIST_PRESET=""
|
||||
### В случае если из источника получено менее указанного кол-ва записей, то обновления списков не происходит
|
||||
export BLLIST_MIN_ENTRIES=3000
|
||||
### Лимит IP адресов. При достижении, в конфиг ipset будет добавлена вся подсеть /24 вместо множества IP адресов пренадлежащих этой сети (0 - выкл)
|
||||
### Лимит IP адресов. При достижении, в конфиг nftables будет добавлена вся подсеть /24 вместо множества IP адресов пренадлежащих этой сети (0 - выкл)
|
||||
export BLLIST_IP_LIMIT=0
|
||||
### Файл с подсетями класса C (/24). IP адреса из этих подсетей не группируются при оптимизации (записи д.б. в виде: 68.183.221. 149.154.162. и пр. Одна запись на строку)
|
||||
export BLLIST_GR_EXCLUDED_NETS_FILE="${CONFIG_DIR}/gr_excluded_nets"
|
||||
@@ -145,7 +145,7 @@ export BLLIST_GR_EXCLUDED_NETS_FILE="${CONFIG_DIR}/gr_excluded_nets"
|
||||
export BLLIST_SUMMARIZE_IP=0
|
||||
### Группировать идущие подряд подсети /24 в диапазоны CIDR
|
||||
export BLLIST_SUMMARIZE_CIDR=0
|
||||
### Фильтрация записей блэклиста по шаблонам из файла BLLIST_IP_FILTER_FILE. Записи (IP, CIDR) попадающие под шаблоны исключаются из кофига ipset (0 - выкл, 1 - вкл)
|
||||
### Фильтрация записей блэклиста по шаблонам из файла BLLIST_IP_FILTER_FILE. Записи (IP, CIDR) попадающие под шаблоны исключаются из кофига nftables (0 - выкл, 1 - вкл)
|
||||
export BLLIST_IP_FILTER=0
|
||||
### Тип фильтра IP (0 - все записи, кроме совпадающих с шаблонами; 1 - только записи, совпадающие с шаблонами)
|
||||
export BLLIST_IP_FILTER_TYPE=0
|
||||
@@ -195,9 +195,9 @@ BLLIST_SOURCES_SCRIPT="${SCRIPTS_DIR}/blacklist_sources"
|
||||
### Config script
|
||||
[ -f "$CONFIG_SCRIPT" ] && . "$CONFIG_SCRIPT"
|
||||
|
||||
export DNSMASQ_DATA_FILE_BYPASS="${DNSMASQ_CFG_DIR}/00-${NAME}_bypass.dnsmasq"
|
||||
export DNSMASQ_DATA_FILE_USER_INSTANCES="${DNSMASQ_CFG_DIR}/01-${NAME}_user_instances.dnsmasq"
|
||||
export DNSMASQ_DATA_FILE="${DNSMASQ_CFG_DIR}/02-${NAME}.dnsmasq"
|
||||
export DNSMASQ_DATA_FILE_BYPASS="${DNSMASQ_CONFDIR}/00-${NAME}_bypass.dnsmasq"
|
||||
export DNSMASQ_DATA_FILE_USER_INSTANCES="${DNSMASQ_CONFDIR}/01-${NAME}_user_instances.dnsmasq"
|
||||
export DNSMASQ_DATA_FILE="${DNSMASQ_CONFDIR}/02-${NAME}.dnsmasq"
|
||||
|
||||
### Utilities
|
||||
AWK_CMD="awk"
|
||||
@@ -694,9 +694,8 @@ AddBypassEntries() {
|
||||
if [ "$BYPASS_MODE" = "1" ]; then
|
||||
if [ -f "$BYPASS_ENTRIES_FILE" ]; then
|
||||
$AWK_CMD 'BEGIN {
|
||||
null = "";
|
||||
ip_array[0] = null;
|
||||
fqdn_array[0] = null;
|
||||
ip_array[0];
|
||||
fqdn_array[0];
|
||||
}
|
||||
function writeIpList(array, _str) {
|
||||
_str = "";
|
||||
@@ -724,7 +723,7 @@ AddBypassEntries() {
|
||||
($0 !~ /^([\040\011]*$|#)/) {
|
||||
sub("\015", "", $0);
|
||||
if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}([\057][0-9]{1,2})?$/) {
|
||||
ip_array[$0] = null;
|
||||
ip_array[$0];
|
||||
}
|
||||
else if($0 ~ /^([a-z0-9._-]+[.])*([a-z]{2,}|xn--[a-z0-9]+)([ ][0-9]{1,3}([.][0-9]{1,3}){3}([#][0-9]{2,5})?)?$/) {
|
||||
fqdn_array[length(fqdn_array)] = $1 " " $2;
|
||||
@@ -748,10 +747,9 @@ ParseUserEntries() {
|
||||
-v IP_DATA_FILE="$4" -v DNSMASQ_DATA_FILE="$5" -v USER_ENTRIES_STATUS_FILE="$6" \
|
||||
-v ID="$7" -v USER_ENTRIES_DNS="$8" '
|
||||
BEGIN {
|
||||
null = "";
|
||||
ip_array[0] = null;
|
||||
cidr_array[0] = null;
|
||||
fqdn_array[0] = null;
|
||||
ip_array[0];
|
||||
cidr_array[0];
|
||||
fqdn_array[0];
|
||||
}
|
||||
function writeIpList(array, _str) {
|
||||
_str = "";
|
||||
@@ -779,10 +777,10 @@ ParseUserEntries() {
|
||||
($0 !~ /^([\040\011]*$|#)/) {
|
||||
sub("\015", "", $0);
|
||||
if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}$/) {
|
||||
ip_array[$0] = null;
|
||||
ip_array[$0];
|
||||
}
|
||||
else if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}[\057][0-9]{1,2}$/) {
|
||||
cidr_array[$0] = null;
|
||||
cidr_array[$0];
|
||||
}
|
||||
else if($0 ~ /^([a-z0-9._-]+[.])*([a-z]{2,}|xn--[a-z0-9]+)([ ][0-9]{1,3}([.][0-9]{1,3}){3}([#][0-9]{2,5})?)?$/) {
|
||||
fqdn_array[length(fqdn_array)] = $1 " " $2;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
|
||||
UCI_SECTION="ruantiblock.config"
|
||||
UCI_VARS="dnsmasq_cfg_dir proxy_mode proxy_local_clients nftset_clear_sets allowed_hosts_mode allowed_hosts_list bypass_mode bypass_entries_dns enable_fproxy fproxy_list enable_bllist_proxy if_vpn vpn_gw_ip vpn_route_check tor_trans_port onion_dns_addr t_proxy_type t_proxy_port_tcp t_proxy_port_udp t_proxy_allow_udp enable_logging bllist_min_entries bllist_module bllist_preset bllist_ip_limit bllist_summarize_ip bllist_summarize_cidr bllist_ip_filter bllist_ip_filter_type bllist_sd_limit bllist_fqdn_filter bllist_fqdn_filter_type bllist_enable_idn bllist_alt_nslookup bllist_alt_dns_addr update_at_startup enable_tmp_downloads"
|
||||
UCI_VARS="dnsmasq_confdir proxy_mode proxy_local_clients nftset_clear_sets allowed_hosts_mode allowed_hosts_list bypass_mode bypass_entries_dns enable_fproxy fproxy_list enable_bllist_proxy if_vpn vpn_gw_ip vpn_route_check tor_trans_port onion_dns_addr t_proxy_type t_proxy_port_tcp t_proxy_port_udp t_proxy_allow_udp enable_logging bllist_min_entries bllist_module bllist_preset bllist_ip_limit bllist_summarize_ip bllist_summarize_cidr bllist_ip_filter bllist_ip_filter_type bllist_sd_limit bllist_fqdn_filter bllist_fqdn_filter_type bllist_enable_idn bllist_alt_nslookup bllist_alt_dns_addr update_at_startup enable_tmp_downloads"
|
||||
UCI_CMD=`which uci`
|
||||
if [ $? -ne 0 ]; then
|
||||
echo " Error! UCI doesn't exists" >&2
|
||||
|
||||
Reference in New Issue
Block a user