hueta
This commit is contained in:
@@ -11,6 +11,16 @@ IMG_MIN, IMG_MAX = 1, 16
|
||||
# Поля профиля, которые вообще могут существовать
|
||||
ALLOWED_FIELDS = {"password", "first_name", "second_name", "email", "msg"}
|
||||
|
||||
# PATCH V4: database без auth. Даже если :38002 снова опубликуют на 0.0.0.0,
|
||||
# без этого заголовка (его знают только logic/content) чужие запросы отсекаются.
|
||||
INTERNAL = os.environ.get("RUSGRAM_INTERNAL", "e9b2f6d14a8c7035e1d0a6b8c4f2e7a9")
|
||||
|
||||
|
||||
def require_internal():
|
||||
if request.headers.get("X-Internal") != INTERNAL:
|
||||
return make_response({"status": "forbidden"}, 403)
|
||||
return None
|
||||
|
||||
|
||||
def safe_username(username):
|
||||
"""Имя юзера становится именем файла в db/users/ — режем всё, что уводит
|
||||
@@ -30,6 +40,9 @@ def user_path(username):
|
||||
|
||||
@app.route('/users/<string:username>/<string:field>', methods=["GET", "POST"])
|
||||
def users(username, field):
|
||||
denied = require_internal()
|
||||
if denied is not None:
|
||||
return denied
|
||||
if not safe_username(username) or field not in ALLOWED_FIELDS:
|
||||
return make_response({"status": "bad_request"}, 400)
|
||||
path = user_path(username)
|
||||
@@ -82,6 +95,9 @@ def users(username, field):
|
||||
|
||||
@app.route('/images/<string:id>', methods=["GET", "POST"])
|
||||
def images(id):
|
||||
denied = require_internal()
|
||||
if denied is not None:
|
||||
return denied
|
||||
# PATCH V8: раньше любой нечисловой/несуществующий id давал 500
|
||||
try:
|
||||
img_id = int(id)
|
||||
|
||||
Reference in New Issue
Block a user