- name: Disable dhcpd service
  service:
    name: dhcpd
    enabled: no
  when: (dhcpd_install or dhcpd_installed is defined) and not dhcpd_enabled

# service is restarted with NM dispatcher.d script
- name: Enable dhcpd service
  service:
    name: dhcpd
    enabled: yes
  when: dhcpd_install and dhcpd_enabled

- name: Install /etc/sysconfig/dhcpd, /etc/dhcpd-iiab.conf from templates
  template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    owner: root
    group: root
    mode: "{{ item.mode }}"
  with_items:
   - { src: 'dhcp/dhcpd-env.j2', dest: '/etc/sysconfig/dhcpd', mode: '0644' }
   - { src: 'dhcp/dhcpd-iiab.conf.j2', dest: '/etc/dhcpd-iiab.conf', mode: '0644' }
  when: dhcpd_install and dhcpd_enabled

- name: Install /etc/named-iiab.conf and two *.zone.db files into /var/named-iiab
  template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    owner: root
    group: root
    mode: "{{ item.mode }}"
  with_items:
   - { src: 'named/named-iiab.conf.j2', dest: '/etc/named-iiab.conf', mode: '0644' }
   - { src: 'named/school.local.zone.db', dest: '/var/named-iiab/', mode: '0644' }
   - { src: 'named/school.internal.zone.db', dest: '/var/named-iiab/', mode: '0644' }
  when: named_install and named_enabled

- name: Enable named service ({{ dns_service }}) if named_enabled
  systemd:
    name: "{{ dns_service }}"
    enabled: yes
  when: named_install and named_enabled

- name: Disable named service ({{ dns_service }}) if not named_enabled
  systemd:
    name: "{{ dns_service }}"
    enabled: no
  when: (named_install or named_installed is defined) and not named_enabled

- name: Install /etc/dnsmasq.d/iiab.conf from template, when dnsmasq_enabled and isn't Appliance
  template:
    src: network/dnsmasq.conf.j2
    dest: /etc/dnsmasq.d/iiab.conf
  when: dnsmasq_install and dnsmasq_enabled and (iiab_network_mode != "Appliance")

- name: Install /etc/hosts.dnsmasq from template for /etc/dnsmasq.d/iiab.conf (instead of using /etc/hosts)
  template:
    src: network/hosts-dnsmasq.j2
    dest: /etc/hosts.dnsmasq
  when: dnsmasq_install and dnsmasq_enabled and (iiab_network_mode != "Appliance")

- name: Update /etc/dnsmasq.d/dnsmasq-iiab for custom dns setting
  template:
    src: network/dnsmasq-iiab
    dest: /etc/dnsmasq.d/dnsmasq-iiab
  when: dnsmasq_install    # 2020-05-10: Are all these dnsmasq_install conditions really still necessary ?

## Another way to skin the cat
##- name: Check if systemd service networkd-dispatcher is enabled
##  systemd:
##    name: networkd-dispatcher
##    state: reloaded
##  register: systemd_out
##
## Yet Another
## command: systemctl show networkd-dispatcher | grep ^UnitFileState=
## would yield "UnitFileState=enabled"
##
#- name: Check if systemd service networkd-dispatcher is enabled
#  command: systemctl is-enabled networkd-dispatcher
#  register: nd_enabled
#  ignore_errors: True
#
#- debug:
#    var: nd_enabled

- name: Check if /etc/networkd-dispatcher/routable.d exists
  stat:
    path: /etc/networkd-dispatcher/routable.d
  register: nd_dir

#- debug:
#    var: nd_dir

- name: To restart dnsmasq whenever br0 comes up, install /etc/networkd-dispatcher/routable.d/dnsmasq.sh from template (if isn't Appliance, and directory /etc/networkd-dispatcher/routable.d exists, i.e. OS's like Ubuntu 18.04 or later)
  template:
    src: roles/network/templates/network/dnsmasq.sh.j2
    dest: /etc/networkd-dispatcher/routable.d/dnsmasq.sh
    mode: 0755
    owner: root
    group: root
  when: dnsmasq_install and dnsmasq_enabled and nd_dir.stat.exists and nd_dir.stat.isdir and (iiab_network_mode != "Appliance")
  #when: dnsmasq_install and dnsmasq_enabled and nd_enabled is defined and nd_enabled.stdout == "enabled" and nd_dir.stat.exists and nd_dir.stat.isdir and (iiab_network_mode != "Appliance")
  #when: dnsmasq_install and dnsmasq_enabled and systemd_out.status.UnitFileState == "enabled" and networkd_dir.stat.exists and networkd_dir.stat.isdir and (iiab_network_mode != "Appliance")

- name: Remove /etc/dnsmasq.d/iiab.conf, when not dnsmasq_enabled or is Appliance
  file:
    path: /etc/dnsmasq.d/iiab.conf
    state: absent
  when: (not dnsmasq_enabled) or (iiab_network_mode == "Appliance")

- name: Enable iiab-dnsmasq systemd service, if dnsmasq_enabled
  systemd:
    name: iiab-dnsmasq
    enabled: yes
  when: dnsmasq_install and dnsmasq_enabled

- name: Disable iiab-dnsmasq, if not dnsmasq_enabled
  systemd:
    name: iiab-dnsmasq
    enabled: no
  when: dnsmasq_install and not dnsmasq_enabled

- name: Enable DansGuardian systemd service, if dansguardian_enabled
  systemd:
    name: dansguardian
    enabled: yes
  when: dansguardian_install and dansguardian_enabled

- name: Disable DansGuardian, if not dansguardian_enabled
  systemd:
    name: dansguardian
    enabled: no
  when: (dansguardian_install or dansguardian_installed is defined) and not dansguardian_enabled

- name: Mandate 'HTTPCACHE_ON=True' in {{ iiab_env_file }}, if squid_enabled
  lineinfile:
    path: "{{ iiab_env_file }}"
    regexp: '^HTTPCACHE_ON=*'
    line: 'HTTPCACHE_ON=True'
    state: present
  when: squid_install and squid_enabled

- name: Enable Squid systemd service ({{ proxy }}) if squid_enabled
  systemd:
    name: "{{ proxy }}"
    enabled: yes
  when: squid_install and squid_enabled

- name: Install /etc/{{ proxy }}/squid-iiab.conf from template, owned by {{ proxy_user }}:{{ proxy_user }}
  template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    owner: "{{ item.owner }}"
    group: "{{ item.group }}"
    mode: "{{ item.mode }}"
  with_items:
    - src: squid/squid-iiab.conf.j2
      dest: "/etc/{{ proxy }}/squid-iiab.conf"
      owner: "{{ proxy_user }}"
      group: "{{ proxy_user }}"
      mode: 0644
  when: squid_install and squid_enabled

- name: Point to Squid config file from startup file, if squid_enabled (debuntu)
  lineinfile:
    regexp: '^CONFIG'
    line: "CONFIG=/etc/{{ proxy }}/squid-iiab.conf"
    path: "/etc/init.d/{{ proxy }}"
  when: squid_install and squid_enabled and is_debuntu

- name: Disable Squid service, if not squid_enabled
  systemd:
    name: "{{ proxy }}"
    enabled: no
  when: (squid_install or squid_installed is defined) and not squid_enabled

- name: Revert to 'HTTPCACHE_ON=False' if not squid_enabled
  lineinfile:
    path: "{{ iiab_env_file }}"
    regexp: '^HTTPCACHE_ON=*'
    line: 'HTTPCACHE_ON=False'
    state: present
  when: squid_install and not squid_enabled

- name: Enable Wondershaper service, if wondershaper_enabled
  systemd:
    name: wondershaper
    enabled: yes
  when: wondershaper_install and wondershaper_enabled

- name: Disable Wondershaper service, if not wondershaper_enabled
  systemd:
    name: wondershaper
    enabled: no
  when: (wondershaper_install or wondershaper_installed is defined) and not wondershaper_enabled

# check-LAN should be iptables.yml remove later
- name: Install clean copy of /usr/bin/iiab-gen-iptables from template
  template:
    src: gateway/iiab-gen-iptables
    dest: /usr/bin/iiab-gen-iptables
    owner: root
    group: root
    mode: 0755

- name: Add 'squid' variable values to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"
    section: squid
    option: "{{ item.option }}"
    value: "{{ item.value | string }}"
  with_items:
    - option: enabled
      value: "{{ squid_enabled }}"

- name: Add 'dansguardian' variable values to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"
    section: dansguardian
    option: "{{ item.option }}"
    value: "{{ item.value | string }}"
  with_items:
    - option: enabled
      value: "{{ dansguardian_enabled }}"

- name: Add 'wondershaper' variable values to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"
    section: wondershaper
    option: "{{ item.option }}"
    value: "{{ item.value | string }}"
  with_items:
    - option: enabled
      value: "{{ wondershaper_enabled }}"
