powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Proxy для FTP
10 сообщений из 10, страница 1 из 1
Proxy для FTP
    #35810437
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в одной задаче необходима передача данных на FTP посредством Cache, все получилось хорошо только для тех кто не использует прокси для доступа к ФТП
порылся в документации и не нашел как мне организовать доступ к фтп через прокси
просьба подсказать как такое можно организовать
...
Рейтинг: 0 / 0
Proxy для FTP
    #35811947
visius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при обращении к прокси как к http серверу -

для получения файла:
метод GET с url вида "ftp://<имя>:<пароль>@ftp.myserver.ru/"

для отправки файла:
метод POST с тем же форматом url

и в том и в другом случае в поле Host должен стоять адрес удаленного сервера
...
Рейтинг: 0 / 0
Proxy для FTP
    #35812717
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем ничего не получается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 s ht=##class(%Net.HttpRequest).%New()
 s ht.Server="daimor"
 s ht.Port= 8080 
 s url="ftp://192.168.10.5/test.txt"
 s res=ht.Get(url)
 i 'res d $system.OBJ.DisplayError() q
 w "Result: "_ht.HttpResponse.StatusLine

код запускается на одной машине, прокси на другой, в браузере работает
но ответ от прокси сервера всегда один 403, чтобы я ни запросил даже несуществующие адреса
в качестве прокси для тестов у меня используется HandyCache, в логах у него появляется урл на запросе неправильный адрес урла начинается с символа "/"
а если включить авторизацию на прокси сервере, то он не авторизует даже если я указываю Username и Password
...
Рейтинг: 0 / 0
Proxy для FTP
    #35812787
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To DAiMor

Пробовали использовать HTTP-запрос через прокси?
Using a Proxy Server
...
Рейтинг: 0 / 0
Proxy для FTP
    #35812929
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а разве я выше не подобное описал, и у меня не получилось

насколько я понял получается так
у объекта HttpRequest
заполняем Server и Port и методом Get урл файла на фтп
если заполнить ProxyServer и ProxyPort, что равноценно ^%SYS("HttpRequest","ProxyServer") и ^SYS("HttpRequest","ProxyServer"), незаполняя Server и Port, и методом Get урл файла на ftp, то получится что через прокси он будет ломится на localhost (значение по умолчанию для поля Server), и просить будет у него что есть в Get получается белиберда
если указать прокси а в Server и Port написать адрес и порт ftp сервера и в Get просить сам файл, то тут разумеется тоже ничего не получится, так как он по http протоколу будет пытать подключится к ftp
...
Рейтинг: 0 / 0
Proxy для FTP
    #35813007
visius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

.....
ht.SetHeader("Host","192.168.10.5") ; обязательно ! по умолчанию будет установлено daimor и прокси интерпретирует это как обращение к локальному ресурсу, что недопустимо
s res=ht.Get(url)
.....

насчет HandyCache не поручусь, но squid такое проглатывает, с браузером есть вероятность, что он использует метод CONNECT, но такое стандартным кащеевым классом нереализуемо - проще написать свой простенький с использованием сокетов.
...
Рейтинг: 0 / 0
Proxy для FTP
    #35813318
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставил себе squid
сразу не обратил внимание на параметр test у метода Get()
ответ от проксика 400
ну все правильно cache GET запрос отправляет не такой как надо

GET /ftp://192.168.10.5/test.txt HTTP/1.0
location="ftp://192.168.10.5/test.txt"
User-Agent: Mozilla/4.0 (compatible; Cache;)
Connection: Close
Host: 192.168.10.53:3128

а строчка
d ht.SetHeader("Host","192.168.10.53")
насколько я понял равнозначен если я свойство Server заполню, в Host тоже самое будет
...
Рейтинг: 0 / 0
Proxy для FTP
    #35813505
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в отсылаемом GET если убрать символ "/" который он ставит перед тем что я ему отправляю, то все проходит
вот в коде %Net.HttpRequest.cls метод Send, где type это в данном случае будет "GET"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	If ..ProxyServer'="",+(..ProxyPort)'= 0  {
		Write type," http"_$select(..ProxyHTTPS:"s", 1 :"")_"://",..Server,":",..Port,"/",i%Location
	} Else {
		Write type," /",i%Location
	}
	Do ..OutputParams(param,table)
	Write " HTTP/1.0",!
...
Рейтинг: 0 / 0
Proxy для FTP
    #35813932
visius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Server и Host неравнозначны
Server - куда происходит соединение
Host - откуда требуется получить данные в результате

P.S. как всегда "дело в волшебных пузырьках", т.е. каким образом реализован конкретный http клиент
...
Рейтинг: 0 / 0
Proxy для FTP
    #35813991
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visiusServer и Host неравнозначны
Server - куда происходит соединение
Host - откуда требуется получить данные в результате

P.S. как всегда "дело в волшебных пузырьках", т.е. каким образом реализован конкретный http клиент

кажется вот в этом блоке что то не сходится с вашими словами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
/// The IP address or machine name of the web server that you wish to
/// connect to. This defaults to 'localhost', i.e. your current machine
/// if not specified. This also sets the 'Host' http header field.
Property Server As %String [ Calculated ];

Method ServerGet() As %String [ CodeMode = expression ]
{
$get(i%Headers("HOST"))
}

Method ServerSet(value As %String) As %Status [ CodeMode = expression ]
{
..SetHeader("Host",value)
}

у вас есть рабочий вариант ? для примера
у меня все получается то что нужно только если немного модифицировать код класса %Net.Httprequest
но такой подход не совсем правильный
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Proxy для FTP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]