d4786041a5
scan_masscan_nmap() and scan_geo_scout() were running nmap serially — one host at a time with a 60s timeout, turning a 1h estimate into 24h+ for large scans. Both modes now use ThreadPoolExecutor with 10 workers (configurable via WEBRUNNER_NMAP_WORKERS env var). geo-scout uses an inner scan_one() helper to batch nmap + probe_service() per host within the same future. Also fixed probe_service() bytes format antipattern and removed dead targets_arg variable from scan_nmap_only(). run_scan.yml converted from command: > folded scalar to command: argv: list form to prevent argument splitting on space-containing values.
61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
---
|
|
# Run the assigned scan on this WEBRUNNER node
|
|
# Per-node vars: node_name, node_cidrs, node_ip_count, node_idx
|
|
# Global vars (from extra-vars): scan_mode, ports_str, masscan_rate, webrunner_name, deployment_id, use_tor
|
|
|
|
- name: Write CIDR list for {{ node_name }}
|
|
copy:
|
|
content: "{{ node_cidrs | join('\n') }}\n"
|
|
dest: /root/webrunner/cidrs.txt
|
|
mode: '0644'
|
|
|
|
- name: Run scan on {{ node_name }} ({{ node_ip_count }} IPs, mode={{ scan_mode }})
|
|
command:
|
|
argv:
|
|
- python3
|
|
- /root/webrunner/node_scanner.py
|
|
- --mode
|
|
- "{{ scan_mode }}"
|
|
- --ports
|
|
- "{{ ports_str }}"
|
|
- --rate
|
|
- "{{ masscan_rate }}"
|
|
- --node-name
|
|
- "{{ node_name }}"
|
|
args:
|
|
chdir: /root/webrunner
|
|
register: scan_output
|
|
async: 43200
|
|
poll: 60
|
|
ignore_errors: true
|
|
when: not (use_tor | default(false) | bool)
|
|
|
|
- name: Run scan via Tor on {{ node_name }} ({{ node_ip_count }} IPs, mode={{ scan_mode }})
|
|
command:
|
|
argv:
|
|
- proxychains4
|
|
- -f
|
|
- /etc/proxychains4.conf
|
|
- python3
|
|
- /root/webrunner/node_scanner.py
|
|
- --mode
|
|
- "{{ scan_mode }}"
|
|
- --ports
|
|
- "{{ ports_str }}"
|
|
- --rate
|
|
- "{{ masscan_rate }}"
|
|
- --node-name
|
|
- "{{ node_name }}"
|
|
args:
|
|
chdir: /root/webrunner
|
|
register: scan_output
|
|
async: 43200
|
|
poll: 60
|
|
ignore_errors: true
|
|
when: use_tor | default(false) | bool
|
|
|
|
- name: Show scan output for {{ node_name }}
|
|
debug:
|
|
var: scan_output.stdout_lines
|
|
when: scan_output.stdout_lines is defined
|