#!/usr/bin/env python3

from datetime import datetime
from subprocess import check_output
from sys import argv, exit

INTERFACE = argv[1]
PUBKEY = argv[2]

NOW = datetime.timestamp(datetime.now())

try:
    result = check_output(['wg', 'show', INTERFACE, 'latest-handshakes']).decode('utf-8').splitlines()
except Exception as e:
    print('UNKNOWN: {}'.format(repr(e)))
    exit(3)

found_key = False
for line in result:
    pubkey, last_handshake = line.split()

    if pubkey == PUBKEY:
        overdue = NOW - int(last_handshake) - 120

        if overdue > 120:
            print('handshake is more than 120 seconds late!')
            exit(2)
        elif overdue > 15:
            print('handshake is more than 15 seconds late.')
            exit(1)
        else:
            print('received handshake a couple seconds ago')
            exit(0)

print('CRITICAL: {} not found in latest handshakes for {}'.format(PUBKEY, INTERFACE))
exit(2)
