Ejemplo n.º 1
0
def post_user_app(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error
    apps = directory_controller.insert_apps(req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(201, apps)  
Ejemplo n.º 2
0
def get_resource_tree_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        optional_params=["pageNumber", "pageSize", "datasourceId"])
    if req_error:
        return req_error
    auth_token = req_session.get_auth_token()

    payload = req_session.get_body()
    accessible_by = payload.get("accessibleBy")
    exposure_type = payload.get("exposureType")
    resource_type = payload.get("resourceType")
    page_number = payload.get("pageNumber")
    page_size = payload.get("pageSize")
    owner_email_id = payload.get("ownerEmailId")
    parent_folder = payload.get("parentFolder")
    selected_date = payload.get("selectedDate")
    search_prefix = payload.get("prefix")
    sort_column_name = payload.get("sortColumn")
    sort_type = payload.get("sortType")
    datasource_id = payload.get("datasourceId")
    source_type = payload.get("sourceType")
    resource_list = resource_controller.get_resources(
        auth_token, page_number, page_size, accessible_by, exposure_type,
        resource_type, search_prefix, owner_email_id, parent_folder,
        selected_date, sort_column_name, sort_type, datasource_id, source_type)
    return req_session.generate_sqlalchemy_response(200, resource_list)
Ejemplo n.º 3
0
def execute_slack_actions(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error
    body = req_session.get_body()

    response = slack_action_facade.execute_slack_actions(req_session.get_auth_token(), body)

    log_status = action_constants.ActionStatus.SUCCESS.value
    status_code = 200
    status_message = "Action completed successfully"

    if response['action_status'] == constants.ResponseType.ERROR.value:
        status_code = 404
        log_status = action_constants.ActionStatus.FAILED.value
        status_message = "Action failed"

    log_id = body['log_id']
    db_session = db_connection().get_session()
    current_log = db_session.query(AuditLog).filter(
        and_(AuditLog.log_id == log_id, AuditLog.status != action_constants.ActionStatus.FAILED.value)).first()
    if current_log:
        current_log.status = log_status
        current_log.message = status_message
        db_connection().commit()

    return req_session.generate_response(status_code, response)
Ejemplo n.º 4
0
def post_alert(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error
    alerts = alert_controller.create_alerts(req_session.auth_token,
                                            req_session.get_body())
    return req_session.generate_sqlalchemy_response(201, alerts)
Ejemplo n.º 5
0
def get_all_activities(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    activities = get_activites_for_domain(req_session.get_body())
    return req_session.generate_sqlalchemy_response(200, activities)
Ejemplo n.º 6
0
def execute_gsuite_actions(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error
    response = gsuite_action_facade.execute_action(
        req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(
        response.get_response_code(), response.get_response_body())
Ejemplo n.º 7
0
def receive_github_notifications(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return
    response = notifications_receiver.receive_notification(
        req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_response(response.get_response_code(),
                                         response.get_response_body())
Ejemplo n.º 8
0
def post_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    policy = policy_controller.create_policy(req_session.get_auth_token(),
                                             req_session.get_body())

    return req_session.generate_sqlalchemy_response(201, policy)
Ejemplo n.º 9
0
def update_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['policyId'])
    if req_error:
        return req_error

    policy = policy_controller.update_policy(
        req_session.get_auth_token(), req_session.get_req_param('policyId'),
        req_session.get_body())

    return req_session.generate_sqlalchemy_response(201, policy)
Ejemplo n.º 10
0
def process_scanner_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, ['domainId', 'dataSourceId', 'scannerId'],
        ['userId', 'userEmail', 'nextPageNumber', 'change_type'])
    if req_error:
        return req_error
    scanner_facade.process_scanner_data(req_session.get_auth_token(),
                                        req_session.get_all_req_param(),
                                        req_session.get_body())
    return req_session.generate_response(200)
Ejemplo n.º 11
0
def receive_slack_notifications(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(False,
                                                        mandatory_params=[],
                                                        optional_params=[])
    if req_error:
        return req_error

    response = notifications_receiver.receive_notifications(
        req_session.get_body())
    return req_session.generate_sqlalchemy_response(202, response or {})
Ejemplo n.º 12
0
def get_widget_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True)
    if req_error:
        return req_error

    body = req_session.get_body()
    data = reports_controller.get_widget_data(req_session.get_auth_token(),
                                              body.get('widget_id'), None,
                                              None, body.get('event_filters'))
    return req_session.generate_sqlalchemy_response(200, data)
def validate_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, ['dataSourceId', 'policy_trigger'])
    if req_error:
        return req_error

    policy_validator_facade.validate_policy(
        req_session.get_auth_token(),
        req_session.get_req_param('dataSourceId'),
        req_session.get_req_param('policy_trigger'), req_session.get_body())
    return req_session.generate_response(200)
Ejemplo n.º 14
0
def process_scanner_data(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, ['dataSourceId', 'domainId', 'scannerId'],
        ['repo_name', 'org_name', 'repo_id'])
    if req_error:
        return req_error

    scanner_facade.process_scanner_data(req_session.get_auth_token(),
                                        req_session.get_all_req_param(),
                                        req_session.get_body())
    return req_session.generate_response(202)
Ejemplo n.º 15
0
def export_to_csv(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    response = directory_controller.export_to_csv(req_session.get_auth_token(),
                                                  req_session.get_body())
    if response:
        return req_session.generate_sqlalchemy_response(
            response.response_code, response.get_response_body())
    else:
        return req_session.generate_response(202)
Ejemplo n.º 16
0
def initiate_action(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    auth_token = req_session.get_auth_token()

    action_payload = req_session.get_body()

    Logger().info("Initiating action using payload: " + str(action_payload))
    response = actions_controller.initiate_action(auth_token, action_payload)
    return req_session.generate_sqlalchemy_response(
        response.response_code, response.get_response_body())
Ejemplo n.º 17
0
def modify_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    update_record = reports_controller.update_report(
        req_session.get_auth_token(), req_session.get_body())

    report_id = update_record['report_id']
    frequency = update_record['frequency']
    payload = {'report_id': report_id}
    function_name = aws_utils.get_lambda_name('get',
                                              urls.EXECUTE_SCHEDULED_REPORT)
    aws_utils.create_cloudwatch_event(report_id, frequency, function_name,
                                      payload)
    return req_session.generate_sqlalchemy_response(201, update_record)
Ejemplo n.º 18
0
def post_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    reports = reports_controller.create_report(req_session.get_auth_token(),
                                               req_session.get_body())
    for report in reports:
        cron_expression = report.frequency
        report_id = report.report_id
        payload = {'report_id': report_id}
        function_name = aws_utils.get_lambda_name(
            'get', urls.EXECUTE_SCHEDULED_REPORT)

        aws_utils.create_cloudwatch_event(report_id, cron_expression,
                                          function_name, payload)

    return req_session.generate_sqlalchemy_response(201, reports)
Ejemplo n.º 19
0
def process_activity_notifications(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        False,
        mandatory_params=[],
        optional_params=[],
        headers=[
            'X-Goog-Channel-Token', 'X-Goog-Channel-ID',
            'X-Goog-Resource-State'
        ])
    if req_error:
        return req_error

    datasource_id = req_session.get_req_header('X-Goog-Channel-Token')
    channel_id = req_session.get_req_header('X-Goog-Channel-ID')
    notification_type = req_session.get_req_header('X-Goog-Resource-State')
    activity_notification.process_notifications(notification_type,
                                                datasource_id, channel_id,
                                                req_session.get_body())
    return req_session.generate_response(202)
Ejemplo n.º 20
0
def post_datasource(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    try:
        datasource = domain_controller.create_datasource(req_session.get_auth_token(), req_session.get_body())
    except Exception as ex:
        return req_session.generate_error_response(400, ex.message)
    return req_session.generate_sqlalchemy_response(200, datasource)
Ejemplo n.º 21
0
def post_trusted_entities(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error

    trusted_entities = domain_controller.create_trusted_entities_for_a_domain(req_session.get_auth_token(), req_session.get_body())
    return req_session.generate_sqlalchemy_response(200, trusted_entities)