Подсистема WWP служит для отправки сообщений пользователям IServerd через Web-форму. Пользователь при
этом получает стандартное WWP сообщение, содержащее само сообщение и ip адрес, с которого было отправлено
сообщение. При этом происходят следующие действия: пользователь вводит сообщение в форму на веб-сервере,
данные из веб-формы обрабатываются cgi-скриптом, который записывает данные в файл используя следующие
соглашения:
| Строка |
Назначение |
Пример |
| 1-ая | uin получателя | 6218895 |
| 2-ая | email отправителя | AVShutko@mail.khstu.ru |
| 3-ья | имя отправителя | Regressor |
| 4-ая | ip адрес отправителя | 10.10.10.2 |
| 5-ая+ | тело сообщения | texttexttext... |
После чего cgi-скрипт вызывает утилиту webpager с именем заполненного файла данных в качестве параметра.
Эта утилита формирует пакет данных используя внутренний системный протокол IServerd, проверяет данные и
отправляет этот пакет в сокет wwp_sock, в каталоге tmp. Далее пакет обрабатывается процессом SP, его данные
еще раз проверяются. Далее пакет преобразовывается в формат протокола V3 иотправляется через INC-канал к
пакетным процессорам. После обработки сообщение отправляется пользователю, либо (если пользователь
не подключен) записывается в базу данных отложенных сообшений.
Следует отметить, что утилита webpager после запуска открывает на чтение файл данных и сразу после этого
его удаляет, чтобы прочитать этот файл больше никто не мог. Cgi-скрипт использует пакет File::MkTemp для
создания временного файла.
Перед использованием в поставляемом cgi-скрипте post_mess.cgi необходимо изменить пути в первых
двух строчках. Это пути до html страниц, которые показываются после успешной (или неуспешной) посылки
сообщения.
Пример html кода веб-формы можно посмотреть в дистрибутиве IServerd (/doc/wwp_messages.txt) Вы можете
написать свою форму. Форма должна содержать поля uin, name, email, msg.
Внимание: В клиентах ICQCorp отсутствует диалоговое окно для wwp сообщений, поэтому при попытке
просмотреть пришедшее wwp сообщение клиент аварийно завершается с ошибкой нарушения прав доступа. Для
решения этой проблемы можно скачать пропатченного клиента с сайта
http://www.icq.khstu.ru либо изменить номер типа WWP сообщения с 0x0D на 0x01 в файле defaults.h.in и
перекомпилировать весь проект (make distclean;./configure;make all;make install).