mirror of https://github.com/CIRCL/AIL-framework
53 lines
1.3 KiB
Python
Executable File
53 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*-coding:UTF-8 -*
|
|
|
|
"""
|
|
The D4_Client Module
|
|
============================
|
|
|
|
The D4_Client modules send all DNS records to a D4 Server.
|
|
Data produced by D4 sensors are ingested into
|
|
a Passive DNS server which can be queried later to search for the Passive DNS records.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import time
|
|
from pubsublogger import publisher
|
|
sys.path.append(os.environ['AIL_BIN'])
|
|
from Helper import Process
|
|
|
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib'))
|
|
import ConfigLoader
|
|
import d4
|
|
|
|
# # TODO: lauch me in core screen
|
|
# # TODO: check if already launched in core screen
|
|
|
|
if __name__ == '__main__':
|
|
publisher.port = 6380
|
|
publisher.channel = "Script"
|
|
|
|
config_section = 'D4_client'
|
|
p = Process(config_section)
|
|
publisher.info("""D4_client is Running""")
|
|
|
|
last_refresh = time.time()
|
|
d4_client = d4.create_d4_client()
|
|
|
|
while True:
|
|
if last_refresh < d4.get_config_last_update_time():
|
|
d4_client = d4.create_d4_client()
|
|
last_refresh = time.time()
|
|
print('D4 Client: config updated')
|
|
|
|
dns_record = p.get_from_set()
|
|
if dns_record is None:
|
|
publisher.debug("Script D4_client is idling 1s")
|
|
time.sleep(1)
|
|
continue
|
|
|
|
if d4_client:
|
|
# Send DNS Record to D4Server
|
|
d4_client.send_manual_data(dns_record)
|