#!/usr/bin/python3
#
#

""" udp client program. """

__copyright__ = "Copyright 2015, B.H.J Thate"

## BOOTSTRAP

import os, sys, warnings
sys.path.insert(0, os.getcwd())
warnings.simplefilter("ignore", UserWarning)

## IMPORTS

from bard.contrib.rijndael import rijndael
from bard.object import Object

import socket

## CONFIG

cfg = Object()
cfg.define('host', "localhost")
cfg.define('port', 5500)
cfg.define('passwd', "boh")
cfg.define('seed', "blablablablablaz") # needs to be 16 chars wide

## FUNCTIONS

def out(what):
    z = '%s %s' % (cfg.passwd, what.strip())
    while len(z) % 16: z += "\0"
    data = ""
    crypt = rijndael(cfg['seed'])
    for i in range(int(len(z)/16)):
        txt = z[i*16:i*16+16]
        data += crypt.encrypt(txt)
    # sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(bytes(data, "utf-8"), (cfg.host, cfg.port))

if __name__ == "__main__": out(" ".join(sys.argv[1:]))
