#!/usr/bin/python3 -s
# -*- coding: utf-8 -*-

import argparse
from netgrep.feedfilter import FeedFilter
import sys

def get_args():
    parser = argparse.ArgumentParser(
                description="Filter logs based on country codes or ASNs.", 
                epilog="Example usage: cat mylog | %s AU,AS1111 \
                       "  % sys.argv[0])
    parser.add_argument('-hh', '--has_header', action="store_true",
                        help="First line is a header, don't filter out.")
    parser.add_argument('-o', '--outfile', type=argparse.FileType("w"), default=sys.stdout,
                        help="The file you'd like to write to. Default is stdout.")
    parser.add_argument('-v', '--verbose', action="store_true", default=False,
                        help="Explain why lines are being included, explain \
                              processing stages")
    parser.add_argument('-vv', '--verboser', action="store_true", default=False,
                        help="Debug mode")
    parser.add_argument('-q', '--quiet', action="store_true", default=False,
                        help="Don't print any warnings or status messages, \
                              good for cron.")
    parser.add_argument('filter', 
                        help="List the country codes and ASes you want to  \
                              find in the file.\
                              Use comma separators with no spaces.\
                              e.g. AS345,AS234,JP,AU. Country codes should \
                              match those used by Cymry bulk whois: \
                              http://www.team-cymru.org/Services/ip-to-asn.html \
                              . If you have multiple possible codes, include \
                              all e.g. UK,GB")
    parser.add_argument('infile', nargs="*", type=argparse.FileType("r"), default=[sys.stdin],
                        help="The list of files you'd like to filter. May be \
                              a wildcard, but doesn't support recursion just \
                              yet. Default is stdin.")
    
    args = parser.parse_args()
    return args

def main():
    args = get_args()
    for file in args.infile:
        feedfilter = FeedFilter(
                infile=file,
                outfile=args.outfile,
                has_header=args.has_header,
                verbose=args.verbose,
                verboser=args.verboser,
                quiet=args.quiet,
                filter=args.filter,
        )
        feedfilter.process_file()
        feedfilter.output_matches()

if __name__ == "__main__":
    main()

