Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Русскоязычное Linux-сообщество ([info]lj_ru_linux)
@ 2012-11-08 07:35:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
squid 3.2 плюс NTLM и учет трафика.
Прочитав где-то что полную поддержку HTTP 1.1 разработчки замечательного прокси-сервера squid обещали в версии 3.2, решил я его попробовать. Надо сказать что меня очень порадовало наличие нормально работающего kerberos идентификации.
Но нашлась и ложка дёктя, а именно: слэш в логах, при NTLM и Basic аудентификации, стал прописываться двойной (\\), хотя внутрь сквида попадает одиночный.


Вот как это происходит в отладке, которую я немного добавил в исходники,  даты я убрал:
| auth_basic.cc(244) decodeCleartext: 'NDOM\username:ExamplePasswd'
| auth_basic.cc(204) authBasicAuthUserFindUsername: Looking for user 'ndom\username'
| auth_basic.cc(318) decode: Creating new user 'ndom\username'
| UserRequest.cc(85) module_start: 'ndom\username:ExamplePasswd'
| helperSubmit: ndom%5Cusername ExamplePasswd
| User.cc(339) addIp: user 'ndom\username' has been seen at a new IP address (192.168.100.20:60081)
| aclMatchUser: user is ndom\username, case_insensitive is 0
| prepareLogWithRequestDetails: aLogEntry.cache.authuser='ndom\username'
| FormatSquidNative: al.cache.authuser='ndom\username'
| FormatSquidNative: user='ndom\\username'

В итоге все приводит нас к файлу Quoting.cc в каталоге src/format, а именно к функции QuoteUrlEncodeUsername, которую мы и немного поправим дабы вернуть старый тип лога:
--- Quoting.cc.orig 2012-10-20 18:39:49.000000000 +0600
+++ Quoting.cc 2012-11-08 13:12:29.000000000 +0600
@@ -86,8 +86,11 @@ Format::QuoteUrlEncodeUsername(const cha
if (name[0] == '\0')
return NULL;

+#if !DEAD_USING_QUOTEMIMEBLOB
return QuoteMimeBlob(name);
-// return username_quote(name);
+#else
+ return username_quote(name);
+#endif
}

char *


Осталось добавить еще одну строчку в файл ( или-же  использовать флаги препроцессора):
--- Quoting.h.orig 2012-10-20 18:39:49.000000000 +0600
+++ Quoting.h 2012-11-08 12:41:34.000000000 +0600
@@ -1,6 +1,6 @@
#ifndef _SQUID_FORMAT_QUOTING_H
#define _SQUID_FORMAT_QUOTING_H
-
+#define DEAD_USING_QUOTEMIMEBLOB 1
namespace Format
{


Собственно все это нужно для корректной работы используемого нами учета трафика SACC, за что автору огромное спасибо, который я адаптировал под наши нужды и выложил на github. Приведенные изменения для версии 3.2.3 и Debian squeeze


(Читать комментарии) (Добавить комментарий)