- name: Download & install python-dateutil, sqlite3 package: name: "{{ item }}" state: present with_items: - python3-dateutil - python3-jinja2 - name: Create directory /opt/iiab/captiveportal for scripts & templates file: path: /opt/iiab/captiveportal state: directory owner: "{{ apache_user }}" - name: 'Copy scripts: checkurls' template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" with_items: - { src: roles/captiveportal/templates/checkurls, mode: '0644', dest: /opt/iiab/captiveportal/ } - { src: roles/captiveportal/templates/iiab-make-cp-servers.py, mode: '0755', dest: /usr/sbin/ } - { src: roles/captiveportal/templates/iiab-divert-to-nginx, mode: '0755', dest: /usr/sbin/ } - name: Put put the python script that creates the server in place template: src: roles/captiveportal/templates/capture-wsgi.py mode: '0755' dest: /opt/iiab/captiveportal/ - name: 'Copy templates: simple.template, mac.template' copy: src: "{{ item }}" dest: /opt/iiab/captiveportal/ with_items: - roles/captiveportal/files/simple.template - roles/captiveportal/files/mac.template - name: Copy uWSGI config file template: src: roles/captiveportal/templates/captiveportal.ini.j2 dest: /opt/iiab/captiveportal/captiveportal.ini - name: Copy unit file for uWSGI service template: src: roles/captiveportal/templates/uwsgi-captiveportal.service dest: /etc/systemd/system/ - name: Start or restart server which responds to browsers trying to detect a captive portal systemd: name: uwsgi-captiveportal.service state: restarted enabled: True when: captiveportal_enabled | bool - name: Stop uWSGI server if captive portal has been disabled systemd: name: uwsgi-captiveportal.service state: stopped enabled: False when: not captiveportal_enabled | bool - name: Run divert to generate diversion lists for nginx shell: /usr/sbin/iiab-divert-to-nginx - name: Run script to generate nginx servers from checkurls input list command: /usr/sbin/iiab-make-cp-servers.py args: creates: /etc/nginx/sites-available/capture.conf - name: Enable nginx to service the sites in checkurls list file: src: /etc/nginx/sites-available/capture.conf path: /etc/nginx/sites-enabled/capture.conf state: link when: captiveportal_enabled | bool - name: Disable nginx to location definitions for checkurls file: src: /etc/nginx/sites-available/capture.conf path: /etc/nginx/sites-enabled/capture.conf state: absent when: not captiveportal_enabled | bool - name: Make sure dnsmasq is not diverting if not captiveportal_enabled file: path: /etc/dnsmasq.d/capture state: absent when: not captiveportal_enabled - name: Add 'captiveportal_installed' variable values to {{ iiab_state_file }} lineinfile: dest: "{{ iiab_state_file }}" regexp: '^captiveportal_installed' line: 'captiveportal_installed: True' state: present #- name: Restart dnsmasq # systemd: # name: dnsmasq # state: restarted # when: dnsmasq_enabled | bool # ABOVE DOES NOT WORK ON UBUNTU 16.04 -- what follows is a crude hack (seems to work!) - name: Stop dnsmasq systemd: name: dnsmasq state: stopped when: dnsmasq_enabled | bool - name: Start dnsmasq systemd: name: dnsmasq state: started when: dnsmasq_enabled | bool