Ejemplo n.º 1
0
def main(log, client_log, redis_addr, queue, backend, tasks, download_limit,
         scan_limit, api_key, testing, log_format):
    """Entrypoint for the worker driver

    Args:
        log (str): Logging level for all app logs
        client_log (str): Logging level for all polyswarmclient logs
        redis_addr (str): Address of redis
        backend (str): Backend implementation to use
        queue (str): Name of queue to listen on
        tasks (int): Number of simultaneous tasks this worker runs
        download_limit (int): Number of simultaneous downloads this worker can handle
        scan_limit (int): Number of simultaneous scans this worker can handle
        api_key(str): API key to use with polyswarmd
        testing (int): Mode to process N bounties then exit (optional)
        log_format (str): Format to output logs in. `text` or `json`
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, scanner_class = choose_backend(backend)

    scanner = scanner_class()
    init_logging(['worker', 'microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    logger.info('Running worker with %s tasks', tasks)

    worker = Worker(redis_addr, queue, tasks, download_limit, scan_limit,
                    api_key, testing, scanner)
    worker.run()
Ejemplo n.º 2
0
def main(log, client_log, redis_addr, queue, backend, tasks, download_limit, scan_limit, api_key, testing, log_format,
         scan_time_requirement, daily_rate_limit, hourly_rate_limit, minutely_rate_limit, secondly_rate_limit,
         allow_key_over_http):
    """Entrypoint for the worker driver
    """
    utils.fast_deprecation()
    if tasks != 0:
        warnings.warn('Use of --tasks or TASKS is deprecated', DeprecationWarning)

    tasks = 0 if download_limit == 0 or scan_limit == 0 else max(download_limit, scan_limit)
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    logger_name, scanner_class = choose_backend(backend)

    scanner = scanner_class()
    init_logging(['worker', 'microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    logger.info('Running worker with %s tasks', tasks if tasks > 0 else 'unlimited')
    worker = Worker(redis_addr, queue, tasks, download_limit, scan_limit, api_key, testing, scanner,
                    scan_time_requirement, daily_rate_limit, hourly_rate_limit, minutely_rate_limit, secondly_rate_limit,
                    allow_key_over_http)
    worker.run()
Ejemplo n.º 3
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, watchdog, log_format,
         submission_rate):
    """
    Entrypoint for the ambassador driver
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, ambassador_class = choose_backend(backend)

    init_logging(['ambassador', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)
    ambassador_class.connect(polyswarmd_addr,
                             keyfile,
                             password,
                             api_key=api_key,
                             testing=testing,
                             insecure_transport=insecure_transport,
                             chains=set(chains),
                             watchdog=watchdog,
                             submission_rate=submission_rate).run()
Ejemplo n.º 4
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend, testing, insecure_transport,
         allow_key_over_http, chains, watchdog, log_format, submission_rate):
    """
    Entrypoint for the ambassador driver
    """
    utils.fast_deprecation()
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    logger_name, ambassador_class = choose_backend(backend)

    init_logging(['ambassador', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key, allow_key_over_http, insecure_transport)

    if insecure_transport:
        warnings.warn('--insecure-transport will be removed soon. Please add http:// or https:// to polyswarmd-addr`',
                      DeprecationWarning)

    ambassador_class.connect(polyswarmd_addr, keyfile, password,
                             api_key=api_key, testing=testing,
                             chains=set(chains), watchdog=watchdog,
                             submission_rate=submission_rate).run()
Ejemplo n.º 5
0
def main(log, client_log, redis_addr, queue, backend, tasks, download_limit,
         scan_limit, api_key, testing, log_format):
    """Entrypoint for the worker driver
    """
    if tasks != 0:
        warnings.warn('Use of --tasks or TASKS is deprecated',
                      DeprecationWarning)

    tasks = 0 if download_limit == 0 or scan_limit == 0 else max(
        download_limit, scan_limit)
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, scanner_class = choose_backend(backend)

    scanner = scanner_class()
    init_logging(['worker', 'microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    logger.info('Running worker with %s tasks',
                tasks if tasks > 0 else 'unlimited')
    worker = Worker(redis_addr, queue, tasks, download_limit, scan_limit,
                    api_key, testing, scanner)
    worker.run()
Ejemplo n.º 6
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, log_format, artifact_type):
    """
    Entrypoint for the arbiter driver
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, arbiter_class = choose_backend(backend)

    init_logging(['arbiter', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    artifact_types = None
    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    arbiter_class.connect(polyswarmd_addr,
                          keyfile,
                          password,
                          api_key=api_key,
                          testing=testing,
                          insecure_transport=insecure_transport,
                          chains=set(chains),
                          artifact_types=artifact_types).run()
Ejemplo n.º 7
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, allow_key_over_http, chains, log_format,
         artifact_type, bid_strategy, accept, exclude, filter, confidence):
    """ Entrypoint for the microengine driver
    """
    utils.fast_deprecation()
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)
    if insecure_transport:
        warnings.warn(
            '--insecure-transport will be removed soon. Please add http:// or https:// to polyswarmd-addr`',
            DeprecationWarning)

    logger_name, microengine_class = choose_backend(backend)
    bid_logger_name, bid_strategy_class = choose_bid_strategy(bid_strategy)

    artifact_types = None
    init_logging(['microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    filter_accept = filter.get('accept', [])
    filter_reject = filter.get('reject', [])
    if accept or exclude:
        warnings.warn(
            'Options `--exclude|accept key:value` are deprecated, please switch to'
            ' `--filter accept|reject key comparison value`',
            DeprecationWarning)
        filter_accept.extend(accept)
        filter_reject.extend(exclude)

    favor = confidence.get('favor', [])
    penalize = confidence.get('penalize', [])

    microengine_class.connect(
        polyswarmd_addr,
        keyfile,
        password,
        api_key=api_key,
        artifact_types=artifact_types,
        bid_strategy=bid_strategy_class(),
        bounty_filter=BountyFilter(filter_accept, filter_reject),
        chains=set(chains),
        confidence_modifier=ConfidenceModifier(favor, penalize),
        testing=testing).run()
Ejemplo n.º 8
0
def cli(log, client_log, log_format):
    """
    Entrypoint for the balance manager driver

    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    init_logging(['balancemanager'], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)
Ejemplo n.º 9
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, log_format, artifact_type,
         bid_strategy, accept, exclude):
    """Entrypoint for the microengine driver

    Args:
        log (str): Logging level for all app logs
        client_log (str): Logging level for all polyswarmclient logs
        polyswarmd_addr(str): Address of polyswarmd
        keyfile (str): Path to private key file to use to sign transactions
        password (str): Password to decrypt the encrypted private key
        backend (str): Backend implementation to use
        api_key(str): API key to use with polyswarmd
        testing (int): Mode to process N bounties then exit (optional)
        insecure_transport (bool): Connect to polyswarmd without TLS
        chains (list[str]): List of chains on which to scan artifacts
        log_format (str): Format to output logs in. `text` or `json`
        artifact_type (list[str]): List of artifact types to scan
        bid_strategy (str): Bid strategy module name
        accept (list[tuple[str]]): List of excluded mimetypes
        exclude (list[tuple[str]]): List of excluded mimetypes
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, microengine_class = choose_backend(backend)
    bid_logger_name, bid_strategy_class = choose_bid_strategy(bid_strategy)

    artifact_types = None
    init_logging(['microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    microengine_class.connect(polyswarmd_addr,
                              keyfile,
                              password,
                              api_key=api_key,
                              testing=testing,
                              insecure_transport=insecure_transport,
                              chains=set(chains),
                              artifact_types=artifact_types,
                              exclude=exclude,
                              accept=accept,
                              bid_strategy=bid_strategy_class()).run()
Ejemplo n.º 10
0
def main(log, log_format, loop_update_threshold, average_bounty_wait_threshold):
    if 'liveliness' in sys.argv[0]:
        warnings.simplefilter('module', category=DeprecationWarning)
        warnings.warn('liveliness is deprecated, use liveness', DeprecationWarning)

    loglevel = getattr(logging, log.upper(), None)
    if not isinstance(loglevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    init_logging(['liveness'], log_format, loglevel)
    liveness_check = LocalLivenessCheck(loop_update_threshold, average_bounty_wait_threshold)
    if not liveness_check.check():
        raise FatalError('Liveness check failed', 1)
Ejemplo n.º 11
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, log_format, artifact_type,
         bid_strategy, accept, exclude, filter, confidence):
    """Entrypoint for the microengine driver
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, microengine_class = choose_backend(backend)
    bid_logger_name, bid_strategy_class = choose_bid_strategy(bid_strategy)

    artifact_types = None
    init_logging(['microengine', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    filter_accept = filter.get('accept', [])
    filter_reject = filter.get('reject', [])
    if accept or exclude:
        logger.warning(
            'Options `--exclude|accept key:value` are deprecated, please switch to `--filter '
            'accept|reject key comparison value`')

        filter_accept.extend(accept)
        filter_reject.extend(exclude)

    favor = confidence.get('favor', [])
    penalize = confidence.get('penalize', [])

    microengine_class.connect(
        polyswarmd_addr,
        keyfile,
        password,
        api_key=api_key,
        artifact_types=artifact_types,
        bid_strategy=bid_strategy_class(),
        bounty_filter=BountyFilter(filter_accept, filter_reject),
        chains=set(chains),
        confidence_modifier=ConfidenceModifier(favor, penalize),
        insecure_transport=insecure_transport,
        testing=testing).run()
Ejemplo n.º 12
0
def cli(log, client_log, log_format):
    """
    Entrypoint for the balance manager driver

    Args:
        log (str): Log level for balancemanger module logs
        client_log (str): Log level for all polyswarmclient module logs
        log_format (str): Choose either json, or text log format

    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    init_logging(['balancemanager'], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)
Ejemplo n.º 13
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, log_format, artifact_type):
    """Entrypoint for the arbiter driver

    Args:
        log (str): Logging level for all app logs
        client_log (str): Logging level for all polyswarmclient logs
        polyswarmd_addr(str): Address of polyswarmd
        keyfile (str): Path to private key file to use to sign transactions
        password (str): Password to decrypt the encrypted private key
        backend (str): Backend implementation to use
        api_key(str): API key to use with polyswarmd
        testing (int): Mode to process N bounties then exit (optional)
        insecure_transport (bool): Connect to polyswarmd without TLS
        chains (List[str]): Chain(s) to operate on
        log_format (str): Format to output logs in. `text` or `json`
        artifact_type (list[str]): List of artifact types to scan
    """

    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, arbiter_class = choose_backend(backend)

    init_logging(['arbiter', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    artifact_types = None
    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    arbiter_class.connect(polyswarmd_addr,
                          keyfile,
                          password,
                          api_key=api_key,
                          testing=testing,
                          insecure_transport=insecure_transport,
                          chains=set(chains),
                          artifact_types=artifact_types).run()
Ejemplo n.º 14
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, chains, watchdog, log_format,
         submission_rate):
    """Entrypoint for the ambassador driver

    Args:
        log (str): Logging level for all app logs
        client_log (str): Logging level for all polyswarmclient logs
        polyswarmd_addr(str): Address of polyswarmd
        keyfile (str): Path to private key file to use to sign transactions
        password (str): Password to decrypt the encrypted private key
        backend (str): Backend implementation to use
        api_key(str): API key to use with polyswarmd
        testing (int): Mode to process N bounties then exit (optional)
        insecure_transport (bool): Connect to polyswarmd without TLS
        chains (List[str]): Chain(s) to operate on
        watchdog (int): Number of blocks to look back and see if bounties are being submitted
        log_format (str): Format to output logs in. `text` or `json`
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        sys.exit(-1)

    logger_name, ambassador_class = choose_backend(backend)

    init_logging(['ambassador', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)
    ambassador_class.connect(polyswarmd_addr,
                             keyfile,
                             password,
                             api_key=api_key,
                             testing=testing,
                             insecure_transport=insecure_transport,
                             chains=set(chains),
                             watchdog=watchdog,
                             submission_rate=submission_rate).run()
Ejemplo n.º 15
0
def main(log, client_log, polyswarmd_addr, keyfile, password, api_key, backend,
         testing, insecure_transport, allow_key_over_http, chains, log_format,
         artifact_type):
    """
    Entrypoint for the arbiter driver
    """
    loglevel = getattr(logging, log.upper(), None)
    clientlevel = getattr(logging, client_log.upper(), None)
    if not isinstance(loglevel, int) or not isinstance(clientlevel, int):
        logging.error('invalid log level')
        raise FatalError('Invalid log level', 1)

    logger_name, arbiter_class = choose_backend(backend)

    init_logging(['arbiter', logger_name], log_format, loglevel)
    init_logging(['polyswarmclient'], log_format, clientlevel)

    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)
    if insecure_transport:
        warnings.warn(
            '--insecure-transport will be removed soon. Please add http:// or https:// to polyswarmd-addr`',
            DeprecationWarning)

    artifact_types = None
    if artifact_type:
        artifact_types = [
            ArtifactType.from_string(artifact) for artifact in artifact_type
        ]

    arbiter_class.connect(polyswarmd_addr,
                          keyfile,
                          password,
                          api_key=api_key,
                          testing=testing,
                          chains=set(chains),
                          artifact_types=artifact_types).run()
Ejemplo n.º 16
0
def main(malicious, benign, output, log_format):
    init_logging([], log_format)
    generate_db(output, malicious, benign)