diff --git a/app/portal/proxy.py b/app/portal/proxy.py index 0b729b2..a234dd6 100644 --- a/app/portal/proxy.py +++ b/app/portal/proxy.py @@ -19,6 +19,27 @@ def proxy_list() -> ResponseReturnValue: items=proxies) +@bp.route("/expire/", methods=['GET', 'POST']) +def proxy_expire(proxy_id: int) -> ResponseReturnValue: + proxy = Proxy.query.filter(Proxy.id == proxy_id, Proxy.destroyed.is_(None)).first() + if proxy is None: + return Response(render_template("error.html.j2", + header="404 Proxy Not Found", + message="The requested proxy could not be found. It may have already been " + "destroyed.")) + form = LifecycleForm() + if form.validate_on_submit(): + proxy.destroy() + db.session.commit() + flash("Proxy will be shortly retired.", "success") + return redirect(url_for("portal.origin.origin_edit", origin_id=proxy.origin.id)) + return render_template("lifecycle.html.j2", + header=f"Expire proxy for {proxy.origin.domain_name} immediately?", + message=proxy.url, + section="proxy", + form=form) + + @bp.route("/block/", methods=['GET', 'POST']) def proxy_block(proxy_id: int) -> ResponseReturnValue: proxy = Proxy.query.filter(Proxy.id == proxy_id, Proxy.destroyed.is_(None)).first() diff --git a/app/portal/templates/tables.html.j2 b/app/portal/templates/tables.html.j2 index 761de4a..8f00bb7 100644 --- a/app/portal/templates/tables.html.j2 +++ b/app/portal/templates/tables.html.j2 @@ -388,6 +388,8 @@ {% if proxy.deprecated %} Expiring in {{ proxy.deprecated | mirror_expiry }} + Expire {% else %} Mark blocked