#!/usr/local/bin/php
<?PHP
$maxsize=1048576*8; //Bytes <3
$host='ffauploads.com';
$boundary='WheeeASeparator!';
function usage(){
echo "Usage: ffaup [OPTION] FILE...\n
-r\t\tRandomize filename
-l\t\tChange filename into lowercase, may be used with -r\n";
return 1;
}
$options=array();
$files=array();
array_shift($argv);
if($argv[0]) foreach($argv as $arg){
if($arg[0]=='-') {
$options[]=$arg[1];
if($arg[2]) $options[]=$arg[2];
}
else $files[]=$arg;
} else usage();
$postdata='';
$postoption['submit']='Upload!';
foreach($options as $option){
if($option=='r') $postoption['randomize']=1;
elseif($option=='l') $postoption['f2lower']=1;
else { echo "ffaup: invalid option -- '$option'\n"; usage(); return 0; }
}
foreach($files as $file){
if(!file_exists($file))
echo "ffaup: cannot access $file: No such file\n";
elseif(!is_file($file))
echo "ffaup: cannot upload $file: Not a file\n";
elseif($maxsize<$filesize=filesize($file))
echo "ffaup: cannot upload $file: Filesize over limit ($filesize > $maxsize)\n";
elseif(substr(basename($file),0,1)=='.')
echo "ffaup: cannot upload $file: No dotfiles allowed!\n";
else {
$postoption['fn']=$file;
foreach($postoption as $key=>$val)
$postoptions.="--$boundary
Content-Disposition: form-data; name=\"$key\"
$val\n";
$postdata.="$postoptions--$boundary
Content-Disposition: form-data; name=\"file\"; filename=\"$file\"\n\n";
$postsize=strlen($postdata)+$filesize+strlen($boundary)+2+4;
$data="POST / HTTP/1.1
Host: $host
Connection: Close
Content-Type: multipart/form-data; boundary=$boundary
Content-Length: $postsize\n
$postdata";
if($fs=fsockopen($host,80,$errstr,$errno,10)){
if($fp=fopen($file,'r')){
$filesizekb=round($filesize/1024,2);
echo "Uploading $file (".$filesizekb."KB)...\n";
fwrite($fs,$data);
while(!feof($fp)){
fwrite($fs,fgets($fp,1024));
$perc=round((ftell($fp)/$filesize)*100,1);
if($operc!=$perc)
printf("\033[10D\033[K\033[10D %4.1f%%",$perc);
$operc=$perc;
}
echo "\033[3D% \033[2D";
fwrite($fs,"\n--$boundary--\n");
$out='';
while(!feof($fs)) $out.=fgets($fs);
fclose($fp);
}
fclose($fs);
if(preg_match('/(http:\/\/ffauploads.com\/.+?)"/',
str_replace("\n",'',$out),$match))
echo " ".$match[1]."\n";
elseif(preg_match('/id="status">(.+?)<br>/',
str_replace("\n",'',$out),$match))
echo " MSG: ".strip_tags($match[1])."\n";
} else
die('ffaup: cannot upload $file: Service not available\n');
}
}
return 1;
?>