Перечисляю несколько обстоятельств, на которые я наткнулся, разбирая работу кода. Пока думаю как лучше с ними поступить. Жду комментариев единомышленников. …
Главное, что меня побудило к собственноручной доработке программы "Web Proxy", это невозможность (в версии 2.0) прохождения двоичных данных из скриптов к посетителям сайта (например нельзя сделать графический счётчик посещений). Позже выяснился и второй недостаток – не проходит информация о посетителях сайта: referrer, IP, заголовки.
Спешу сообщить, что я уже нашёл пути преодоления обоих недостатков и сейчас думаю как будет правильнее вмешаться в код, сохранив по возможности всё, что задумал автор.
Что мне не понятно: 1) Может лучше сначала узнать наличие файла на диске, а если его нет – тупо переадресовать запрос к виртуалхосту? Виртуалхост, как правило, умеет обрабатывать ошибку 404, если и у него не найдётся ответ на запрос. 2) Как лучше – запросить сначала методом "HEAD" заголовок, а только потом запрашивать данные у виртуалхоста (тогда виртуалхост должен учитывать вероятность запроса только заголовка – например чтобы не считать посещение страницы дважды) или гнать все запросы через жёсткий вариант (который понимает бинарные данные) и уже потом только обрабатывать то, что пришло? Первый вариант мне кажется предпочтительным, т.к. двоичные данные будут запрашиваться только в том случае, когда виртуалхост соберётся их послать.
Предложения по новшествам: 1) Если всё-таки возможно методом XMLHttpRequest обращаться к сторонним сайтам (вроде есть уловка, т.к. другое приложение как-то собирает RSS-ленты), то можно сделать в настройках возможность хождения по внешним сайтам. 2) Если давать возможность ходить по другим сайтам, то включать это как возможность для администратора или как возможность для посетителей данного Opera.Unite-приложения? Мне кажется, что такие возможности нужно включать через стандартный интерфейс, подключать библиотеки – это несколько утяжелит итоговый скрипт. 3) Видел в комментариях чью-то просьбу о возможности предоставления доступа к нескольким хостам – насколько это нужно? Ведь есть возможность запускать по нескольку экземпляров UA-приложений – кому сколько надо. 4) Вероятно имеет смысл добавить "локализацию" (перевод интерфейса на разные языки) согласно спецификации Opera.Unite. 5) Как лучше выпустить программу после обработки – как "новую" или добиваться от администрации проверить и принять новую версию существующей? Пытаюсь найти ответ уже заранее, т.к. предвижу с этим проблему.
Завтра попробую обстоятельно пройтись по коду, прикинуть как можно было-бы написать с нуля аналог, чтобы понять все нюансы. Не понятны мне пара мест – с переменными is_static и is_parse.
Дополняю: 1) is_static помогает сразу отправить заголовок с MIME-типом и сразу прочесть текстовый файл, требующий парсинга. 2) is_parse требуется для подмены путей файлов в таблицах стилей и скриптах.
Дополняю снова: нашёл ещё один недостаток – не предполагается парольный доступ на сайт. Только свободный. Если возможно, то нужно добавить "парольный интерфейс". (как в фотоальбоме и файло-раздаче, например)