killerqueen
@killerqueen
Системный администратор, ведущий специалист ИБ КИИ

Как интерпретировать данные в читабельный вид?

Доброго дня! Имеется Max patrol siem, откуда отправляются POST с уведомлениями, а также кусок кода на Python+flask , который получает от него POST и пересылает в Telegram. Проблема в том, что он пересылает в нечитабельном виде эти уведомления. В техническом виде. Как ему сказать, чтобы он передавал эти сообщения в читабельном виде. Было бы здорово получить совет или ссылку на нужный мне материал, чтобы понять что и как дописать в код. Сам я пишу код с молитвословом и ChatGPT)

ТП вендора просто указывает на этот материал - https://help.ptsecurity.com/ru-RU/projects/mp10/27...

Код сервера flask:
import requests66d6c2fe8c4bc503571463.jpeg
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)
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
У тебя request.get_json() возвращает структуру данных - просто вынимай из неё нужные поля.
Всего-то нужно чуть-чуть почитать, как работать со словарями и списками в питоне.
Например, data['notification_name'] вернёт название события.

Это не единственная проблема в коде, конечно. Вот почему нельзя использовать chatgpt для написания кода, у него большие проблемы с пониманием общей структуры программы.
Ответ написан
fenrir1121
@fenrir1121
Начни с документации
Обернуть data как кусок кода ```json ... ```
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы