angel2s2 / sams2

Automatically exported from code.google.com/p/sams2
GNU General Public License v2.0
1 stars 0 forks source link

(Trac:527) Русские имена прользователей и имена пользователей с пробелами #520

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
(Trac:527) Originaly reported by andrewgaw@mail.ru on 2010-10-15 16:12:52

Вообще говоря, это относится как к 
редиректору sams2, так и парсеру логов.

Итак, проблема:
Система Windows позволяет создавать 
пользователей с русскими именами и с 
пробелами в именах пользователя. В 
результате имеем следующую картину:
{{{
[sams@proxy squid]wbinfo -u
....
DOMAIN\логин а б
....

[sams@proxy squid]grep "acl Sams2" squid.conf
.....
acl Sams2Template4 proxy_auth DOMAIN\логин а б
.....

[sams@proxy squid]grep DOMAIN /var/log/squid/access.log 
.....
123456.789     68 192.168.x.x TCP_HIT/200 23979 GET 
http://www.site.ru/1169974.jpg DOMAIN\%d0%82%d0%ba%d0%b2%d0%ae NONE/- image/jpeg
.....
}}}

В таком-же виде (DOMAIN\%d0%82%d0%ba%d0%b2%d0%ae) squid 
передает имена пользователей и для 
редиректора.

Результат: Редиректор не находит в БД 
пользователя (и, соответственно, не 
пропускает) с русскими буквми в логине, а 
парсер не может собрать для таких 
пользователей статистику.

Предлагаю решение: прилагаемый патч :-). 

Описание решения: Перед поиском 
пользователя в БД, имя пользователя 
преобразуется функцией url_decode, заменяющей 
"+" на " ", а последовательности "%хх" на символ 
с кодом хх. Код функции взят тут: 
[http://www.geekhideout.com/urlcode.shtml 
http://www.geekhideout.com/urlcode.shtml][[BR]]
На текущий момент, это решение работает на 
моем боевом сервере примерно месяц.
[[BR]]

Минусы решения: Функция написана на С, а не 
С++. Непонятно можно ли использовать этот 
код под лицензией GPL. Исходя из этого, 
возможно придется эту функцию переписать.

О своей системе:[[BR]]
sams2-b2[[BR]]
кодировка консоли, samba и web: utf8[[BR]]
apache: 2.2.3[[BR]]
php: 5.1.6 [[BR]]
samba: 3.0.33[[BR]]
squid: 2.6.STABLE21

Original issue reported on code.google.com by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by chemerik@mail.ru on 2010-10-18 21:26:12:

если не ошибаюсь, примерно так работало в 
sams 1.x

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by blaze@nixdev.net on 2010-10-19 10:12:22:

Replying to [comment:1 DmitryChemerik]:
> если не ошибаюсь, примерно так работало в 
sams 1.x

Посмотрел исходники SAMS 1.0.5. Действительно, 
так и работало в SAMS 1, хотя конечно 
реализация функции url_decode другая.

Можно ли надеятся, что такая же 
функциональность будет и в SAMS2?

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by chemerik@mail.ru on 2010-10-19 22:20:02:

наверно сделаю на этой неделе

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by chemerik@mail.ru on 2010-10-21 23:42:29:

наложил патч с url_decode, русские логины юзеров 
из access.log заносятся в базу правильно. 
доступно в rev. 897
авторизация пользователей с рускими 
логинами в AD тоже вроде работает нормально.

проверяйте.

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by chemerik@mail.ru on 2010-10-21 23:42:59:

да, еще забыл поблагодарить за патч :)

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by blaze@nixdev.net on 2010-10-22 11:42:26:

Replying to [comment:5 DmitryChemerik]:
> да, еще забыл поблагодарить за патч :)

И Вам спасибо :-)

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by blaze@nixdev.net on 2010-10-25 15:13:32:

немного переписал функцию, чтобы она была 
более устойчива к утечкам памяти и 
соблюдался общий стиль кодирования. 
Изменения в [899], если не понравится - можете 
откатить.
В любом случае, этот патч не исправляет 
проблему с 
{{{
[sams@proxy squid]grep "acl Sams2" squid.conf
.....
acl Sams2Template4 proxy_auth DOMAIN\логин а б
.....
}}}

в этой строке должен быть закодированный 
логин или нет?

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by blaze@nixdev.net on 2010-10-25 17:03:25:

Replying to [comment:7 mclight77]:

> в этой строке должен быть закодированный 
логин или нет?

В этой строке логин должен оставаться 
незакодированным, с другой стороны, в этой 
строке возникают проблемы описанные мной в 
[http://sams.nixdev.net/ticket/476 Ticket #476]

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16

GoogleCodeExporter commented 9 years ago
Commented by chemerik@mail.ru on 2010-10-28 22:25:09:

>> В любом случае, этот патч не исправляет 
проблему с
>> acl Sams2Template4 proxy_auth DOMAIN\логин а б

в этом случае просто надо использовать 
домен по умолчанию.

Original comment by bl...@nixdev.net on 5 Jun 2011 at 8:16