Initial commit
This commit is contained in:
80
README.md
Normal file
80
README.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# 2026-matrix-csonac
|
||||
|
||||
Реализация CSoNaC (Centralized System of Notification and Control) для Matrix.
|
||||
Раньше был бот с таким же функционалом, но для Telegram. Telegram больше не в
|
||||
почёте, и теперь у меня всё в локальном Matrix, поэтому бот тоже перенесён сюда.
|
||||
|
||||
## Подготовка окружения
|
||||
|
||||
1. Клонируйте репозиторий и перейдите в его директорию
|
||||
```bash
|
||||
git clone https://git.tyukalov.su/nikita/2026-matrix-csonac.git
|
||||
cd 2026-matrix-csonac
|
||||
```
|
||||
2. Создайте `venv`, активируйте его
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
. .venv/bin/activate
|
||||
```
|
||||
5. Запустите приложение чтобы сгененерировать конфиг
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
6. Отредактируйте конфиг
|
||||
7. Запустите приложение ещё раз, чтобы авторизоваться
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
Для запуска приложения вы можете либо активировать `venv`, либо просто использовать полный путь до интерпретатора Python:
|
||||
```bash
|
||||
~/2026-matrix-downloader/.venv/bin/python main.py
|
||||
```
|
||||
```bash
|
||||
. .venv/bin/activate
|
||||
python main.py
|
||||
```
|
||||
|
||||
## Как работает этот бот
|
||||
|
||||
Этот бот запускает веб-сервер, используя `web_host` и `web_port` из файла
|
||||
конфигурации.
|
||||
|
||||
> Не открывайте доступ к серверу напрямую! Используйте reverse proxy, например,
|
||||
> `nginx`. Это также позволит вам использовать защищённое соединение, что
|
||||
> исключит возможность применения атаки Man-in-the-Middle для перехвата токена.
|
||||
|
||||
Все запросы к веб-серверу требуют авторизации, используя HTTP заголовок
|
||||
`Authorization` и схему `Bearer`. Токен авторизации генерируется посредством
|
||||
взаимодействия с ботом в Matrix.
|
||||
|
||||
> Для каждого сервиса, использующего службу, рекомендуется генерировать свой
|
||||
> собственный токен. Это позволит отозвать токен только для одной службы, если
|
||||
> он будет украден.
|
||||
|
||||
Доступные эндпоинты:
|
||||
- `POST /<channel>/notify`
|
||||
- **Описание.** Используется, чтобы отправить уведомление в указанный канал.
|
||||
Вместо `<channel>` указывается код канала, получаемый при помощи команды
|
||||
`!channel_code`, выполненной в комнате Matrix.
|
||||
- **Тело запроса.** Тело запроса представляет собой `json` объект:
|
||||
```json
|
||||
{
|
||||
"service": "<название сервиса, передаётся только если разрешено>",
|
||||
"subservice": "<название подсервиса>",
|
||||
"text": "<текст уведомления>",
|
||||
"urgent": false
|
||||
}
|
||||
```
|
||||
- **Тело ответа.** Тело ответа представляет собой `json` объект. В случае
|
||||
успеха в нём будут все поля, перечисляемые ниже. В случае провала - только
|
||||
поле `error`, содержащее текстовое описание ошибки.
|
||||
```json
|
||||
{
|
||||
"error": null,
|
||||
"notification_id": "<здесь будет Notification ID>"
|
||||
}
|
||||
```
|
||||
- ``
|
||||
Reference in New Issue
Block a user