예제 #1
0
파일: client.py 프로젝트: Rafiot/python_api
def call_actions(args):
    """Abstract call to actions-based queries."""
    client = ActionsClient.from_config()
    pruned = prune_args(
        query=args.query,
        tags=args.tags,
        classification=args.classification,
        monitor=args.monitor,
        sinkhole=args.sinkhole,
        dynamic_dns=args.dynamic_dns,
        ever_compromised=args.ever_compromised,
        metadata=args.metadata
    )

    if args.tags:
        tag_values = [x.strip() for x in args.tags.split(',')]
        pruned['tags'] = tag_values
        if args.add_tags:
            data = client.add_tags(**pruned)
        elif args.remove_tags:
            data = client.remove_tags(**pruned)
        elif args.set_tags:
            data = client.set_tags(**pruned)
        else:
            raise ValueError("Tag action required.")

    if args.classification:
        data = client.set_classification_status(**pruned)

    if args.monitor:
        pruned['status'] = to_bool(args.monitor)
        data = client.set_monitor_status(**pruned)

    if args.sinkhole:
        pruned['status'] = to_bool(args.sinkhole)
        data = client.set_sinkhole_status(**pruned)

    if args.dynamic_dns:
        pruned['status'] = to_bool(args.dynamic_dns)
        data = client.set_dynamic_dns_status(**pruned)

    if args.ever_compromised:
        pruned['status'] = to_bool(args.ever_compromised)
        data = client.set_ever_compromised_status(**pruned)

    if args.metadata:
        data = client.get_metadata(**pruned)

    return data
예제 #2
0
def call_actions(args):
    """Abstract call to actions-based queries."""
    client = ActionsClient.from_config()
    pruned = prune_args(query=args.query,
                        tags=args.tags,
                        classification=args.classification,
                        monitor=args.monitor,
                        sinkhole=args.sinkhole,
                        dynamic_dns=args.dynamic_dns,
                        ever_compromised=args.ever_compromised,
                        metadata=args.metadata)

    data = {}
    if args.tags:
        tag_values = [x.strip() for x in args.tags.split(',')]
        pruned['tags'] = tag_values
        if args.add_tags:
            data = client.add_tags(**pruned)
        elif args.remove_tags:
            data = client.remove_tags(**pruned)
        elif args.set_tags:
            data = client.set_tags(**pruned)
        else:
            raise ValueError("Tag action required.")

    if args.classification:
        data = client.set_classification_status(**pruned)

    if args.monitor:
        pruned['status'] = to_bool(args.monitor)
        data = client.set_monitor_status(**pruned)

    if args.sinkhole:
        pruned['status'] = to_bool(args.sinkhole)
        data = client.set_sinkhole_status(**pruned)

    if args.dynamic_dns:
        pruned['status'] = to_bool(args.dynamic_dns)
        data = client.set_dynamic_dns_status(**pruned)

    if args.ever_compromised:
        pruned['status'] = to_bool(args.ever_compromised)
        data = client.set_ever_compromised_status(**pruned)

    if args.metadata:
        data = client.get_metadata(**pruned)

    return ActionsResponse.process(data)
예제 #3
0
    def get_action(self, **kwargs):
        client = ActionsClient(self.username, self.apikey)

        keys = ['query', 'tags', 'classification', 'monitor', 'sinkhole', 
                'dynamic_dns', 'ever_compromised', 'metadata']

        params = self._cleanup_params(keys, **kwargs)

        res = None

        if params.get('tags'):
            params['tags'] = [tag.strip() for tag in params['tags'].split(',')]

            if kwargs.get('add_tags'):
                res = client.add_tags(**params)
            elif kwargs.get('remove_tags'):
                res = client.remove_tags(**params)
            elif kwargs.get('set_tags'):
                res = client.set_tags(**params)
            else:
                self.stoq.log.error("No tags provided.")

        if params.get('classification'):
            res = client.set_classification_status(**params)

        if params.get('monitor'):
            params['status'] = to_bool(params['monitor'])
            res = client.set_monitor_status(**params)

        if params.get('sinkhole'):
            params['status'] = to_bool(params['sinkhole'])
            res = client.set_sinkhole_status(**params)

        if params.get('dynamic_dns'):
            params['status'] = to_bool(params['dynamic_dns'])
            res = client.set_dynamic_dns_status(**params)

        if params.get('ever_compromised'):
            params['status'] = to_bool(params['ever_compromised'])
            res = client.set_ever_compromised_status(**params)

        if params.get('metadata'):
            res = client.get_metadata(**params)

        return res
예제 #4
0
    def get_action(self, **kwargs):
        client = ActionsClient(self.username, self.apikey)

        keys = ['query', 'tags', 'classification', 'monitor', 'sinkhole',
                'dynamic_dns', 'ever_compromised', 'metadata']

        params = self._cleanup_params(keys, **kwargs)

        res = None

        if params.get('tags'):
            params['tags'] = [tag.strip() for tag in params['tags'].split(',')]

            if kwargs.get('add_tags'):
                res = client.add_tags(**params)
            elif kwargs.get('remove_tags'):
                res = client.remove_tags(**params)
            elif kwargs.get('set_tags'):
                res = client.set_tags(**params)
            else:
                self.log.error("No tags provided.")

        if params.get('classification'):
            res = client.set_classification_status(**params)

        if params.get('monitor'):
            params['status'] = to_bool(params['monitor'])
            res = client.set_monitor_status(**params)

        if params.get('sinkhole'):
            params['status'] = to_bool(params['sinkhole'])
            res = client.set_sinkhole_status(**params)

        if params.get('dynamic_dns'):
            params['status'] = to_bool(params['dynamic_dns'])
            res = client.set_dynamic_dns_status(**params)

        if params.get('ever_compromised'):
            params['status'] = to_bool(params['ever_compromised'])
            res = client.set_ever_compromised_status(**params)

        if params.get('metadata'):
            res = client.get_metadata(**params)

        return res