Python3-реализация idec-ноды.

Andrew Lobanov 4d977b3cae Добавлена возможность загрузки файлов в фэхи из вебинтерфейса. 2 months ago
api 4d977b3cae Добавлена возможность загрузки файлов в фэхи из вебинтерфейса. 2 months ago
lib a7fea8e716 Убрал ленту. 2 months ago
tools dbb979be4d Скрипт загрузки файлов в фэхи теперь отображает имя файла и статус загрузки (OK или ERROR). 8 months ago
tpl 4d977b3cae Добавлена возможность загрузки файлов в фэхи из вебинтерфейса. 2 months ago
LICENSE 95115bc7a0 ДОбавлена лицензия. 10 months ago
README.md 0fc95d9ac7 Добавлена поддержка RSS. 6 months ago
fetcher.py 76695ffb62 * Исправлено помещение сообщения в ЧС оператором через веб-интерфейс. 7 months ago
iing.def.cfg 9ef7c78df2 Актуализирован README. 8 months ago
iing.py c06ecb1418 Добавлен фильтр для имён файлов в фэхах. 6 months ago
points.py fef48563d2 Исправлен критический баг в функции авторизации. 7 months ago

README.md

iing

iing — нода для idec-сетей нового поколения.

Нода поддерживает следующие стандарты и расширения:

  • метод /e;
  • метод /m;
  • метод /u/e (включая сокращённый индекс);
  • метод /u/m;
  • метод /u/point;
  • метод /x/c;
  • метод /list.txt;
  • метод /blacklist.txt;
  • метод /x/features;
  • метод /x/file;
  • метод /x/small-echolist;
  • метод /x/caesium (возвращает список эхоконференций в формате конфига для клиента caesium);
  • метод /f/e;
  • метод /f/f;
  • метод /f/p;
  • новый формат цитирования (с подстановкой имени или инициалов);
  • имена эхоконференций без индекса (точка в имени по прежнему обязательна);

При каждом запуске нода проверяет наличие всех необходимых директорий и файлов и, в случае отсутствия каких-либо позиций, создаёт их.

Конфигурирование

Пример файла конфигурации находится в iing.def.cfg и копируется в iing.cfg в случае отсутствия последнего. Формат файла очень простой: первое слово является ключом, в вся остальная строка — значением. Все строки, первые слова которых не являются ключевыми игнорируются при разборе.

Список ключей:

  • nodename: имя ноды, которое будет проставляться в поле адреса и отображаться в заголовке веб-интерфейса;
  • nodedsc: строчка-описание ноды;
  • nodeurl: URL ноды для использования в RSS;
  • echo: эхоконференция; данный параметр является составным: первое слово значения является названием эхоконференции, а остальная строка — её описанием;
  • fecho: файлэхоконференция; параметр задаётся аналогично параметру echo;
  • webinterface: включение/отключение веб-интерфейса ноды. Если параметр выставлен в 1 или не задан, то веб-интерфейс доступен. Во всех остальных случаях, он выключен;
  • background: имена графических файлов в директории lib/, разделённые запятой, которые будут выставляться в качестве фона страницы;
  • norobots: не имеет параметров; запрещает индексацию роботам поисковых систем;
  • registration: не имеет параметров; разрешает регистрацию поинтов через веб-интерфейс;
  • nosubscription: при наличии данного ключевого слова подписки в веб-интерфейсе не работают и список конференций берётся напрямую из конфига ноды.

Фетчинг

В директории tools/ есть фетчер. Для его работы необходимы конфигурационные файлы схожего с файлом конфигурации ноды формата.

Список ключей:

  • node: адрес ноды для взаимодействия со слешем в конце (для php-ноды он будет представлять собой что-то вроде http://node.example/ii-point.php?q=/);
  • echo: название эхоконференции (без описания);
  • fecho: название файлэхоконференции (без описания);
  • auth: строка авторизации (необходима для файлэх).

Фетчер необходимо вызывать из корневой директории iing с указанием файла конфигурации в качестве параметра. Например,

$ ./fetcher.py ./mira.cfg

points.txt

Формат файла, в котором хранится информация о поинтах следуюший:

hash:authstr:username:point, где

  • hash: хеш из логина и пароля для веб-интерфейса (см. функцию hsh(str) из points.py);
  • authstr: строка авторизации для работы клиента;
  • username: имя поинта;
  • point: номер поинта.

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

Для добавления поинта можно зайти на веб-интерфейс ноды и зарегистрироваться при включенном параметре registration или запустить points.py

$ ./points.py -u -p

Так же в points.txt имеется возможность устанавливать флаги для поинтов. Делается это добавлением пятого столбца к записи с перечислением флагов через запятую. На данный момент нода поддерживает только флаг "OP", включающий в веб-интерфейсе для этого поинта возможность удаления и помещения в чёрный список сообщение одной кнопкой.