Downloading File
Filename: Kirby's PasteBin Uploader/Downloader
alias pastebin dialog $iif($dialog(pastebin),-v,-m) pastebin pastebin alias -l ab2word { var %x PasteBin\languages.txt, %y PasteBin\abbreviations.txt | noop $read(%y,w,$1) | return $iif($read(%x,$readn),$v1) } alias -l between { noop $regex($1,/\Q $+ $2 $+ \E(.*?)\Q $+ $3 $+ \E/gi) | return $regml($4) } alias -l hex { return $regsubex($1-,/([^\d\w])/gi,$+(%,$base($asc(\1),10,16))) } alias -l pwrite { var %x $1 | tokenize 124 $2- | write $+(PasteBin\,%x) $* } alias -l uber { return $replace($regsubex($regsubex($1,/&#(x?([a-f\d]*));/gi,$chr($iif($left(\1,1) == x,$base(\2,16,10),\2))),/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null),<,<,>,>,",",&,&) } alias -l word2ab { var %x PasteBin\languages.txt, %y PasteBin\abbreviations.txt | noop $read(%x,w,$1) | return $iif($read(%y,$readn),$v1) } menu * { PasteBin Uploader/Downloader : pastebin } dialog pastebin { title "Pastebin Uploader / Downloader" size -1 -1 454 375 option dbu box "Upload:", 1, 5 2 232 84 text "Name:", 2, 14 11 16 8 edit "", 3, 33 10 67 10, autohs limit 24 center text "Private sub-domain:", 4, 109 11 49 8 edit "", 5, 160 10 68 10, autohs limit 50 center text "Syntax highlighting:", 6, 26 25 48 8 combo 7, 81 24 75 62, sort size drop check "Private Paste?", 8, 171 24 45 10 button "Browse file...", 9, 11 51 42 12 edit "", 10, 61 52 170 10, autohs center text "How long should your post be retained?", 11, 19 39 96 8 radio "a day", 12, 126 38 24 10 radio "a month", 13, 157 38 30 10 radio "forever", 14, 195 38 28 10 button "Preview!", 15, 53 68 50 12 button "Upload!", 16, 135 68 50 12 box "Download:", 17, 237 2 213 37 text "Pastebin URL:", 18, 244 10 34 8 edit "", 19, 280 9 106 10, autohs center check "Load to remotes?", 20, 393 9 52 10 button "Preview", 21, 273 22 50 12 button "Download!", 22, 362 22 50 12 edit "", 23, 5 90 443 261, multi return hsbar vsbar box "Information:", 24, 237 36 213 50 text "", 25, 243 43 201 39 button "Close Dialog", 26, 38 356 60 14 button "Clear Screen", 27, 142 356 60 14 button "Copy to Clipboard", 28, 248 356 60 14 button "Go to line...", 29, 353 356 60 14 link "", 30, 256 49 188 7 } on *:dialog:PasteBin:*:*: { if ($devent == init) { $iif(!$isdir(PasteBin),mkdir PasteBin) if (!$isfile(PasteBin\abbreviations.txt)) || (!$isfile(PasteBin\languages.txt)) { $iif($input(Please wait while 72 languages and their abbreviations are being downloaded.,io,Please wait... :-D),dialog -x PasteBin PasteBin) hadd -m PasteBin Ticks $ticks | hadd -m PasteBin Version Load sockopen pastebin pastebin.com 80 } $iif($dialog(PasteBin),did -a PasteBin 25 $+(Status: Ready!,$crlf,Credits: PasteBin Software developed by Paul Dixon)) if ($isfile(PasteBin\languages.txt)) { loadbuf -o PasteBin 7 Pastebin\languages.txt did -c PasteBin 7 47 | did -c PasteBin 13 | did -b PasteBin 5,15-16,21-22 } hadd -m PasteBin Expiry m } if ($devent == sclick) { if ($did == 8) { did $iif($did(8).state,-e,-b) PasteBin 5 } if ($did == 9) { if ($sfile(*.txt,Choose a file to upload)) { var %x 1, %y $did(23).lines, %z $qt($v1) while (%x <= %y) { if ($did(23,%x)) { $iif($input(It appears that text exists in the box. Are you sure you want to continue?,yi,Warning!),did -r PasteBin 23,halt) break } inc %x } loadbuf -o PasteBin 23 %z did -ra PasteBin 10 %z | did -e PasteBin 16 | did -c PasteBin 10 1 | did -cf PasteBin 23 1 } } if ($did isnum 12-14) { hadd -m PasteBin Expiry $mid($gettok($did($did),$numtok($did($did),32),32),1,1) did -a PasteBin 25 $+(Status: Ready!,$crlf,Post Expiry ~ $did($did),:,$chr(32),Good for $iif($did == 12,IRC or IM conversations,$iif($did == 13,email conversations / temporary data,$iif($did == 14,long term archival of useful snippets)))) } if ($did == 15) { var %x 1, %y $did(23).lines, %z $qt($did(10)) while (%x <= %y) { if ($did(23,%x)) { $iif($input(It appears that text exists in the box. Are you sure you want to continue?,yi,Warning!),did -r PasteBin 23,halt) break } inc %x } loadbuf -o PasteBin 23 %z did -ra PasteBin 10 %z | did -r PasteBin 30 | did -e PasteBin 16 | did -c PasteBin 10 1 | did -cf PasteBin 23 1 } if ($did == 16) { savebuf -o PasteBin 23 Pastebin\pb.tmp hadd -m PasteBin Ticks $ticks | hadd -m PasteBin Version Upload hadd -m PasteBin Tags $+(parent_id=&format=,$word2ab($did(PasteBin,7)),&paste=Send&poster=,$did(PasteBin,3),&expiry=,$hget(PasteBin,Expiry),&code2=) sockopen pastebin $+($regsubex($iif(!$did(5).enabled,$null,$iif($did(5) == .,$null,$iif($did(5),$v1,$null))),(^\.(.+)\.$|^(.+)\.$|^\.(.+)$|^(.+)$),$+(\2,.)),pastebin.com) 80 did -a PasteBin 25 Status: Submitting data towards $+($regsubex($iif(!$did(5).enabled,$null,$iif($did(5) == .,$null,$iif($did(5),$v1,$null))),(^\.(.+)\.$|^(.+)\.$|^\.(.+)$|^(.+)$),$+(\2,.)),pastebin.com) ... did -b PasteBin 16,23 | did -r PasteBin 30 } if ($did == 20) { $iif($regex($did(19),^http:\/\/((.*)\.)?(pastebin)\.com\/(\w+)),did $iif($did(20).state,-b,-e) PasteBin 21) } if ($did isnum 21-22) { var %x 1, %y $did(23).lines while (%x <= %y) { if ($did(23,%x)) { $iif($input(It appears that text exists in the box. Are you sure you want to continue?,yi,Warning!),did -r PasteBin 23,halt) break } inc %x } noop $regex($did(19),http:\/\/((.*)\.)?(pastebin|pastebin)\.com\/(.*)) $iif($regml(4),$iif(!$isdir($+(PasteBin\,$regml(2))),mkdir $+(Pastebin\,$regml(2)))) $iif($did == 22,$iif($isfile($+(PasteBin\,$iif($regml(4),$+($regml(2),\)),$iif($regml(4),$v1,$regml(2)),.txt)),$iif(!$input(The file $qt($iif($regml(4),$v1,$regml(2))) in directory $qt($iif($regml(4),$+(PasteBin\,$regml(2)),PasteBin)) already exists. If you continue the file will be overwritten. Are you sure you want to continue?,yi,Warning!),halt,.remove $+(PasteBin\,$iif($regml(4),$+($regml(2),\)),$iif($regml(4),$v1,$regml(2)),.txt)))) noop $regex($did(19),http:\/\/((.*)\.)?(pastebin|pastebin)\.com\/(.*)) hadd -m PasteBin Ticks $ticks | hadd -m PasteBin Version Download | hadd -m PasteBin Method $iif($did == 21,Preview,Download) sockopen pastebin pastebin.com 80 | sockmark pastebin $iif($regml(4),$regml(2) $v1,$regml(2)) did -b PasteBin 15-16,19-23 | did -a PasteBin 25 Status: Connecting to $did(19) ... | did -r PasteBin 30 } if ($did == 26) { dialog -x PasteBin PasteBin } if ($did == 27) { did -r PasteBin 3,5,10,19,23 | did -b PasteBin 15-16,21-22 | did -u Pastebin 8,12-14,20 | did -c PasteBin 7 47 | did -c PasteBin 13 | did -a PasteBin 25 $+(Status: Cleared screen!) } if ($did == 28) { if ($did(23).seltext) { did -a PasteBin 25 $+(Status: Copied selected text to clipboard!,$crlf,Size: $bytes($len($v1),b) bytes,$crlf,Number of lines: $iif($count($v1,$crlf),$v1,1)) clipboard $v1 | halt } clipboard $null var %x 1, %y $did(23).lines while (%x <= %y) { var %z $calc(%z + ($len($did(23,%x)) + 2)) clipboard -an $did(23,%x) inc %x } did -a PasteBin 25 $+(Status: Copied all text to clipboard!,$crlf,Size: $bytes(%z,b) bytes,$crlf,Number of lines: $did(23).lines) } if ($did == 29) { var %x $input(Enter a line number $iif($did(23).lines == 1,$null,from 1 to $did(23).lines) to go to...,ei,Go To Line) did -cf PasteBin 23 $iif($abs(%x) isnum 1- $did(23).lines,$v1,$iif($abs(%x) > $did(23).lines,$v2,$iif(!$abs(%x),1))) } if ($did == 30) { clipboard $did(30) } } if ($devent == rclick) && ($did == 30) { clipboard $did(30) } if ($devent == dclick) && ($did == 30) { run $did(30) } if ($devent == edit) { if ($did == 3) && ($regex($did(3),/[^\w\-]/ig)) { did -ra PasteBin 3 $regsubex($did(3),/([^\w\-])/ig,$null) } if ($did == 5) { if ($regex($did(5),/[^\w\-\.]/ig)) || ($regex($did(5),/\.{2}/)) { did -ra PasteBin 5 $regsubex($regsubex($did(5),/[^\w\-\.]/ig,$null),/\.{2}/g,.) } } if ($did == 10) { did $iif($isfile($qt($did(10))),-e,-b) PasteBin 15 } if ($did == 19) { did $iif($regex($did(19),^http:\/\/((.*)\.)?(pastebin)\.com\/(\w+)),-e,-b) PasteBin 21-22 } if ($did == 23) { did $iif($did(23),-e,-b) PasteBin 16 did -a PasteBin 25 $+(Status: Ready!,$crlf,Note: To highlight particular lines,$chr(44),$chr(32),prefix each line with @@) } } if ($devent == close) { hfree PasteBin | unset %pb } } on *:sockopen:pastebin: { if ($hget(PasteBin,Version) == Download) || ($hget(PasteBin,Version) == Load) { tokenize 32 $sock(pastebin).mark sockwrite -n $sockname GET $+(/,$iif(!$1,$null,$iif(!$2,$1,$2))) HTTP/1.1 sockwrite -n $sockname Host: $+($iif(!$1,$null,$iif($2,$+($1,.))),pastebin.com) sockwrite -n $sockname $crlf } elseif ($hget(PasteBin,Version) == Upload) { var %x 1, %y $did(PasteBin,23).lines while (%x <= %y) { var %z $calc(%z + $len($hex($did(PasteBin,23,%x)))) inc %x } sockwrite -n $sockname POST /pastebin.php HTTP/1.1 sockwrite -n $sockname Host: $+($regsubex($iif(!$did(Pastebin,5).enabled,$null,$iif($did(PasteBin,5) == .,$null,$iif($did(PasteBin,5),$v1,$null))),(^\.(.+)\.$|^(.+)\.$|^\.(.+)$|^(.+)$),$+(\2,.)),pastebin.com) sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded sockwrite -n $sockname Content-length: $calc($len($hget(PasteBin,Tags)) + %z + (3 * %y)) sockwrite $sockname $crlf sockwrite $sockname $hget(PasteBin,Tags) hinc -m PasteBin Buffer } } on *:sockwrite:pastebin: { if ($hget(PasteBin,Version) == Upload) && ($hget(PasteBin,Buffer) <= $did(PasteBin,23).lines) { sockwrite $sockname $+($hex($did(PasteBin,23,$hget(PasteBin,Buffer))),%,0A) hinc -m PasteBin Buffer } } on *:sockread:pastebin: { tokenize 32 $sock(pastebin).mark sockread %pb if (!$1) { if ($regex(%pb,<select name="format">)) && ($hget(PasteBin,Version) == Load) { var %x $regsubex($between(%pb,$+($str(-,28),</option>),</select>,1),/<option value="(.*?)">(.*?)</option>/g,$+(\1,$chr(124))), %y $regsubex($between(%pb,$+($str(-,28),</option>),</select>,1),/<option value="(.*?)">(.*?)</option>/g,$+(\2,$chr(124))) pwrite abbreviations.txt %x | pwrite languages.txt %y sockclose pastebin dialog -m PasteBin PasteBin did -a PasteBin 25 $+(Status: Downloaded text files,$crlf,Total estimated time: $calc(($ticks - $hget(PasteBin,Ticks))/1000) seconds) } elseif ($regex(%pb,Location:(.*))) && ($hget(PasteBin,Version) == Upload) { sockclose pastebin did -a PasteBin 25 $+(Status: File uploaded,$crlf,Link:,$crlf,Size: $bytes($file(PasteBin\pb.tmp),b) bytes,$crlf,Number of lines: $did(PasteBin,23).lines,$crlf,Total estimated time: $calc(($ticks - $hget(PasteBin,Ticks))/1000) seconds) did -a PasteBin 30 $regml(1) | did -e PasteBin 16,23 | did -cf Pastebin 23 1 .remove PasteBin\pb.tmp } } elseif ($1) { if ($regex(%pb,<title>(.*)\s+pastebin\s+-)) { hadd -m PasteBin Type $regml(1) | did -a PasteBin 25 Status: Buffering $did(PasteBin,19) ... } if ($regex(%pb,<h1>(.*)<br/><a href="#")) { hadd -m PasteBin Info $uber($regml(1)) } if ($regex(%pb,<div class="de[\d]">(.*)</div>)) || ($regex(%pb,<li class="li[\d]"><div class="de[\d]">(.*)</div>)) { hadd -m PasteBin Directory $qt($+(PasteBin\,$iif($2,$+($1,\)),$iif(!$2,$1,$2),$iif(!$2,$+($iif($hget(PasteBin,Type),$+($chr(32),$+($chr(40),$v1,$chr(41)))),$iif($did(PasteBin,20).state,.mrc,.txt)),$iif($did(PasteBin,20).state,.mrc,.txt)))) var %x $uber($regml(1)) $iif($hget(PasteBin,Method) == Download,write $hget(PasteBin,Directory) $+($replace(%x, ,$iif($count(%x, ) != $numtok(%x,32),$chr(32))),$crlf)) did -a PasteBin 23 $+($replace(%x, ,$iif($count(%x, ) != $numtok(%x,32),$chr(160))),$crlf) } if ($regex(%pb,</h1><ul><li>(.*)</li>)) || ($regex(%pb,(.*)<P>)) { sockclose pastebin did -a PasteBin 25 $+(Status: Ready!,$crlf,Error: Could not download $qt($+(http://,$iif($2,$1),pastebin.com/,$iif($2,$v1,$1))) - $regml(1)) did -e PasteBin 16,19-23 | did -f PasteBin 23 } if ($regex(%pb,<select name="format">)) { sockclose pastebin did -e PasteBin 16,19-23 | did -i PasteBin 23 1 | did -d PasteBin 23 1 | did -d PasteBin 23 $did(PasteBin,23).lines did -a PasteBin 25 $+(Status: $iif($hget(PasteBin,Method) == Download,$iif($did(PasteBin,20).state,Loaded script $+($chr(35),$script(0),:),Downloaded to:) $hget(PasteBin,Directory),Now previewing),$crlf,Link:,$crlf,PasteBin Type: $iif($hget(PasteBin,Type),$v1,None),$crlf,PasteBin Info: $hget(PasteBin,Info),$crlf,Total estimated time: $calc(($ticks - $hget(PasteBin,Ticks))/1000) seconds) did -a PasteBin 30 $did(PasteBin,19) | did -c PasteBin 19 1 | did -cf Pastebin 23 1 $iif($did(PasteBin,20).state,.load -rs $qt($+($mircdir,$noqt($hget(PasteBin,Directory))))) } } }