All pastes #265013 Raw Edit

Something

public text v1 · immutable
·published 2006-12-02 22:46 UTC
rendered paste body
alias server.chatpoint {
  var %scp.local.port, %scp.local.sockname
  %scp.local.port = $rand(1000,5000)
  %scp.local.sockname = $+(chatpoint.local.,$rand(1,999999))
  socklisten %scp.local.sockname %scp.local.port
  set $+(%,scp.remote.server.,%scp.local.sockname) $1-
  server 127.0.0.1 %scp.local.port
}

on *:socklisten:chatpoint.local.*: {
  if ($sockerr > 0) {
    return
  }
  var %scp.remote.sockname, %scp.local.socket
  %scp.remote.sockname = $+(chatpoint.remote.,$rand(1,999999))
  %scp.local.socket = $+(chatpoint.newlocal.,$rand(1,999999))
  sockaccept %scp.local.socket
  sockopen %scp.remote.sockname [ [ $+(%,scp.remote.server.,$sockname) ] ] 6667
  sockmark %scp.local.socket %scp.remote.sockname
  sockmark %scp.remote.sockname %scp.local.socket
  unset $+(%,scp.remote.server.,$sockname)
  sockclose $sockname
}

on *:sockopen:chatpoint.remote.*: {
  if ($sockerr > 0) {
    sockwrite -n $sock($sockname).mark CONNECTION ERROR
    sockclose $sock($sockname).mark
    return
  }
  sockwrite -n $sock($sockname).mark CONNECTION SUCCESSFUL
  sockwrite -n $sockname NICK $+(V4C16_-1_17923439_,$me)
  sockwrite -n $sockname USER $+(V4C16_-1_17923439_,$me) 0 * :ChatPoint 4 user, chatpointId = 16
}

on *:sockread:chatpoint.remote.*: {
  if ($sockerr > 0) {
    return
  }
  sockread %scp.read.temp
  sockwrite -n $sock($sockname).mark %scp.read.temp
}

on *:sockread:chatpoint.newlocal.*: {
  if ($sockerr > 0) {
    return
  }
  sockread %scp.local.read
  if (($gettok(%scp.local.read,1,32) != NICK) && ($gettok(%scp.local.read,1,32) != USER)) {
    sockwrite -n $sock($sockname).mark %scp.local.read
  }
}

on *:sockclose:chatpoint.remote.*: {
  sockwrite -n $sock($sockname).mark CONNECTION CLOSED
  sockclose $sock($sockname).mark
}

on *:sockclose:chatpoint.newlocal.*: {
  sockclose $sock($sockname).mark
}