| #!/bin/env python |
| |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| import argparse |
| import os |
| import sys |
| sys.path.append("../") |
| import logging |
| |
| from utils import Util |
| |
| # get script path. |
| script_path = os.path.dirname(os.path.abspath(__file__)) |
| |
| def main(): |
| |
| # input parameters. |
| parser = argparse.ArgumentParser(description="Master OA Script") |
| parser.add_argument('-d','--date',required=True,dest='date',help='Date data that will be processed by OA (i.e 20161102)',metavar='') |
| parser.add_argument('-t','--type',required=True,dest='type',help='Data type that will be processed by OA (i.e dns, proxy, flow)',metavar='') |
| parser.add_argument('-l','--limit',required=True,dest='limit',help='Num of suspicious connections that will be processed by OA.',metavar='') |
| args= parser.parse_args() |
| |
| start_oa(args) |
| |
| def start_oa(args): |
| |
| # setup the main logger for all the OA process. |
| logger = Util.get_logger('OA',create_file=False) |
| |
| logger.info("-------------------- STARTING OA ---------------------") |
| validate_parameters_values(args,logger) |
| |
| # create data type instance. |
| module = __import__("{0}.{0}_oa".format(args.type),fromlist=['OA']) |
| |
| # start OA. |
| oa_process = module.OA(args.date,args.limit,logger) |
| oa_process.start() |
| |
| def validate_parameters_values(args,logger): |
| |
| logger.info("Validating input parameter values") |
| |
| #date. |
| is_date_ok = True if len(args.date) == 8 else False |
| |
| # type |
| dirs = os.walk(script_path).next()[1] |
| is_type_ok = True if args.type in dirs else False |
| |
| #limit |
| try: |
| int(args.limit) |
| is_limit_ok = True |
| except ValueError: |
| is_limit_ok = False |
| |
| if not is_date_ok: logger.error("date parameter is not correct, please validate it") |
| if not is_type_ok: logger.error("type parameter is not supported, please select a valid type") |
| if not is_limit_ok: logger.error("limit parameter is not correct, please select a valid limit") |
| if not is_date_ok or not is_type_ok or not is_limit_ok: sys.exit(1) |
| |
| |
| if __name__=='__main__': |
| main() |