XERVER

2025.06.23	v3.11

Конфигурация: исправлена ошибка, приводившая к невозможности использования
параметра "bind" в драйверах "iktc" и "itab".

2025.06.19	v3.10

iktc.so: предприняты меры по увеличению адресного пространства загружаемых
таблиц.

2025.02.28	v3.9

Изменён формат версии

2025.02.14	v3.09

Для idev.so реализована возможность снабжать сообщения штампом даты-времени.

2025.02.13	v3.08

prt11.so: ошибочный вызов функции diag_printf заменён на вызов макроса.

2025.02.09	v3.08

idev.so: добавлен механизм "отложенной аварии", как в xdevsvc v8.09.

2025.01.29	v3.07

1. Доделано недоделанное при добавлении параметра конфигурации "loglevel":
некоторые сообщения от IDEV переведены в категорию сообщений об ошибках,
как в версии для Windows.
2. Удалена поддержка параметров конфигурации:
	"idev.maxreq"
	"idev.delay"
При конвертации из .cfg или из .conf с CFVER отличным от текущего эти параметры
не вносятся в результирующий файл.

2025.01.23	v3.06

Добавлено: замена файла конфигурации как в v8.06.

2025.01.22	v3.05

Добавлен параметр конфигурации "loglevel".
Номер версии конфигурации изменён и стал равен 3.

2025.01.22	v3.04

Картинка pritok.svg заменена на pritok.jpg.

2025.01.22	v3.03

Добавлено: плагин http.so, как в windows.

2025.01.22	v3.02

Картинка sokrat.gif заменена на pritok.svg.

2025.01.20	v3.01

1. В логе микросекунды округлены в меньшую сторону, а не в большую, как раньше.
2. Исправлено: при преобразовании конфигурации из CFG в JSON больше не теряется
параметр idev.http.

2025.01.16	v3.00

Изменено: в API XDEV, при обращении к портам TCP-соединений, прямые ссылки на
структуры заменены на целочисленные идентификаторы. Предполагается, что это
предотвратит ошибочное использование удалённых кусков памяти.

2025.01.15	v2.21

Эта версия аналогична версии v2.19. Только удалены лишние отладочные сообщения.

2025.01.14	v2.20

Повышена частота вызова send_hmsg() для провоцирования повторного вызова.

2025.01.09	v2.19

Добавлены средства предотвращения повторного вызова send_hmsg().

2024.12.19	v2.18

Добавлены отладочные сообщения и затычки.
Вознесена молитва Меркурию.

2024.12.19	v2.17

Добавлена проверка на смену соединения при передаче сообщений по XDEV.

2024.12.18	v2.16

Добавлена проверка на ошибку передачи при передаче сообщений по XDEV.

2024.12.03	v2.15

Исправлено printf на diag_printf в файлах
	iktc.c
	idev-dev.inc
и не исправлено (намеренно оставлено) в файлах
	xerver.c
	idev-file.inc

2024.12.02	v2.14

Перехватываются только сигналы с действием по умолчанию TERMINATE. Это:
	SIGKILL
	SIGUSR1
	SIGUSR2
	SIGALRM
	SIGTERM
	SIGSTKFLT
	SIGVTALRM
	SIGPROF
	SIGIO
	SIGPOLL
	SIGPWR
Кроме сигнала SIGPIPE, который по-прежнему игнорируется.

2024.11.25	v2.13

Заблокирован сигнал SIGPIPE.

2024.11.21	v2.12.1

Изменено: теперь PID-файл создаётся опять до демонизации, а запускающий
процесс завершается с задержкой 1с.

2024.11.21	v2.12

На базе версии v2.9.
Изменено: теперь PID-файл создаётся до демонизации, а не после.

2024.11.20	v2.11.2

Временная версия, не использующая PID-файл.
Правда, из-за этого не работает ключ "--stop".

2024.11.20	v2.11.1

Временная версия.

2024.11.19	v2.11

Временная версия.
Изменено: при старте программы (с ключом --start) наличие PID-файла проверяется
сперва stat(), и лишь потом fopen().

2024.11.15	v2.10

Временная версия.
Изменено: место сохранения pid-файла изменено с
	/var/run/sokrat/pritoka/xerver.pid
на
	/run/sokrat/pritoka/xerver.pid
.

2024.11.14	v2.9

Добавлено: при получении сигнала номер этого сигнала записывается в лог.

2024.11.01	v2.8

Изменения при генерации конфигурации с нуля.

2024.10.30	v2.7

Прекращена поддержка системы Моторола.

2024.10.30	v2.6

Исправлено: ошибка чтения конфигурации iktc.
Исправлено: ошибочная попытка загрузить несуществующий файл xdevtcp.so.

2024.10.29	v2.5

Изменен алгоритм конвертирования конфигурации: введено правило: драйвер 'xdevtcp'
всегда присутствует в выходной конфигурации, даже если он отсутствует во входной
конфигурации.

2024.10.24	v2.4.0.5

Исправлена ошибка в idev.so, приводившая к зависанию при завершении процесса,
если в конфигурации было 0 серверов.
Оставлены отладочные сообщения о запуске и завершении внутренних потоков модуля.

2024.10.18	v2.4.0.3
2024.10.18	v2.4.0.2
2024.10.18	v2.4.0.1

Проверяется правильность параметров в файле sp.conf.

2024.10.18	v2.4

Проверяется правильность параметров в файле xerver.cfg.

2024.10.15	v2.3

Возвращена поддержка json-конфигурации.

2024.10.11	v2.2.4

Исправлены коды локаций файлов.

2024.10.11	v2.1.0.4

Исправлены коды локаций файлов для версии 2.1.

2024.10.10	v2.2.3

PRT11: изменено: степень болтливости некоторых сообщений
как в WINDOWS версии 7.06.4.

2024.10.01	v2.2.2

PRT11: исправлена незначительная ошибка.

2024.09.30	v2.2.1

PRT11: для шифрования используется внутренний ключ.

2024.09.24	v2.2

Отменена поддержка автоматического обновления.

2024.09.20	v2.1.0.3

Заблокировано использование json-конфигурации.

2024.09.18	v2.1.0.2

Доделки недоделанного в v2.1.0.1.

2024.09.18	v2.1.0.1

В конфигурацию добавлено поле "id" ко всем серверам.

2024.09.10	v2.1 <= v2.0

Добавлены средства для удалённого доступа к файлам конфигурации (через sp.dll)
(кроме удалённой перезагрузки).
Добавлены изменения в idev.so из v1.0.16.6-v1.0.16.8.

2024.09.06	v1.0.16.8

idev.so: Добавлено в лог: после строчки "req(...)" строчка "device id: ...".

2024.09.02	v1.0.16.7

idev.so: Изменен алгоритм процедуры check_dev_events().
Теперь посылается не один пакет за вызов, а все.

2024.08.28	v1.0.16.6

idev.so: Добавлены отладочные сообщения, содержащие ID прибора, отражающие
ход обмена по UDATA (011 приборы).

2024.06.21	v2.0

Переход файла конфигурации СП с расширения cfg  на  расширение conf.

2024.07.09	v1.0.16.5

Убавлено отладочных сообщений из модулей: hmsg, iktc, prt11.
В модуле iktc исправлено: выдача сообщения в syslog.

2024.06.13	v1.0.16.4

В модуле idev:
	добавлено: дополнительная обработка принятых пакетов UDATA.

2024.06.11	v1.0.16.3

В модуле idev:
	добавлены отладочные сообщения при обмене UDATA.
	исправлена ошибочка (там же).

2024.05.16	v1.0.16.3

Многочисленные изменения в модулях.
Поскольку предыдущее изменение в модуле itab показало нужный эффект,
аналогичные изменения произведены в модулях: iktc, prt11, upd, xdevtcp.

2024.05.16	v1.0.16.2

itab.so: попытка избавиться от зависания при попытке завершения.
По-прежнему выдаёт множество отладочных сообщений.

2024.05.16	v1.0.16.1

itab.so: добавлено множество отладочных сообщений в лог, для поиска
ошибки, приводящей к зависанию при попытке завершения.

2024.02.20	v1.0.16

Добавлено: при подтверждении сообщения в лог пишется запись об этом
с указанием идентификатора порта, с которого пришло подтверждение.

2023.11.16	v1.0.15.6

idev.so: добавлено: при редактировании таблицы устройств в лог вносится
запись о добавленных устройствах.

2023.11.13	v1.0.15.5

iktc.so: добавлено: при редактировании таблицы устройств в лог вносится
запись о добавленных устройствах.

24.10.2023	v1.0.15.3
		v1.0.15.2

Добавлено: upd.so - сервер автообновления.

06.10.2023	v1.0.15.1

idev.so: внесено исправление, которое надо было внести ещё в v1.0.7.0.

27.09.2023	v1.0.15

idev.so: Функция count_candidates() теперь считает только кандидатов онлайн.

12.09.2023	v1.0.14.1

idev.so: Доработка из версии 1.0.14 отменена. Доработано заново.

11.09.2023	v1.0.14

idev.so: доработан автомат передачи файлов с прибора на сервер.

05.09.2023	v1.0.13.1

iktc.so: увеличено количество буферов с 16 до 16К.

07.06.2023	v1.0.13

Повторены изменения из windows-версий 6.83-6.85:
iktc.so: добавлена поддержка квитируемых сообщений.
idev.so: возвращена поддержка параметра noreportportchange ("-np").
idev.so: добавлен параметр "-ni" - не рапортовать об изменении адреса.

07.04.2023	v1.0.12.1

idev.so: разрешена работа без файла таблицы (idev.tab).
При отсутствии файла таблицы idev.tab создаётся файл, содержащий 0 записей.

27.03.2023	v1.0.12.0

idev.so: затычка lansup заменена на реальный код.
Можно привязывать серверы к интерфейсам по IP-адресу.
Должно работать и отслеживать состояния интерфейсов.

27.03.2023	v1.0.11.1

idev.so: изменён смысл затычки lansup: теперь все адаптеры считаются
всегда готовыми к работе. Раньше было: все адаптеры считались всегда
неготовыми к работе.

10.02.2023	v1.0.11.0

idev.so: изменён критерий выдачи сообщений об изменении IP-адреса прибора.

09.02.2023	v1.0.11.0

idev.so: добавлена поддержка функции запроса списка приборов.

16.12.2022	v1.0.10.3

idev.so: удалено из лога сообщение об отсутствии пакетов (recvfrom() error 11,
осталось после исправления предыдущей ошибки).

06.12.2022	v1.0.10.2

idev.so: исправлена ошибка, проявившаяся после исправления предыдущей ошибки.

05.12.2022	v1.0.10.1

idev.so: исправлена ошибка, из-за которой принятый пакет нулевой длины
полностью завешивал дальнейший приём пакетов.

26.11.2022	v1.0.10.0

iktc.so: исправлены ошибки, приводившие к зависанию при завершении работы.

24.11.2022	v1.0.9.4

idev.so: время отсутствия приёма (v1.0.9.1) уменьшено до 2 минут.

22.11.2022	v1.0.9.3
21.11.2022	v1.0.9.2

idev.so: исправлены ошибки реализации v1.0.9.1.

16.11.2022	v1.0.9.1

idev.so: добавлено слежение за трафиком каждого сервера (сокета)
и переоткрытие сокета при отсутствии приёма 15 минут.

16.11.2022	v1.0.9.0

Добавлено: выдача сообщений о недостаточном/достаточном размере дискового
пространства для ведения журнала.

10.11.2022	v1.0.8.6

Исправлен номер версии :(

31.10.2022	v1.0.8.6

idev.so: Реализована синхронизация лога прибора с АРМ.

26.10.2022	v1.0.8.5

idev.so: Реализована синхронизация лога прибора с сервером подключения.

20.10.2022	v1.0.8.4

Дополнительный алгоритм модуля ведения журнала. Как в Windows версии 6.67.
При создании нового файла лога проверяется наличие свободного места на диске
не менее 1 Гигабайта. Если менее: в файл записывается сообщение о недостаточном
месте на диске, и ведение лога запрещается до следующего раза. Следующий раз
будет через сутки, или когда сегодняшний файл окажется удалён.

Добавлено как в Windows версии 6.68.
Периодически (раз в четверть часа) проверяется, если ведение лога
запрещено по причине недостаточного места на диске, то не стало ли оно
достаточным, и тогда ведение лога вновь разрешается.

04.10.2022	v1.0.8.3

Исправлен номер возвращаемой версии.

30.09.2022	v1.0.8.2

iktc.so: повторены изменения в windows версии v6.66: алгоритм определения
аварии ''нет трафика'' сервера отключается, когда число ТК меньше 5.

14.09.2022	v1.0.8.1

idev.so: повторены изменения в windows версии v6.65:
приняты меры к сокращению загрузки процессора.

idev.so: повторены изменения в windows версии v6.63:
изменено поведение при модификации таблицы загрузки. Теперь на
модифицируемых приборах, имеющих соединение, при изменении ключа шифрования
будет авария.

22.07.2022	V1.0.7.3

idev.so: повторены изменения в windows версии:
1) сообщение о появлении кандидата теперь содержит МАК-адрес;
2) функция idev_device_count теперь возвращает два счётчика (первый - полное
число приборов в таблице, второй - число кандидатов);
3) в сообщении PING от кандидата теперь ожидается дополнительно: MAC-адрес
(6 байт) и INFO (20 байт), именно в таком порядке.

19.07.2022	v1.0.7.2

idev.so: перед автосохранением таблицы приборов из неё удаляются <<кандидаты>>.

14.07.2022	v1.0.7.1

Повторены изменения windows-версии v6.61:
idev.so: задействован idevapi - набор примитивов для манипулирования
таблицей приборов.
idev.so: сохранение таблицы при изменении средствами idevapi.
idev.so: появилась возможность при загрузке таблицы указывать размер файла
таблицы. В предыдущих версиях размер файла мог только расти, но не уменьшаться.

30.06.2022	v1.0.7.0

Повторены изменения windows-версии v6.60:
idev.so: Добавлено: поддержка автосоединения.

30.03.2022	v1.0.6.0

Исправлена ошибка, приводящая к зависанию при инициализации idev.so.

30.03.2022	v1.0.5.7 - 1.0.5.9

Отладочные версии для поиска неисправности.

19.01.2022	v1.0.5.6

iktc.so: Исправлена ошибка: невозможно было задать значение deadtime <= 0.

27.12.2021	v1.0.5.5

Повторены изменения windows-версии v6.50:
idev.so: Добавлено: детектор аварийных направлений при старте.


16.11.2021	v1.0.5.4

Повторены изменения windows-версии v6.50:
idev.so: прогресс-индикатор загрузки файлов из приборов, так же, как раньше
было сделано загрузка в прибор.

18.10.2021	v1.0.5.3

Повторены изменения windows-версии v6.49:
iktc.so: обновление таблицы приборов прямо во время работы, без RESET.

13.10.2021	v1.0.5.2

Повторены изменения в windows-версии v6.48:
1. idev.so: исправлен вывод в лог при изменении таблицы.
2. iktc.so: добавлен вывод в лог при изменении таблицы, как в idev.so.

21.06.2021	v1.0.5.1

iktc.so: добавлена фича слежения за трафиком (как в win-версии 6.47).

17.06.2021	v1.0.5.0

1. iktc.so: портировано из windows-версии.
2. idev.so: перенесена фича из windows-версии v6.43:
	при обнаружении внезапного отсутствия регистрации прибора,
	если также была открыта сессия, то авария выдаётся не в тот же момент,
	а с задержкой в 10 секунд. Если за это время прибор снова откроет
	сессию, то авария вообще не выдаётся.
3. idev.so: перенесена фича из windows-версии v6.44:
	сообщения о прогрессе обновления прибора.

01.04.2021	v1.0.4.2

xerver: Изменено: в список путей для поиска core.so добавлено
"/opt/sokrat/pritoka/xerver".

18.03.2021	v1.0.4.1

xerver: Изменено: при использовании параметра "instance" путь для записи логов
формируется по другой формуле; вместо
	<log->path>/<instance>/xerver-<version>/<date>
теперь
	<log->path>/xerver-<version>/<instance>/<date>
по просьбе пользователей.

12.03.2021	v1.0.4.0

xerver: Добавлено: поддержка многоэкземплярности.
Опция командной строки --instance или -i с обязательным значением.

08.11.2020	v1.0.3.6

prt11.so: Добавлено: форсированный режим привязки сокетов.

27.05.2020	v1.0.3.5

idev.so: Добавлено: при загрузке таблицы перезапуск "мёртвого таймера",
который контролирует полное отсутсвие трафика.

25.05.2020	v1.0.3.5

idev.so: Добавлено: в статистику информация DNV.

23.12.2019	v1.0.3.4

idev.so: Добавлено: ограничение на время хранения принятого пакета в 40 сек.

23.12.2019	v1.0.3.3

idev.so: Исправлена ошибка, допущенная в v1.0.3.1 при добавлении новейшей
поддержки LOG.

06.12.2019	v1.0.3.2

prt11.so: исправления ошибок при работе с файлами. Аналогичны исправлениям
от 4/4/2019.

18.11.2019	v1.0.3.1

idev.so: добавлена новейшая поддержка LOG прибора.

31.10.2019	v1.0.2.19

idev.so: Изменен алгоритм именования файла статистики. В течение суток новая
статистика не затирает старую, а пишется в новый файл: xdevsvc_1,stat,
xdevsvc_2.stat и так далее.

02.10.2019	v1.0.2.18

xapi_io: исправлена ошибка при создании исполняющего потока, приводящая
к неконтролируемому расходу ресурсов программы.
idev.so: уменьшено количество отладочных сообщений о ходе обмена файлами
между клиентом и сервером.

01.10.2019	v1.0.2.17

xapi_io(): устранён внутренний буфер размером 1K.

26.09.2019	v1.0.2.15

idev.so: изменён алгоритм детектора трафика согласно вчерашнему TODO.

25.09.2019

TODO:
1) При проверке serinp разницу сделать знаковой, а не беззнаковой.
2) При проверке serinp время измерять в секундах, а не в миллисекундах.
3) Убрать киканье по каждому пакету, оставить только по запросу сессии.

23.09.2019	v1.0.2.12

Для отладки механизма SERINP.

12.09.2019	v1.0.2.11

Исправлена ошибка в модуле работы с INI файлами.

02.09.2019	v1.0.2.10

idev.so: Исправлена ошибка при формировании колонки "состояние сейчас".

30.08.2019	v1.0.2.9

idev.so: Исправлено: дата в имени каталога для создания файла "xdevsvc.stat"
исправлена с "после полуночи" на "до полуночи".

27.08.2019	v1.0.2.8

idev.so: Добавлено: в файл "xdevsvc.stat" добавлена колонка "состояние сейчас"
и добавлена строчка "итого".

26.08.2019	v1.0.2.7

idev.so: Исправлено: для создания файла idev.db выбирается каталог "data",
а не "conf", так как в каталоге "config" нет прав для записи.

23.08.2019	v1.0.2.6

idev.so: Обнаружены ошибки и запломбированы.
1) при сбросе контроллера заваливалась процедура приёма UDP пакетов;
2) при модификации таблицы девайсов заваливались (вызываемые по таймеру)
процедуры, использующие эту таблицу.

22.08.2019	v1.0.2.5

Убраны "printf" по всем файлам, кроме тех, которые вызываются при запуске.
xerver: Отменено закрытие стандартных файлов при запуске.
idev.so: скорректирован формат БД.

20.08.2019	v1.0.2.4

idev.so: Доделан алгоритм отбойника одинаковых сообщений: добавлена проверка
на локальность (все сообщения должны умещаться в 10 секунд).

12.07.2019	v1.0.2.3

idev.so: Убрана выдача сообщения о сбросе контроллера при сбросе контроллера.

28.06.2019	v1.0.2.0

idev.so: исправлена досадная ошибка, допущенная вчера при копировании текста.
idev.so: Добавлена добавка тоже из Windows-версии.

27.06.2019	v1.0.2.0

idev.so: Реализован режим работы linkoff. Перенесён из Windows-версии 6.32.

13.06.2019	v1.0.1.9

idev.so: Найдена и обезврежена ошибка при отслеживании появления и исчезновения
сетевых адаптеров.

Временная метка в лог файле приняла вид ЧЧ:ММ:СС.mmm (mmm - миллисекунды).

11.06.2019	v1.0.1.8

idev.so: Обработка ошибки в протоколе, из-за которой иногда неправильно
нумеровались команды.

11.06.2019	v1.0.1.7
10.06.2019	v1.0.1.6

Оптимизация использования процессоров.

06.06.2019	v1.0.1.5b
05.06.2019	v1.0.1.5a
05.06.2019	v1.0.1.5

Отладочные версии. Подробная информация в лог о выполнении команд.

25.04.2019	v1.0.1.4

Исправлено в модуле PRT11: права при открытии файлов на чтение.

04.04.2019	v1.0.1.3

Исправлено в модулях IDEV,ITAB: права при открытии файлов на чтение.
Исправлено в модуле ITAB: возможность загрузки больших таблиц (>64K).

29.03.2019	v1.0.1.2

Исправлено в модуле IDEV: права при открытии файлов *.DB.

29.03.2019	v1.0.1.1

Исправлено в модулях IDEV и ITAB: права при открытии файлов *.TAB.

29.03.2019	v1.0.1

Маска прав всех создаваемых каталогов изменена с 773 на 777.

28.03.2019	v1.0.0

27.03.2019	v0.02.4

Изменения в реализации критических секций (повторная входимость).
Исправления в модуле IDEV в процедурах файлового обмена и обновления.

15.03.2019	v0.02.3

Исправления и добавления не помню какие.

15.03.2019	v0.02.2

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

15.03.2019	v0.02.1

Добавлено: протокол обновления прошивок (не было сделано). 
Исправлено: при завершении программы об этом делается запись в лог.

12.03.2019	v0.02

Изменены пути:
- путь для сохранения лог-файла: "/var/log/sokrat/pritoka";
- путь для файлов конфигурации: "/etc/sokrat/pritoka";
остальные пути совпадают с каталогом где исполняемый файл.

Изменён путь для pid-файла: "/var/run/sokrat/pritoka".

Предприняты меры по предотвращению повторного запуска.


17.01.2019	v0.01.9

Добавлено: настройка пути для сохранения лог-файла берётся из файла
/etc/sokrat/pritoka.conf, секция [LOGS], параметр ALL_LOGS_PATH. Если такого
параметра нет, тогда как обычно: <путь запуска> + "/Logs".

16.01.2019	v0.01.8

Добавлена поддержка ITAB.

26.12.2018	v0.01.8

Найдена ошибка в модуле DX (RMPROXY).
Монолитная программа преобразована в многомодульную, наборную (как в Windows).
При этом исполняемый модуль стал состоять из двух файлов: xerver и core.so.
Модуль XDEVTCP пока оставлен в составе ядра.

25.12.2018	v0.01.7

Изменён код в модуле PRT11.
Исправлена ошибка в модуле PRT11.
Исправлена ошибка в модуле DIOC.

21.12.2018	v0.01.6

Добавлено RMPROXY.

14.12.2018	v0.01.5

Добавлено PRT11.

28.03.2018	v0.01.4

Исправлено ошибок. Изменено разной мелочи.

05.02.2018	v0.01.3

Изменён алгоритм работы демона.


31.01.2018	v0.01.2

Улучшен алгоритм генерации GUID.


30.01.2018	v0.01.1

Добавлены средства для предотвращения повторного запуска.
Добавлены средства для останова демона.
И ещё всякая мелочь.
Новый список поддерживаемых опций:
  --start         Запустить демона
  --stop          Остановить демона
  -q, --quiet     Не печатать в консоль ход инициализации
  -h, --help      Напечатать список опций
  --version       Напечатать версию программы
  --list-modules  Напечатать список встроенных модулей


29.01.2018	v0.01

XERVER -- порт сервиса XDEVSVC из win32 с урезанной функциональностью.
Отличия от оригинального XDEVSVC:
1) программа монолитная;
2) реализованы только модули XDEVTCP (связь) и IDEV (интернет-приборы).
3) технология instance не поддерживается.

Программа XERVER запускается как демон (с ключом "-d") либо как обычная
программа (без ключа "-d").
