class Credentials: username: str password: str class ToolboxServerException(Exception): pass upload_tokens: Dict[UploadTokenId, UploadToken] = {} server = Blueprint("serve", __name__, template_folder=TEMPLATE_DIRECTORY, static_folder=None) server.app_template_filter("pretty_date")(formatters.pretty_date) csrf = CSRFProtect() auth = HTTPBasicAuth() # No login required - shells can be accessed from anywhere @server.route("/shells/<name>") @server.route("/shells/<name>/<lport>") @server.route("/shells/<name>/<lhost>/<lport>") def shell(name: str, lhost: Optional[str] = None, lport: Optional[str] = None): payload_generator = PayloadGenerator() payload = payload_generator.generate(name=name, lhost=lhost, lport=lport) if payload is None: return abort(HTTPStatus.NOT_FOUND) response = make_response(payload)
from flask import url_for import reader from .api_thing import APIError from .api_thing import APIThing from reader import Content from reader import Entry from reader import EntrySearchResult from reader import InvalidSearchQueryError from reader import ParseError from reader import ReaderError from reader._plugins import Loader blueprint = Blueprint('reader', __name__) blueprint.app_template_filter('humanize_naturaltime')(humanize.naturaltime) # if any plugins need signals, they need to install blinker signals = flask.signals.Namespace() # NOTE: these signals are part of the app extension API got_preview_parse_error = signals.signal('preview-parse-error') def get_reader(): if not hasattr(g, 'reader'): g.reader = current_app.config['READER_CONFIG'].make_reader( 'app', plugin_loader=current_app.plugin_loader ) return g.reader