


# Формат подписки `sub.md`
`sub.md` это обычный текстовый файл, который хостится на сервере и отдаётся как plain text.
Пример URL:
```text
https://killpeople.freegore.xyz/sub
```
Внутри файл содержит список `olcrtc`-URI из [uri.md](uri.md) и дополнительные технические поля для клиента.
Важно: это соглашение **для клиентских приложений**. Сам `olcrtc` такой файл не читает и не обрабатывает.
---
## Назначение
Формат нужен для клиентских подписок:
- список серверов в одном файле
- метаданные подписки для UI
- метаданные отдельных серверов
- информация для автообновления подписки
---
## Общая структура
Файл читается сверху вниз и состоит из:
1. глобальных полей подписки с префиксом `#`
2. строк `olcrtc://...`
3. локальных полей конкретного сервера с префиксом `##`
Базовая схема:
```text
#name: ...
#update: ...
#refresh: ...
#color: ...
#icon: ...
#used: ...
#available: ...
olcrtc://...
##name: ...
##color: ...
##icon: ...
##used: ...
##available: ...
##ip: ...
##comment: ...
olcrtc://...
##name: ...
##comment: ...
```
---
## Глобальные поля подписки
Строки вида `#key: value` относятся ко всей подписке.
| Поле | Значение |
|------|----------|
| `#name:` | Имя подписки |
| `#update:` | Время последнего обновления в Unix time |
| `#refresh:` | Через какой интервал клиенту нужно обновлять подписку, например `5s`, `10m`, `6h` |
| `#color:` | Цвет подписки. Поле только для UI |
| `#icon:` | Иконка подписки. Поле только для UI |
| `#used:` | Сколько уже использовано, например `10mb/10gb` |
| `#available:` | Сколько доступно всего по подписке, например `1.1gb` |
`#available:` это именно значение на уровне всей подписки. Если клиент умеет считать остаток сам, он может использовать это поле как исходные данные или как отображаемую подсказку.
---
## Строки серверов
Каждая строка сервера содержит один `olcrtc`-URI в формате из [uri.md](uri.md):
```text
olcrtc://