Позволяет создавать собственные пользовательские web-интерфейсы на любом языке OpenSCADA.
Лицензия:
GPL
Введение
Модуль WebUser предоставляет пользователю механизм создания Web-страниц, а также позволяет обрабатывать иные Web-запросы на одном из внутренних языков OpenSCADA, обычно JavaLikeCalc, и не прибегая к низкоуровневому программированию OpenSCADA.
Кроме принадлежности модуля системе OpenSCADA он также принадлежит и является модулем модуля транспортного протокола <HTTP>. Собственно, вызов WebUser производиться из Protocol.HTTP. Вызов производится посредством расширенного механизма коммуникации через экспортированные в модуле WebUser функции: HttpGet() и HttpSet().
Адресация страниц начинается со второго элемента URI. Это связанно с тем, что первый элемент URI используется для идентификации самого модуля пользовательского Web-интерфейса. Например URL: http://localhost.localdomain:10002/WebUser/UserPage можно расшифровать как вызов пользовательской страницы “UserPage” Web модуля WebUser на хосте localhost.localdomain через порт 10002. В случае отсутствия второго элемента URI, и указания отображать индекс пользовательских страниц в конфигурации, формируется индекс страниц (рис.1).
Рис.1. Индекс пользовательских страниц.
Главная вкладка конфигурации модуля (рис.2) содержит состояние модуля, предоставляет возможность выбора страницы по умолчанию и позволяет сформировать перечень пользовательских страниц.
Рис.2. Основная вкладка конфигурации модуля.
1. WEB - страницы
Модуль предоставляет возможность создания реализаций множества Web-страниц в объекте "Пользовательская страница" (рис.3).
Рис.3. Главная страница конфигурации пользовательской страницы.
Главная вкладка содержит основные настройки пользовательского протокола:
Раздел "Состояние" - содержит свойства, характеризующие состояние пользовательской страницы:
Включен - состояние страницы "Включена".
БД - БД в которой хранится конфигурация.
Раздел "Конфигурация" - непосредственно содержит поля конфигурации:
ID - информация об идентификаторе страницы.
Имя - указывает имя страницы.
Описание - краткое описание страницы и её назначения.
Включать - указывает на состояние "Включен", в которое переводить страницу при загрузке.
Все запросы к пользовательским страницам направляются в процедуру обработки запросов пользовательской страницы, которая представлена на вкладке "Программа" объекта страницы пользователя (рис.4).
Рис.4. Вкладка "Программа" объекта пользовательской страницы.
Вкладка процедуры обработки запросов к пользовательской странице содержит поле для выбора внутреннего языка программирования OpenSCADA и поле ввода текста процедуры обработки.
Для процедуры обработки предопределены следующие переменные обмена:
rez - результат обработки (по умолчанию - "200 OK");
HTTPreq - метод HTTP запроса (GET,POST);
url - URI запроса;
page - содержимое страницы Get/Post, как для запроса так и для ответа;
sender - отправитель запроса;
user - аутентифицированный пользователь;
HTTPvars - HTTP переменные в Object;
URLprms - параметры URL в Object;
cnts - элементы содержимого для POST в Array<XMLNodeObj>.
Общий сценарий запроса пользовательской страницы:
Внешняя сетевая станция формирует HTTP запрос с URI вида "/WebUser/<UserPage>" который попадает на транспорт OpenSCADA с значением поля конфигурации "Протокол" равного "HTTP".
Транспорт направляет запрос на модуль транспортного протокола Protocol.HTTP.
Модуль транспортного протокола, в соответствии с первым элементом URI, направляет запрос данному модуль.
Данный модуль выбирает объект страницы пользователя, которая указана во втором элементе URI.
Выполняется инициализация переменных HTTP-протокола для процедуры страницы:
HTTPreq - устанавливается в значение строки "GET" или "POST", в зависимости от типа запроса;
url - адрес запрашиваемого ресурса (URI);
page - содержимое передаваемой страницы для метода "POST";
sender - адрес отправителя запроса;
user - адрес аутентифицированного пользователя, если аутентификация имела место;
HTTPvars - разобранный перечень переменных протокола HTTP в виде свойств объекта;
URLprms - разобранный перечень параметров URL в виде свойств объекта;
cnts - разобранные элементы содержимого для POST в Array<XMLNodeObj>, с содержимым элементов в тексте и свойствами в атрибутах XMLNodeObj.
Вызов процедуры на исполнение, которая обработав запрос формирует содержимое страницы в "page" и результат запроса в "rez".
В завершении формируется ответ с кодом возврата HTTP из "rez" и содержимым из "page".