#!/usr/bin/env python2
# SOSCleaner Executable

from soscleaner import SOSCleaner
from optparse import OptionParser
import sys


def main():

    parser = OptionParser(usage="%prog <OPTIONS> /path/to/sosreport", version="%prog 0.3.98")
    parser.add_option("-l", "--log_level", dest="loglevel", default='INFO',
                            help="The Desired Log Level (default = INFO) Options are DEBUG, INFO, WARNING, ERROR",
                            metavar="LOGLEVEL")
    parser.add_option("-d", "--domain", action="append", default=[], dest="domains",
                            help="additional domain to obfuscate (optional). use a flag for each additional domain",
                            metavar="DOMAIN")
    parser.add_option("-f", "--file", action="append", default=[], dest="files",
                            help="addtional files to be analyzed in addition to or in exception of sosreport",
                            metavar="FILES")
    parser.add_option("-q", "--quiet", action="store_true", default=False, dest='quiet',
                            help="disable output to STDOUT",
                            metavar="QUIET")
    parser.add_option("-k", "--keywords", action="append", default=[], dest="keywords",
                            help="optional text file to be obfuscated. format is one word per line. warning: long lists may slow down soscleaner.",
                            metavar="KEYWORDS")
    parser.add_option("-H", "--hostname-path", action="store", default="hostname", dest="hostname_path",
                            help="optional path to hostname file.",
                            metavar="HOSTNAMEPATH")
    parser.add_option("-n", "--network", action="append", default=[], dest="networks",
                            help="networks to be obfuscatedi (optional). by default it looks through known routes to generate a list from a sosreport",
                            metavar="NETWORK")
    parser.add_option("-u", "--user", action="append", default=[], dest="users",
                            help="additional usernames to obfuscate in the sosreport or dataset - one user per flag",
                            metavar="USER")
    parser.add_option("-U", "--users-file", action="store", dest="users_file",
                            help="line-delimited list of users to obfuscate",
                            metavar="USERS_FILE")
    parser.add_option("-o", "--output-dir", action="store", default="/tmp", dest="report_dir",
                            help="Directory to store soscleaner obfuscated sosreport or dataset",
                            metavar="DIRECTORY")

    (options, args) = parser.parse_args()
    if not args and not options.files:  # we don't have an sosreport
        parser.print_help()
        sys.exit(1)

    cleaner = SOSCleaner(quiet=options.quiet)

    sosreport = None
    if args:
        sosreport = args[0]  # grab the sosreport path

    cleaner.clean_report(options, sosreport)


if __name__ == '__main__':
    main()
