Merge pull request #10752 from stangri/18.06-https-dns-proxy

[18.06] https-dns-proxy: switch to https-dns-proxy package name
This commit is contained in:
Rosen Penev 2019-12-18 16:14:35 -08:00 committed by GitHub
commit d810a30391
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 175 additions and 74 deletions

View File

@ -1,33 +1,36 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=https_dns_proxy
PKG_VERSION:=2018-04-23
PKG_NAME:=https-dns-proxy
PKG_VERSION:=2019-12-03
PKG_RELEASE=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_MIRROR_HASH:=24b7e4238c37e646f33eee3a374f6b7beb5c167b9c5008cc13b51e5f1f3a44ea
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy/
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=bea68401330e611f6e9b75cec84e2dc4e81e52de
PKG_MAINTAINER:=Aaron Drew <aarond10@gmail.com>
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy
PKG_SOURCE_DATE:=2019-12-03
PKG_SOURCE_VERSION:=2adeafb67cbe8d67148219c48334856ae4f3bd75
PKG_MIRROR_HASH:=58088baa092cd9634652d65f9b5650db88d2e102cb370710654db7b15f2f0e42
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/https_dns_proxy
SECTION:=net
CATEGORY:=Network
TITLE:=DNS over HTTPS proxy server
DEPENDS:=+libcares +libcurl +libev +ca-bundle
CMAKE_OPTIONS += -DCLANG_TIDY_EXE=
define Package/https-dns-proxy
SECTION:=net
CATEGORY:=Network
TITLE:=DNS Over HTTPS Proxy
DEPENDS:=+libcares +libcurl +libev +ca-bundle
CONFLICTS:=https_dns_proxy
endef
define Package/https_dns_proxy/install
define Package/https-dns-proxy/install
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d ${1}/etc/config
$(INSTALL_BIN) $(PKG_BUILD_DIR)/https_dns_proxy $(1)/usr/sbin/
$(INSTALL_BIN) ./files/https_dns_proxy.init $(1)/etc/init.d/https_dns_proxy
$(INSTALL_CONF) ./files/https_dns_proxy.config $(1)/etc/config/https_dns_proxy
$(INSTALL_BIN) $(PKG_BUILD_DIR)/https_dns_proxy $(1)/usr/sbin/https-dns-proxy
$(INSTALL_BIN) ./files/https-dns-proxy.init $(1)/etc/init.d/https-dns-proxy
$(INSTALL_CONF) ./files/https-dns-proxy.config $(1)/etc/config/https-dns-proxy
endef
$(eval $(call BuildPackage,https_dns_proxy))
$(eval $(call BuildPackage,https-dns-proxy))

View File

@ -0,0 +1,15 @@
config https-dns-proxy
option bootstrap_dns '8.8.8.8,8.8.4.4'
option resolver_url 'https://dns.google/dns-query'
option listen_addr '127.0.0.1'
option listen_port '5053'
option user 'nobody'
option group 'nogroup'
config https-dns-proxy
option bootstrap_dns '1.1.1.1,1.0.0.1'
option resolver_url 'https://cloudflare-dns.com/dns-query'
option listen_addr '127.0.0.1'
option listen_port '5054'
option user 'nobody'
option group 'nogroup'

View File

@ -0,0 +1,139 @@
#!/bin/sh /etc/rc.common
# Copyright 2019 Stan Grishin (stangri@melmac.net)
# shellcheck disable=SC2039
export START=80
export USE_PROCD=1
PROG=/usr/sbin/https-dns-proxy
xappend() { param="$param $1"; }
append_bool() {
local section="$1"
local option="$2"
local value="$3"
local default="$4"
local _loctmp
[ -z "$default" ] && default="0"
config_get_bool _loctmp "$section" "$option" "$default"
[ "$_loctmp" != "0" ] && xappend "$value"
}
append_parm() {
local section="$1"
local option="$2"
local switch="$3"
local default="$4"
local _loctmp
config_get _loctmp "$section" "$option" "$default"
[ -z "$_loctmp" ] && return 0
xappend "$switch $_loctmp"
}
append_match() {
local section="$1"
local option="$2"
local value="$3"
local match="$4"
local _loctmp
config_get_bool _loctmp "$section" "$option"
[ "$_loctmp" = "$match" ] && xappend "$value"
}
start_instance() {
local cfg="$1" param listen_addr listen_port
append_parm "$cfg" 'listen_addr' '-a' '127.0.0.1'
append_parm "$cfg" 'listen_port' '-p' "$p"
append_parm "$cfg" 'bootstrap_dns' '-b'
append_parm "$cfg" 'resolver_url' '-r'
append_parm "$cfg" 'user' '-u' 'nobody'
append_parm "$cfg" 'group' '-g' 'nogroup'
append_parm "$cfg" 'edns_subnet' '-e'
append_parm "$cfg" 'proxy_server' '-t'
append_parm "$cfg" 'logfile' '-l'
append_bool "$cfg" 'use_http1' '-x'
append_match "$cfg" 'verbosity' '-v' '1'
append_match "$cfg" 'verbosity' '-vv' '2'
append_match "$cfg" 'verbosity' '-vvv' '3'
append_match "$cfg" 'verbosity' '-vvvv' '4'
procd_open_instance
# shellcheck disable=SC2086
procd_set_param command ${PROG} -4 ${param}
procd_set_param respawn
procd_close_instance
config_get listen_addr "$cfg" 'listen_addr' '127.0.0.1'
config_get listen_port "$cfg" 'listen_port' "$p"
config_load 'dhcp'
# shellcheck disable=SC2154
config_foreach dnsmasq_add_doh_server 'dnsmasq' "${listen_addr}#${listen_port}"
p="$((p+1))"
}
service_triggers() {
procd_add_reload_trigger 'https-dns-proxy'
}
start_service() {
local p=5053
dhcp_backup 'create'
config_load 'https-dns-proxy'
config_foreach start_instance 'https-dns-proxy'
if [ -z "$(uci -q get dhcp.@dnsmasq[0].server)" ]; then
dhcp_backup 'restore'
fi
if [ -n "$(uci -q changes dhcp)" ]; then
uci -q commit dhcp
[ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1
fi
}
stop_service() {
dhcp_backup 'restore'
if [ -n "$(uci -q changes dhcp)" ]; then
uci -q commit dhcp
[ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1
fi
}
service_triggers() {
procd_add_reload_trigger 'https-dns-proxy'
}
dnsmasq_add_doh_server() {
local cfg="$1" value="$2"
uci -q add_list dhcp."$cfg".server="$value"
}
dnsmasq_create_server_backup() {
local cfg="$1" i
if ! uci -q get "dhcp.$cfg.doh_backup_server" >/dev/null; then
for i in $(uci -q get "dhcp.$cfg.server"); do
uci -q add_list dhcp."$cfg".doh_backup_server="$i"
done
fi
uci -q del "dhcp.$cfg.server"
}
dnsmasq_restore_server_backup() {
local cfg="$1" i
if uci -q get "dhcp.$cfg.doh_backup_server" >/dev/null; then
uci -q del "dhcp.$cfg.server"
for i in $(uci -q get "dhcp.$cfg.doh_backup_server"); do
uci -q add_list dhcp."$cfg".server="$i"
done
fi
}
dhcp_backup() {
config_load 'dhcp'
case "$1" in
create)
config_foreach dnsmasq_create_server_backup 'dnsmasq';;
restore)
config_foreach dnsmasq_restore_server_backup 'dnsmasq';;
esac
}

View File

@ -1,8 +0,0 @@
config https_dns_proxy
option listen_addr '127.0.0.1'
option listen_port '5053'
option user 'nobody'
option group 'nogroup'
option subnet_addr ''
option proxy_server ''
option url_prefix 'https://dns.google.com/resolve?'

View File

@ -1,48 +0,0 @@
#!/bin/sh /etc/rc.common
START=80
USE_PROCD=1
PROG=/usr/sbin/https_dns_proxy
start_instance() {
local cfg="$1"
local listen_addr listen_port user group
config_get listen_addr "$cfg" listen_addr
config_get listen_port "$cfg" listen_port
config_get user "$cfg" user
config_get group "$cfg" group
config_get subnet_addr "$cfg" subnet_addr
config_get proxy_server "$cfg" proxy_server
config_get url_prefix "$cfg" url_prefix
if [ -n "$subnet_addr" ]; then
subnet_param="-e $subnet_addr"
fi
if [ -n "$proxy_server" ]; then
proxy_param="-t $proxy_server"
fi
if [ -z "$url_prefix" ]; then
url_prefix="https://dns.google.com/resolve?"
fi
procd_open_instance
procd_set_param command ${PROG} \
-a "$listen_addr" -p "$listen_port" \
-u "$user" -g "$group" $subnet_param $proxy_param \
-r "$url_prefix"
procd_set_param respawn
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "https_dns_proxy"
}
start_service() {
config_load 'https_dns_proxy'
config_foreach start_instance 'https_dns_proxy'
}