Доброго дня! Имеется Max patrol siem, откуда отправляются POST с уведомлениями, а также кусок кода на Python+flask , который получает от него POST и пересылает в Telegram. Проблема в том, что он пересылает в нечитабельном виде эти уведомления. В техническом виде. Как ему сказать, чтобы он передавал эти сообщения в читабельном виде. Было бы здорово получить совет или ссылку на нужный мне материал, чтобы понять что и как дописать в код. Сам я пишу код с молитвословом и ChatGPT)
ТП вендора просто указывает на этот материал -
https://help.ptsecurity.com/ru-RU/projects/mp10/27...
Код сервера flask:
import requests
from pathlib import Path
from flask import Flask, request
# Конфигурационные параметры
HOST = '0.0.0.0'
HTTP_PORT = 10080
HTTPS_PORT = 10443
SHOW_SCHEMA = False
USE_HTTPS = False
# Пути к сертификатам
cert_dir = Path(__file__).parent
certfile = cert_dir / '<Имя файла сертификата>.crt'
keyfile = cert_dir / '<Имя файла ключа>.pem'
# Telegram Bot Configuration
TELEGRAM_TOKEN = '<Ваш_Токен_Бота>'
TELEGRAM_CHAT_ID = '<Ваш_ID_Чата>'
app = Flask('ExampleTriggerService')
def send_telegram_message(message):
url = f"
https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendM..."
payload = {
'chat_id': TELEGRAM_CHAT_ID,
'text': message,
'parse_mode': 'HTML'
}
response = requests.post(url, data=payload)
if response.status_code != 200:
print(f"Failed to send message: {response.status_code} - {response.text}")
@app.route('/handle', methods=['POST'])
def handle():
data = request.get_json()
print('INCOMING DATA', data)
# Отправка данных в Telegram
message = f"Received Notification:\n{data}"
send_telegram_message(message)
if data.get('notification_type') == 'test':
print('TEST')
return 'test'
if SHOW_SCHEMA and 'schema_uri' in data:
print('GET SCHEMA', data['schema_uri'])
schema_data = requests.get(data['schema_uri'], verify=False).text
print('SCHEMA DATA', schema_data)
page_uri = data.get('uri')
for page_num in range(10):
if not page_uri:
break
print('GET PAGE', page_num, page_uri)
page_data = requests.get(page_uri, verify=False).json()
print('PAGE DATA', page_data)
page_uri = page_data['dataSetInfo'].get('nextDataSetUri')
return 'ok'
if __name__ == '__main__':
if USE_HTTPS:
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
# Для Python версии 3.6 используйте ssl.PROTOCOL_TLSv1_2
context.load_cert_chain(str(certfile), str(keyfile))
port = HTTPS_PORT
else:
context = None
port = HTTP_PORT
app.run(ssl_context=context, host=HOST, port=port, debug=True)