Skip to content

Commit

Permalink
server: api, paginate vulnsearch by default (can produce large output)
Browse files Browse the repository at this point in the history
  • Loading branch information
bodik committed Nov 14, 2023
1 parent 5640b39 commit 04a3d2d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
20 changes: 16 additions & 4 deletions sner/server/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from flask import current_app, jsonify, Response
from flask_login import current_user
from flask_smorest import Blueprint
from flask_smorest import abort, Blueprint, Page
from sqlalchemy import or_

import sner.server.api.schema as api_schema
Expand Down Expand Up @@ -257,21 +257,33 @@ def v2_public_storage_versioninfo_route(args):
return data


class QueryPage(Page):
"""flask_smorest paging helper class"""

@property
def item_count(self):
if not self.collection:
return 0
return self.collection.count()


@blueprint.route("/v2/public/storage/vulnsearch", methods=["POST"])
@apikey_required("user")
@blueprint.arguments(api_schema.PublicVulnsearchArgsSchema)
@blueprint.response(HTTPStatus.OK, api_schema.PublicVulnsearchSchema(many=True))
@blueprint.paginate(QueryPage, page_size=1000, max_page_size=10000)
def v2_public_storage_vulnsearch_route(args):
"""simple vulnsearch search (see sner.server.sqlafilter for syntax)"""

if not current_user.api_networks:
return None
return []

restrict = [Vulnsearch.host_address.op("<<=")(net) for net in current_user.api_networks]
query = Vulnsearch.query.filter(or_(*restrict))

if not (query := filter_query(query, args.get("filter"))):
return jsonify({"message": "Failed to filter query"}), HTTPStatus.BAD_REQUEST
# must use abort for paginate
abort(HTTPStatus.BAD_REQUEST, "Failed to filter query")

current_app.logger.info(f"api.public storage vulnsearch {args}")
return query.all()
return query
2 changes: 1 addition & 1 deletion sner/server/dbx_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ def initdata_dev():
cvss3=2.4,
attack_vector='NETWORK',
data={'dummmy': 'data'},
cpe='cpe:/a:apache:http_server:2.2.21'
cpe={'full': 'cpe:/a:apache:http_server:2.4.38'}
))

VersioninfoManager.rebuild()
Expand Down

0 comments on commit 04a3d2d

Please sign in to comment.