#!/usr/bin/env python

import argparse
import os

from utils.okula import PCAPProcessor, SecretsProcessor


def should_convert_secrets(secrets_file):
    with open(secrets_file) as f:
        for _, line in zip(range(5), f):
            if line.startswith('when='):
                return True
    return False


def main():
    parser = argparse.ArgumentParser(
            description='okula tcpdump processor')
    parser.add_argument('-p', '--pcap', required=True,
            help='path to pcap file')
    parser.add_argument('--out_dir', default='pcaps',
            help='path to dir with pcap files')
    parser.add_argument('-o', '--output', default='packets.json',
            help='file with json data from dump')
    parser.add_argument('-s', '--secrets', required=True,
            help='path to secrets file')
    parser.add_argument('--port', required=False, type=int,
            help='port to be taken from')
    args = parser.parse_args()

    secrets_path = args.secrets
    if should_convert_secrets(secrets_path):
        new_secrets_path = secrets_path + '.converted'
        SecretsProcessor(src=secrets_path, dst=new_secrets_path).run()
        secrets_path = new_secrets_path

    ports = '443,11111,11112,10157'
    if args.port:
        ports = '{},{}'.format(ports, args.port)

    lua_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'utils', 'tshark.lua')
    pcap_processor = PCAPProcessor(
            pcap=args.pcap,
            pcap_split_path=args.out_dir,
            lua=lua_path,
            dump=args.output,
            force_dump=True,
            secrets=secrets_path,
            port=ports
    )
    pcap_processor.run()




if __name__ == '__main__':
    main()
