---
- name: Install cups
  ansible.builtin.apt:
    name:
      - cups

- name: Disable cups printer browsing
  ansible.builtin.lineinfile:
    dest: /etc/cups/cupsd.conf
    regexp: '^(Browsing ).*'
    line: '\1No'
    backrefs: true

- name: Listen on all Interfaces
  ansible.builtin.lineinfile:
    dest: /etc/cups/cupsd.conf
    line: 'Listen *:631'
    regexp: '^Listen localhost'
    state: present

- name: Allow access from localhost and from VM
  ansible.builtin.blockinfile:
    dest: /etc/cups/cupsd.conf
    block: |
      Allow localhost
      Allow 192.168.122.0/24
    insertafter: "<Location {{ item }}>"
    marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item }}"
    state: present
  loop:
    - "/"
    - "/admin"

- name: Allow group role-teacher to manage printers
  ansible.builtin.lineinfile:
    dest: /etc/cups/cups-files.conf
    line: 'SystemGroup root lpadmin role-teacher'
    regexp: '^SystemGroup'
    state: present
  when: "'teacherlaptop' in group_names"

- name: Disable cups-browsed
  ansible.builtin.systemd:
    name: cups-browsed.service
    state: stopped
    enabled: false

- name: Install install-printers.sh
  ansible.builtin.template:
    src: install-printers.sh.j2
    dest: /usr/local/bin/install-printers.sh
    mode: '0755'

- name: Install lmn-install-printers sudoers
  ansible.builtin.copy:
    src: 90-lmn-install-printers
    dest: /etc/sudoers.d/
    mode: '0660'
    owner: root
    group: root

- name: Run printer script from /etc/profile.d/
  ansible.builtin.copy:
    dest: /etc/profile.d/lmn-printer.sh
    mode: '0644'
    content: |
      [[ "${UID}" -gt 10000 ]] && (sudo /usr/local/bin/install-printers.sh > /dev/null &)
