include $(TOPDIR)/rules.mk
-PKG_NAME:=https_dns_proxy
+PKG_NAME:=https-dns-proxy
+PKG_VERSION:=2019-12-03
PKG_RELEASE=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy
-PKG_SOURCE_DATE:=2019-10-09
-PKG_SOURCE_VERSION:=3d20c75c4a17aa569748e63ac169b9274178d573
-PKG_MIRROR_HASH:=149839f1db4ab9691db3955de526080a5b731ff8484b06f164497f4e244140da
-
-PKG_MAINTAINER:=Aaron Drew <aarond10@gmail.com>
+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
CMAKE_OPTIONS += -DCLANG_TIDY_EXE=
-define Package/https_dns_proxy
- SECTION:=net
- CATEGORY:=Network
- TITLE:=DNS over HTTPS Proxy Server
- DEPENDS:=+libcares +libcurl +libev +ca-bundle
+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))
--- /dev/null
+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'
--- /dev/null
+#!/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
+}
+++ /dev/null
-config https_dns_proxy
- option listen_addr '127.0.0.1'
- option listen_port '5053'
- option bootstrap_dns '8.8.8.8,8.8.4.4'
- option url_prefix 'https://dns.google.com/resolve?'
- option user 'nobody'
- option group 'nogroup'
- option subnet_addr ''
- option proxy_server ''
-
-config https_dns_proxy
- option listen_addr '127.0.0.1'
- option listen_port '5054'
- option bootstrap_dns '1.1.1.1,1.0.0.1'
- option url_prefix 'https://cloudflare-dns.com/dns-query?ct=application/dns-json&'
- option user 'nobody'
- option group 'nogroup'
- option subnet_addr ''
- option proxy_server ''
+++ /dev/null
-#!/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_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"
-}
-
-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" 'url_prefix' '-r'
- append_parm "$cfg" 'user' '-u' 'nobody'
- append_parm "$cfg" 'group' '-g' 'nogroup'
- append_parm "$cfg" 'subnet_addr' '-e'
- append_parm "$cfg" 'proxy_server' '-t'
-
- procd_open_instance
-# shellcheck disable=SC2086
- procd_set_param command ${PROG} ${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
-}
-
-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
-}