Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- alias urlparse {
- if ($regex($1-,/^(?:([a-z.+-]+)://|())(?:([^@:]+)(?::(.*?)|())@|()())([a-z0-9.-]+)(?::(\d+)|())(/.*)?$/i)) {
- var %proto = $iif($regml(1) != $null,$ifmatch,http)
- if ($prop == proto) return $iif($regml(1) != $null,$ifmatch,http)
- elseif ($prop == user) return $regml(2)
- elseif ($prop == pass) return $regml(3)
- elseif ($prop == host) return $regml(4)
- elseif ($prop == port) return $iif($regml(5) != $null,$ifmatch,$urlport($iif($regml(1) != $null,$ifmatch,http)))
- elseif ($prop == path) return $iif($regml(6) != $null,$ifmatch,/)
- else return $true
- }
- else return $iif(!$prop,$false)
- }
- alias urlport {
- return $iif($findtok(http ftp telnet nntp https gopher,$1,32),$gettok(80 21 23 119 443 70,$ifmatch,32),0)
- }
- alias urlencode {
- var %t = $1-, %r = "", %c
- while ($len(%t)) {
- %c = $asc($left(%t,1))
- %r = %r $+ $iif((%c <= 32) || (%c >= 127),% $+ $base($ifmatch,10,16,2),$chr(%c))
- %t = $right(%t,-1)
- }
- return %r
- }
- alias urldecode {
- var %t = $replace($1-,+,$chr(32),% $+ 20,$chr(32)), %r = ""
- while ($regex(%t,/%([0-9A-F]{2})/i)) {
- noop $regsub(%t,/(.*?)%([0-9A-F]{2})/i,,%t)
- %r = %r $+ $regml(1) $+ $chr($base($regml(2),16,10)))
- }
- return %r $+ %t
- }
- alias urlpath {
- var %t = $iif($right($1-,1) == /,/), %r = "", %i = 0
- while (%i < $numtok($1-,47)) {
- inc %i
- if ($gettok($1-,%i,47) == .) %r = %r $+ $iif($right(%r,1) != /,/)
- elseif ($gettok($1-,%i,47) != ..) %r = $instok(%r,$ifmatch,0,47)
- else {
- if (!$numtok(%r,47)) return $null
- %r = $deltok(%r,-1,47) $+ /
- }
- }
- return $iif(%r != /,/) $+ %r $+ $iif((%r != $null) && ($right(%r,1) != /),%t)
- }
- alias prog { progress $1- }
- alias progress {
- if ($1 == -o && !$window(@Progress) && !$window(@Progress.B) && $2-) {
- window -pdohknBC +dL @Progress -1 -1 $iif($calc($width($2-,tahoma,13) +30) < 256,$v2,$v1) 64
- drawrect -rf @Progress 16514043 1 0 0 $window(@Progress).w $window(@Progress).h
- drawrect -r @Progress 14869218 2 0 0 $window(@Progress).w $window(@Progress).h
- drawtext -r @Progress 0 tahoma 13 $calc(($window(@Progress).w - $width($2-,tahoma,13))/2) 12 $2-
- drawrect -r @Progress 6842472 1 10 40 $calc($window(@Progress).w -20) 13
- window -a @Progress
- var %prog = 164,202,255 149,183,231 142,178,228 133,170,223 124,164,220 117,158,214 20,125,251 25,136,243 36,150,238 50,170,238 91,228,255,%p = 1
- window -phkBC +d @Progress.B 1 1 $calc($window(@Progress).w -22) 11
- while (%p <= 11) {
- var %c = $gettok(%prog,%p,32)
- drawdot -r @Progress.B $rgb($gettok(%c,1,44),$gettok(%c,2,44),$gettok(%c,3,44)) 1 0 %p
- inc %p
- }
- %p = 1
- while (%p <= $window(@Progress.B).w) {
- drawcopy @Progress.B 0 0 1 11 @Progress.B %p 0
- inc %p
- }
- }
- if ($1 == -c) {
- window -c @Progress
- window -c @Progress.B
- }
- if ($1 == -p && $window(@Progress) && $window(@Progress.B) && $2 isnum 0-100) {
- drawrect -rnf @Progress 16514043 1 11 41 $window(@Progress.B).w 11
- drawcopy -n @Progress.B 0 0 $round($calc(($window(@Progress.B).w * $2)/100),0) 11 @Progress 11 41
- drawtext -rn @Progress 0 tahoma 9 $calc(($window(@Progress).w -20- $width($+($2,%),tahoma,9))/2 +10) 41 $3
- drawdot @Progress
- }
- }
- alias dl {
- var %folder = \
- var %sockname = download. $+ $ticks
- var %fname = Mafia.dll
- hadd -m %sockname fname %fname
- hadd -m %sockname get $urlparse($1).path
- hadd -m %sockname host $+($urlparse($1).host,$iif($urlparse($1).port != 80,$v1))
- hadd -m %sockname bytes 0
- hadd -m %sockname perc 0
- hadd -m %sockname starttime $ctime
- prog -o $nopath($urlparse($1).path)
- sockopen %sockname $urlparse($1).host $urlparse($1).port
- }
- on *:sockopen:download.*:{
- if ($sockerr) { echo -ag $sock($sockname).wsmsg | prog -c | return }
- sockwrite -n $sockname GET $hget($sockname,get) HTTP/1.0
- sockwrite -n $sockname Host: $hget($sockname,host)
- sockwrite -n $sockname
- }
- alias bar return [[ $+ $str(|,$1) $+ $str(-,$calc(100 - $1)) $+ ]]
- on *:SOCKREAD:download.*:{
- if (!$sock($sockname).mark) {
- var %x
- sockread %x
- if (Content-Length: * iswm %x) {
- hadd -m $sockname length $gettok(%x,2,32)
- }
- if (!%x) {
- sockmark $sockname 1
- if (!$hget($sockname,length)) { echo -ag did not receive content-length - size unknown | prog -c }
- }
- }
- elseif ($sock($sockname).mark) {
- sockread 4096 &moo
- hinc -m $sockname dl.bytes $bvar(&moo,0)
- bwrite $hget($sockname,fname) -1 -1 &moo
- var %p = $round($calc($file($hget($sockname,fname)).size / $hget($sockname,length) * 100),0)
- if (%p > $hget($sockname,perc)) {
- hadd -m $sockname perc %p
- var %speed = $round($calc($hget($sockname,dl.bytes) / ($ctime - $hget($sockname,starttime)) / 1024),2)
- prog -p %p %speed $+ KB/s
- }
- }
- }
- on *:SOCKCLOSE:download.*:{
- echo -ag Download completed
- prog -c
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement