![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Proxy & TIdFTP [D6, 2000]
workbench © (2008-09-29 09:35:00)Здравстуйте. У меня компонент TIdFTP c proxy работать отказывается (без proxy работает), вот здесь:
http://www.indyproject.org/KB/index.html?tidftpsocksproxy.htm
нашёл возможное решение, приведу что там написано:
"For Indy 9.0
1. Create an IOHandler such as TIdIOHandlerSocket or TIdSSLIOHandlerSocket and assign the TIdFTP.IOHandler property this.
2. Set the TIdFTP.Passive property to true.
3. Create a TIdSocksInfo object and assign it to the IOHandler's SocksInfo property.
4. Set the TIdSocksInfo properties as required. "
Сделал всё как написано, однако всё равно не работает, до того как это попробовал вылетала ошибка 10065 "No route to host", а после так это написал попытка соединения (FTP.Connect(true, timeout)) просто слетает по таймауту(((
Подскажите, плз, что не так делаю (как заюзать proxy "в связке" c TIdFTP)?
workbench (2008-09-29 12:25:00) [21]Да, локальный (SQUID)
Сергей М. (2008-09-29 12:16:00) [22]
> workbench (29.09.08 11:59) [18]
Прокси локальный ?
workbench (2008-09-29 11:59:00) [23]
> Сергей М.
попробовал - "замирает" на GetResponse([220]), соот-но если поставить ReadTimeout, то он "по нему" и "срабатывает".
procedure TIdFTP.Connect(AAutoLogin: boolean = True;
const ATimeout: Integer = IdTimeoutDefault);
var
TmpHost: String;
TmpPort: Integer;
begin
try
//APR 011216: proxy support
TmpHost:=FHost;
TmpPort:=FPort;
try
if (ProxySettings.ProxyType > fpcmNone) and (Length(ProxySettings.Host) > 0) then begin
FHost := ProxySettings.Host;
FPort := ProxySettings.Port;
end;
inherited Connect(ATimeout); // проходит вроде нормально
finally
FHost := TmpHost;
FPort := TmpPort;
end;//tryf
GetResponse([220]); // вот здесь и останавливается
Сергей М. (2008-09-29 11:47:00) [24]
> получается через Indy не получится?
>
хз..
Но комментарий этот индейцы не просто же так влупили ..
Правда, из него, не понятно, то ли режим этот буде реализован не раньше чем в 10-ке, то ли он уже реализован и в 10-ке планируется его поддержка..
Попробуй отррассировать пошагово логику коннекта в этом режиме - исходники индейские открыты ведь ..
brother (2008-09-29 11:34:00) [25]> запросто, если юзвер плохой)))
если логин плохой)
workbench (2008-09-29 11:33:00) [26]
> Сергей М.
У меня версия Indy 9.0.14, комментарий такой же стоит... то бишь получается через Indy не получится?
workbench (2008-09-29 11:27:00) [27]
> brother
а почему плохой, чем собсно отличается ftp-клиент Indy от какого-либо другого? или шутите?
вот я попробовал исп-ть WinInet, написал следущее:
var
hSession, hConnect: HINTERNET;
FtpDir, FTPFileName: string;
begin
hSession := nil;
hSession := InternetOpen(nil,
INTERNET_OPEN_TYPE_PRECONFIG or
INTERNET_OPEN_TYPE_PROXY,
nil{PChar('192.168.0.254')}, nil, 0);
if not Assigned(hSession) then
begin
showmessage('InternetOpen error: ' + inttostr(GetLastError));
Exit
end;
hConnect := nil;
hConnect := InternetConnect(hSession,
PChar('www.farmk.nnov.ru'),
INTERNET_DEFAULT_FTP_PORT,
PChar('...'), PChar('...'),
INTERNET_SERVICE_FTP,
INTERNET_FLAG_PASSIVE, 0);
if not Assigned(hConnect) then
begin
showmessage('InternetConnect error: ' + inttostr(GetLastError));
Exit
end;
в InternetOpen пробовал разные комбинации:
dwAccessType
только INTERNET_OPEN_TYPE_PRECONFIG,
только INTERNET_OPEN_TYPE_PROXY,
потом оба флага ставил
lpszProxy:
так пробовал 192.168.0.254 и так 192.168.0.254:8080
lpszProxyBypass не трогал, стояло nil
И вот что получается:
InternetOpen нормально проходит
InternetConnect всё время выдаёт ошибку - 12029, в инете нашёл только вот это про неё:
The "ERROR_INTERNET_CANNOT_CONNECT" error occurs when you send Web requests by using NTLM authentication in Windows 2000 ( http://support.microsoft.com/kb/331862)
Винда у меня хоть и старенькая (Win2000), но SP стоит 4-й
Мастера (<с надеждой>), это о чём-то новом говорит?
Сергей М. (2008-09-29 11:16:00) [28]
> в настройках TCP/IP во вкладке общие был убран "Основной
> шлюз"
Шлюз имеет отношение к сетевому уровню, а не к прикладному.
Если целевой хост (в дан.случае хост, на котором активен интересующий прокси-сервис) находится в другой подсети, то указание шлюза обязательно.
> я уже просто стал перебирать варианты
А не надо их перебирать.
Ты же сам сказал, что сторонние клиенты успешно работают при опции "HTTP-proxy с поддержкой FTP", значит и твой клиент тоже должен использовать ProxyType = fpcmHttpProxyWithFtp.
Другой вопрос, что в 9-ке это м.б. не реализовано (проверяй сам - сравнивай с 10-кой)
В 10-ке в исходниках IdFTP имеется вот такой комментарий:
fpcmHttpProxyWithFtp, //HTTP Proxy with FTP support. Will be supported in Indy 10
brother (2008-09-29 11:09:00) [29]> а может ли меня сам proxy "не пускать"?
запросто, если юзвер плохой)))
workbench (2008-09-29 10:59:00) [30]пример такой потому что я уже просто стал перебирать варианты (что пример некорректный в данном случае - согласен, извините), однако же, "сути" это не меняет, Indyк TIdFTP у меня упорно не хочет работать через прокси (св-во TIdFTP.ProxyType перепробовал во всех вариантах)...
вот ещё пара слов о том что было сделано для тестирования с прокси:
в настройках TCP/IP во вкладке общие был убран "Основной шлюз", только это. Это может хотя бы подтолкнуть к каким-либо намёткам? Хотя вряд ли... IE, сторонние FTP работают нормально.
Для "чистоты эксперимента" создал новый appl с одним единственным TIdFTP, прописал все параметры - опять нихт, либо ошибка 10065 (если TIdFTP.ProxyTypy), либо "Read Timeout" (это на TIdFTP.Connect если TIdFTP.ProxyTypy другой), а может ли меня сам proxy "не пускать"?
Сергей М. (2008-09-29 10:44:00) [31]
> workbench (29.09.08 10:39) [9]
>
>
Ну так а причем здесь тогда пример для socks-прокси, если сторонний клиент на самом деле использует не socks-, а http-прокси ?
workbench (2008-09-29 10:39:00) [32]
> Сергей М. ©
второе, я указываю адресс\порт и способ соединения: "HTTP-proxy с поддержкой FTP"
Сергей М. (2008-09-29 10:31:00) [33]
> сторонний FTP-клиент если proxy прописать нормально работает
Именно через тот же socksproxy ?
Или все же httpproxy ?
workbench (2008-09-29 10:21:00) [34]
> Сергей М.
Дык, я вот пробовал то что тут:
http://www.indyproject.org/KB/index.html?howdoiuseaproxywithindy.htm
написано, всё равно не хочет, сторонний FTP-клиент если proxy прописать нормально работает(((
Сергей М. (2008-09-29 10:11:00) [35]
> где-то proxy есть
Даже если он есть, он не обязан быть именно socksproxy
workbench (2008-09-29 09:51:00) [36]
> brother
Да я пинговал, всё нормально, 4 запроса - 4 ответа
В браузере (IE) настроено через proxy соот-но
Прога будет стоять на разных компах (в разных фирмах), где-то proxy есть, а где-то соот-но и нет, здесь я вот протестить пытаюсь и вот застрял капитально(((
brother (2008-09-29 09:47:00) [37]> когда я не использую proxy - всё работает нормально
что тогда за прокси у Вас, и зачем нужно юзать именно его, если инет есть?
brother (2008-09-29 09:46:00) [38]пингани прокси с своей тачки, что скажет, как в браузере настроено?
workbench (2008-09-29 09:46:00) [39]
> Anatoly Podgoretsky
Да с сетью-то проблем нет (я на форуме сижу и Indy юзаю с одного и того же компа), когда я не использую proxy - всё работает нормально
Anatoly Podgoretsky (2008-09-29 09:43:00) [40]> workbench (29.09.2008 9:35:00) [0]
У тебя или нет Интернет на компьютере, или сеть не работает, или ты указал неверный хост