Начиная с версии Simple-Scada 2.6.9.2 имеется возможность настройки контроля целостности системы, а также контроля целостности проекта. В результате контроля, в журнал сервера Simple-Scada и в лог-файл будет выдано аварийное сообщение, если целостность файлов нарушена (либо контроль целостности не удалось выполнить). Сообщение будет содержать список файлов и причину неудачного контроля целостности.
Дополнительно, через скрипты можно реализовать выдачу аварийных сообщений, отправку уведомлений о нарушении целостности или выполнить другие требуемые действия. Для этого нужно создать новый скрипт с типом события "Контроль целостности", в котором можно выполнять необходимые действия при нарушении целостности.
1. Отправка сообщений о нарушении целостности системы и проекта в Telegram.
begin
// если это результат контроля целостности
if IntegrityEventData.IsResult then
// если контроль целостности удалось выполнить
if IntegrityEventData.ErrorCode = 0 then
begin
// если обнаружены изменения в файлах, то отправляем
// уведомление со списком изменений
if IntegrityEventData.Count > 0 then
SendTelegram(IntegrityEventData.Description, '');
end else
// если не удалось выполнить контроль целостности, то
// отправляем уведомление с текстом ошибки
SendTelegram(IntegrityEventData.Description, '');
end.
|
2. Проход по списку файлов, целостность которых была нарушена.
var
I: Integer;
aItem: TM_IntegrityItem;
begin
// если это результат контроля целостности
if IntegrityEventData.IsResult then
// если контроль целостности удалось выполнить
if IntegrityEventData.ErrorCode = 0 then
begin
// если обнаружены изменения в файлах, то
// проходим по каждому файлу в цикле
for I := 0 to IntegrityEventData.Count -1 do
begin
aItem := IntegrityEventData[I];
// здесь aItem содержит данные о файле,
// целостность которого была нарушена
end;
end;
end.
|
3. Выдача сообщений о запуске и результате контроля целостности.
var
aObject: string;
begin
with IntegrityEventData do
begin
if IsSystem then aObject := 'системы' else aObject := 'проекта';
if IsResult then
begin
// выдаём сообщение с результатом контроля целострости
if ErrorCode <> 0 then
AddMessage(Timestamp, mkAlarm, Description, True, False)
else
if Count > 0 then
AddMessage(Timestamp, mkAlarm, 'Нарушена целостность ' + aObject + '! Изменено файлов: ' + IntToStr(Count), True, False)
else
AddMessage(Timestamp, mkMessage, 'Выполнен контроль целостности ' + aObject + '.', True, False);
end else
// выдаём сообщение о старте контроля целостности
AddMessage(Timestamp, mkMessage, 'Запущен контроль целостности ' + aObject + '.', True, False);
end;
end.
|
4. Выдача сообщений только о нарушении целостности.
Данный код выдает только сообщения о нарушении целостности. Сообщения об успешном контроле и сообщения о запуске контроля не выдаются.
begin
with IntegrityEventData do
if IsResult then
if ErrorCode <> 0 then
AddMessage(Timestamp, mkAlarm, Description, True, False)
else
if Count > 0 then
if IsSystem then
AddMessage(Timestamp, mkAlarm, 'Нарушена целостность системы! Изменено файлов: ' + IntToStr(Count), True, False)
else
AddMessage(Timestamp, mkAlarm, 'Нарушена целостность проекта Изменено файлов: ' + IntToStr(Count), True, False);
end.
|