-
Перерыл исходники прокси-серверов, но ни в каком нет примера аутефикации пользователей
есть ли такие исходнки или описание как это сделать
-
В заголовке запроса должно быть 'Proxy-Authorization: Basic ' + EncodeBase64(ProxyUserName + ':' + ProxyPassword)
-
DVM , у меня есть прокси на него коннектятся пользователи и мне надо им либо дать интерет либо нет
и куда мне это нужно примостить 'Proxy-Authorization: Basic ' + EncodeBase64(ProxyUserName + ':' + ProxyPassword)
-
> Kav (19.01.08 16:22) [2]
Ты делаешь сам прокси или клиентскую программу, которая должна работать через прокси?
-
DVM,
Делаю сам прокси :)
-
Если ты делаешь HTTP прокси, то должен знать принцип его работы. Клиент делает HTTP запрос к прокси, прокси разбирает запрос и делает почти такой же, но уже от своего имени запрос к HTTP серверу.
Если нужен прокси с HTTP Basic авторизацией, то необходимым условием для работы клиента через такой прокси будет особым образом построенный HTTP запрос. В нем будут следующие изменения:
1) Вот обычный запрос безо всяких прокси, направленный непосредственно HTTP серверу:
FRequest := 'GET ' + Path + ' HTTP/' + HTTPVersion + CRLF +
'Accept: */*' + CRLF +
'Pragma: no-cache' + CRLF +
'Cache-Control: no-cache' + CRLF +
'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)' + CRLF +
'Host: ' + Host + ':' + inttostr(Port) + CRLF;
'Authorization: Basic ' + EncodeBase64(UserName + ':' + Password) + CRLF +
'Connection: Keep-Alive' + CRLFCRLF;
2) А вот так запрос будет выглядеть если он направляется проки серверу.
FRequest := 'GET http://' + Host + ':' + inttostr(Port) + Path + ' HTTP/' + HTTPVersion + CRLF +
'Accept: */*' + CRLF +
'Pragma: no-cache' + CRLF +
'Cache-Control: no-cache' + CRLF +
'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)' + CRLF +
'Host: ' + Host + ':' + inttostr(Port) + CRLF +
'Authorization: Basic ' + EncodeBase64(UserName + ':' + Password) + CRLF +
'Proxy-Authorization: Basic ' + EncodeBase64(ProxyUserName + ':' + ProxyPassword) + CRLF +
'Connection: Keep-Alive' + CRLFCRLF;
-
Причем в первом случае надо устанавливать соединение с самим сервером, а во втором с прокси сервером.
-
-
> я не очень сильно понимаю работу прокси сервера
так пойми. почитай RFC.
А то ты сейчас в ситуации вроде: "Мужики, я не очень умею ездить, куда тут ключ зажигания вставлять?"
-
код ужасный, писал наверно сиплюсоид
найди строку if Authenticate(MS) <> -1 и раскоментируй ее...
-
Slym © (22.01.08 10:42) [9]
код ужасный
не просто ужастный, а никчемный... месиво из 3х!!! сокетных компонент
-
DiamondShark,
RFC - что такое и где взять ? вв яндексе куда-то не туда послали :)
Slym,
Окей попробую
-
>> не просто ужастный, а никчемный... месиво из 3х!!! сокетных компонент
а есть исходники попроще ?
-
-
-
Slym
спасибо щас буду смотреть
-
А вот еще один вопрос: можно ли сделатьтак что если юзер авторизировался, его пароль держался бы пока он не завершит свой сеанс в Windows ?
-
Разобрался в моем коде?
Kav (24.01.08 10:01) [16]
держался
держался где?
В рамках 1 сеанса браузера с сервером пароль хранится в памяти браузера... Можно поставить "галку" сохранить пароль тогда он сохраняется гдето в системе...
-
Slym, чуть-чуть разобрался (просто времени свободного не было),
У меня проблема такая компы у меня как бы общие т.е. любой сотрудник организацию за него может сеть и поработать ( и мне нужно всети статиску сколько они мегабайт затратили на интернет и на каких сайтах побывали),
И в них есть учетная запись - читатель каждый входит в компьютер под ней
если поставить галку сохранить пароль, то при следущем входе в систему
он уже будет как бы введен, так что это не подходит
P.S. много уйдет времени если делать еще поддержку HTTPS ?
-
готовое не проще взять? этих считалок проксей как китайцев на планете... к томуже с кэшированием... и "умным" рефрешем
Kav (24.01.08 10:39) [18]
P.S. много уйдет времени если делать еще поддержку HTTPS ?
15 мин... она там практически реализована...
-
try
FRemoteSocket.Open(RemoteHost,'','',RemotePort);
if AnsiStartsText('CONNECT', Query.Strings[0]) then
begin
ClientSocket.SendLn('HTTP/1.0 100 Continue');
ClientSocket.SendLn('');
end else
begin
for i:=0 to Query.Count-1 do
begin
if not FRemoteSocket.Connected then break;
if Query.ValueFromIndex[i]='' then Continue;
FRemoteSocket.SendLn(Query.Strings[i]);
end;
FRemoteSocket.SendLn('');
end;
DoTunneling(ClientSocket,FRemoteSocket);
finally
FRemoteSocket.Close;
end;
-
Slym © (24.01.08 11:40) [20]
ClientSocket.SendLn('HTTP/1.0 100 Continue');сори...
ClientSocket.SendLn('HTTP/1.0 200 OK');
-
окей, попробую :)
-
Есть одна проблема, нельзя на yandex зайти в свой почтовый ящик через web интерфейс, с чем это может быть связано ?
-
имеется в виду через прокси
-
О! Я вижу, что нашел интересующую меня тему. Мне тоже нужна программка, но немного по круче. Я хочу сделать со своего кома прокси-сервер. Пробовал использовать разные программы, но так и не нашел такой, которая обеспечила бы все, что мне нужно. Может, кто поможет написать такую.
Итак, что мне надо:
1) аутентификация пользователей, включая их IP
2) возможность ограничения для каждого пользователя скорости входящего и исходящего потоков отдельно, а также смена этих значений в зависимости от количества подключенных пользователей и их активности
3) форма где можно будет увидеть кто с кокой скоростью в данный момент качает/отдает данные и сколько скачал/отдал за текущие сутки/месяц. + сохранить это в файл.
-
Удалено модератором
Примечание: дубль
-
2хацкер: почесать репу; потом купить старую железяку за смешное количество долларов; воткнуть туда, например, Linux; настроить iptables и squid; наслаждаццо. писать ничего не надо, честно.
-
Не-е-е. Я в линуксе вообще ноль. Мне надо бы что-то под ХР.
Прогу которую подарил Slym © думаю можно немного усовершенствовать для этих целей. Я вчера пробовал немного разобраться с ней. Оказалось, что менеджер закачек не качает. Выдает ошибку:
HTTP/1.0 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="ALTERNATIVE PROXY"
Это можно исправить?
-
натурально, авторизацию включить. ежели оная там верно реализована.
или всё-таки брать инструменты под задачу, а не пытаться придать задаче форму кактуса.
-
Сори, не досмотрел :)
Выдает socket error=10053
-
>[30] XakeP(27.01.08 15:08)
логично. ты не представился — тебя отстрелили в стратосферу.
-
Неа. Что-то не так. Я в менеджере задал имя пользователя и пароль!
-
и сам прокси в этом месте
raise ESocketError.CreateResFmt(@sWindowsSocketError,
выдает ошибку
-
ты будешь смеяться, но raise — оно для того и сделано, чтобы исключение кидать.
а что ты там и где задал — это только одна сторона. я ж сказал: корректность должна быть с обеих сторон. я лично код прокси не читал, но всё равно осуждаю.
-
Ну, если кто-то удосужился прочитать код – плиз хелп!
-
-
XakeP (27.01.08 14:33) [28]
Прогу которую подарил Slym © думаю можно немного усовершенствовать для этих целей.Совершенствуй :)... Этот пример был накидан за пару -тройку 15мин. пауз между работой... Это только пример! т.к. в нем замечен баг который позволяет работать только в рамках "быстрой" сети:
r:=Peer1.ReceiveBuf(Buf,Length(Buf));
if r=0 then exit;
s:=Peer2.SendBuf(Buf,r);
if r<>s
then
exit;
а должен терпеливо ждать для досыла и не истерично рвать соединение
-
да там, наверняка, и работа с заголовками вовсе отсутствует. я не читал, но сильно это подозреваю. %-)
-
Сейчас скачал squid под Windows, посмотреля на него и она мне не понравилась.
-
мне сквид и не под винду не нравится. он, как бы это помягче сказать… не для дома.
-
> ketmar (28.01.2008 09:44:40) [40]
А аутефикация она как бы тоже не для дома.
-
Мне аутефикация на работе к примеру нужна, мне каждый квартал нужно будет сдавать отчет по каждому пользователи сколько он в нете пробыл, по какие самы посещаемые сайты были и т.д. а в распорежении только один Windows Server 2003
Какие есть бестланые прокси, но и чтоб у них интерфейс присутствовал, и они могли сохранять отчеты по использованию интернет
-
-
Вот, вот а бесплатного опять ничего нету ...
-
3proxy поковыряй, он правда консольный, но довольно прост в освоении, по крайней мере, если у тебя нет специфических задач. И лог-анализатор имеется.
-
>[44] Kav (29.01.08 09:23)
squid. бесплатнее некуда.
-
3proxy попроще, хотя с кальмаром я дела не имел, но подозреваю, что, подобно большинству никсовых тулз, это тот еще изврат))
-
>[47] SpellCaster (05.02.08 11:17)
да, 3ара3а проще. и в настройке, и в прожористости, и вообще. сквид — тот ещё монстр.
только я не уверен, что 3ара3а умеет http-авторизацию. по ip фильтровать точно умеет, а вот http auth — фиг помнит.
-
Ммм... не знаю как насчет именно хттп, но авторизация там имеется по паролю, и в настройках ИЕ я это настраивал. А вот хттп или не хттп - это хрен хнает, но поскольку ИЕ умеет лазить только через хттп-прокси, логично предположить, что и авторизация такая же.
Плюс, сейчас через плугин можно делать виндовскую авторизацию, по учетной записи виндов.
-
Чтобы новую ветку не создавать, напишу тут :)
В общем, на основе TIdHTTPProxyServer сделал что-то вроде:
MyProxy:=TIdHTTPProxyServer.Create;
MyProxy.DefaultPort:=3128;
MyProxy.Bindings.DefaultPort:=3128;
MyProxy.OnConnect:=MyProxyServer.MOnQuery;
MyProxy.OnHTTPDocument:=MyProxyServer.MHTTPDocument;
MyProxy.Active:=true;
В надежде словить какие-нибудь входящие данные с AContext в TMyProxyServer.MOnQuery прописал:
procedure TMyProxyServer.MOnQuery(AContext: TIdContext);
begin
Writeln(AContext.Connection.IOHandler.ReadLn);
end;
И тут натыкаюсь на первые грабли - в консольку полученные от AContext данные вырисовываются нормально, НО после чего клиент (в данном случае браузер) в ожидании получения данных (т.е. страницы) "застывает".
Вопрос: что я делаю не так?
-
>[50] kernel © (2008-02-08 18:34:00)
>что я делаю не так?
наверное, документ не отдаёшь?
---
Understanding is not required. Only obedience.
-
> ketmar © (08.02.08 18:58) [51]
> ...
> наверное, документ не отдаёшь?
Ну так IdHTTPProxyServer сам же должен выдавать нужный документ?! Без AContext.Connection.IOHandler.ReadLn все работает. Или если я забираю IOHandler, то дальше мне самому что-ли нужно управлять выдачей документа?
-
а хрен его знает. я не зря вопрос поставил. жди, пока кто-то с опытом индейского секса придёт.
---
Understanding is not required. Only obedience.
-
установил 3proxy
а он не хочет запускаться пишет что-то про лицензию
3proxy tiny proxy server 3proxy-0.6b-devel (080207011317)
(c)2000-2007 3APA3A, Vladimir Dubrovin & 3proxy.ru
Documentation and sources:
http://3proxy.ru/Please read license agreement in 'copying' file.
You may not use this program without accepting license agreement
Как мне с этой лицензией согласиться ?!
-
>[54] Kav (2008-02-09 12:21:00)
а ты подумай немного. доки почитай. оно полезно.
хинт: конфиги, батенька, конфиги. написать и скормить. а то плохо работает.
---
Understanding is not required. Only obedience.
-
> kernel © (08.02.08 18:34) [50]
Проблему решил использованием IOHandler.Capture.
-
ketmar
Там все почти на аглийском мне тяжело разобраться!
Ну кто-нибудь подскажите
-
-
-
>[59] Kav (2008-02-11 13:46:00)
найми админа, не занимайся с нами церебральным сексом. тебе буквами по форуму написали, что конфиг надо. какие буквы вызывают затруднение?
---
Understanding is not required. Only obedience.