FTP через FTP прокси - PullRequest
       21

FTP через FTP прокси

3 голосов
/ 19 февраля 2012

Я пытаюсь загрузить файл через FTP через FTP-прокси (на моей стороне).Это сценарий, который я пытаюсь реализовать в C #:

On Commandline:
ftp -i -s:get.ini CORPORATE_PROXY.com  
-----------get.ini------------
CORPORATE_PROXY_USER@CLIENT_FTP.com abc/user_name
CORPORATE_PROXY_PASSWORD 
user_name_password
cd pub/linux/knoppix
get packages.txt
bye
-----------get.ini------------

abc/user_name - это мое имя пользователя, которому были предоставлены разрешения для FTP через мой корпоративный прокси.

Я хочу реализовать вышесценарий на C #, но после игры со многими типами кода, найденного в Интернете, я не могу этого сделать.

FtpWebRequest request = FtpWebRequest.Create(new Uri(@"ftp://" + CORPORATE_PROXY.com + @"/" + Path.GetFileName(fileToUpload))) as FtpWebRequest;
request.UseBinary = true;
request.KeepAlive = false;
request.Method = WebRequestMethods.Ftp.UploadFile;
if (!string.IsNullOrEmpty(CORPORATE_PROXY_USER) && !string.IsNullOrEmpty(CORPORATE_PROXY_PASSWORD ))
    request.Credentials = new NetworkCredential(CORPORATE_PROXY_USER, CORPORATE_PROXY_PASSWORD );

//Get physical file
FileInfo fi = new FileInfo(fileToUpload);
Byte[] contents = new Byte[fi.Length];

//Read file
FileStream fs = fi.OpenRead();
fs.Read(contents, 0, Convert.ToInt32(fi.Length));
fs.Close();

request.Proxy = new WebProxy("CLIENT_FTP.com");
request.Proxy.Credentials = new NetworkCredential(abc/user_name, user_name_password);

//Write file contents to FTP server
Stream rs = request.GetRequestStream();
rs.Write(contents, 0, Convert.ToInt32(fi.Length));
rs.Close();

FtpWebResponse response = request.GetResponse() as FtpWebResponse;
string statusDescription = response.StatusDescription;
response.Close();
return statusDescription;

Основная проблема заключается в том, что для прокси я использую WebProxy, хотя я подозреваю, что должен использовать FTPProxy -что я не могу найти там?Любые идеи, в каком направлении я должен идти, или, может быть, WebProxy хорошо?

Ответы [ 2 ]

0 голосов
/ 22 января 2018

Попробуйте использовать WebRequest вместо FtpWebRequest в вашем примере кода.

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

Можно также использовать собственный прокси-сервер FTP, где соединения между клиентом и прокси-сервером и FTP-сервером являются FTP. Убедитесь, что ваш прокси поддерживает это.

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

0 голосов
/ 19 февраля 2012

В прошлом я использовал Indy Project для прохождения через FTP прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...