Главная страница
Программирование
Статья 1  
Статья 2  
Статья 3  
-->Статья 4  
WinGate
eMule
Востановление
Программы
Спонсоры
Друзья
 
 




Интерреклама. Развлечения. Личные страницы.

Программирование

Программирование - это раздел посвящен программированию на Delphi, в нем будет рассмотренно ряд вопросов таких как:

1. Отправка почты.
2. Получение списка процессов
3. Работа с сокетами в смысле клиент - сервер
4. Скрипт на Perl для выкачивания файлов (для Avaga.ru h1.ru hut.ru и не только)

Ну и по мере рождения новых идей...


Скрипт на Perl для выкачивания файлов (для Avaga.ru h1.ru hut.ru и не только)

Сейчас пошла мода на ликвидацию возможности скачивания файлов через ftp, как утверждают хозяева сервисов хостинга преднозаненно это для уменьшения шансов хранить файлы и тем самым повысить что то там.
Но не в этом дело, мне допустим захотелось скачать мои файлики к себе на винт, а находился я совсем не дома вот и пришлось сделать два скрипта с помощью которых появляется возможность скачивать через веб интерфейс. Интересный момиент если в указать корневой коталог то можно увидеть много интересного!
Расмотрим оба скрипта:
1. Считывает содержимое каталога;


#!/usr/bin/perl
#dl.cgi

use CGI qw(param);
use CGI::Carp qw(fatalsToBrowser);

$cdir=param(cdir);
$oldd=param(oldd);
if($oldd eq "")
{
 $oldd.="..";
 $cdir="log";
}
 $oldd.="/";
 $oldd.=$cdir;

print "Content-type: text/html\n\n";
print "<html><head><title>$cdir</title>";
print "</head><body>oldd=$oldd<br>\ncdir=$cdir<br>";
print "<form name=godir action='/cgi-bin/dl.cgi'>";
print "<br>Enter old dir path:<input type=text name=oldd value=$oldd>";
print "<br>Enter dir path:<input type=text name=cdir value=$cdir>";
print "<br><input type=submit><br>";
print "</form>";
$cdir=$oldd;
chdir($cdir);
print "S_Full_name: $ENV{'SCRIPT_FILENAME'}<br>\n";
opendir(DIR,$cdir) || die "can't opendir $cdir: $!";
@dots = grep {-d "$cdir/$_"} readdir(DIR);
rewinddir DIR;
@fils = grep {-f "$cdir/$_"} readdir(DIR);
closedir DIR;
print("Curent dir: $cdi<br>\n");
#directory
foreach (@dots){
 print("\n<a href='http://plov.h1.ru/cgi-bin/dl.cgi?cdir=$_&oldd=$cdir'>");
 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,
  $mtime,$ctime, $blksize,$blocks) = stat($_);
 printf("\n%o|%10u|",$mode & 07777,$size);
 print("[$_]</a><br>");
}
#files
foreach (@fils){
 print("\n<a href='http://plov.h1.ru/cgi-bin/dn1.cgi/$_1?fname=$_&fdir=$cdir'>");
 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($_);
 printf("%o|%10u|",$mode & 07777,$size);
 print("$_</a><br>");
}
print "\n[-END of LIST-]<p>\n";
print "<p><script src='http://partner.porta.ru/cgi-bin/text-cda.cgi?from=baddan&c=3'></script>";
print "<center><br>";
print "<A HREF='http://ad.ir.ru/cgi-bin/irads.cgi?cmd=go&pubid=8746&pg=2&nocache=1234'";
print " target='_blank'>";
print "<IMG SRC='http://ad.ir.ru/cgi-bin/irads.cgi?cmd=ad&pubid=8746&pg=2&nocache=1234' width=468";
print " height=60 Alt='InterReklama advertising' border=0></A><BR><FONT SIZE=1>";
print "<A HREF='http://ad.ir.ru' target=_blank>InterReklama Advertising Network</A>";
print "</FONT></center>";
print "</body></html>";



2. Скачивает файл с сайта;
#!/usr/bin/perl
#dn.cgi

use CGI qw(param);
use CGI::Carp qw(fatalsToBrowser);

$dataf=param(fname);
$dirf=param(fdir);
$fulln=$dirf.'/'.$dataf;

$lenf=(-s $fulln);
print "Content-type: application/data\n";
print "Content-Length: $lenf\n";

# Файлам добавляется расширение .dn поскольку
# некоторые сервера не дают скачивать файлы с
# расширениями например zip, rar и  другие, а
# после скачивания переименуйте в нужное вам,
# вот и все :о)

print "Content-Disposition: attachment; filename=\"$dataf.dn\"\n\n";
open(F,"<$fulln") || die "can't open file $dataf";
binmode F;
print <F>;
close(F);
Как это все работает вы увидите здесь.
Скачать исходники можно здесь.

Вот и Все!


Ну на сегодня хватит дальше продолжу чуть позже...