---
# Configure a WEBRUNNER scan node — install deps, create workspace

- name: Update apt cache
  apt:
    update_cache: true
    cache_valid_time: 3600
  retries: 3
  delay: 10

- name: Install scan tools
  apt:
    name:
      - masscan
      - nmap
      - python3
      - python3-pip
      - curl
    state: present
  retries: 3
  delay: 10

- name: Install Tor and proxychains
  apt:
    name:
      - tor
      - proxychains4
    state: present
  retries: 3
  delay: 10
  when: use_tor | default(false) | bool

- name: Start and enable Tor service
  systemd:
    name: tor
    state: started
    enabled: true
  when: use_tor | default(false) | bool

- name: Configure proxychains for Tor SOCKS5
  copy:
    content: |
      strict_chain
      proxy_dns
      tcp_read_time_out 15000
      tcp_connect_time_out 8000
      [ProxyList]
      socks5 127.0.0.1 9050
    dest: /etc/proxychains4.conf
    mode: '0644'
  when: use_tor | default(false) | bool

- name: Wait for Tor to establish circuit
  wait_for:
    port: 9050
    host: 127.0.0.1
    timeout: 60
    delay: 5
  when: use_tor | default(false) | bool

- name: Create webrunner workspace
  file:
    path: /root/webrunner
    state: directory
    mode: '0700'

- name: Copy node scanner script
  copy:
    src: "{{ playbook_dir }}/../modules/webrunner/tasks/node_scanner.py"
    dest: /root/webrunner/node_scanner.py
    mode: '0755'

- name: Copy targets.yaml for geo-scout mode
  copy:
    src: "{{ targets_file }}"
    dest: /root/webrunner/targets.yaml
    mode: '0644'
  when: scan_mode == 'geo-scout' and targets_file != ""
  ignore_errors: true

- name: Install nuclei vulnerability scanner
  shell: |
    if ! command -v nuclei &>/dev/null; then
      curl -sL "https://github.com/projectdiscovery/nuclei/releases/download/v3.3.9/nuclei_3.3.9_linux_amd64.tar.gz" | tar -xz -C /usr/local/bin nuclei
      chmod +x /usr/local/bin/nuclei
    fi
  args:
    executable: /bin/bash
  when: scan_mode == 'masscan+nuclei'
  retries: 2
  delay: 5

- name: Upload nuclei template
  copy:
    src: "{{ nuclei_template_local }}"
    dest: /root/webrunner/nuclei_template.yaml
    mode: '0644'
  when: scan_mode == 'masscan+nuclei' and nuclei_template_local | default('') != ''
