chore: initial release #22

Merged
jon_nfc merged 54 commits from development into master 2024-02-21 09:07:13 +00:00
22 changed files with 590 additions and 9 deletions
Showing only changes of commit edd3f5a14d - Show all commits

63
playbooks/server.yaml Normal file
View File

@ -0,0 +1,63 @@
---
- name: Agent Server
hosts: all
gather_facts: false
tasks:
- name: TRACE Inbound data Received
ansible.builtin.debug:
msg: "{{ inbound_data }}"
- name: Fetch Agent Details
community.mysql.mysql_query:
login_host: "{{ nfc_c_mysql_host }}"
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
login_user: "{{ nfc_c_mysql_user }}"
login_password: "{{ nfc_c_mysql_password }}"
login_db: 'phpipam'
query: >
SELECT id, code FROM scanAgents WHERE code='{{ inbound_data.code }}'
single_transaction: true
register: mysql_query_agent_details
- name: Confirm Subnet Assignment
community.mysql.mysql_query:
login_host: "{{ nfc_c_mysql_host }}"
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
login_user: "{{ nfc_c_mysql_user }}"
login_password: "{{ nfc_c_mysql_password }}"
login_db: 'phpipam'
query: >
SELECT id, subnet FROM subnets WHERE
scanAgent='{{ mysql_query_agent_details.query_result[0][0].id }}'
and
subnet='{{ inbound_data.scan[0].subnet | ip2ipam }}'
single_transaction: true
register: mysql_query_agent_subnets
- name: Arrange Subnets
ansible.builtin.set_fact:
agent_subnets: "{{ agent_subnets | default([]) + [ item.id ] }}"
loop: "{{ mysql_query_agent_subnets.query_result[0] }}"
- name: Process Scan results
ansible.builtin.include_tasks:
file: tasks/server/subnet_scan.yaml
loop: "{{ inbound_data.scan }}"
loop_control:
loop_var: scan_result
label: "{{ scan_result }}"
vars:
ansible_connection: local

View File

@ -0,0 +1,53 @@
---
- name: Update IP Address' found
community.mysql.mysql_query:
login_host: "{{ nfc_c_mysql_host }}"
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
login_user: "{{ nfc_c_mysql_user }}"
login_password: "{{ nfc_c_mysql_password }}"
login_db: 'phpipam'
query: |-
{% if
scan_address.rowcount[0] | int > 0
%}
UPDATE ipaddresses
SET
lastSeen = '{{ scan_address.ipaddress.lastSeen }}',
{% if scan_address.ipaddress.mac != '' %}
mac = '{{ scan_address.ipaddress.mac }}'
{% endif %}
WHERE
id = {{ scan_address.query_result[0][0].id | int }}
{% elif
scan_address.rowcount[0] | int == 0
%}
INSERT INTO ipaddresses
VALUES
subnetId = {{ scan_address.ipaddress.subnetId | int }},
ip_addr = '{{ scan_address.ipaddress.ip | ip2ipam }}',
description = '-- autodiscovered --',
{% if scan_address.ipaddress.mac != '' %}
mac = '{{ scan_address.ipaddress.mac }}',
{% endif %}
note = 'This host was autodiscovered on {{ scan_address.ipaddress.lastSeen }}',
lastSeen = '{{ scan_address.ipaddress.lastSeen }}',
{% endif %}
single_transaction: true
when: >
scan_address.ipaddress.subnetId | int in agent_subnets

View File

@ -0,0 +1,33 @@
---
- name: Match Scan Addresses to DB Details
community.mysql.mysql_query:
login_host: "{{ nfc_c_mysql_host }}"
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
login_user: "{{ nfc_c_mysql_user }}"
login_password: "{{ nfc_c_mysql_password }}"
login_db: 'phpipam'
query: |-
SELECT
id, description, state, note, lastSeen
FROM ipaddresses
WHERE
id='{{ ipaddress.id }}'
AND
ip_addr='{{ ipaddress.ip | ip2ipam }}'
single_transaction: true
register: mysql_query_find_ipaddress
loop: "{{ scan_result.results }}"
loop_control:
loop_var: ipaddress
- name: Update IP Addresses
ansible.builtin.include_tasks:
file: tasks/server/ipaddress.yaml
loop: "{{ mysql_query_find_ipaddress.results }}"
loop_control:
loop_var: scan_address
label: "{{ scan_address }}"