Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Proxy & TIdFTP [D6, 2000]


Страницы:   1 2

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]

У тебя или нет Интернет на компьютере, или сеть не работает, или ты указал неверный хост


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо