.:Публикации:. [www.karlson.ru]


Вперед: 2.2 Интерфейс к интернет-системе Вверх: Глава 2. Информационная система Назад: Глава 2. Информационная система   Содержание

2.1 Информационная система WebOS Frontpage

При создании информационной web-системы WebOS Frontpage было решено следовать следующим целям:
  1. предоставить удобную коммуникационную среду сотрудникам компании, использующей WebOS (здесь и далее: или любой другой группой пользователей),
  2. предоставить механизм работы с системными изменениями в компании,
  3. предоставить возможность интеграции других web-систем и удобную среду их разработки как в рамках единой системы разделения прав пользователей, так и вне ее,
  4. предоставить доступ к информационной базе компании,
  5. система должна предоставлять возможность работы с любого устройства подключенного к сети Интернет, с минимальными требованиями к технической базе клиента, обеспечивая так же удаленную работу сотрудника (актуальность этого направления показана, в частности, в статье Кожекина Н.Е. [7]),
  6. система должна быть легко настраиваемой и многоязыковой.
Функционально, эти цели в данной работе реализованы следующим образом:
Коммуникация.
Первая страница системы выводит все текущие новости компании. Любой пользователь системы может отправить новость, имеющую заголовок, содержание, автора и дату истечения срока публикации на первой странице. Все новости с закончившемся сроком публикации входят в архив, в котором реализован поиск. Пользователи могут редактировать и передавать в архив свои собственные новости, пользователи с правами администратора -- любые. Пользователь может удалить новость, только если дискуссия не была заведена (см. пункт дискуссия). Пользователи могут комментировать новости и комментарии к ним (часть дискуссии), также новость может служить предметом дискуссии.
Дискуссия.
Создается набор групп дискуссий по темам (категориям). Отличие от новости является именно в понятии к категорияк, которое имеет каждый элемент дискуссии, причем элемент дискуссии, являющийся ответом на элемент дискуссии наследует его категорию и может добавить свою дополнительно. (в текущей версии элемент дискуссия пока не реализован).
Запросы и предложения.
Система запросов и предложений предоставляет централизованный способ решения системных проблем, задания вопросов, сообщения ошибок и предложения изменения систем. Наиболее важным аспектом системы запросов и предложений является отслеживание, которое реализуется статусами запросов:
"новый"
-- создатель запроса только создал запрос, никаких других действий еще не предпринято,
"анализируемый"
-- один из пользователей (как из тех, кому был предписан запрос, так, возможно, и любой другой) принял запрос на анализ,
"решенный"
-- для проблем и вопросов было предложено решение, для запросов на изменение было реализовано решение, но система еще не изменена,
"закрытый"
-- для проблем и вопросов -- создатель запроса подтвердил удовлетворение решением, для запросов на изменение -- рабочая система была изменена.
В базе данных запросов и предложений также реализован удобный поиск.
Информационная база.
WebOS предоставляет простой доступ к другим web-системам путем простого меню, редактируемого через web-интерфейс. Страница ресурса состоит из названия, категории, краткого описания, и некоторого количества ссылок. Ссылка состоит из названия, краткого описания и адреса файла (как HTML, так и нет), а также порядка показа на странице. WebOS так же предоставляет доступ к страницам ресурсов, тоже полностью редактируемых через web-интерфейс, включая загрузку файлов. В WebOS интегрирована навигация, позволяющая иметь доступ к страницам ресурсов по категориям, также будет реализован поиск (в текущей версии страницы ресурсов еще не были реализованы).
Авторизация.
В системе предусмотрено три уровня прав:
  1. пользователь -- чтение и создание новостей, дискуссий, запросов, чтение страниц ресурсов; пользователь не видит меню для менеджера и администратора,
  2. администратор -- управление меню и пользователями, так же реализованное через web-интерфейс,
  3. менеджер -- управление страницами ресурсов.
Интеграция.
Система предоставляет окружение для работы других web-программ и их легкой интеграции.
Планирование.
Система предоставляет функции планирования событий и дел, отчетов по ним, а также простой календарь.
Языки.
На первой страницы системы работает переключатель языков системы. В параметрах конфигурации так же имеется возможность настроить на один из языков и отключить переключатель. В настоящий момент написаны файлы языков для русского и английского.
Это было реализовано программно благодаря разделению информационной системы WebOS Frontpage на несколько разнородных групп компонент.
  • Группа компонент 1 "ГРУППА УСТАНОВКИ" содержит пакеты (rpm6) для создания www-сервера, на котором будут функционировать системы использующие модуль. Основное требование к группе: все пакеты должны содержать такие скрипты, реализующие инсталляцию и деинсталляцию модуля, которые бы позволяли в любой момент добавлять, удалять или обновлять представленную данным пакетом компоненту, не нарушая целостности системы.
  • Группа компонент 2 "ГРУППА НАСТРОЙКИ" cодержит программу постустановочной настройки WebOS.
  • Группа компонент 3 - "ГРУППА ФУНКЦИОНАЛЬНОСТИ" содержит восемь модулей. Эти модули используются WebOS и всеми ее компонентами.
    1. Модуль работы с паролями - класс Htpasswd для работы с Unix-подобными файлами паролей. Так как в системе должна быть предусмотрена возможность регистрации новых пользователей, то необходимо заострить внимание на процедуре генерации паролей. Неверные решения этой задачи (основанные на применении генераторов случайных чисел) становятся пробелом в безопасности системы. Это происходит благодаря тому, что генераторы случайных чисел генерируют очередное случайное число на основании предыдущего 32-битного случайного числа. Следовательно энтропии в таком пароле будет меньше 32-бит и будет достаточно перебрать все возможные к затравкик для получения всех возможных паролей, которые может выдать такая программа. Использование функции randomize не помогает, если их часто в подобной программе вызывать (ибо основаны на измерениях показаний таймера, а эта величина имеет большую корелляцию между последовательными вызовами в программе, которая работает очень немного времени). Для получения криптографически стойких чисел необходимо привлечение аппаратуры, но, к счастью, измерения белого шума не единственный способ. В компьютере достаточно источников к настоящихк случайных чисел: клавиатура, мышь, ethernet и т.д. и т.п. Да, каждое из таких чисел не вполне случайно, но несколько БИТ энтропии в каждом таком событии есть. Можно оценить снизу это число, и смешать их, когда мы не знаем -- какие именно биты случайны (используя хеш-функции). Однако, все это уже проделано в ОС Linux и с /dev/random можно читать отличный к белый шумк. Конечно, программа будет работать не так быстро (получение криптографически стойких случайных чисел - дело непростое), зато количество энтропии в пароле будет пропорционально длине пароля. Получение такого пароля таким образом реализуется процедурой вида:
      #!/bin/bash
      LC_ALL=C
      ALLOWEDCHARS='0-9A-Za-z~!@#$%&*.'
      PASSWORD=''
      while [ "${#PASSWORD}" -lt 8 ] ; do
          CHAR=`dd if=/dev/random bs=1 count=1 2> /dev/null`
          if [[ "${CHAR}" == [${ALLOWEDCHARS}] ]] ; then
              PASSWORD="${PASSWORD}${CHAR}"
          fi
      done
      echo "${PASSWORD}"
      
      Отметим, что если из /dev/random вычерпывают информацию быстрее, чем она туда поступает, то чтение блокируется (поэтому использование /dev/random, что не всегда хорошо -- иногда приходится довольствоваться /dev/urandom и мириться с тем, что числа могут быть не вполне случайными).
    2. Модуль интернационализации (вспомогательный, требуется вышележащим модулям, но может использоваться и системами). Это очень простой модуль, задачей которого является обеспечение возможности интернационализации для других модулей системы. Фактически это просто класс, переменными которого являются просто строки языков.
    3. Модуль работы с базой данных (вспомогательный, требуется вышележащим модулям, но может использоваться и системами). Он используется для работы с базами данных абстрактно, то есть осуществляется использование одних функций для других уровней, чтобы они уже не зависели от того, какую из баз данных, поддерживаемых PHP мы используем.
    4. Модуль сессии. Сессия очень важное понятие для WebOS. Она не поддерживается в самом протоколе HTTP, поэтому для ее реализации требуется посылка специальной информации от клиента.
    5. Модуль аутентификации использует модуль работы с паролями или другие функции для проверки пароля и авторизации сессии. Авторизация делается средствами HTML форм, а не c HTTP authentication, так как:
      • в HTTP authentication нет понятия logout,
      • в HTTP authentication нет понятия expiration,
      • в форме мы не привязаны к паре логин/пароль, например, можно использовать номер покупателя и т.д.
      • в HTTP authentication есть опция Save Password, что не хорошо, если пароль ценен.
    6. Модуль работы с корзиной покупателя.
    7. Модуль использования прав. Этот модуль оперирует с информацией о правах пользователя на то или иное действие. Он работает с аутентифицированной сессией. Этот модуль считает уже известной информацию о том, какого класса права аутентифицированного пользователя. Заботу о том, как и где эти права хранятся, должна взять на себя использующая система.
    8. Модуль работы с информацией о пользователях. Это - к бессмертная сессияк.
    Эти восемь модулей позволяют реализовать 4 уровня безопасности.
    • Anonymous - сессия без авторизации (возможно и сессию не надо создавать).
    • Preauth - система работает на уровне безопасности Anonymous, но потом вызывает систему, работающую на более высоком уровне безопасности, чем preauth. Возможно использование модуля работы с корзиной покупателя.
    • Publicnetwork -- сессия+аутентификация. Возможно использование модуля работы с правами, если необходимо.
    • Strict -- реализуется как надстройка на Publicnetwork. Устанавливается secure соединение, после чего работает Publicnetwork. Правила установки соединения смотрятся по .htaccess, который создается скриптом из группы модулей 2.
    • Пятый уровень безопасности пока не реализован и концепция его пока не разработана. Это уровень Maximum. Ясно, что разработка такого уровня -- действительно сложная задача. Надо использовать библиотеку OpenSSL7 на сервере и разработать JavaScript8 модули для клиента, чтобы он мог подписывать свои сообщения. Свободно-распространяемых таких разработок пока не велось, а коммерческие стоят огромных денег.
  • Группа компонент 4 "ЯДРО" и все следующие группы построены как системы, использующих модули группы 3. Это подсистема установки подсистем, подсистема управления запроса (работа с ошибками, вопросами и предложениями по системе9, подсистема управления пользователями.
  • Группа компонент 5 "РАСШИРЕННЫЕ ВОЗМОЖНОСТИ" состоит из дополнительных подсистем: подсистема классификации информации, подсистема создания страниц пользователей, подсистема управления проектами, подсистема учета времени, подсистема планирования, подсистема общения пользователей, подсистема использования электронной почты, подсистема бухгалтерии и многое другое. То есть пятая группа реализует портал и виртуальный офис в одной системе.
Реализация всех подсистем происходит типовым образом, за счет реализации единой оболочки разработки в виде объектно-ориентированного класса на PHP. Пример:
<?php
page_open(array("sess" => "Example_Session"));

   require("frame.inc");

   class Main_Page extends Basic_Frame {
      var $menu_width = 15;
      var $show_menu = 1;
      var $boxes_width = 0;
      var $show_boxes = 0;

      function standard_init () {
	global $lang;
        $this->title = $lang->hello_world;
      }
	
      function generate_content() {
       global $lang;        
       echo $lang->hello_world;

      }	 
      
   }
?> 

<?php  
    $frame = new Main_Page; 
    $frame->standard_init(); 
    $frame->generate(); 
    page_close();
?>
При этом файл locale/en/lang.inc должен содержать строку:
...
$lang->hello_world = "Hello world!";
...
, а файл locale/ru/lang.inc ее русский перевод.
Вперед: 2.2 Интерфейс к интернет-системе Вверх: Глава 2. Информационная система Назад: Глава 2. Информационная система   Содержание

...домик на крыше...,поиск,гостевая книга,cv. Be free, use Linux!