DmitrMakeev commited on
Commit
4d03668
·
verified ·
1 Parent(s): 14cce21

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -8
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
- # Выводим содержимое api_key_apps_vk в консоль
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
- if secret_key:
1048
- logging.debug(f"Secret key for app {apps_id}: {secret_key}")
1049
- else:
 
 
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