Автор Тема: Premature end of script headers: deny.cgi  (Прочитано 14389 раз)

snAke666

  • Newbie
  • *
  • Сообщений: 103
Premature end of script headers: deny.cgi
« : Ноябрь 10, 2010, 08:16:53 am »
Здравствуйте уважаемые разработчики!

После установки версии STC 2.0.18 перестали запускаться скрипты blocked.cgi  limit.cgi    profil.cgi  deny.cgi   unknown.cgi, апач в логах пишет Premature end of script headers. Сравнил старые и новые скрипты и нашел разницу:

Раньше было
if ($use_init){

Теперь стало
if ($use_init and $user){

Если вернуть как было, то все начинает работать.
Может у меня каких настроек не хватает? Я даже пробовал на сервере статистики регистрироваться, но проблему это не решает.


slivarez

  • Administrator
  • Newbie
  • *****
  • Сообщений: 2468
    • http://stc.nixdev.org
Re: Premature end of script headers: deny.cgi
« Ответ #1 : Ноябрь 10, 2010, 08:48:16 am »
А запусти ка его из шела, ну просто:

/PATH/deny.cgi

че говорит? какая у тебя версия перла? А что перл скажет на вот этот тестовый скрипт:
#!/usr/bin/perl

if ($use_init and $user){
print "AA";
} else {
print "BB";
}
Проект STC обитает здесь:
http://stc.nixdev.org

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #2 : Ноябрь 10, 2010, 10:06:42 am »
Переменная $user не определена в этом скрипте. И не очень понятно откуда она может определиться. Соответственно приведенный скрипт выводит BB. Старый скрипт deny.cgi выводит 9 килобайт текста, а новый пару строчек:

./deny.cgi
<p align=center><font size=5 color=red></font><BR><font size=4 color=black></font><BR><font size=4 color=black></font></p><BR><br><br><br><center><font size="1">Powered by <a href=http://stc.nixdev.org/>stc-</a> &copy; 2004 STC Developers Team<br></font></center></body>

Версию перла не менял.
perl -v

This is perl, v5.8.8 built for i586-linux-thread-multi

Может эта проблема похожа на ту, которую мы тут обсуждали раньше?

http://stc.nixdev.org/bb/index.php?topic=97030.0

Но почему-то даже залогинясь в браузере в STC вышеназванные скрипты все равно не выполняются.

И мне кажется я понял почему так получается. $user в скриптах не будет определен никогда во время редиректа. Ведь обращение к апачу при редиректе идет с самого же сервера, а не из браузера пользователя, и соответственно на сервере в апаче никто не зарегистрирован.

Вот если залогититься в STC, а затем пойти на запрещенный ресурс, то страничка редиректа будет выглядеть как на первом скрине, а если жамкнуть куда-либо по ссылочкам, то интерфейс поменяется под залогинившегося в STC пользователя.

Не знаю, может я не прав.

И мне кажется я понял почему это работает у Вас. :) Наверное, Вы ходите в интернет с тойже машины, где и апач стоит и сквид. В этом случае да, проблем не будет. :) Угадал?

А вон еще че у меня преключилось. Помнится мы тут обсуждали раньше кой-какую доделку в STC, ее обещали включить в новый релиз http://stc.nixdev.org/bb/index.php?topic=97028.msg105183#msg105183, я все у себя сделал, понастраивал всякого и забыл благополучно, работает оно и работает. Обновил незадумываясь и ушел, а меня потом чуть не съели. :)
« Последнее редактирование: Ноябрь 10, 2010, 10:39:46 am от snAke666 »

slivarez

  • Administrator
  • Newbie
  • *****
  • Сообщений: 2468
    • http://stc.nixdev.org
Re: Premature end of script headers: deny.cgi
« Ответ #3 : Ноябрь 10, 2010, 07:14:27 pm »
Нет, я не хожу в инет с той же машины где стоит STC. Просто неопределенная переменная никак не должна вызывать Premature end of script headers ошибку, она для того в условии и стоит, чтоб определить существует она или нет.
Я посмотрю на работающей системе что к чему.

По поводу того кода, я его не добавлял, т.к. полного описания нету. Помимо правки кода скриптов, надо ли менять конфиг squidGuard?
Проект STC обитает здесь:
http://stc.nixdev.org

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #4 : Ноябрь 11, 2010, 09:33:19 am »
Если переменная $user не определена, то скрипт генерирует следующий код:

./deny.cgi
<p align=center><font size=5 color=red></font><BR><font size=4 color=black></font><BR><font size=4 color=black></font></p><BR><br><br><br><center><font size="1">Powered by <a href=http://stc.nixdev.org/>stc-</a> &copy; 2004 STC Developers Team<br></font></center></body>

Будет ли этого достаточно для корректного отображения странички через апач? Судя по ошибке какая-то проблема с неожиданным окончанием заголовка скрипта.

slivarez

  • Administrator
  • Newbie
  • *****
  • Сообщений: 2468
    • http://stc.nixdev.org
Re: Premature end of script headers: deny.cgi
« Ответ #5 : Ноябрь 12, 2010, 09:01:44 am »
Нет, не достаточно. Нашел баг, исправлю и седня ночью зарелизю.
Проект STC обитает здесь:
http://stc.nixdev.org

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #6 : Ноябрь 12, 2010, 09:19:47 am »
Благодарю! :)

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #7 : Ноябрь 12, 2010, 09:51:21 am »
По поводу скрипта процетирую из прошлого обсуждения:

Для того, чтобы в SG использовать разные настройки разрешений по отделам модифицированный скрипт создает в дополнение к allow.users - содержащего список всех разрешенных пользователей, файлы по шаблону o'номер отдела'.allow - содержащие список разрешенных пользователей отдела. В конфиге SG указываем в качестве src файл нужного отдела o'номер отдела'.allow и настраиваем правила фильтрации для него. Теперь работает управление по лимиту, блокировка, управление по времени отдельно по каждому отделу.
У нас в некоторых отделах некоторым пользователям открыт доступ в интернет, который ограничен по объему. При переборе таким пользователем заданного объема нежелательно блокировать его доступ к определенным сайтам.
Для решения такой задачи необходимо дополнительно разнести пользователей перебравших объем помимо файла deny.users по файлам отделов, например o'номер отдела'.deny. В SG настроить src для перебравших пользователей отдела и разрешить им доступ к определенным сайтам.

Продолжение в следующем посте. :)

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #8 : Ноябрь 12, 2010, 09:52:30 am »
Для того чтобы использовать эту возможность необходимо:

1. В stc.conf добавить переменную allow_deny_files_by_otdels для включения работы дополнительного блока при желании:

Код:
#TAG: Set 'allow_deny_files_by_otdels' to 'true' if you want STC to create
#files with allowed and denied users separate by departments to create access
#rules for each department in SquidGuard.
#default: allow_deny_files_by_otdels false

allow_deny_files_by_otdels true


snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #9 : Ноябрь 12, 2010, 09:54:41 am »
2. Код, который необходимо вставить в конец файла $sc_path/limit/allowusers.pl :

http://stc.nixdev.org/bb/index.php?topic=97028.msg105200#msg105200

Спасибо alexenin за содействие.
« Последнее редактирование: Ноябрь 12, 2010, 09:57:17 am от snAke666 »

slivarez

  • Administrator
  • Newbie
  • *****
  • Сообщений: 2468
    • http://stc.nixdev.org
Re: Premature end of script headers: deny.cgi
« Ответ #10 : Ноябрь 12, 2010, 04:23:53 pm »
Готово, 2.0.19 зарелизил, up2date пакет тоже готов. Твой патч туда тоже вошел.
Проект STC обитает здесь:
http://stc.nixdev.org

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #11 : Ноябрь 13, 2010, 12:51:02 am »
Пасиба! Щас поставлю, буду тестить. :)

Как приятно осознавать, что внес хоть какую-то лепту в такой классный проект. :)

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #12 : Ноябрь 13, 2010, 03:21:37 am »
Теперь как-то очень не красиво отображаются странички запрета, блокировки и т.д. Получается переменная $user все равно не определена.  Вот скрин от блокировочной странички

slivarez

  • Administrator
  • Newbie
  • *****
  • Сообщений: 2468
    • http://stc.nixdev.org
Re: Premature end of script headers: deny.cgi
« Ответ #13 : Ноябрь 15, 2010, 12:31:13 pm »
Теперь как-то очень не красиво отображаются странички запрета, блокировки и т.д. Получается переменная $user все равно не определена.  Вот скрин от блокировочной странички
главное что ошибку не выдает, остальное - косметика :) Это он тему не может подтянуть, т.к. юзера не знает. Посмотрю че можно сделать чтоб было красивее.
Проект STC обитает здесь:
http://stc.nixdev.org

snAke666

  • Newbie
  • *
  • Сообщений: 103
Re: Premature end of script headers: deny.cgi
« Ответ #14 : Ноябрь 15, 2010, 04:07:26 pm »
Если не секрет, зачем такое нововведение? При редеректе все равно ж юзер будет никогда не определен.