def main(request, response): def fail(message): response.content = "FAIL: " + str(message) response.status = 400 def getState(token): server_state = request.server.stash.take(token) if not server_state: return "Uninitialized" return server_state def setState(token, state): request.server.stash.put(token, state) def resetState(token): setState(token, "") response.headers.set("Cache-Control", "no-store") response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) response.headers.set("Access-Control-Max-Age", 1) token = request.GET.first("token", None) state = getState(token) command = request.GET.first("command", None) if command == "reset": if request.method == "GET": resetState(token) response.content = "Server state reset" else: fail("Invalid Method.") elif state == "Uninitialized": if request.method == "OPTIONS": response.content = "This request should not be displayed." setState(token, "Denied") else: fail(state) elif state == "Denied": if request.method == "GET" and command == "complete": resetState(token) response.content = "Request successfully blocked." else: setState("Deny Ignored") fail("The request was not denied.") elif state == "Deny Ignored": resetState(token) fail(state) else: resetState(token) fail("Unknown Error.")