Skip to content

Latest commit

 

History

History
281 lines (193 loc) · 12.3 KB

extensions.md

File metadata and controls

281 lines (193 loc) · 12.3 KB

Расширения IDEC

Здесь описаны расширения протокола, являющиеся основным отличием IDEC от ii. Многие из них реализовывать совсем необязательно.

Количество сообщений в эхоконференциях

Предназначен для отслеживания изменений в эхе и для отсеивания лишнего трафика. Обычное целое число. Важно: параметр неубывающий. Если в эхе удалили сообщения, то возвращаемое число не должно уменьшаться.

Метод

GET /x/с/<параметры>

Параметры

Единственный параметр метода - список, разделенный '/'.

Возвращаемое значение

Словарь "эха":"количество".

Пример

GET /x/c/test.14/im.100

test.14:221
im.100:1500

Push (пуш), обратная синхронизация

Предназначен для получения сервером (нодой) сообщений от другого доверенного авторизованного сервера. Может быть полезным для транзитных гейтов-посредников или серверов с неработающим фетчингом. Хоть пуш и является частью /u/, он остаётся необязательным расширением.

Проще говоря, push - это бандл наоборот. Если фетчинг скачивает бандлы, то push их проталкивает на другой узел. Сначала у push-ноды запрашивается список сообщений, которые уже есть в эхе, а затем через /u/push загружаются недостающие.

Метод

POST /u/push

Параметры в теле POST запроса:
  • nauth - ключ для авторизации на сервере (пароль)
  • upush - бандл сообщений
  • echoarea - эхоконференция, в которую помещать сообщения
Возвращаемое значение

Может отличаться, в зависимости от сервера, либо отсутствовать. PHP-нода возвращает message saved: ok для каждого сообщения в бандле в случае успешного принятия, либо error: <название ошибки> в случае неправильного формата сообщений или error: no auth, если неправильный пароль.

Список эхоконференций

Нужен для автоматического получения данных о наличии эх на станции. Может пригодиться для автоподписки на клиентах.

Метод

GET /list.txt

Возвращаемое значение

Словарь "эха":"количество сообщений":"описание эхи".

Пример

GET /list.txt

test.14:35:Тестирование и проверки
im.100:270:Болталка, общение на любые темы

Чёрный список

Номера тех сообщений, которые нода не принимает во время обмена и не показывает в эхоконференциях. Используется для чистки станции от спама/некорректных сообщений.

Метод

GET /blacklist.txt

Возвращаемое значение

Список номеров сообщений на каждой строке по одному.

Сокращённый индекс (расширенный /u/e)

Вариант схемы /u/e с указанием смещения и количества отдаваемых msgid. Полезно для экономии трафика, чтобы не скачивать абсолютно все сообщения с эхи, а только нужные.

Метод

/u/e/эха/эха/эха/.../<смещение>:<лимит> <Смещение> и <лимит> - целые числа. Смещение может быть отрицательным. Если параметры указаны ошибочно, выдаёт эхи целиком.

Возвращаемое значение

Список сообщений из заданных эхоконференций, с максимумом <лимит>.

Пример

GET /u/e/ii.test.14/test.15/1:2

ii.test.14
msgid
msgid
test.15
msgid
msgid

GET /u/e/ii.test.14/test.15/-5:5

ii.test.14
msgid
msgid
msgid
msgid
msgid
test.15
msgid
msgid
msgid
msgid
msgid

Список схем

Нужен, чтобы узнать, какие дополнительные возможности поддерживает станция.

Метод

GET /x/features

Пример

GET /x/features

x/c
list.txt
blacklist.txt

Полный перечень обозначения возможностей:

  • u/e — расширенная схема u/e
  • list.txt - список эхоконференций
  • blacklist.txt - чёрный список сообщений
  • x/file - файловые запросы
  • x/c - количество сообщений в эхе на ноде
  • f/ - файлэхоконференции

Размещение файлов

Сисоп складывает разные файлы себе на ноду, а поинты (либо просто желающие) могут их скачивать.

Методы

POST /x/filelist или GET /x/filelist/pauth

Получение списка файлов в формате <Имя>:<Размер в байтах>:<Описание>. Параметр pauth - строка авторизации. Если pauth проходит проверку (существует поинт с таким паролем), то к публичному списку добавляется также список скрытых от посторонних глаз файлов.

POST /x/file или GET /x/file/filename

Параметры для запросов: pauth и filename. pauth - строка авторизации (передаётся всегда в POST), filename - имя скачиваемого файла.

Если filename отсутствует, то выдаётся ошибка. Если параметр pauth верный (т.е. пароль верный), то это даёт пользователю возможность скачивать скрытые файлы. Если файл публичный, то pauth может быть и неверным. Внимание: POST-параметры имеют приоритет перед GET.

Примеры

POST /x/filelist pauth=12345

myfile.txt:421:Интересная информация
cats.jpg:63253:Скрытый файл

POST /x/file pauth=12345;filename=cats.jpg

или

POST /x/file/cats.jpg pauth=12345

<Содержимое скрытого файла>

POST /x/file filename=myfile.txt

или

GET /x/file/myfile.txt

<Содержимое публичного файла>

GET /x/file/cats.jpg

<Ошибка, т.к. пароль не указан, а файл приватный>

Файлэхоконференции

Механизм распространения файлов пользователями сети по принципам, схожим с распространением эхоконференций.

Имя файлэхи - от 3 до 120 символов: маленькие латинские буквы, цифры, символы подчёркивания, минуса и точки.

Вся синхронизация односторонняя. Две ноды просто собирают друг у друга файлы. Пойнты же, наоборот, публикуют свои файлы, которые нода добавляет в общую БД сети, одобряя их (или не делает, не одобряя).

Метод

GET /f/c/test1/test2

Параметры

Единственный параметр метода - список, разделенный '/'.

Возвращаемое значение

Словарь "файлэха":"количество".

Пример

GET /f/c/test1/test2

test1:32
test2:17
Список файлэхоконференций

Аналог /list.txt для файлэхоконференций.

Метод

GET /f/list.txt

Возвращаемое значение

Словарь "фэха":"количество сообщений":"описание эхи".

Пример

GET /f/list.txt

books:35:Книги
pics:270:Картинки
Чёрный список для файлэх

Хеши тех файлов, которые нода не принимает во время обмена и не показывает в файлэхоконференциях. Используется для чистки станции от спама/некорректных файлов.

Метод

GET /f/blacklist.txt

Возвращаемое значение

Список хешей файлов на каждой строке по одному.

Метод /f/e

Возвращает список файлов с метаинформацией для указанных файлэхоконференций.

Возвращаемое значение

Список файлов из заданных файлэхоконференций.

Пример

GET /f/e/файлэха1/файлэха2

файлэха1
fid:filename:size:address:description
fid:filename:size:address:description
fid:filename:size:address:description
файлэха2
fid:filename:size:address:description

Где

  • fid — file ID, представляющий собой хеш содержимого файла, сформированный по тем же правилам, что и msgid.
  • filename — имя файла, ограничено длиной 120 символов
  • size — размер файла в байтах
  • address — адрес отправителя файла
  • description — краткое описание файла, ограничено 1024 символами. Если в файл-строке и дальше встречаются двоеточия-разделители с информацией, то весь текст после них идёт в счёт description.

Отличить фэху от строчки файла очень просто по наличию ":". В имени файлэхи этот символ недопустим. Внимание: все поля, включая description, обязательны к заполнению.

Также метод поддерживает сокращённый индекс подобно расширенной схеме u/e. Например,

GET /f/e/fecho1/fecho2/-2:2

вернёт в индексе только последние два файла из указанных файлэхоконференций.

Метод

GET /f/f/fecho/fid

Возвращаемое значение

Возвращает файл из указанной файлэхоконференции с указанным файл ID.

Метод

POST /f/p

Публикует файл в файлэхе на узле.

Передаваемые параметры (заполняются все):

  • pauth — строка авторизации поинта
  • fecho — имя файлэхоконференции
  • file — отправляемый файл, имя файла максимально 120 символов латиницей; допустимы цифры, точки, нижние подчёркивания, дефисы.
  • dsc — описание файла, юникод