Svarga
Moderator | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ISOFT Цитата: Ещё не слышал я такой услуги | Года полтора назад я таким пользовался-- было несколько сайтов, только позакрывались, теперь и урлы не вспомню-- там ограничение было на размер файла (до 2-х, что ли, метров). В принципе, можно переделать что-то вроде такого скрипта под пересылку на мыло и самому себе со своего сервера пересылать: файл upload.cgi Код: #!/usr/local/bin/perl use Socket; use Net::FTP; use MIME::Base64; print "Content-type: text/html\n\n"; &parse_form; $FORM{files}=~s/\r//g; @files=split ("\n", $FORM{files}); $authorization = encode_base64("$FORM{'servlogin'}:$FORM{'servpassword'}"); $ftp=Net::FTP->new ($FORM{host}); $ftp->login ($FORM{login}, $FORM{password}); $ftp->mkdir("$FORM{ftpdir}"); foreach $file (@files){ $meth=substr ($file,0,4); if ($meth eq "http"){ $url=$file; $url=~s /http:\/\///; ($host,@get)=split ("/",$url); $dfile=$get[$#get]; $get="/".join ("/", @get); ($host,$port)=split (":",$host); $port=80 if ($port eq ""); $AF_INET=($] > 5 ? AF_INET : 2); $SOCK_STREAM=($] > 5 ? SOCK_STREAM: 1); $protocol=(getprotobyname('tcp'))[2]; $addr=(gethostbyname($host))[4]; $addrs=pack ('S n a4 x8', $AF_INET, $port, $addr); socket(LOAD,$AF_INET,SOCK_STREAM,$protocol); connect(LOAD, $addrs); binmode (LOAD); select(LOAD); $|=1; select(STDOUT); # Отрправка запроса print LOAD "GET ${get} HTTP/1.0\r\nAuthorization: Basic $authorization\r\n"; print LOAD "User-Agent: X-Uploader v1.0 (SatanStation)\r\n"; print LOAD "Accept: */*\r\n"; print LOAD "Range: bytes=0-\r\n"; print LOAD "Host: $host\r\n\r\n"; select (undef, undef, undef, .25); open (SWAP, ">swap"); binmode (SWAP); binmode (STDOUT); sysread (LOAD, $what, 2048); $what=~/\r?\n\r?\n/s; $what=$'; print SWAP $what; while (sysread (LOAD, $what, 2048)){ print SWAP $what; } close (SWAP); close (LOAD); $ftp->type("I"); $ftp->put("swap", "$FORM{ftpdir}/${dfile}"); } else{ $url=$file; $url=~s /ftp:\/\///; ($host,@info)=split ("/",$url); $dfile=$info[$#info]; $info="/".join ("/", @info); $ftpl=Net::FTP->new ($host); $ftpl->login ('anonymous', 'some@some.ru'); $ftpl->type("I"); $ftpl->get("${info}", "swap"); $ftp->type("I"); $ftp->put("swap", "$FORM{ftpdir}/${dfile}"); $ftpl->quit(); } } print "Well done!"; $ftp->quit(); unlink ("swap"); sub parse_form{ read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs=split (/&/, $buffer); foreach $pair (@pairs){ ($name,$value) = split (/=/,$pair); $value=~ tr/+/ /; $value=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name}=$value; } } | файл upload.html Код: <html> <head> <title>HTTP-FTP Uploader</title> </head> <SCRIPT language=JavaScript> function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function DeleteCookie (name,path,sitedomain) { if (GetCookie(name)) { document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((sitedomain) ? "; domain=" + sitedomain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } } function SetCookie (name,value,expires,path,sitedomain,secure) { document.cookie = name + "=" + escape (value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((sitedomain) ? "; domain=" + sitedomain : "") + ((secure) ? "; secure" : ""); } function startup(){ if(GetCookie('loginName')){ if(document.loginForm.login.value==""){ document.loginForm.login.value=GetCookie('loginName') } } if(GetCookie('hostName')){ if(document.loginForm.host.value==""){ document.loginForm.host.value=GetCookie('hostName') } } if(GetCookie('ftpdirName')){ if(document.loginForm.ftpdir.value==""){ document.loginForm.ftpdir.value=GetCookie('ftpdirName') document.loginForm.password.focus(); } } } function storeLoginName(){ var expdate = new Date (); expdate.setTime (expdate.getTime() + (365 * 24 * 60 * 60 * 1000)); // 24 hrs from now SetCookie('ftpdirName', document.loginForm.ftpdir.value, expdate); SetCookie('loginName', document.loginForm.login.value, expdate); SetCookie('hostName', document.loginForm.host.value, expdate); return true; } </SCRIPT> <body bgcolor="#FEE0B4" onload="startup()"> <center><font color="red" face="Comic Sans MS">HTTP-FTP Uploader</font></center> <form method="POST" action="upload.cgi" name="loginForm" onsubmit="return storeLoginName()"> <table border=0 cellpadding=2 cellspacing=2 width=500> <tr><td> FTP Host:<br> <input type="text" name="host" size="25" tabindex="1"><br> FTP Login:<br> <input type="text" name="login" size="25" tabindex="2"><br> FTP Password:<br> <input type="password" name="password" size="25" tabindex="4"><br> HTTP login:<br> <input type="text" name="servlogin" size="25" tabindex="4"><br> HTTP Password:<br> <input type="password" name="servpassword" size="25" tabindex="4"><br> FTP Directory (If you want to upload files to main directory, leave this <b>blank!</b>):<br> <input type="text" name="ftpdir" size="40" tabindex="3"><br> <table><tr><td>Files:<br> <textarea name="files" cols=50 rows=20 tabindex="5"></textarea> </td><td valign="top"><u>Example:</u><br>http://www.goodpic.com/goodpic.jpg<br>http://www.archive.com/program.zip<br>...<br>etc.</td></tr></table> <br> <input type="SUBMIT" name="but" value="Send files"> </td></tr> </table> </form> <html> | (этот скрипт пересылает файл на свой фтп сервер с указанного расположения, автора и адрес сайта скрипта не знаю --мне скрипт уже в таком виде знакомый один на мыло прислал)
|