Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Изменение сообщений об ошибках
 Сайт -> Форумы » Общие вопросы
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Ср, Ноя 10 2004 18:47 Цитировать |  |  | 

Собственно, сабж: речь пойдёт о том, как избавиться от страшных для психически-неуравновешенных личностей чёрно-зелёных сообщениях и заменить их чем-нибудь покрасивее. Обычно это делается для использования Прокса на сервере локальной сети, чтобы выдать WWW, скажем, любимым сотрудникам, но не пугать их.

Итак, варианты такие:

1. Править специально предназначенный для этого внешний файл Errors.css. В нём можно указать всякие цвета, отступы и границы, а также, для знатоков CSS, отключить видимость стандартных элементов (большинство покушается на лого и фон).

2. Изменить графическую начинку ошибок: ProxyLogo.jpg и Gradient.gif. Тут можно поизгаляться, вставив вместо лого символику компании (варварство и кощунство), а вместо фона что-нибудь посветлее. Фон также можно использовать для нанесения на него надписей (для особо пугливых), поясняющих положение вещей на родном языке.

3. Изменить файл программы Proxomitron.exe. HTML-код всех ошибок зашит в EXE в явном виде, так что его можно править без опаски (естествено, не вылезая за границу, изначально отведённую под эти данные).

Тут надо учитывать два момента: места там немного, а самих ошибок больше двух. Второй вопрос, насколько я смог на данный момент выяснить, решается только путём замены каждого фрагмента, относящегося к очередной ошибке. Первый (размер в файле под html-код) несколько проще: можно вставить вызов внешнего файла, а в нём уже разместить сколько угодно кода и текста.

Пример такой замены для ошибки "Host Name Lookup Failed":
-- Открываем EXE любым HEX-редактором.
-- Находим там фрагмент кода ошибки (в v4.5j это 0x29D58..0x29E3C).
-- Заменяем:
Код:
<span class='err1'>Host Name Lookup Failed</span><p>
The Proxomitron couldn't find the site named...<br>
<span class='err2'> %s </span><br>
Check that the name is correct. If so, the site may have changed or
may no longer exist.
на
Код:
<script>location.href="http://Local.ptron/err_hnlf.html?%s";</script>
(естественно, без сдвигов; лишнее заполняется пробелами).
-- Создаём в директории Прокса файл "\html\err_hnlf.html", в который запихиваем своё виденье того, как должно выглядеть сообщение об ошибке.

Что получилось в результате, можно скачать с форума CastleCops.
К началу Профиль Сообщение
Replay
Newbee
Newbee


Зарегистрирован: 03.03.2007
Сообщения: 15

СообщениеДобавлено: Вс, Апр 29 2007 14:01 Цитировать |  |  | 

chAlx ,
Скачал твой переделанный вариант, отлично. Но:

1) Может быть лучше вместо редиректа на страницу с ошибкой открывать ее во фрейме? Тогда адресная строка будет иметь нормальный вид (т.е. http://www.wrong_address.com), а не http://local.ptron/err_hnlf.html?www.wrong_address.com. Как считаешь?

2) Какие еще ошибки может возвращать Prox? За 4 года использования ничего кроме этой не встречал...
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пн, Апр 30 2007 09:29 Цитировать |  |  | 

Replay:

1. Идея интересная -- с удовольстствием посмотрю на реализацию ;)

2. Например, Error connecting to proxy.. Поищи в exe строку <span class='err1'>, получишь все варианты (даже больше;).
К началу Профиль Сообщение
Replay
Newbee
Newbee


Зарегистрирован: 03.03.2007
Сообщения: 15

СообщениеДобавлено: Пн, Апр 30 2007 16:23 Цитировать |  |  | 

chAlx ,

Реализовал. Proxomitron 4.5 (with customized error pages)

Ошибки вынесены в отдельные файлы:

err_400 - dns wrong address
err_502 - error connecting to a host
err_501 - method not implemented
err_404 - local file not found
err_ssl - ssl connection error

и стилизованы под ответы прокси сервера Squid...

Потестируйте чтоли ;)

Пока в качестве HREF'a на странице с ошибкой поставил "javascript:document.location.reload();" т.к. протокол то не всегда http.
Но вообще-то, желательно как-то перехватывать полный URL (т.е. www.host.ru/folder1/folder2/file1.html), а не ограничиваться только доменом (например юзер забрел куда-то в дебри сайта, вдруг коннект с серваком пропал, появилась ошибка - в итоге юзер потерял адрес).

Есть идеи как это реализовать?
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пн, Апр 30 2007 20:33 Цитировать |  |  | 

Если Прокс отдаёт по ошибке DNS доменное имя, а не весь URL -- ничего не поделаешь. Собственно, эта строка определяет предмет ошибки, а не размещение.
Для того и нужен фрейм, чтобы родной URL остался в строке адреса.
Скриптом можно из УРЛа родительского фрейма брать адрес.

Кстати, сайты с фреймами будут не всегда корректно работать.
К началу Профиль Сообщение
Replay
Newbee
Newbee


Зарегистрирован: 03.03.2007
Сообщения: 15

СообщениеДобавлено: Пн, Апр 30 2007 20:45 Цитировать |  |  | 

В чем некорректность может выражаться?
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пн, Апр 30 2007 22:27 Цитировать |  |  | 

Replay:
Цитата:
В чем некорректность может выражаться?

Сейчас любой ифрейм с запросом на другой сайт спокойно выводит ошибку Прокса в своих родных размерах. А твой вариант в этот ифрейм вставит свой фрейм, который что-то ещё вставит. Может и всё получится, но выглядит конструкция подозрительно..

Кстати, насколько я знаю, метод reload() без параметров может ничего не релоадить, а взять данные из кэша.
К началу Профиль Сообщение
Replay
Newbee
Newbee


Зарегистрирован: 03.03.2007
Сообщения: 15

СообщениеДобавлено: Пн, Апр 30 2007 23:40 Цитировать |  |  | 

chAlx ,
ИМХО проблем быть не должно, размеры фрейма относительные, так что разметка не поедет и даже если юзер нажмет на ссылку в странице с ошибкой рефрешется только iframe...

Зависит от настроек, у меня много где используется reload, пока из кэша страниц не брал. Есть другой вариант? Как иначе получить протокол URL'a?

P.S. Если кто-то приведет конкретные ошибки, подумаем над фиксом.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Вт, Май 01 2007 16:23 Цитировать |  |  | 

Replay:

У метода reload() есть параметр. Но всё же всегда хочется видеть нормальную ссылку, которую можно скопировать в буфер, открытьв другом окне или просто посмотреть. Может, можно write(document.location) в ссылку вставлять?
К началу Профиль Сообщение
Replay
Newbee
Newbee


Зарегистрирован: 03.03.2007
Сообщения: 15

СообщениеДобавлено: Чт, Май 03 2007 15:25 Цитировать |  |  | 

chAlx ,
write(document.location) будет показывать URL до страницы с ошибкой (т.е. http://local.ptron...)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Чт, Май 03 2007 22:45 Цитировать |  |  | 

Что-то я недопонял: почему document.location.reload() будет релоадить нормальный локейшн, а write(document.location) вставит ненормальный?
К началу Профиль Сообщение
PF4Public
Junior Member
Junior Member


Зарегистрирован: 01.05.2008
Сообщения: 26

СообщениеДобавлено: Сб, Июл 03 2010 02:33 Цитировать |  |  | 

Немного перехреначил разметку сообщения об ошибке. Теперь выглядит так:
Image
Image

Соотв, css можно поменять под свои предпочтения:

error.css

Код:
/* Proxomitron Error Message Style Sheet */

.err1{
   font-size:24pt;
   font-weight:bold;
   font-family: "Arial Black", Gadget, sans-serif;
}
body div p {
   color: #000;
   text-align: center;
}

.err2{
   font-size:16pt;
   color:#CC0;
   font-family: Verdana, Geneva, sans-serif;
}
.imgleft {
   min-height: 250px;
   float:left;
}

body{
  background-color:#FFF;
   color:#090;
}


Использованный гиф:
http://img16.imageshack.us/img16/6448/158pz.gif

Измененный exe
http://rapidshare.com/files/404589693/Proxomitron.exe.html
http://ifolder.ru/18402411
http://depositfiles.com/files/d3d8inftc
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3