Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Proxy & TIdFTP   Найти похожие ветки 

 
workbench   (2008-09-29 09:35) [0]

Здравстуйте. У меня компонент 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)?


 
Anatoly Podgoretsky ©   (2008-09-29 09:43) [1]

> workbench  (29.09.2008 9:35:00)  [0]

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


 
workbench   (2008-09-29 09:46) [2]


> Anatoly Podgoretsky


Да с сетью-то проблем нет (я на форуме сижу и Indy юзаю с одного и того же компа), когда я не использую proxy - всё работает нормально


 
brother ©   (2008-09-29 09:46) [3]

пингани прокси с своей тачки, что скажет, как в браузере настроено?


 
brother ©   (2008-09-29 09:47) [4]

> когда я не использую proxy - всё работает нормально

что тогда за прокси у Вас, и зачем нужно юзать именно его, если инет есть?


 
workbench   (2008-09-29 09:51) [5]


> brother


Да я пинговал, всё нормально, 4 запроса - 4 ответа
В браузере (IE) настроено через proxy соот-но
Прога будет стоять на разных компах (в разных фирмах), где-то proxy есть, а где-то соот-но и нет, здесь я вот протестить пытаюсь и вот застрял капитально(((


 
Сергей М. ©   (2008-09-29 10:11) [6]


> где-то proxy есть


Даже если он есть, он не обязан быть именно socks proxy


 
workbench   (2008-09-29 10:21) [7]


> Сергей М.


Дык, я вот пробовал то что тут:

http://www.indyproject.org/KB/index.html?howdoiuseaproxywithindy.htm

написано, всё равно не хочет, сторонний FTP-клиент если proxy прописать нормально работает(((


 
Сергей М. ©   (2008-09-29 10:31) [8]


> сторонний FTP-клиент если proxy прописать нормально работает


Именно через тот же socks proxy ?
Или все же http proxy ?


 
workbench   (2008-09-29 10:39) [9]


> Сергей М. ©


второе, я указываю адресс\порт и способ соединения: "HTTP-proxy с поддержкой FTP"


 
Сергей М. ©   (2008-09-29 10:44) [10]


> workbench   (29.09.08 10:39) [9]
>
>


Ну так а причем здесь тогда пример для socks-прокси, если сторонний клиент на самом деле использует не socks-, а http-прокси ?


 
workbench   (2008-09-29 10:59) [11]

пример такой потому что я уже просто стал перебирать варианты (что пример некорректный в данном случае - согласен, извините), однако же, "сути" это не меняет, Indyк TIdFTP у меня упорно не хочет работать через прокси (св-во TIdFTP.ProxyType перепробовал во всех вариантах)...

вот ещё пара слов о том что было сделано для тестирования с прокси:
в настройках TCP/IP во вкладке общие был убран "Основной шлюз", только это. Это может хотя бы подтолкнуть к каким-либо намёткам? Хотя вряд ли... IE, сторонние FTP работают нормально.

Для "чистоты эксперимента" создал новый appl с одним единственным TIdFTP, прописал все параметры - опять нихт, либо ошибка 10065 (если TIdFTP.ProxyTypy), либо "Read Timeout" (это на TIdFTP.Connect если TIdFTP.ProxyTypy другой), а может ли меня сам proxy "не пускать"?


 
brother ©   (2008-09-29 11:09) [12]

> а может ли меня сам proxy "не пускать"?

запросто, если юзвер плохой)))


 
Сергей М. ©   (2008-09-29 11:16) [13]


> в настройках TCP/IP во вкладке общие был убран "Основной
> шлюз"


Шлюз имеет отношение к сетевому уровню, а не к прикладному.

Если целевой хост (в дан.случае хост, на котором активен интересующий прокси-сервис) находится в другой подсети, то указание шлюза обязательно.


> я уже просто стал перебирать варианты


А не надо их перебирать.

Ты же сам сказал, что сторонние клиенты успешно работают при опции "HTTP-proxy с поддержкой FTP", значит и твой клиент тоже должен использовать ProxyType = fpcmHttpProxyWithFtp.

Другой вопрос, что в 9-ке это м.б. не реализовано (проверяй сам - сравнивай с 10-кой)

В 10-ке в исходниках IdFTP имеется вот такой комментарий:

fpcmHttpProxyWithFtp, //HTTP Proxy with FTP support. Will be supported in Indy 10


 
workbench   (2008-09-29 11:27) [14]


> 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-й

Мастера (<с надеждой>), это о чём-то новом говорит?


 
workbench   (2008-09-29 11:33) [15]


> Сергей М.


У меня версия Indy 9.0.14, комментарий такой же стоит... то бишь получается через Indy не получится?


 
brother ©   (2008-09-29 11:34) [16]

> запросто, если юзвер плохой)))

если логин плохой)


 
Сергей М. ©   (2008-09-29 11:47) [17]


> получается через Indy не получится?
>


хз..

Но комментарий этот индейцы не просто же так влупили ..

Правда, из него, не понятно, то ли режим этот буде реализован не раньше чем в 10-ке, то ли он уже реализован и в 10-ке планируется его поддержка..

Попробуй отррассировать пошагово логику коннекта в этом режиме  - исходники индейские открыты ведь ..


 
workbench   (2008-09-29 11:59) [18]


> Сергей М.


попробовал - "замирает" на 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 12:16) [19]


> workbench   (29.09.08 11:59) [18]


Прокси локальный ?


 
workbench   (2008-09-29 12:25) [20]

Да, локальный (SQUID)


 
workbench   (2008-09-29 12:26) [21]

ок, допустим даже если Indy отпадает, надо искать чем заменить, например, WinInet, но с ним тоже есть проблемы (я в [14] приводил), а они ещё более непонятны


 
Сергей М. ©   (2008-09-29 12:43) [22]


> локальный (SQUID)


http://www.google.ru/search?complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=4nt&q=SQUID+ftp+proxy&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=


 
brother ©   (2008-09-29 12:46) [23]

> > локальный (SQUID)

любой squid не работает с чужим ftp...


 
workbench   (2008-09-29 13:02) [24]

Так а др клиенты как тогда работают, например вот в TotallComander`е есть FTP-клиент, пишу адресс\порт + Тип подключения: Http-proxy with FTP support... и всё прекрасно работает: подключение, закачка; ощущение такое что истина где-то вот рядом прям(((


 
workbench   (2008-09-29 13:17) [25]

Угу, спасибо за ссылки, вот типа краткое резюме:

"ftp over http proxy, который принимает запросы посредством
протокола http, преобразует их в команды ftp протокола, получает с удаленного ftp сервера файл и отдает его клиенту по http, производя при этом необходимые преобразования.

Достоинством подобного подхода является то, что работа с ftp серверами через proxy осуществляется абсолютно также, как и с http серверами. Главный недостаток очевиден - использовать здесь обычный ftp клиент невозможно."

Вот... а дальше как у Герцена: "Что делать?". 10-ю Indy юзать? А WinInet такой возможностью работы с FTP обладает? Посоветуйте, плиз, как быть, что лучше использовать?


 
Сергей М. ©   (2008-09-29 14:09) [26]


> WinInet такой возможностью работы с FTP обладает?

http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20693225.html


 
workbench   (2008-09-29 17:56) [27]

Ок, наконец то получилось "законнектится" к ftp через proxy и скачать оттуда файлик, получилось следующее:

hSession :=InternetOpen(nil, INTERNET_OPEN_TYPE_PROXY,
                                 "192.168.0.254:8080", nil, 0);
if hSession <> nil then
 begin
 hConnect :=InternetOpenUrl(hInet,
   PChar("ftp://login:pswd@farmk.nnov.ru/price/303/price.dat"),nil,0,0,0);
 if hConnect <> nil then
   begin
   InternetReadFile(hConnect, @Buffer, SizeOf(Buffer), BytesCountRead);
   FileStr :=string(buffer);
   memo.Lines.Add(FileStr);
   memo.Lines.SaveToFile("...");
   end;
 end;

Однако возникла другая проблема - при использовании TIdFTP всё необходимое я получал посредством вызова что ни говори удобных функций Indy, здесь же необходимо вручную "выкорчёвывать" (парсить) нужную инфу из строки (я ещё не брался, но чувствую это будет полная ж...).

И вот собсно вопрос: не горожу ли я таким способом "огород" (я имею ввиду такой способ получения файлов с ftp), а если нет: может у кого-нить есть парсер на это дело или знает где взять? Подскажите, плиз...


 
Сергей М. ©   (2008-09-30 08:22) [28]


> workbench   (29.09.08 17:56) [27]


Можешь попытать еще ftp-клиента в составе пакета ICS - он тоже поддерживает работу через http- и socks4/5-прокси.


 
Anatoly Podgoretsky ©   (2008-09-30 11:33) [29]


> при использовании TIdFTP всё необходимое я получал посредством
> вызова что ни говори удобных функций Indy,

Дурдом, срочно за учебник по Паскалю, что бы узнать, что такое процедуры и функции.


 
workbench   (2008-09-30 12:20) [30]


> Anatoly Podgoretsky


?


> Сергей М.


Вот поставил Indy10

Создал новый appl, на форме только компонент TIdFTP, вот его св-ва:
 ProxySettings.Host = 192.168.0.254 (наш proxy)
 ProxySettings.Port = 8080 (порт proxy)
 ProxySettings.ProxyType = fpcmHttpProxyWithFtp (да и остальные пробовал)
 Passive = true

пишу:
 try
    idFTP.Connect
 except
    showmessage("conn err")
 end

"Замирает" на idFTP.Connect, т.е. опять-таки не хочет коннектиться через proxy(((


 
Сергей М. ©   (2008-09-30 12:25) [31]


> Вот поставил Indy10


А ты поставил его как положено, без отсебячины ?


 
workbench   (2008-09-30 12:44) [32]


> Сергей М.


строго следуя инструкции с indyproject, ошибок при установке никаких не вылетало

ICS тоже пробовал... и с ним не получается

Если бы не Total со своим работающим ftp-клиентом то подумал бы на "местные" проблемы с сетью, а так даже уже и не знаю, вариантов других уже просто не вижу(((


 
Сергей М. ©   (2008-09-30 13:00) [33]

Попробуй организовать любой локальный прокси, который выполнял бы тривиальный портмаппинг и протоколировал бы инф.обмен между клиентами и целевым прокси-сервером.

Настрой ТС и своего клиента на этот лок.прокси, а целевой прокси укажи для локального как внешний каскадируемый.

Сравни результаты протоколирования - многое сразу прояснится.


 
workbench   (2008-09-30 13:05) [34]


> многое сразу прояснится


судя по тому сколько мне понятно из вашего поста, даже если сделаю - проясниться немного)))

впрочем, щас попробую какие-нить логи с этого злосчастного proxy выцепить...


 
Сергей М. ©   (2008-09-30 13:21) [35]


> проясниться немного


Зато фрагменты рез-тов протоколирования ты сможешь выставить сюда на публичное обозрение/анализ/рекомендации


 
workbench   (2008-09-30 17:34) [36]

Уфф... eрунда какая-то выходит, если делать запрос на закачку файла с ftp, то в loge этого самого proxy на запрос со своего ip я вижу:

1222772132.301    329 192.168.0.209 TCP_MISS/200 45601 GET ftp://ezakaz@farmk.nnov.ru/price/303/price.dat - DIRECT/212.92.130.154 text/plain

...и больше ничего, а запросов когда я юзаю TIdFTP или ICS я не вижу вообще (может они просто в log не попали)

В инете не нашёл ничего путного про работу TC-FTP, пробовал вот ещё один FTP - FileZilla FTP Client, он тож чёт не пашет через proxy... 2 дня сижу, а решения нет(((


 
Сергей М. ©   (2008-09-30 17:37) [37]


> в loge этого самого proxy


Ты про какой прокси говоришь, про свой собственный локальный ?


 
workbench   (2008-09-30 17:48) [38]

да, тот самый о котором речь шла в самом начале


 
Anatoly Podgoretsky ©   (2008-09-30 19:24) [39]


> Ты про какой прокси говоришь, про свой собственный локальный
> ?

Уже давно ничего не понятно, впрочем и в начале тоже.


 
Сергей М. ©   (2008-10-01 08:13) [40]


> тот самый о котором речь шла в самом начале


А [33] я для кого писал, для Пушкина ?)

И уж если ты привел лог целевого прокси, то почему всего один ?



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.005 c
2-1222681814
Alik
2008-09-29 13:50
2008.11.09
Работа с сетевой картой


2-1222780763
S-Type
2008-09-30 17:19
2008.11.09
Переместиться на запись


11-1194631879
Danger
2007-11-09 21:11
2008.11.09
KOLReport и новый KOL


15-1221414038
@!!ex
2008-09-14 21:40
2008.11.09
Какой функции не хватает?


15-1221574229
Гомер
2008-09-16 18:10
2008.11.09
Где можно скачать много примеров Delphi программ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский