evilpro
Дата: 24.07.2006 19:32:47
Есть внешний ФТП. Есть внутренняя прокся.
Пытался отправлять файл через proxy с помощью NET::FTP - не получилось(не знаю как. ранее задавал вопрос - ответа не получил. Видать это очень сложно).
Решил делать через HTTP::Request. Алгоритм рабочий, но возникла проблема в передаче архивов. Файл закачивается , но архив повреждается. При сравнении, оригинала с файлом закаченном на фтп, обнаружилось, что proxy(unixовый какой не знаю) меняет один байт. А именно 0D 0A (#13#10) заменяет на 0A (#10).
Вот такая беда.
Кто знает как решить эту или схожую проблему?
Может все-таки кто знает как настроить отправку через прокси с помощью NET::FTP? Достаточно вырезки из рабочего скрипта.
Вот пример функции отправки файла через прокси.
sub send_ftp# параметры 1-адресс;2-файл;3-Код группы
{
copy($adir.$_[1],$adir.$copy_ftp.$_[1]);
my $ua = new LWP::UserAgent;
my $login = $_[0];
$login =~s/\|/@/;
$login =~s/\|/@/;
print $login."\n";
print $_[1]."\n";
$ua->proxy(['http','ftp'], 'http://login:password@proxy_ip:3128/')
or die send_alert('E','error connect proxy(ftp)');
my $stats = stat($_[1]);
my $fileSize = $stats->size;
my $buf;
open(FH, $_[1]) or die send_alert('E','error open file(ftp)');
read(FH, $buf, $fileSize) or die send_alert('E','error read file(ftp)');
my $req = HTTP::Request->new("PUT", 'ftp://'.$login.'/'.$_[1])
or die send_alert('E','error connect to ftp(ftp)');
$req->content($buf);
# or send_alert('E','error content file(ftp)');
my $response = $ua->request($req)
and send_alert('F',$_[0].'<=Copy ftp OK.');
close(FH);
mkdir($adir.$ar.$_[2]);
move($adir.$_[1],$adir.$ar.$_[2].'/'.$_[1]);
}
pamir
Дата: 24.07.2006 21:31:54
(теоретизирую, на основе симптомов)
А нет ли у функций возможности указать, что идет работа с бинарным файлом, а не с текстовым. Кто-то из них явно считает, что это текст и меняет под себя. Мож параметр какой при пересылке есть?