diff --git a/data/hooks/conf_regen/43-dnsmasq b/data/hooks/conf_regen/43-dnsmasq index 13c442158..8b5691dc6 100755 --- a/data/hooks/conf_regen/43-dnsmasq +++ b/data/hooks/conf_regen/43-dnsmasq @@ -14,9 +14,8 @@ do_pre_regen() { etcdefault_dir="${pending_dir}/etc/default" mkdir -p "$etcdefault_dir" - # add general conf files + # add default conf files cp plain/etcdefault ${pending_dir}/etc/default/dnsmasq - cp plain/dnsmasq.conf ${pending_dir}/etc/dnsmasq.conf # add resolver file cat plain/resolv.dnsmasq.conf | grep "^nameserver" | shuf >${pending_dir}/etc/resolv.dnsmasq.conf @@ -26,11 +25,22 @@ do_pre_regen() { ynh_validate_ip4 "$ipv4" || ipv4='127.0.0.1' ipv6=$(curl -s -6 https://ip6.yunohost.org 2>/dev/null || true) ynh_validate_ip6 "$ipv6" || ipv6='' + interfaces="$(ls -m /sys/class/net | sed s/,//g)" + wireless_interfaces="lo" + for dev in $(ls /sys/class/net); do + if [ -d "/sys/class/net/$dev/wireless" ]; then + wireless_interfaces+=" $dev" + fi + done - export ipv4 - export ipv6 + # General configuration + export wireless_interfaces + ynh_render_template "dnsmasq.conf.tpl" "${pending_dir}/etc/dnsmasq.conf" # add domain conf files + export interfaces + export ipv4 + export ipv6 for domain in $YNH_DOMAINS; do [[ ! $domain =~ \.local$ ]] || continue export domain diff --git a/data/templates/dnsmasq/dnsmasq.conf.tpl b/data/templates/dnsmasq/dnsmasq.conf.tpl new file mode 100644 index 000000000..eece530dc --- /dev/null +++ b/data/templates/dnsmasq/dnsmasq.conf.tpl @@ -0,0 +1,10 @@ +domain-needed +expand-hosts +localise-queries + +{% set interfaces = wireless_interfaces.strip().split(' ') %} +{% for interface in interfaces %} +interface={{ interface }} +{% endfor %} +resolv-file=/etc/resolv.dnsmasq.conf +cache-size=256 diff --git a/data/templates/dnsmasq/domain.tpl b/data/templates/dnsmasq/domain.tpl index c4bb56d1d..50b946176 100644 --- a/data/templates/dnsmasq/domain.tpl +++ b/data/templates/dnsmasq/domain.tpl @@ -1,5 +1,8 @@ -host-record={{ domain }},{{ ipv4 }} -host-record=xmpp-upload.{{ domain }},{{ ipv4 }} +{% set interfaces_list = interfaces.split(' ') %} +{% for interface in interfaces_list %} +interface-name={{ domain }},{{ interface }} +interface-name=xmpp-upload.{{ domain }},{{ interface }} +{% endfor %} {% if ipv6 %} host-record={{ domain }},{{ ipv6 }} host-record=xmpp-upload.{{ domain }},{{ ipv6 }} diff --git a/data/templates/dnsmasq/plain/dnsmasq.conf b/data/templates/dnsmasq/plain/dnsmasq.conf deleted file mode 100644 index 12a14048a..000000000 --- a/data/templates/dnsmasq/plain/dnsmasq.conf +++ /dev/null @@ -1,6 +0,0 @@ -domain-needed -expand-hosts - -listen-address=127.0.0.1 -resolv-file=/etc/resolv.dnsmasq.conf -cache-size=256