DmitrMakeev commited on
Commit
b1c6659
·
verified ·
1 Parent(s): 52e1feb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -27
app.py CHANGED
@@ -1019,23 +1019,18 @@ def get_order_monitop():
1019
 
1020
 
1021
 
 
 
1022
 
1023
 
1024
  # Функция для валидации подписи ВК приложения
1025
  def is_valid(*, query: dict, secret: str) -> bool:
1026
  """Check VK Apps signature"""
1027
- # Фильтруем параметры, начинающиеся с 'vk_', и сортируем их
1028
  vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
1029
  logging.debug(f"Filtered VK params: {vk_subset}")
1030
-
1031
- # Генерируем подпись с использованием секретного ключа и закодированного URL
1032
  hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
1033
-
1034
- # Корректируем код для совместимости с ВК
1035
  decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
1036
  logging.debug(f"Calculated signature: {decoded_hash_code}")
1037
-
1038
- # Сравниваем подпись из запроса с вычисленной подписью
1039
  return query["sign"] == decoded_hash_code
1040
 
1041
  # Чтение ордера по ключу и ВК ИД для приложения
@@ -1047,25 +1042,18 @@ def get_order():
1047
  # Читаем параметры из POST-запроса
1048
  vkid = request.form.get('vk_id', '')
1049
  order = request.form.get('order', '')
1050
- apps_id = request.form.get('apps_id', '') # ИД ВК приложения
1051
- fullUrl = request.form.get('fullUrl', '') # Полный URL из ВК
1052
 
1053
  logging.debug(f"Received data: vk_id={vkid}, order={order}, apps_id={apps_id}, fullUrl={fullUrl}")
1054
 
1055
  # Проверка подписи для приложения
1056
- # Проверяем, что api_key_apps_vk является словарем, а не строкой
1057
- if isinstance(api_key_apps_vk, dict):
1058
- secret = api_key_apps_vk.get(str(apps_id), '') # Приводим apps_id к строке для поиска
1059
- logging.debug(f"Using secret: {secret}")
1060
- else:
1061
- logging.error("api_key_apps_vk is not a dictionary")
1062
- return json.dumps({"error": "Configuration error"}), 500
1063
 
1064
  # Парсим полный URL для получения параметров запроса
1065
  parsed_url = urlparse(fullUrl)
1066
  logging.debug(f"Parsed URL: {parsed_url}")
1067
-
1068
- # Извлекаем параметры запроса для проверки подписи
1069
  query_params = dict(parse_qsl(parsed_url.query, keep_blank_values=True))
1070
  logging.debug(f"Query params for signature check: {query_params}")
1071
 
@@ -1091,16 +1079,14 @@ def get_order():
1091
 
1092
  shop_st = result[0] if result[0] else '{}'
1093
  logging.debug(f"Shop_st: {shop_st}")
1094
-
1095
- # Загружаем данные JSON и ищем ключ
1096
  shop_st_data = json.loads(shop_st)
1097
  logging.debug(f"Existing record found. Loaded JSON: {shop_st_data}")
1098
 
1099
- # Получаем значение по ключу order
1100
  value = shop_st_data.get(order, 'not')
1101
  logging.debug(f"Value for order {order}: {value}")
1102
 
1103
- # Возвращаем ответ с найденным значением
1104
  response = {order: value}
1105
  return jsonify(response), 200
1106
 
@@ -1129,11 +1115,6 @@ def get_order():
1129
 
1130
 
1131
 
1132
-
1133
-
1134
-
1135
-
1136
-
1137
 
1138
 
1139
 
 
1019
 
1020
 
1021
 
1022
+
1023
+
1024
 
1025
 
1026
  # Функция для валидации подписи ВК приложения
1027
  def is_valid(*, query: dict, secret: str) -> bool:
1028
  """Check VK Apps signature"""
 
1029
  vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
1030
  logging.debug(f"Filtered VK params: {vk_subset}")
 
 
1031
  hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
 
 
1032
  decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
1033
  logging.debug(f"Calculated signature: {decoded_hash_code}")
 
 
1034
  return query["sign"] == decoded_hash_code
1035
 
1036
  # Чтение ордера по ключу и ВК ИД для приложения
 
1042
  # Читаем параметры из POST-запроса
1043
  vkid = request.form.get('vk_id', '')
1044
  order = request.form.get('order', '')
1045
+ apps_id = request.form.get('apps_id', '') # Сюда придёт ИД ВК приложения
1046
+ fullUrl = request.form.get('fullUrl', '') # Полный URL, который выдаёт ВКонтакте
1047
 
1048
  logging.debug(f"Received data: vk_id={vkid}, order={order}, apps_id={apps_id}, fullUrl={fullUrl}")
1049
 
1050
  # Проверка подписи для приложения
1051
+ secret = api_key_apps_vk.get(str(apps_id), '') # Приводим apps_id к строке
1052
+ logging.debug(f"Using secret: {secret}")
 
 
 
 
 
1053
 
1054
  # Парсим полный URL для получения параметров запроса
1055
  parsed_url = urlparse(fullUrl)
1056
  logging.debug(f"Parsed URL: {parsed_url}")
 
 
1057
  query_params = dict(parse_qsl(parsed_url.query, keep_blank_values=True))
1058
  logging.debug(f"Query params for signature check: {query_params}")
1059
 
 
1079
 
1080
  shop_st = result[0] if result[0] else '{}'
1081
  logging.debug(f"Shop_st: {shop_st}")
 
 
1082
  shop_st_data = json.loads(shop_st)
1083
  logging.debug(f"Existing record found. Loaded JSON: {shop_st_data}")
1084
 
1085
+ # Ищем значение по ключу order
1086
  value = shop_st_data.get(order, 'not')
1087
  logging.debug(f"Value for order {order}: {value}")
1088
 
1089
+ # Возвращаем данные из столбца
1090
  response = {order: value}
1091
  return jsonify(response), 200
1092
 
 
1115
 
1116
 
1117
 
 
 
 
 
 
1118
 
1119
 
1120