https-dns-proxy: switch to https-dns-proxy package name 10752/head
authorStan Grishin <stangri@melmac.net>
Tue, 10 Dec 2019 22:42:15 +0000 (15:42 -0700)
committerStan Grishin <stangri@melmac.net>
Tue, 17 Dec 2019 21:48:56 +0000 (14:48 -0700)
Signed-off-by: Stan Grishin <stangri@melmac.net>
net/https-dns-proxy/Makefile
net/https-dns-proxy/files/https-dns-proxy.config [new file with mode: 0644]
net/https-dns-proxy/files/https-dns-proxy.init [new file with mode: 0755]
net/https-dns-proxy/files/https_dns_proxy.config [deleted file]
net/https-dns-proxy/files/https_dns_proxy.init [deleted file]

index 3a8e754040ccca80692a6b5605d00c038c4c614c..b659bea10fc2707b825bae4757168167a95cdafc 100644 (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))
diff --git a/net/https-dns-proxy/files/https-dns-proxy.config b/net/https-dns-proxy/files/https-dns-proxy.config
new file mode 100644 (file)
index 0000000..6c88f72
--- /dev/null
@@ -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'
diff --git a/net/https-dns-proxy/files/https-dns-proxy.init b/net/https-dns-proxy/files/https-dns-proxy.init
new file mode 100755 (executable)
index 0000000..56ad6a3
--- /dev/null
@@ -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
+}
diff --git a/net/https-dns-proxy/files/https_dns_proxy.config b/net/https-dns-proxy/files/https_dns_proxy.config
deleted file mode 100644 (file)
index b124aeb..0000000
+++ /dev/null
@@ -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?'
diff --git a/net/https-dns-proxy/files/https_dns_proxy.init b/net/https-dns-proxy/files/https_dns_proxy.init
deleted file mode 100644 (file)
index 9a5f797..0000000
+++ /dev/null
@@ -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'
-}