#!/usr/bin/env python
import socket, time, getopt, sys, requests

coroner_new_url = "http://127.0.0.1:8080/api/v1/new_oops"

def to_coroner_new(url, ts, host, data):
    try:
        resp = requests.post(url, data, params={'ts':ts, 'host':host})
        resp.raise_for_status()
    except Exception as err:
        print(err)

try:
    args = sys.argv[1:]
    opts, args = getopt.getopt(args,"hd:",["logdir="])
except getopt.GetoptError:
    print('{} -d <logdir'.format(sys.argv[0]))
    sys.exit(2)

for opt, arg in opts:
    if opt == '-h':
        print('{} -d <logdir'.format(sys.argv[0]))
        sys.exit()
    elif opt in ("-d", "--logdir"):
        logdir = arg

sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 10 << 20)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('::', 6666))

curr = ""
while True:
    data, addr = sock.recvfrom(65536)
    if curr != addr[0]:
        curr = addr[0]
        try:
            host, _, _ = socket.gethostbyaddr(addr[0])
        except socket.herror:
            host = addr[0]
        log = file('{}/{}-{}.log'.format(logdir, host, time.strftime('%F')), 'ab', 1)
    log.write(data)
    to_coroner_new(coroner_new_url, int(time.time()), host, data)
