blob: 660814fbaf15dbf238ab612f7ced57d6ac7b526f [file] [log] [blame]
#!/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()