-=-=------=-=<>0mega v2.0 by p1mpb0y y2k -=------=<>
-=<>-=<>[0mega]v2.0 by p1mpb0y-=<>-=<>
-=<>-(!)-(!)-version layout beta1 simplicity-(!)-(!)-=<>
-=-=------=-=<>0mega v2.0 by p1mpb0y y2k -=------=<>

dialog ports {
  title "port scanner by p1mpb0y"
  size -1 -1 320 215 30
  box "port scanner by p1mpb0y" ,1, 5 0 210 120
  box "command list." ,3, 230 0 80 120
  list 5, 15 15 190 115
  button "Clear",9,245 20 50 16,default
  button "HIIIII",35,945 20 50 15,ok
  button "Scan",10,245 45 50 16,default
  button "Stop",11,245 70 50 16,default
  button "Close",12,245 95 50 16,default
  box "IP address" ,34, 5 120 125 45
  box "Current port" ,31, 80 165 125 45
  box "Start port" ,36, 150 120 125 45
  edit "127.0.0.1" ,2,10 135 115 20
  edit "1" ,7,155 135 115 20
  edit "" ,8,85 180 115 20
}
on 1:dialog:ports:sclick:12:{
  dialog -x ports
  unset %ports*
}

on 1:dialog:ports:sclick:9:{
  did -r ports 5
}
on 1:dialog:ports:sclick:10:{
  set %port.ip $did(2).text
  did -b ports 2
  did -b ports 7
  did -b ports 8
  set %port.ip $did(2).text
  set %port.start $did(7)
  if (%port.ip == $null) { did -a ports 5 please specify a Ip. | halt }
  if (%port.start == $null) { did -a ports 5 please specify a start point. | halt }
  dialog -x ports
  .timer 1 0 portter
}
alias portter {
  dialog -m ports ports
  did -r ports 2
  did -r ports 7
  did -r ports 8
  did -a ports 2 %port.ip
  did -a ports 7 %port.start
  did -b ports 2
  did -b ports 7
  did -b ports 8
  scanport
}
on 1:dialog:ports:sclick:11:{
  .timerpsscan off
  unset %port*
  sockclose portscan*
  did -e ports 2
  did -e ports 7
  did -e ports 8
}

on *:sockread:portscan*:{
  if ($sockerr > 0) return
  :begin
  sockread %ports.scanned
  sockclose $sockname
  if ($sockbr == 0) return
  goto begin
}
alias scanport {
  :loop
  if (%port2.ip == $null) { set %port2.ip %port.start }
  if (%port2.ip == $null) { halt }
  if (%port2.ip == %port.stop) { did -a ports 5 done scanning. | halt }
  inc %port2.port 1
  sockopen portscan $+ %port2.port %port.ip %port2.port
  did -r ports 8
  did -a ports 8 scanned port: %port2.port
  .timerpsscan -o 1 0 scanport
}
on 1:sockopen:portscan*:{
  if ($sock($sockname).status == active) { did -a ports 5 port: %port2.port $+  }
  sockclose $sockname
}
