예제 #1
0
 def run():

    try:

        opts, args = getopt.getopt(sys.argv[1:], 'ho:')

    except getopt.error as msg:

        print(str(msg) + '\n\n' + __doc__, file=sys.stderr)

        sys.exit()

    for opt, arg in opts:

        if opt == '-h':

            print(__doc__, file=sys.stderr)

            sys.exit()

        elif opt == '-o':

            options.set_from_cmdline(arg, sys.stderr)

    v = get_current_version()

    print(v.get_long_version())

    from twisted.copyright import version as twisted_version

    print("Twisted version %s.\n" % (twisted_version,))

    prepare()

    start()
예제 #2
0
def main(argv):
    null = False
    server = "localhost"
    port = options["html_ui", "port"]
    prob = 1.0
    train_as = None

    try:
        opts, args = getopt.getopt(
            argv, "hns:p:r:t:o:",
            ["help", "null", "server=", "port=", "prob=", "train=", "option="])
    except getopt.error:
        usage(globals(), locals())
        sys.exit(1)

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage(globals(), locals())
            sys.exit(0)
        elif opt in ("-n", "--null"):
            null = True
        elif opt in ("-s", "--server"):
            server = arg
        elif opt in ("-p", "--port"):
            port = int(arg)
        elif opt in ("-r", "--prob"):
            n = float(arg)
            if n < 0.0 or n > 1.0:
                usage(globals(), locals())
                sys.exit(1)
            prob = n
        elif opt in ("-t", "--train"):
            arg = arg.capitalize()
            if arg not in ("Ham", "Spam"):
                usage(globals(), locals())
                sys.exit(1)
            train_as = arg
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)

    if args:
        usage(globals(), locals())
        sys.exit(1)

    data = sys.stdin.read()
    if not null:
        sys.stdout.write(data)
    if random.random() < prob:
        try:
            if train_as is not None:
                which_text = "Train as %s" % (train_as, )
                post_multipart("%s:%d" % (server, port), "/train",
                               [("which", which_text),
                                ("text", "")], [("file", "message.dat", data)])
            else:
                post_multipart("%s:%d" % (server, port), "/upload", [],
                               [('file', 'message.dat', data)])
        except:
            # not an error if the server isn't responding
            pass
예제 #3
0
def main():
    """Main program; parse options and go."""
    from os.path import join, split
    import getopt
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hqao:', ['option='])
    except getopt.error as msg:
        usage(1, msg)
    loud = True
    all_data = False
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == '-q':
            loud = False
        elif opt == '-a':
            all_data = True
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)
    data = []   # list of (time_received, dirname, basename) triples
    if loud:
        print("Scanning everything")
    now = time.time()
    hdir = os.path.dirname(options["TestDriver", "ham_directories"])
    sdir = os.path.dirname(options["TestDriver", "spam_directories"])
    if all_data:
        hdir = os.path.dirname(hdir)
        sdir = os.path.dirname(sdir)
        files = glob.glob(os.path.join(hdir, "*", "*", "*"))
        if sdir != hdir:
            files.extend(glob.glob(os.path.join(sdir, "*", "*", "*")))
    else:
        files = glob.glob(os.path.join(hdir, "*", "*"))
        files.extend(glob.glob(os.path.join(sdir, "*", "*")))
    for name in files:
        if loud:
            sys.stdout.write("%-78s\r" % name)
            sys.stdout.flush()
        when_received = get_time(name) or now
        data.append((when_received,) + split(name))
    if loud:
        print("")
        print("Sorting ...")
    data.sort()
    if loud:
        print("Renaming first pass ...")
    for dummy, dirname, basename in data:
        os.rename(join(dirname, basename),
                  join(dirname, "-" + basename))
    if loud:
        print("Renaming second pass ...")
    earliest = data[0][0]  # timestamp of earliest msg received
    i = 0
    for when_received, dirname, basename in data:
        extension = os.path.splitext(basename)[-1]
        group = int((when_received - earliest) / SECONDS_PER_DAY)
        newbasename = "%04d-%06d" % (group, i)
        os.rename(join(dirname, "-" + basename),
                  join(dirname, newbasename + extension))
        i += 1
예제 #4
0
def main(args):
    try:
        opts, args = getopt.getopt(args, "hrto:", ["help", "re", "tokenize", "option="])
    except getopt.GetoptError as msg:
        usage(msg)
        return 1
    usere = False
    tokenizestdin = False
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            return 0
        elif opt in ("-r", "--re"):
            usere = True
        elif opt in ("-t", "--tokenize"):
            tokenizestdin = True
        elif opt in ("-o", "--option"):
            options.set_from_cmdline(arg, sys.stderr)
    if usere and tokenizestdin:
        usage("-r and -t may not be used at the same time")
        return 1
    dbname, usedb = database_type(opts)
    db = open_storage(dbname, usedb)
    if tokenizestdin:
        args = tokenize(sys.stdin)
    if args:
        print_spamcounts(args, db, usere)
        return 0
    else:
        usage("need tokens on cmd line or -t w/ msg on stdin")
        return 1
예제 #5
0
def main():
    """Main program; parse options and go."""
    global loud
    global nsets
    global ngroups
    global nmess
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hn:g:m:o:', ['option='])
    except getopt.error as msg:
        usage(2, msg)
    if args:
        usage(2, "Positional arguments not allowed")
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == '-n':
            nsets = int(arg)
        elif opt == '-g':
            ngroups = int(arg)
        elif opt == '-m':
            nmess = int(arg)
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)
    hamdir = os.path.dirname(options["TestDriver", "ham_directories"])
    spamdir = os.path.dirname(options["TestDriver", "spam_directories"])
    distribute(hamdir)
    distribute(spamdir)
    print()
예제 #6
0
def main(argv):
    null = False
    server = "localhost"
    port = options["html_ui", "port"]
    prob = 1.0
    train_as = None
    try:
        opts, args = getopt.getopt(
            argv, "hns:p:r:t:o:", ["help", "null", "server=", "port=", "prob=", "train=", "option="]
        )
    except getopt.error:
        usage(globals(), locals())
        sys.exit(1)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage(globals(), locals())
            sys.exit(0)
        elif opt in ("-n", "--null"):
            null = True
        elif opt in ("-s", "--server"):
            server = arg
        elif opt in ("-p", "--port"):
            port = int(arg)
        elif opt in ("-r", "--prob"):
            n = float(arg)
            if n < 0.0 or n > 1.0:
                usage(globals(), locals())
                sys.exit(1)
            prob = n
        elif opt in ("-t", "--train"):
            arg = arg.capitalize()
            if arg not in ("Ham", "Spam"):
                usage(globals(), locals())
                sys.exit(1)
            train_as = arg
        elif opt in ("-o", "--option"):
            options.set_from_cmdline(arg, sys.stderr)
    if args:
        usage(globals(), locals())
        sys.exit(1)
    data = sys.stdin.read()
    if not null:
        sys.stdout.write(data)
    if random.random() < prob:
        try:
            if train_as is not None:
                which_text = "Train as %s" % (train_as,)
                post_multipart(
                    "%s:%d" % (server, port),
                    "/train",
                    [("which", which_text), ("text", "")],
                    [("file", "message.dat", data)],
                )
            else:
                post_multipart("%s:%d" % (server, port), "/upload", [], [("file", "message.dat", data)])
        except:
            pass
예제 #7
0
def main():
    """Main program; parse options and go."""
    global loud
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hfqnrd:p:g:s:o:')
    except getopt.error as msg:
        usage(2, msg)
    if not opts:
        usage(2, "No options given")
    force = False
    trainnew = False
    removetrained = False
    good = []
    spam = []
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == "-f":
            force = True
        elif opt == "-n":
            trainnew = True
        elif opt == "-q":
            loud = False
        elif opt == '-g':
            good.append(arg)
        elif opt == '-s':
            spam.append(arg)
        elif opt == "-r":
            removetrained = True
        elif opt == '-o':
            options.set_from_cmdline(arg, sys.stderr)
    pck, usedb = storage.database_type(opts)
    if args:
        usage(2, "Positional arguments not allowed")
    if usedb == None:
        usedb = options["Storage", "persistent_use_database"]
        pck = get_pathname_option("Storage",
                                          "persistent_storage_file")
    h = hammie.open(pck, usedb, "c")
    for g in good:
        if loud:
            print("Training ham (%s):" % g)
        train(h, g, False, force, trainnew, removetrained)
        sys.stdout.flush()
        save = True
    for s in spam:
        if loud:
            print("Training spam (%s):" % s)
        train(h, s, True, force, trainnew, removetrained)
        sys.stdout.flush()
        save = True
    if save:
        h.store()
예제 #8
0
파일: sb_upload.py 프로젝트: Xodarap/Eipi
def main(argv):
    null = False
    server = "localhost"
    port = options["html_ui", "port"]
    prob = 1.0

    try:
        opts, args = getopt.getopt(argv, "hns:p:r:o:",
                                   ["help", "null", "server=", "port=",
                                    "prob=", "option="])
    except getopt.error:
        usage(globals(), locals())
        sys.exit(1)

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage(globals(), locals())
            sys.exit(0)
        elif opt in ("-n", "--null"):
            null = True
        elif opt in ("-s", "--server"):
            server = arg
        elif opt in ("-p", "--port"):
            port = int(arg)
        elif opt in ("-r", "--prob"):
            n = float(arg)
            if n < 0.0 or n > 1.0:
                usage(globals(), locals())
                sys.exit(1)
            prob = n
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)

    if args:
        usage(globals(), locals())
        sys.exit(1)

    data = sys.stdin.read()
    if not null:
        sys.stdout.write(data)
    if random.random() < prob:
        try:
            post_multipart("%s:%d"%(server,port), "/upload", [],
                               [('file', 'message.dat', data)])
        except:
            # not an error if the server isn't responding
            pass
예제 #9
0
def run():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hbd:p:l:u:o:P:')
    except getopt.error as msg:
        print(str(msg) + '\n\n' + __doc__, file=sys.stderr)
        sys.exit()
    state = CoreState()
    state.plugin = None
    for opt, arg in opts:
        if opt == '-h':
            print(__doc__, file=sys.stderr)
            sys.exit()
        elif opt == '-b':
            state.launch_ui = True
        elif opt == '-l':
            state.proxyPorts = [_addressAndPort(a) for a in arg.split(',')]
        elif opt == '-u':
            state.ui_port = int(arg)
        elif opt == '-o':
            options.set_from_cmdline(arg, sys.stderr)
        elif opt == '-P':
            state.plugin = load_plugin(arg, state)
    if state.plugin is None:
        print("No plugin argument (-P) was given.", file=sys.stderr)
        print(__doc__, file=sys.stderr)
        sys.exit()
    v = get_current_version()
    print("%s\n" % (v.get_long_version("SpamBayes Core Proxy"),))
    if 0 <= len(args) <= 2:
        if len(args) == 1:
            state.servers = [(args[0], 110)]
        elif len(args) == 2:
            state.servers = [(args[0], int(args[1]))]
        try:
            state.prepare()
        except AlreadyRunningException:
            print("ERROR: The proxy is already running on this machine.", file=sys.stderr)
            print("Please stop the existing proxy and try again", file=sys.stderr)
            return
        try:
            main(state)
        finally:
            state.close()
    else:
        print(__doc__, file=sys.stderr)
예제 #10
0
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hqe:o:')
    except getopt.error as msg:
        usage(1, msg)
    quiet = False
    exclude = ["Sent Messages", "Drafts"]
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == '-e':
            exclude.append(arg)
        elif opt == '-q':
            quiet = True
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)
    if len(args) != 1:
        usage(1, "Must specify exactly one path.")
    export(args[0], exclude, quiet)
예제 #11
0
def main():
    import getopt
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hn:s:o:',
                                   ['HamTrain=', 'SpamTrain=',
                                   'HamTest=', 'SpamTest=',
                                   'ham-keep=', 'spam-keep=',
                                   'option='])
    except getopt.error as msg:
        usage(1, msg)
    nsets = seed = hamtrain = spamtrain = None
    hamtest = spamtest = hamkeep = spamkeep = None
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == '-n':
            nsets = int(arg)
        elif opt == '-s':
            seed = int(arg)
        elif opt == '--HamTest':
            hamtest = int(arg)
        elif opt == '--SpamTest':
            spamtest = int(arg)
        elif opt == '--HamTrain':
            hamtrain = int(arg)
        elif opt == '--SpamTrain':
            spamtrain = int(arg)
        elif opt == '--ham-keep':
            hamkeep = int(arg)
        elif opt == '--spam-keep':
            spamkeep = int(arg)
        elif opt in ('-o', '--option'):
            options.set_from_cmdline(arg, sys.stderr)
    if args:
        usage(1, "Positional arguments not supported")
    if nsets is None:
        usage(1, "-n is required")
    if hamkeep is not None:
        msgs.setparms(hamkeep, spamkeep, seed=seed)
    else:
        msgs.setparms(hamtrain, spamtrain, hamtest, spamtest, seed)
    drive(nsets)
예제 #12
0
def run():
    global state
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hbd:p:l:u:o:')
    except getopt.error as msg:
        print(str(msg) + '\n\n' + __doc__, file=sys.stderr)
        sys.exit()
    for opt, arg in opts:
        if opt == '-h':
            print(__doc__, file=sys.stderr)
            sys.exit()
        elif opt == '-b':
            state.launchUI = True
        elif opt == '-l':
            state.proxyPorts = [_addressAndPort(a) for a in arg.split(',')]
        elif opt == '-u':
            state.uiPort = int(arg)
        elif opt == '-o':
            options.set_from_cmdline(arg, sys.stderr)
    state.DBName, state.useDB = storage.database_type(opts)
    v = get_current_version()
    print("%s\n" % (v.get_long_version("SpamBayes POP3 Proxy"),))
    if 0 <= len(args) <= 2:
        if len(args) == 1:
            state.servers = [(args[0], 110)]
        elif len(args) == 2:
            state.servers = [(args[0], int(args[1]))]
        if len(args) > 0 and state.proxyPorts == []:
            state.proxyPorts = [('', 110)]
        try:
            prepare()
        except AlreadyRunningException:
            print("ERROR: The proxy is already running on this machine.", file=sys.stderr)
            print("Please stop the existing proxy and try again", file=sys.stderr)
            return
        start()
    else:
        print(__doc__, file=sys.stderr)
        if opt == '-h':
            usage(0)
        elif opt == "-f":
            force = True
        elif opt == "-n":
            trainnew = True
        elif opt == "-q":
            loud = False
        elif opt == '-g':
            good.append(arg)
        elif opt == '-s':
            spam.append(arg)
        elif opt == "-r":
            removetrained = True
        elif opt == '-o':
            options.set_from_cmdline(arg, sys.stderr)
    pck, usedb = storage.database_type(opts)
    if args:
        usage(2, "Positional arguments not allowed")

    if usedb == None:
        # Use settings in configuration file.
        usedb = options["Storage", "persistent_use_database"]
        pck = get_pathname_option("Storage",
                                          "persistent_storage_file")

    h = hammie.open(pck, usedb, "c")

    for g in good:
        if loud:
            print "Training ham (%s):" % g
예제 #14
0
        sys.exit()

    for opt, arg in opts:
        if opt == '-h':
            print >> sys.stderr, __doc__
            sys.exit()
        elif opt == '-b':
            state.launchUI = True
        # '-p' and '-d' are handled by the storage.database_type call
        # below, in case you are wondering why they are missing.
        elif opt == '-l':
            state.proxyPorts = [_addressAndPort(a) for a in arg.split(',')]
        elif opt == '-u':
            state.uiPort = int(arg)
        elif opt == '-o':
            options.set_from_cmdline(arg, sys.stderr)

    state.DBName, state.useDB = storage.database_type(opts)

    # Let the user know what they are using...
    v = get_current_version()
    print "%s\n" % (v.get_long_version("SpamBayes POP3 Proxy"), )

    if 0 <= len(args) <= 2:
        # Normal usage, with optional server name and port number.
        if len(args) == 1:
            state.servers = [(args[0], 110)]
        elif len(args) == 2:
            state.servers = [(args[0], int(args[1]))]

        # Default to listening on port 110 for command-line-specified servers.
예제 #15
0
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'hiuo:', [])
    except getopt.error as msg:
        usage(1, msg)
    interactive = False
    do_unsures = False
    for opt, arg in opts:
        if opt == '-h':
            usage(0)
        elif opt == '-i':
            interactive = True
        elif opt == '-u':
            do_unsures = True
        elif opt in ('-o', '--option'):
            from spambayes.Options import options
            options.set_from_cmdline(arg, sys.stderr)
    for name in args:
        try:
            f = open(name + ".txt")
        except IOError:
            f = open(name)
        print("===", name, "===")
        fp = []
        fn = []
        unsures = []
        for line in f:
            if line.startswith('    new fp: '):
                fp.extend(eval(line[12:]))
            elif line.startswith('    new fn: '):
                fn.extend(eval(line[12:]))
            elif line.startswith('    new unsure: '):
                unsures.extend(eval(line[16:]))
        fp.sort(cmpf)
        fn.sort(cmpf)
        unsures.sort(cmpf)
        print("--- fp ---")
        for x in fp:
            if interactive and os.path.exists(x):
                print(open(x).read())
                answer = input('(S)pam, (R)emove or (L)eave : ').lower()
                if answer == 's':
                    os.rename(x, os.path.join("Data", "Spam", "reservoir",
                                              os.path.basename(x)))
                elif answer == 'r':
                    os.remove(x)
                elif answer == 'l':
                    pass
                else:
                    print("Unknown answer. Left.")
            else:
                print(x)
        print("--- fn ---")
        for x in fn:
            if interactive and os.path.exists(x):
                print(open(x).read())
                answer = input('(H)am, (R)emove or (L)eave : ').lower()
                if answer == 'h':
                    os.rename(x, os.path.join("Data", "Ham", "reservoir",
                                              os.path.basename(x)))
                elif answer == 'r':
                    os.remove(x)
                elif answer == 'l':
                    pass
                else:
                    print("Unknown answer. Left.")
            else:
                print(x)
        if do_unsures:
            print("--- unsure ---")
            for x in unsures:
                if interactive and os.path.exists(x):
                    print(open(x).read())
                    print(x)
                    answer = input('(H)am, (S)pam, (R)emove or (L)eave : ').lower()
                    if answer == 'h':
                        os.rename(x, os.path.join("Data", "Ham", "reservoir",
                                                  os.path.basename(x)))
                    elif answer == 's':
                        os.rename(x, os.path.join("Data", "Spam", "reservoir",
                                                  os.path.basename(x)))
                    elif answer == 'r':
                        os.remove(x)
                    elif answer == 'l':
                        pass
                    else:
                        print("Unknown answer. Left.")
                else:
                    print(x)