All pastes #584255 Raw Edit

Mine

public text v1 · immutable
·published 2007-06-22 17:47 UTC
rendered paste body
alias download {
  if ($sock(updater_socket)) {
    did -a updater_xirc 9 Updater already running, please wait.
    return
  }
  did -a updater_xirc 9 Updating X-IRC to version %latestversion
  sockopen updater_socket ownagescape.co.uk 80
}
on *:sockopen:updater_socket:{
  if ($sockerr) {
    did -a updater_xirc 9 Error: $sockerr when downloading
    return
  }
  unset %downloadlength %downloadready
  sockwrite -n $sockname GET /xirc/updatelist.txt HTTP/1.0
  sockwrite -n $sockname Accept: */*
  sockwrite -n $sockname Host: ownagescape.co.uk
  sockwrite -n $sockname
  set %listrecied 1
}
on *:sockread:updater_socket:{
  if (%listrecieved == 1) {
    ;List recieved, lets parse it
    var %v, %temp = abc, %i = 0
    sockread %v
    while (%temp != $null) {
      %temp = $gettok(%v,%i,10)
      if (%temp) {
        writeini "filelist.ini" list %i %temp
      }
      %i = %i + 1
    }
    %set %files %i
    set %filesrecieved 0
    /requestfiles
    unset %listrecieved
  }
  elseif (%downloadready != 1) {
    var %header
    sockread %header
    while ($sockbr) {
      if (Content-length: * iswm %header) {
        %downloadlength = $gettok(%header,2,32)
        did -a updater_xirc 9 File Size: %downloadlength bytes
      }
      elseif (* !iswm %header) {
        %downloadready = 1
        %downloadoffset = $sock($sockname).rcvd
        break
      }
      sockread %header
    }
  }
  sockread 4096 &d
  while ($sockbr) {
    %filesrecieved = %filesrecieved + 1
    did -a updater_xirc 9 $round( $calc(100 * ($sock($sockname).rcvd - %downloadoffset) / %downloadlength) ,1) $+ %
    bwrite $qt($+($scriptdir,$readini(filelist.ini,list,%filesrecieved))) -1 -1 &d
    sockread 4096 &d
  }
}
on *:sockclose:updater_socket:{
  did -a updater_xirc 9 Update Complete!
  did -a updater_xirc 9 Please Restart X-IRC.
  write -c $qt($+($scriptdir,version.txt))
  write $qt($+($scriptdir,version.txt)) %latestversion
  /reload -rs $qt($+($scriptdir,xfire.mrc))
}

alias requestfiles {
  if (%filesrecieved <= %files) {
    sockwrite -n updater_socket GET /xirc/ $+ $readini(filelist.ini,list,%filesrecieved) HTTP/1.0
    sockwrite -n updater_socket Accept: */*
    sockwrite -n updater_socket Host: ownagescape.co.uk
    sockwrite -n updater_socket
  }
  else sockclose updater_socket
}