only allow access to start, move, end endpoint with the user agent BattlesnakeEngine
Build and Push Docker Container / build-and-push (push) Successful in 4m8s

This commit is contained in:
2026-04-07 02:34:31 +02:00
parent 898f8106ed
commit f4c0ad193e
+8 -4
View File
@@ -3,6 +3,7 @@ import json, time, os
from quart import Blueprint, request, jsonify from quart import Blueprint, request, jsonify
from quart_common.web.decorators import require_user_agent
from quart_common.web.logger import await_log from quart_common.web.logger import await_log
from server.database import StorageLoader from server.database import StorageLoader
from snakes import DEFAULT_SNAKE_CONFIG from snakes import DEFAULT_SNAKE_CONFIG
@@ -44,6 +45,7 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
return snake_json return snake_json
@blueprint.post('/start') @blueprint.post('/start')
@require_user_agent("BattlesnakeEngine", abort_code=404)
async def on_start(): async def on_start():
server.metrics_collector.record_http_request('start') server.metrics_collector.record_http_request('start')
await server.game_runtime.prune_stale_games() await server.game_runtime.prune_stale_games()
@@ -54,6 +56,7 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
return 'ok' return 'ok'
@blueprint.post('/move') @blueprint.post('/move')
@require_user_agent("BattlesnakeEngine", abort_code=404)
async def on_move(): async def on_move():
server.metrics_collector.record_http_request('move') server.metrics_collector.record_http_request('move')
game_state = await request.get_json() game_state = await request.get_json()
@@ -71,6 +74,7 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
return {'move': next_move} return {'move': next_move}
@blueprint.post('/end') @blueprint.post('/end')
@require_user_agent("BattlesnakeEngine", abort_code=404)
async def on_end(): async def on_end():
server.metrics_collector.record_http_request('end') server.metrics_collector.record_http_request('end')
await server.game_runtime.prune_stale_games() await server.game_runtime.prune_stale_games()
@@ -98,9 +102,9 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
await server.metrics_collector.record_game_end(game_state) await server.metrics_collector.record_game_end(game_state)
return 'ok' return 'ok'
@blueprint.get('/cleanup') # @blueprint.get('/cleanup')
async def cleanup(): # async def cleanup():
results = server._cleanup_database() # results = server._cleanup_database()
return jsonify(data=json.loads(results), status=200) # return jsonify(data=json.loads(results), status=200)
return blueprint return blueprint