IDEC (ii-like Text Exchange Convention) - это технология (преемник протокола ii) построения фидообразных сетей для обмена сообщениями, подробно узнать о ней вы можете здесь.
В этом репозитории находится php-реализация "серверной" части IDEC и ii. Имеется поддержка как своего собственного формата базы данных, так и БД mysql (через mysqli), см. config.php
. Поддерживаются расширения /x/c/, /x/file, /list.txt, /blacklist.txt, расширенный /u/e (на отдачу), /u/push.
По-умолчанию хранится в файле config.default.php
, который при первом запуске любого скрипта, использующего API данной станции, копируется в config.php
. В дальнейшем для работы используется последний.
Рекомендуется назначить в php.ini или ещё где-нибудь путь для сохранения сессий, отличный от /tmp, для нормальной работы веб-интерфейса.
Поместить в одну директорию файлы ii-point.php, ii-functions.php, filter.php, transports.php, config.default.php (или config.php). Также надо будет прописать поинтов (пользователей) в конфиг. При такой установке можно отправлять и получать сообщения с помощью клиента. Для синхронизации нужен будет либо push-скрипт, либо отдельный фетчер.
Но для удобства использования лучше скопировать все файлы из репозитория, т.к. будет всё необходимое.
require("ii-functions.php");
msg_to_ii($echoarea, $message, $usersent, "myforum, 1", time(), $userget, $subject, $repto);
// $usersent - отправитель; $userget - получатель (или All); $repto - id сообщения, на которое отвечаем (можно передавать пустую строку)
Данная php нода поддерживает push-синхронизацию (когда другой узел закачивает сообщения на данный), а также fetch-синхронизацию (когда данный узел скачивает сообщения у другого) через webfetch.php, для использования которого надо создать рядом php скрипт примерно такого содержания
<?php
require("webfetch.php");
$fetchconfig=[
"http://your-station.ru/ii-point.php?q=/",
"echoarea1.10",
"echoarea2.14",
"myecho.2015"
];
fetch_messages($fetchconfig);
/* дополнительные параметры:
$one_request_limit=20 - количество сообщений в одном скачиваемом бандле
$fetch_limit=false - максимум сообщений в индексе (расширенный /u/e)
(подробности на странице Расширения в документации)
*/
?>
и настроить его запуск в cron.
Также здесь есть скрипт RSS/Atom граббера, который может импортировать ленты в эхоконференцию. Для его использования достаточно создать рядом php скрипт, написать туда
<?php
require("ii-rss.php");
ii_rss("feedname", "http://your-feed/adress", "echoname.2014");
/* дополнительно:
$include_link=true - оставлять ссылку на оригинальную новость
$post_old_feeds=true - при первом запуске запостить все старые новости в ленте
$point="sexyrobot" - от имени кого отправляем сообщение
*/
?>
и поместить его вызов в cron. Для хранения данных rss ленты требуется создать рядом каталог feeds.
Также есть скрипт ii2rss.php, который проделывает обратную работу - отдаёт rss-ленту эхоконференции. Принимает GET-параметр echo с названием нужной эхи.
Есть возможность игнорировать неправильные или плохие сообщения при синхронизации с другими станциями или с клиентами. Для этого есть файл blacklist.txt
, в который можно записывать msgid таких сообщений. Записывать в формате по хэшу на строку. Название файла меняется через конфиг.
Он задаётся в конфиге config.php, вместе с описаниями. Служит для автоматического доступа клиента к ресурсам сети. Также используется веб-интерфейсом. Образец списка:
$echolist=[
["pipe.2032", "Наша болталка"],
["ii.14", "Обсуждение сети"],
];
В случае большого количества сообщений стоит мигрировать на mysql. Алгоритм таков:
- Убедитесь в наличии расширения php mysqli, так как всё работает через него.
- Посмотрите, нет ли в каталоге
echo/
посторонних файлов (например,index.html
или что-то ещё). Если есть, временно уберите. - В конфиге в
$mysqldata
по образцу записываются нужные данные (база данных, логин, пароль, название таблицы). - Запускаете скрипт
mysql-migrate.php
, который создаст таблицу и начнёт сбрасывать по порядку содержимое каждой эхи. Если он прервался на полпути, запускаете снова (продолжит с того же места). - Прописываете mysql-транспорт в
config.php
(образец в комментариях). - Попробуйте переименовать каталоги
msg/
иecho/
, и смотрите, всё ли работает. В случае чего можно вернуться к использованию обычной базы через конфиг.
Эти шаги требуются для тех, кто пользовался mysql на версии ноды до 28.02.2016 и обновляется на актуальную версию. Новый mysql-транспорт отличается от старого тем, что не требует файлового индекса для эх.
- Убрать временно все скрипты синхронизации и фетчеры (возможно, остановить cron)
- Поменять название текущей таблицы в конфиге в
$mysqldata
на другое - В скрипте
mysql-migrate.php
раскомментировать строки с 5 по 15 и убрать строку 4 - В
$oldmysqldata
(файлmysql-migrate.php
) выставить параметры для предыдущей таблицы - Запустить
mysql-migrate.php
и ждать, пока не наполнится новая таблица - Удалить файл
old-mysql-transport.php
: он нам больше не понадобится. - Остальное аналогично предыдущему варианту миграции
- После проверки работы вернуть cron и гейтскрипты обратно