URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8166
[ Назад ]

Исходное сообщение
"perl lightsquid ip2name.squidauth % в нормальный вид"

Отправлено netc , 21-Мрт-09 14:17 
есть lightsquid, есть пользователи аутен-иеся через AD с русскими логинами (знаю, сам готов убить того, кто это допустил)

у lightsquid есть файлик

ip2name.squidauth:

Ребят мучаюсь уже целый день - ну не знаю я перла, помогите плиз


#contributor: esl
#specialy for squid with turned on user authentication
#simple version

sub StartIp2Name() {
}

sub Ip2Name($$$) {
  # $Lhost,$user,$Ltimestamp
  my $Lhost=shift;
  my $user =shift;
  $user    =URLDecode($user); #decode user name
  return $user if ($user ne "-");
  return $Lhost;
}

sub StopIp2Name() {
}

#warning !!!
1;

В этом файлике нужно сделать преобразование из:
      
      $user = "%d4%c5%cd%d0" - идут именно %-ы

получить при этом

      $user = "темп" обязательно в кодировке win1251

сделать это нужно в место этой строчки - это я проверял в течении всего дня ;)
$user    =URLDecode($user); #decode user name


как говориться надежда только на знатаков perl



Содержание

Сообщения в этом обсуждении
"perl lightsquid ip2name.squidauth % в нормальный вид"
Отправлено netc , 21-Мрт-09 15:33 
хотелось бы отметить, что lightsquid открываеться по умолчанию в браузере в кодировке windows-1251

как видно из исходного кода
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">

так вот, если браузеру приказать отображать страницу lightsquid в кодировке koi8-r, то становиться видно имя пользователя (темп), но ведь все остальное то портиться



"perl lightsquid ip2name.squidauth % в нормальный вид"
Отправлено lightsquid , 21-Мрт-09 21:11 
>хотелось бы отметить, что lightsquid открываеться по умолчанию в браузере в кодировке
>windows-1251

Откуда такая оригинальная информация ?
доки читать не пробовали ?
$lang="ru-koi8"; не пробовали ?
:)

>
>как видно из исходного кода
><META http-equiv="Content-Type" content="text/html; charset=windows-1251">
>
>так вот, если браузеру приказать отображать страницу lightsquid в кодировке koi8-r, то
>становиться видно имя пользователя (темп), но ведь все остальное то портиться
>


"perl lightsquid ip2name.squidauth % в нормальный вид"
Отправлено netc , 23-Мрт-09 09:01 
извиняюсь, просто уже запутался методом проб и ошибок ;)

>[оверквотинг удален]
>$lang="ru-koi8"; не пробовали ?
>:)
>
>>
>>как видно из исходного кода
>><META http-equiv="Content-Type" content="text/html; charset=windows-1251">
>>
>>так вот, если браузеру приказать отображать страницу lightsquid в кодировке koi8-r, то
>>становиться видно имя пользователя (темп), но ведь все остальное то портиться
>>


"perl lightsquid ip2name.squidauth % в нормальный вид"
Отправлено netc , 23-Мрт-09 09:30 
>Откуда такая оригинальная информация ?
>доки читать не пробовали ?
>$lang="ru-koi8"; не пробовали ?

блин а опера случайно вылетила, поэтому сейчас напишу быстро и мало

в /usr/local/share/doc/lightsquid нечего про lang нет
на сайте в разделе Doc тоже

упоминание есть только в конфиг файле, но ru-koi8 - нет ;) :

#language
#see `lang` folder (avaible: bg,eng,fr,hu,it,pt_br,ru,sp)
$lang                ="ru";


как предложение добавить в конфиг ru-koi8, т.е. сделать так:
#see `lang` folder (avaible: bg,eng,fr,hu,it,pt_br,ru,ru-koi8,sp)


после :
$lang                ="ru-koi8";
Все заработало так, как хотелось

Спасибо.


"perl lightsquid ip2name.squidauth % в нормальный вид"
Отправлено angra , 22-Мрт-09 04:49 
Строка "%d4%c5%cd%d0" в koi8-r, а не в cp1251
Предполагая, что URLDecode действует соответственно названию перепишите эту строчку так:
use Encode;
$user    =encode("cp1251",decode("koi8-r",URLDecode($user))); #decode user name