1
0
mirror of https://github.com/pi-hole/docker-pi-hole.git synced 2024-06-24 08:26:41 +02:00

Merge pull request #114 from diginc/dev

fix up PIHOLE_INTERFACE default
This commit is contained in:
Adam Hill 2017-03-04 17:54:52 -06:00 committed by GitHub
commit dc54d7f4cd
4 changed files with 39 additions and 4 deletions

View File

@ -41,6 +41,12 @@ In addition to the required environment variable you saw above (`-e ServerIP="$I
| VIRTUAL_HOST | Server_IP | What your web server 'virtual host' is, accessing admin through this Hostname/IP allows you to make changes to the whitelist / blacklists in addition to the default 'http://pi.hole/admin/' address |
| IPv6 | True | Allows forced disabling of IPv6 for docker setups that can't support it (like unraid) |
*OPTIONAL Advanced* Environment Variables
| Env Variable | Default | Description |
| INTERFACE | eth0 | The default works fine with our basic example docker run commands. If you're trying to use DHCP with `--net host` mode then you may have to customize this or DNSMASQ_LISTENING.
| DNSMASQ_LISTENING | | If set to `local` or `all` this will override `INTERFACE`. `local` listens on all local subnets, `all` permits listening on internet origin subnets in addition to local.
## Tips and Tricks
* A good way to test things are working right is by loading this page: [http://pi.hole/admin/](http://pi.hole/admin/)

View File

@ -27,7 +27,23 @@ setup_dnsmasq_dns() {
echo "Using $dnsType DNS servers: $DNS1 & $DNS2"
[ -n "$DNS1" ] && change_setting "PIHOLE_DNS_1" "${DNS1}"
[ -n "$DNS2" ] && change_setting "PIHOLE_DNS_2" "${DNS2}"
ProcessDNSSettings
}
setup_dnsmasq_interface() {
local INTERFACE="${1:-eth0}"
local interfaceType='default'
if [ "$INTERFACE" != 'eth0' ] ; then
interfaceType='custom'
fi;
echo "DNSMasq binding to $interfaceType interface: $INTERFACE"
[ -n "$INTERFACE" ] && change_setting "PIHOLE_INTERFACE" "${INTERFACE}"
}
setup_dnsmasq() {
# Coordinates
setup_dnsmasq_dns "$DNS1" "$DNS2"
setup_dnsmasq_interface "$INTERFACE"
ProcessDNSSettings
}
setup_dnsmasq_hostnames() {

View File

@ -10,8 +10,8 @@ export HOSTNAME
export WEBLOGDIR
export DNS1
export DNS2
export INTERFACE
export IPv6
#export setupVars="${setupVars:-/etc/pihole/setupVars.conf}"
. /bash_functions.sh
@ -21,7 +21,7 @@ prepare_setup_vars
change_setting "IPV4_ADDRESS" "$ServerIP"
change_setting "IPV6_ADDRESS" "$ServerIPv6"
setup_web_password "$WEBPASSWORD"
setup_dnsmasq_dns "$DNS1" "$DNS2"
setup_dnsmasq
setup_php_env
setup_dnsmasq_hostnames "$ServerIP" "$ServerIPv6" "$HOSTNAME"
setup_ipv4_ipv6

View File

@ -32,13 +32,26 @@ def test_IPv6_not_True_removes_ipv6(Docker, tag, args, expected_ipv6, expected_s
])
def test_DNS_Envs_override_defaults(Docker, args, expected_stdout, dns1, dns2):
''' When DNS environment vars are passed in, they override default dns servers '''
function = Docker.run('. /bash_functions.sh ; eval `grep setup_dnsmasq_dns /start.sh`')
function = Docker.run('. /bash_functions.sh ; eval `grep setup_dnsmasq /start.sh`')
assert expected_stdout in function.stdout
docker_dns_servers = Docker.run('grep "^server=" /etc/dnsmasq.d/01-pihole.conf').stdout
expected_servers = 'server={}\nserver={}\n'.format(dns1, dns2)
assert expected_servers == docker_dns_servers
@pytest.mark.parametrize('args, expected_stdout, expected_config_line', [
('-e ServerIP="1.2.3.4"', 'binding to default interface: eth0', 'interface=eth0' ),
('-e ServerIP="1.2.3.4" -e INTERFACE="eth0"', 'binding to default interface: eth0', 'interface=eth0' ),
('-e ServerIP="1.2.3.4" -e INTERFACE="br0"', 'binding to custom interface: br0', 'interface=br0'),
])
def test_DNS_interface_override_defaults(Docker, args, expected_stdout, expected_config_line):
''' When INTERFACE environment var is passed in, overwrite dnsmasq interface '''
function = Docker.run('. /bash_functions.sh ; eval `grep setup_dnsmasq /start.sh`')
assert expected_stdout in function.stdout
docker_dns_interface = Docker.run('grep "^interface" /etc/dnsmasq.d/01-pihole.conf').stdout
assert expected_config_line + '\n' == docker_dns_interface
expected_debian_lines = [
'"VIRTUAL_HOST" => "192.168.100.2"',
'"ServerIP" => "192.168.100.2"',