Webhooks в Marzban
Webhooks в Marzban
Если вы используете Marzban и ищете способ автоматизировать обработку событий пользователей, вебхуки помогут вам в этом. Они позволяют получать уведомления о различных событиях, таких как создание, обновление или истечение срока действия пользователя, что может использоваться для интеграции с внешними системами.
Почему использовать вебхуки?
Основные преимущества:
- Отслеживание событий: Получайте уведомления о действиях пользователей, таких как создание, обновление, ограничения и другие события.
- Интеграция с внешними системами: Автоматизируйте действия, например, обновление базы данных, отправку уведомлений или выполнение других процессов в ответ на события в Marzban.
Настройка вебхуков
Чтобы начать использовать вебхуки, выполните следующие шаги по настройке и реализации.
Шаг 1: Настройка URL вебхука
Определите URL-адрес, на который вы хотите получать уведомления, в файле .env
или через переменные окружения:
WEBHOOK_ADDRESS=https://your-server.com/webhook
Чтобы добавить секретный ключ для проверки запросов, установите переменную WEBHOOK_SECRET
:
WEBHOOK_SECRET=ваш-секретный-ключ
Теперь Marzban будет отправлять POST-запросы на этот URL каждый раз, когда произойдет определенное событие.
Шаг 2: Обработка входящих уведомлений
Сервер, который принимает вебхуки, должен обрабатывать POST-запросы с JSON-содержимым. Каждый запрос включает заголовок x-webhook-secret
(если настроен) для безопасности, а также детали события в формате JSON. Вот пример JSON-пакета:
{
"username": "example_user",
"action": "user_created",
"enqueued_at": 1680506457.636369,
"tries": 0
}
username
: Имя пользователя, связанное с событием.action
: Тип события (например,user_created
,user_updated
).enqueued_at
: Временная метка события.tries
: Количество повторных попыток, если уведомление не было отправлено.
Типы событий:
Поле action
может принимать следующие значения:
user_created
– Когда пользователь создан.user_updated
– Когда обновлены данные пользователя.user_deleted
– Когда пользователь удален.user_limited
– Когда к пользователю применяются ограничения.user_expired
– Когда у пользователя истекает срок действия.user_disabled
/user_enabled
– Когда пользователь отключен или включен.
Шаг 3: Пример кода для получения вебхука
Вот пример с использованием Python и Flask для настройки сервера, который проверяет и обрабатывает уведомления от Marzban:
from flask import Flask, request, jsonify
import hmac
import hashlib
app = Flask(__name__)
WEBHOOK_SECRET = 'ваш-секретный-ключ'
def verify_signature(data, signature):
expected_signature = hmac.new(WEBHOOK_SECRET.encode(), data, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected_signature, signature)
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('x-webhook-secret')
if not signature or not verify_signature(request.data, signature):
return jsonify({"error": "Неверная подпись"}), 403
payload = request.json
print("Получено событие:", payload['action'], "для пользователя:", payload['username'])
# Обработка события
if payload['action'] == 'user_created':
# Код для обработки создания пользователя
pass
elif payload['action'] == 'user_updated':
# Код для обработки обновления пользователя
pass
# Дополнительные действия по событиям
return jsonify({"status": "успех"}), 200
if __name__ == '__main__':
app.run(port=5000)
В этом примере Flask проверяет заголовок x-webhook-secret
с помощью HMAC и обрабатывает события на основе поля action
.
Использование вебхуков в Marzban открывает широкие возможности для автоматизации и интеграции. С этим руководством вы сможете оптимизировать рабочие процессы с Marzban. Для получения дополнительных сведений обратитесь к официальной документации Marzban.
- Наше сообщество Openode.XYZ OpeNode.xyz
- Aeza VPS (+15% к пополнению) Aeza.net
- Лучший Евро-хостер VPS (+1 месяц бесплатно на 100$) Kamatera.com
- VPS hosting - 4vps.su (-10% скидка!) 4VPS.su
- TG Channel TG-Channel Neonode.cc