Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1027,7 +1027,30 @@ def is_valid(*, query: dict, secret: str) -> bool:
|
|
1027 |
return query.get("sign") == decoded_hash_code
|
1028 |
|
1029 |
# Чтение ордера по ключу и ВК ИД для приложения
|
1030 |
-
# Функция для
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1031 |
@app.route('/get_order', methods=['POST'])
|
1032 |
def get_order():
|
1033 |
try:
|
@@ -1039,14 +1062,13 @@ def get_order():
|
|
1039 |
apps_id = request.form.get('apps_id', '') # Сюда придет ИД ВК приложения, значение будет ключом для поиска Защищённого ключа в переменной 'api_key_apps_vk'
|
1040 |
sign = request.form.get('sign', '') # Значение sign полученное при запуске приложения
|
1041 |
|
1042 |
-
#
|
1043 |
-
logging.debug(f"api_key_apps_vk: {api_key_apps_vk}")
|
1044 |
-
|
1045 |
-
# Проверка на наличие apps_id и извлечение ключа
|
1046 |
secret_key = api_key_apps_vk.get(apps_id)
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
|
|
|
|
1050 |
logging.error(f"Secret key not found for app ID {apps_id}")
|
1051 |
return jsonify({"error": "Secret key not found for app ID"}), 400
|
1052 |
|
@@ -1100,6 +1122,9 @@ def get_order():
|
|
1100 |
|
1101 |
|
1102 |
|
|
|
|
|
|
|
1103 |
|
1104 |
|
1105 |
|
|
|
1027 |
return query.get("sign") == decoded_hash_code
|
1028 |
|
1029 |
# Чтение ордера по ключу и ВК ИД для приложения
|
1030 |
+
# Функция для валидации подписи ВК приложения
|
1031 |
+
def is_valid(*, query: dict, secret: str) -> bool:
|
1032 |
+
"""Check VK Apps signature"""
|
1033 |
+
logging.debug(f"Checking signature for query: {query}")
|
1034 |
+
vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
|
1035 |
+
logging.debug(f"Filtered VK params: {vk_subset}")
|
1036 |
+
hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
|
1037 |
+
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1038 |
+
logging.debug(f"Calculated signature: {decoded_hash_code}")
|
1039 |
+
return query.get("sign") == decoded_hash_code
|
1040 |
+
|
1041 |
+
# Чтение ордера по ключу и ВК ИД для приложения
|
1042 |
+
# Функция для валидации подписи ВК приложения
|
1043 |
+
def is_valid(*, query: dict, secret: str) -> bool:
|
1044 |
+
"""Check VK Apps signature"""
|
1045 |
+
logging.debug(f"Checking signature for query: {query}")
|
1046 |
+
vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
|
1047 |
+
logging.debug(f"Filtered VK params: {vk_subset}")
|
1048 |
+
hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
|
1049 |
+
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1050 |
+
logging.debug(f"Calculated signature: {decoded_hash_code}")
|
1051 |
+
return query.get("sign") == decoded_hash_code
|
1052 |
+
|
1053 |
+
# Чтение ордера по ключу и ВК ИД для приложения
|
1054 |
@app.route('/get_order', methods=['POST'])
|
1055 |
def get_order():
|
1056 |
try:
|
|
|
1062 |
apps_id = request.form.get('apps_id', '') # Сюда придет ИД ВК приложения, значение будет ключом для поиска Защищённого ключа в переменной 'api_key_apps_vk'
|
1063 |
sign = request.form.get('sign', '') # Значение sign полученное при запуске приложения
|
1064 |
|
1065 |
+
# Сразу выводим секретный ключ, который соответствует apps_id
|
|
|
|
|
|
|
1066 |
secret_key = api_key_apps_vk.get(apps_id)
|
1067 |
+
logging.debug(f"Received request for apps_id: {apps_id}")
|
1068 |
+
logging.debug(f"Secret key for app {apps_id}: {secret_key}") # Выводим сразу ключ
|
1069 |
+
|
1070 |
+
# Проверка наличия apps_id и извлечение ключа
|
1071 |
+
if secret_key is None:
|
1072 |
logging.error(f"Secret key not found for app ID {apps_id}")
|
1073 |
return jsonify({"error": "Secret key not found for app ID"}), 400
|
1074 |
|
|
|
1122 |
|
1123 |
|
1124 |
|
1125 |
+
|
1126 |
+
|
1127 |
+
|
1128 |
|
1129 |
|
1130 |
|