Форум: "Начинающим";
Текущий архив: 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