![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Indy 10 - IdFtp - HTTP Proxy with FTP support [D6, Win95/98, WinME, NT4, Win2k, WinXP]
clickmaker © (2006-01-24 10:12:00)Занимался ли кто-нибудь подключением к FTP через HTTP Proxy? Т.е. не реализованным в Indy TIdFtpProxyType::fpcmHttpProxyWithFtp
umbra (2006-02-01 16:48:00) [1]при закачке файла на сервер тотал посылает такой запрос:
PUT ftp://login:password@host.name/html/null.txtHTTP/1.1
Host: host.name
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Proxy-Authorization: Basic bla-bla-bla
Content-Type: application/octet-stream
Content-Length: 0 //закачивался файл нулевого размера
Connection: close
ответ сквида (не моего, а следующего в иерархии):
HTTP/1.0 202 Accepted
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Date: Wed, 01 Feb 2006 12:43:08 GMT
Content-Type: text/html
Content-Length: 614
Expires: Wed, 01 Feb 2006 12:43:08 GMT
X-Squid-Error: ERR_FTP_PUT_MODIFIED 0
X-Cache: MISS from второй сквид
X-Cache: MISS from мой сквид
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE> FTP PUT Successful: File updated</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>Operation successful</H1>
<H2>File updated</H2>
<HR noshade size="1px">
<BR clear="all">
<HR noshade size="1px">
<ADDRESS>
Generated Wed, 01 Feb 2006 12:43:08 GMT by вторым прокси (squid/2.5.STABLE3)
</ADDRESS>
</BODY></HTML>
для удаления файлов в ХТТП, в принципе, есть метод DELETE. Но здесь у тотала начинается темный лес. Как только я пытаюсь удалить файл на ФТП сервере, то получаю от своего сквида следующий ответ:
HTTP/1.0 501 Not Implemented
Server: squid/2.5.STABLE12
Mime-Version: 1.0
Date: Wed, 01 Feb 2006 12:40:10 GMT
Content-Type: text/html
Content-Length: 1079
Expires: Wed, 01 Feb 2006 12:40:10 GMT
X-Squid-Error: ERR_UNSUP_REQ 0
X-Cache: MISS from мой сквид
Proxy-Connection: close
при том, что тотал сквиду не посылал ХТТП запроса. Что он пытается сделать - неясно.
clickmaker (2006-02-01 13:46:00) [2]
> umbra © (01.02.06 13:36) [41]
> 2 clickmaker © (01.02.06 12:48) [40]
>
> как я понимаю, о командах ФТП можно в этом случае забыть
получается, что через этот прокси можно только ходить по папкам и грузить файлы с сервака?
загрузка, удаление и прочее в этом случае недоступны?
umbra (2006-02-01 13:36:00) [3]2 clickmaker © (01.02.06 12:48) [40]
как я понимаю, о командах ФТП можно в этом случае забыть. Надо проксе посылать запросы типа
GET ftp://ftp.activestate.com/images/myfile.zipHTTP/1.0
при этом в теле ответа прокси и будет запрошенный файл.
> а как же в этом случае сам прокси авторизуется на фтп?
по данным запроса. в принципе ж УРЛ должен выглядеть так:
ftp://login:password@host.name
Еслиlogin:passwordнет, то сквид считает это попыткой анонимного доступа и говорит ФТП серверу
USER anonymous
PASS some@mail
причем этот самыйsome@mailявно написан в конфиге сквида.
Что в таких случаях делают другие прокси, я не знаю. Поэтому, как по мне, лучше всегда слать запросы с логином и паролем
clickmaker (2006-02-01 12:48:00) [4]
> umbra © (31.01.06 20:36) [39]
отсюда напрашивается такая логика:
перед выполнением кажой фтп-команды, заново коннектиться к проксе, команду слать вместе с запросом Proxy-Authorization: Basic ля-ля-ля
получается, что если я хочу загрузить файл, то должен сказать что-то типа
CWD /images/
STOR images.zip (кстати, могу ли я слать сразу несколько команд?)
Host: ftp.activestate.com
Proxy-Authorization: Basic ля-ля-ля
а как же в этом случае сам прокси авторизуется на фтп?
umbra (2006-01-31 20:36:00) [5]2 clickmaker © (31.01.06 19:57) [38]
> или может проблему можно решить так:
> Connection: Keep-Alive
не похоже на то. Вот что пишет в запросе по этому поводу Файерфокс
GET ftp://ftp.activestate.com/HTTP/1.0
Host: ftp.activestate.com
Keep-Alive: 300
Proxy-Connection: keep-alive
Proxy-Authorization: Basic ля-ля-ля
На что сквид отвечаетProxy-Connection: close
и ФФ все равно на каждый запрос открывает соединение заново. Вообще в рфц написано, что если клиент в запросе обозначает, что работает по ХТТП 1.0, то прокси должензакрывать соединение после ответа. Возможно, поддержка живого соединения зависит от настроек прокси. В любом случае на это полагаться не стоит, поскольку в том же рфц написано, что прокся может закрыть соединение вообще в любой момент и клиенты должны быть готовы автоматически законнектиться на сервер и повторить запрос
clickmaker (2006-01-31 19:57:00) [6]
> umbra © (31.01.06 19:09) [37]
однако не так все просто, как казалось...
я наивно думал, что достаточно вначале прилипнуть к проксе и дальше гулять по фтп сколько угодно...
или может проблему можно решить так:
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
umbra (2006-01-31 19:09:00) [7]2 clickmaker © (31.01.06 15:27) [36]
> просто законнектиться на фтп, а потом послать авторизационный
> запрос GET ля-ля-ля...
>
как я понимаю на данный момент, надо послать запрос типа
GET ftp://gamezweb:ingyen@212.92.23.69/HTTP/1.0
Host: 212.92.23.69
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Proxy-Authorization: Basic ля-ля-ля
Connection: close
и анализировать код ответа прокси. Если он отвечает "200 ОК", значит ФТП соединение он установил и в теле ответа содержится список файлов в корневой папке ФТП сервера. Но после каждого ответа прокси закрывает соединение с клиентом (из-за строки "Connection: close" в запросе). Поэтому клиент при каждом запросе должен заново создавать соединение с проксей. Т.е. если я зашел на на ФТП и гуляю там по папкам, то сессия будет выглядеть так:
----------Start info------------
Source IP :
Source Port : 1265
Destination IP :
Destination Port : 3128
----------End info------------
GET ftp://ftp.activestate.com/HTTP/1.0
Host: ftp.activestate.com
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Proxy-Authorization: Basic ля-ля-ля
Connection: close
----------End buffer------------
----------Start info------------
Source IP :
Source Port : 3128
Destination IP :
Destination Port : 1265
----------End info------------
HTTP/1.0 200 OK
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Date: Tue, 31 Jan 2006 15:35:05 GMT
Content-Type: text/html
X-Cache: MISS from прокси1
X-Cache: MISS from прокси
Proxy-Connection: close
----------End buffer------------
здесь первое соединение закрывается. Нужна другая папка - заново коннектимся на проксю
----------Start info------------
Source IP :
Source Port : 1266
Destination IP :
Destination Port : 3128
----------End info------------
GET ftp://ftp.activestate.com/ActiveTcl/HTTP/1.0
Host: ftp.activestate.com
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Proxy-Authorization: Basic ля-ля-ля
Connection: close
----------End buffer------------
----------Start info------------
Source IP :
Source Port : 3128
Destination IP :
Destination Port : 1266
----------End info------------
HTTP/1.0 200 OK
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Date: Tue, 31 Jan 2006 15:35:11 GMT
Content-Type: text/html
X-Cache: MISS from прокси1
X-Cache: MISS from прокси
Proxy-Connection: close
----------End buffer------------
clickmaker (2006-01-31 15:27:00) [8]
> очевидно, для авторизации к проксе отдельно коннектиться
> не надо. надо просто в запросе сразу написать "Authentication:
> Basic тра-ля-ля".
ну так по такому принципу же вроде "прозрачные" прокси работают. Т.е. перехватывают прямые запросы к фтп.
а сквид вроде можно как прозрачно настроить, так и нет.
Но в этом случае, мне надо что-ли просто законнектиться на фтп, а потом послать авторизационный запрос GET ля-ля-ля... ? и прокся должна его поймать?
umbra (2006-01-30 19:40:00) [9]2 clickmaker © (30.01.06 14:40) [34]
> Т.е. отдельно процедуру логина непосредственно с клиента
> выполнять не надо?
не надо. по-моему, прокси сам это сделает на основе данных запроса
> строка "Connection: close" говорит о том, что соединение
> с прокси будет закрыто после того, как он отдаст ответ
ну да. это означает, что клиент не должен посылать новые запросы, получив ответ (в рфц написано). А для сервера это строка, скорее всего означает, что послав ответ, он может закрыть соединение. В общем, для каждого запроса соединение надо открывать новое.
> А как тогда сам клиент должен оставаться на связи с фтп-
> сайтом?
очевидно, для авторизации к проксе отдельно коннектиться не надо. надо просто в запросе сразу написать "Authentication: Basic тра-ля-ля".
Просто те пакеты, которые я приводил для тотала создавались, когда я каждый раз вручную вводил пароль. Сегодня я попробовал его указать в настройках, и получился один запрос с "Authentication: Basic тра-ля-ля" и ответ сервера ОК, после чего я зашел на фтп
clickmaker (2006-01-30 14:40:00) [10]
> umbra © (27.01.06 17:12) [33]
может я чего-то не понимаю...
по идее, надо установить связь с проксей, авторизоваться, если надо, а сама прокся должна уже логиниться на фтп... Т.е. отдельно процедуру логина непосредственно с клиента выполнять не надо?
и я так понимаю, что строка "Connection: close" говорит о том, что соединение с прокси будет закрыто после того, как он отдаст ответ...
А как тогда сам клиент должен оставаться на связи с фтп-сайтом?
umbra (2006-01-27 17:12:00) [11]В FN осталась та же ошибка -
10054 "Connection reset by peer".
На уровне ХТТП-обмена бросается в глаза, что связь обрывается, и последний запрос ФН не доходит до прокси(о чем и говорит ошибка). А в лог прокси пишет последний отосланный ответ - код 407 "Proxy authentification required".
umbra (2006-01-27 17:06:00) [12]а вот то же для FN:
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
GET ftp://gamezweb:ingyen@212.92.23.69/HTTP/1.0
Host: 212.92.23.69
User-Agent: Mozilla/4.0 (compatible; FN; Windows 9x)
Connection: close
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
HTTP/1.0 407 Proxy Authentication Required
Server: squid/2.5.STABLE12
Mime-Version: 1.0
Date: Fri, 27 Jan 2006 13:58:35 GMT
Content-Type: text/html
Content-Length: 1329
Expires: Fri, 27 Jan 2006 13:58:35 GMT
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Proxy-Authenticate: Basic realm="Squid proxy-caching web server "
X-Cache: MISS from pfu.ic.kharkov.ua
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: Cache Access Denied</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD>
<BODY>
<H1>ERROR</H1>
<H2>Cache Access Denied</H2>
<HR noshade size="1px">
<P>
While trying to retrieve the URL:
<A HREF=" ftp://gamezweb@212.92.23.69/"> ftp://gamezweb@212.92.23.69/</A>
<P>
The following error was encountered:
<UL>
<LI>
<STRONG>
Cache Access Denied.
</STRONG>
</UL>
</P>
<P>Sorry, you are not currently allowed to request:
<PRE> ftp://gamezweb@212.92.23.69/</PRE>
from this cache until you have authenticated yourself.
</P>
<P>
You need to use Netscape version 2.0 or greater, or Microsoft Internet
Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
contact the <A HREF="mailto:webmaster">cache administrator</a> if you have
difficulties authenticating yourself o
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
Basic Proxy authentication:
----------End info------------
GET ftp://gamezweb:ingyen@212.92.23.69/HTTP/1.0
Host: 212.92.23.69
User-Agent: Mozilla/4.0 (compatible; FN; Windows 9x)
Proxy-Authorization: Basic SsfsfsfRdfbdfEWb=
Connection: close
----------End buffer------------
umbra (2006-01-27 17:03:00) [13]Вот обмен запросами тотала для неанонимного ФТП
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
GET ftp://gamezweb:ingyen@212.92.23.69/HTTP/1.0
Host: 212.92.23.69
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Connection: close
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
HTTP/1.0 407 Proxy Authentication Required
Server: squid/2.5.STABLE12
Mime-Version: 1.0
Date: Fri, 27 Jan 2006 13:52:07 GMT
Content-Type: text/html
Content-Length: 1329
Expires: Fri, 27 Jan 2006 13:52:07 GMT
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Proxy-Authenticate: Basic realm="Squid proxy-caching web server "
X-Cache: MISS from pfu.ic.kharkov.ua
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: Cache Access Denied</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD>
<BODY>
<H1>ERROR</H1>
<H2>Cache Access Denied</H2>
<HR noshade size="1px">
<P>
While trying to retrieve the URL:
<A HREF=" ftp://gamezweb@212.92.23.69/"> ftp://gamezweb@212.92.23.69/</A>
<P>
The following error was encountered:
<UL>
<LI>
<STRONG>
Cache Access Denied.
</STRONG>
</UL>
</P>
<P>Sorry, you are not currently allowed to request:
<PRE> ftp://gamezweb@212.92.23.69/</PRE>
from this cache until you have authenticated yourself.
</P>
<P>
You need to use Netscape version 2.0 or greater, or Microsoft Internet
Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
contact the <A HREF="mailto:webmaster">cache administrator</a> if you have
difficulties authenticating yourself o
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
Basic Proxy authentication:
----------End info------------
GET ftp://gamezweb:ingyen@212.92.23.69/HTTP/1.0
Host: 212.92.23.69
User-Agent: Mozilla/4.0 (compatible; Totalcmd; Windows 9x)
Proxy-Authorization: Basic DsksdfskaSf=
Connection: close
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
HTTP/1.0 200 OK
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Date: Fri, 27 Jan 2006 08:20:47 GMT
Content-Type: text/html
Age: 20222
X-Cache: HIT from proxy.infocom.kh.ua
X-Cache: MISS from pfu.ic.kharkov.ua
Proxy-Connection: close
<!-- HTML listing generated by Squid 2.5.STABLE3 -->
<!-- Fri, 27 Jan 2006 08:20:49 GMT -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><TITLE>
FTP Directory: ftp://gamezweb@212.92.23.69/
</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE>
</HEAD><BODY>
<PRE>
--------- Welcome to Pure-FTPd [privsep] [TLS] ----------
You are user number 193 of 256 allowed.
Local time is now 09:17. Server port: 21.
This is a private system - No anonymous login
IPv6 connections are also welcome on this server.
Your bandwidth usage is restricted
User gamezweb has group access to: 3000
This server supports FXP transfers
</PRE>
<HR noshade size="1px">
<H2>
FTP Directory: <A HREF=" ftp://gamezweb@212.92.23.69/"> ftp://gamezweb@212.92.23.69</A>/</H2>
<PRE>
<A HREF="%2e%2e/"><IMG border="0" SRC=" http://proxy.infocom.kh.ua:3128/squid-internal-static/icons/anthony-dirup.gif" ALT="[DIRUP]"></A> <A HREF="%2e%2e/">Parent Directory</A> (<A HREF="%2f/">Root Directory</A>)
<A HREF="!_GAMEZ.FEE.HU_!/"><IMG border="0" SRC=" http://proxy.infocom.kh.ua:3128/squid-internal-static/icons/anthony-dir.gif" ALT="[DI
----------End buffer------------
clickmaker (2006-01-27 16:30:00) [14]
> umbra © (27.01.06 11:28) [29]
очередная версия fnftp.dll... может все-таки заработает
я попробовал с публичным прокси, на запрос он ответил, попросил авторизацию, но потом вылетел по таймауту...
может с нормальным сквидом запашет )
http://www.relaxander.webest.net/files/fn/fnftp.zip
umbra (2006-01-27 11:28:00) [15]2 clickmaker © (27.01.06 09:50) [28]
> Может разделять их нужно не cr\lf, а просто lf?
да нет, по стандарту вроде cr\lf надо
> сам ftp url должен в GET передаваться с user:pass@host или
> просто host?
Именноuser:pass@host. Прокси после этого запроса посылает ФТП серверу команды типаUSER, PASS. Если дать простоhost, то прокси пошлет командуUSER anonymous.
clickmaker (2006-01-27 09:50:00) [16]
> umbra © (26.01.06 16:29) [27]
> ----------Start info------------
> Source IP :
> Source Port :
> Destination IP :
> Destination Port :
> ----------End info------------
> GET ftp://anonymous@ftp.activestate.com/HTTP/1.0
Получается, только 1-я строчка запроса дошла?.. Может разделять их нужно не cr\lf, а просто lf?
И еще вопрос: сам ftp url должен в GET передаваться с user:pass@host или просто host? а юзер-пасс как-нить отдельно?
можешь глянуть, как TC передает при не анонимном заходе?
umbra (2006-01-26 16:29:00) [17]2 clickmaker © (26.01.06 15:37) [26]
прошу прощения, я пропустил пост о том, что галку надо поставить "Use firewall".
С этой галкой предпоследняя версия отмечается в логе, получает в ответ от прокси код 407 и выводит сообщение "Socket error 10054. Connection reset by peer". Сниффер выдает следующее:
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
GET ftp://anonymous@ftp.activestate.com/HTTP/1.0
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
HTTP/1.0 407 Proxy Authentication Required
Server: squid/2.5.STABLE12
Mime-Version: 1.0
Date: Thu, 26 Jan 2006 13:21:55 GMT
Content-Type: text/html
Content-Length: 1353
Expires: Thu, 26 Jan 2006 13:21:55 GMT
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Proxy-Authenticate: Basic realm="Squid proxy-caching web server "
X-Cache: MISS from pfu.ic.kharkov.ua
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: Cache Access Denied</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD>
<BODY>
<H1>ERROR</H1>
<H2>Cache Access Denied</H2>
<HR noshade size="1px">
<P>
While trying to retrieve the URL:
<A HREF=" ftp://anonymous@ftp.activestate.com/"> ftp://anonymous@ftp.activestate.com/</A>
<P>
The following error was encountered:
<UL>
<LI>
<STRONG>
Cache Access Denied.
</STRONG>
</UL>
</P>
<P>Sorry, you are not currently allowed to request:
<PRE> ftp://anonymous@ftp.activestate.com/</PRE>
from this cache until you have authenticated yourself.
</P>
<P>
You need to use Netscape version 2.0 or greater, or Microsoft Internet
Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
contact the <A HREF="mailto:webmaster">cache administrator</a> if you have
difficulties a
----------End buffer------------
----------Start info------------
Source IP :
Source Port :
Destination IP :
Destination Port :
----------End info------------
GET ftp://anonymous@ftp.activestate.com/HTTP/1.0
----------End buffer------------
Последняя версия наглухо виснет, сниффер не выдает ничего, как будто запроса вообще нет.
clickmaker (2006-01-26 15:37:00) [18]
> umbra © (26.01.06 13:43) [25]
и ошибка та же?
umbra (2006-01-26 13:43:00) [19]2 clickmaker © (26.01.06 13:19) [23]
> потести еще один вариант
все осталось по-прежнему. в логе пусто.
umbra (2006-01-26 13:37:00) [20]2 clickmaker © (26.01.06 13:19) [23]
> я наверно надоел,
да нет, мне самому интересно разобраться