Example #1
0
def list_keys():
    query = qb.from_params(request.args, customers=g.customers)
    total = ApiKey.count(query)
    paging = Page.from_params(request.args, total)
    if not current_app.config['AUTH_REQUIRED']:
        keys = ApiKey.find_all(query,
                               page=paging.page,
                               page_size=paging.page_size)
    elif Scope.admin in g.scopes or Scope.admin_keys in g.scopes:
        keys = ApiKey.find_all(query,
                               page=paging.page,
                               page_size=paging.page_size)
    elif not g.get('login', None):
        raise ApiError("Must define 'user' to list user keys", 400)
    else:
        keys = ApiKey.find_by_user(user=g.login)

    if keys:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       keys=[key.serialize for key in keys],
                       total=total)
    else:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       message='not found',
                       keys=[],
                       total=0)
Example #2
0
def list_users():
    query = qb.users.from_params(request.args)
    total = User.count(query)
    paging = Page.from_params(request.args, total)
    users = User.find_all(query, page=paging.page, page_size=paging.page_size)

    if users:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            users=[user.serialize for user in users],
            domains=current_app.config['ALLOWED_EMAIL_DOMAINS'],
            total=total
        )
    else:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            message='not found',
            users=[],
            domains=current_app.config['ALLOWED_EMAIL_DOMAINS'],
            total=0
        )
Example #3
0
def list_blackouts():
    query = qb.blackouts.from_params(request.args, customers=g.customers)
    total = Blackout.count(query)
    paging = Page.from_params(request.args, total)
    blackouts = Blackout.find_all(query, page=paging.page, page_size=paging.page_size)

    if blackouts:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            blackouts=[blackout.serialize for blackout in blackouts],
            total=total
        )
    else:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            message='not found',
            blackouts=[],
            total=0
        )
Example #4
0
def list_customers():
    query = qb.customers.from_params(request.args, customers=g.customers)
    total = Customer.count(query)
    paging = Page.from_params(request.args, total)
    customers = [
        c for c in Customer.find_all(
            query, page=paging.page, page_size=paging.page_size)
        if Scope.admin in g.scopes or Scope.admin_customers in g.scopes
        or c.customer in g.customers
    ]

    if customers:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            customers=[customer.serialize for customer in customers],
            total=total)
    else:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       message='not found',
                       customers=[],
                       total=0)
Example #5
0
def list_heartbeats():
    query = qb.from_params(request.args, customers=g.customers)
    total = Heartbeat.count(query)
    paging = Page.from_params(request.args, total)
    heartbeats = Heartbeat.find_all(query,
                                    page=paging.page,
                                    page_size=paging.page_size)

    if heartbeats:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            heartbeats=[heartbeat.serialize for heartbeat in heartbeats],
            total=total)
    else:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       message='not found',
                       heartbeats=[],
                       total=0)
Example #6
0
def list_groups():
    query = qb.from_params(request.args)
    total = Group.count(query)
    paging = Page.from_params(request.args, total)
    groups = Group.find_all(query,
                            page=paging.page,
                            page_size=paging.page_size)

    if groups:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       groups=[group.serialize for group in groups],
                       total=total)
    else:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       message='not found',
                       groups=[],
                       total=0)
Example #7
0
def list_twilio_rules():
    query = qb.from_params(request.args, customers=g.customers)
    total = TwilioRule.count(query)
    paging = Page.from_params(request.args, total)
    twilio_rules = TwilioRule.find_all(query,
                                       page=paging.page,
                                       page_size=paging.page_size)

    if twilio_rules:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            twilioRules=[
                twilio_rule.serialize for twilio_rule in twilio_rules
            ],
            total=total,
        )
    else:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            message='not found',
            twilioRules=[],
            total=0,
        )
Example #8
0
def get_topn_standing():
    query = qb.alerts.from_params(request.args, customers=g.customers)
    paging = Page.from_params(request.args, 1)
    topn = Alert.get_topn_standing(query, topn=paging.page_size)

    if topn:
        return jsonify(status='ok', top10=topn, total=len(topn))
    else:
        return jsonify(status='ok', message='not found', top10=[], total=0)
Example #9
0
def history():
    query = qb.from_params(request.args, customers=g.customers)
    paging = Page.from_params(request.args, items=0)
    history = Alert.get_history(query, paging.page, paging.page_size)

    if history:
        return jsonify(status='ok',
                       history=[h.serialize for h in history],
                       total=len(history))
    else:
        return jsonify(status='ok', message='not found', history=[], total=0)
Example #10
0
def search_alerts():
    query_time = datetime.utcnow()
    query = qb.from_params(request.args,
                           customers=g.customers,
                           query_time=query_time)
    show_raw_data = request.args.get(
        'show-raw-data',
        default=False,
        type=lambda x: x.lower() in ['true', 't', '1', 'yes', 'y', 'on'])
    show_history = request.args.get(
        'show-history',
        default=False,
        type=lambda x: x.lower() in ['true', 't', '1', 'yes', 'y', 'on'])
    severity_count = Alert.get_counts_by_severity(query)
    status_count = Alert.get_counts_by_status(query)

    total = sum(severity_count.values())
    paging = Page.from_params(request.args, total)

    alerts = Alert.find_all(query, paging.page, paging.page_size)

    for alert in alerts:
        if not show_raw_data:
            alert.raw_data = None
        if not show_history:
            alert.history = []

    if alerts:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            alerts=[alert.serialize for alert in alerts],
            total=total,
            statusCounts=status_count,
            severityCounts=severity_count,
            lastTime=max([alert.last_receive_time for alert in alerts]),
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
    else:
        return jsonify(
            status='ok',
            message='not found',
            page=paging.page,
            pageSize=paging.page_size,
            pages=0,
            more=False,
            alerts=[],
            total=0,
            severityCounts=severity_count,
            statusCounts=status_count,
            lastTime=query_time,
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
Example #11
0
def list_perms():

    query = qb.perms.from_params(request.args)
    total = Permission.count(query)
    perms: list[Permission] = []

    admin_perm = Permission(match=current_app.config['DEFAULT_ADMIN_ROLE'],
                            scopes=ADMIN_SCOPES)
    user_perm = Permission(match=current_app.config['DEFAULT_USER_ROLE'],
                           scopes=current_app.config['USER_DEFAULT_SCOPES'])
    guest_perm = Permission(match=current_app.config['DEFAULT_GUEST_ROLE'],
                            scopes=current_app.config['GUEST_DEFAULT_SCOPES'])

    # add system-defined roles 'admin', 'user' and 'guest
    if 'scopes' in request.args:
        want_scopes = request.args.getlist('scopes')
        if set(admin_perm.scopes) & set(want_scopes):
            perms.append(admin_perm)
            total += 1
        if set(user_perm.scopes) & set(want_scopes):
            perms.append(user_perm)
            total += 1
        if set(guest_perm.scopes) & set(want_scopes):
            perms.append(guest_perm)
            total += 1
    else:
        perms.append(admin_perm)
        perms.append(user_perm)
        perms.append(guest_perm)
        total += 3

    paging = Page.from_params(request.args, total)
    perms.extend(
        Permission.find_all(query,
                            page=paging.page,
                            page_size=paging.page_size))

    if perms:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       permissions=[perm.serialize for perm in perms],
                       total=total)
    else:
        return jsonify(status='ok',
                       page=paging.page,
                       pageSize=paging.page_size,
                       pages=paging.pages,
                       more=paging.has_more,
                       message='not found',
                       permissions=[],
                       total=0)
Example #12
0
def search_alerts():
    query_time = datetime.utcnow()
    query = qb.from_params(request.args,
                           customers=g.customers,
                           query_time=query_time)
    severity_count = Alert.get_counts_by_severity(query)
    status_count = Alert.get_counts_by_status(query)

    total = sum(severity_count.values())
    paging = Page.from_params(request.args, total)

    alerts = Alert.find_all(query, paging.page, paging.page_size)

    if alerts:
        return jsonify(
            status='ok',
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            alerts=[alert.serialize for alert in alerts],
            total=total,
            statusCounts=status_count,
            severityCounts=severity_count,
            lastTime=max([alert.last_receive_time for alert in alerts]),
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
    else:
        return jsonify(
            status='ok',
            message='not found',
            page=paging.page,
            pageSize=paging.page_size,
            pages=0,
            more=False,
            alerts=[],
            total=0,
            severityCounts=severity_count,
            statusCounts=status_count,
            lastTime=query_time,
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
Example #13
0
def search_alerts():
    query_time = datetime.utcnow()
    query = qb.from_params(request.args, query_time)
    severity_count = Alert.get_counts_by_severity(query)
    status_count = Alert.get_counts_by_status(query)

    total = sum(severity_count.values())
    paging = Page.from_params(request.args, total)

    alerts = Alert.find_all(query, paging.page, paging.page_size)

    if alerts:
        return jsonify(
            status="ok",
            page=paging.page,
            pageSize=paging.page_size,
            pages=paging.pages,
            more=paging.has_more,
            alerts=[alert.serialize for alert in alerts],
            total=total,
            statusCounts=status_count,
            severityCounts=severity_count,
            lastTime=max([alert.last_receive_time for alert in alerts]),
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on
        )
    else:
        return jsonify(
            status="ok",
            message="not found",
            page=paging.page,
            pageSize=paging.page_size,
            pages=0,
            more=False,
            alerts=[],
            total=0,
            severityCounts=severity_count,
            statusCounts=status_count,
            lastTime=query_time,
            autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on
        )