All pastes #749411 Raw Edit

Unnamed

public text v1 · immutable
#749411 ·published 2007-10-25 18:01 UTC
rendered paste body
Menu * {
  . MithX : dialog -md Clone Clone
}

Alias Clone {
  If ($Dialog(Clone)) { Dialog -v Clone }
  Else { Dialog -md Clone Clone }
}
dialog Clone {
  title "MithX"
  size -1 -1 577 512
  option pixels
  tab "Settings", 75, 8 8 559 463
  box "Settings", 1, 18 41 540 420, tab 75
  edit "irc.gudhak.net", 2, 356 78 135 21, tab 75 autohs
  text "Server:", 3, 356 62 42 16, tab 75
  edit "6667", 4, 494 78 44 20, tab 75 limit 5
  text "Protocol:", 5, 241 237 42 16, tab 75
  combo 6, 253 256 80 68, tab 75 size drop
  box "Connection", 7, 352 49 196 204, tab 75
  box "Nickname and Real Name", 8, 351 259 199 195, tab 75
  text "Initial Sockets:", 9, 359 106 77 16, tab 75
  edit "128", 10, 494 102 42 20, tab 75 limit 4
  radio "Random", 11, 354 329 72 20, tab 75
  radio "List:", 12, 354 288 42 20, tab 75
  radio "Other:", 13, 354 309 54 20, tab 75
  edit "Broken!", 14, 396 289 96 20, disable tab 75 autohs
  edit "", 15, 409 310 130 20, disable tab 75 limit 10
  button "&Browse", 16, 494 288 52 20, disable tab 75
  text "UserMode:", 17, 370 165 53 16, tab 75
  edit "+i", 18, 428 163 60 20, tab 75
  edit "", 19, 366 200 168 45, tab 75 multi return autohs autovs
  text "Raw:", 20, 371 183 31 16, tab 75
  box "Proxy/Socks List", 26, 24 58 320 396, tab 75
  edit "", 85, 413 401 126 21, tab 75 autohs limit 70
  text "Host/IP:", 27, 31 75 43 16, tab 75
  text "Port:", 28, 239 76 28 17, tab 75
  edit "", 29, 79 72 157 20, tab 75 limit 15
  edit "", 30, 269 74 70 20, tab 75 limit 5
  button "Add", 31, 252 113 82 22, tab 75
  button "Remove", 32, 251 138 82 22, tab 75
  button "Import File", 33, 250 162 82 22, tab 75
  list 34, 29 96 208 350, tab 75 size
  button "Clear All", 35, 249 211 82 22, tab 75
  check "Respond to CTCP?", 81, 359 126 113 18, tab 75
  text "Real Name:", 82, 358 361 56 16, tab 75
  button "Clipboard", 83, 250 187 82 21, tab 75
  box "Perform On Connect", 86, 360 149 182 99, tab 75
  radio "Random", 87, 358 420 72 20, tab 75
  radio "Other:", 88, 358 400 54 20, tab 75
  radio "List:", 89, 358 379 42 20, tab 75
  edit "Broken!", 90, 401 379 96 20, disable tab 75 autohs
  button "&Browse", 91, 498 378 52 20, disable tab 75
  text "Local connections are broke once again!", 96, 243 337 96 43, tab 75 center
  tab "Actions", 76
  box "Actions", 36, 177 40 380 420, tab 76
  box "Nicklist", 37, 16 40 156 356, tab 76
  button "Join", 41, 184 79 67 20, disable tab 76
  edit "", 42, 255 78 84 21, tab 76 autohs
  button "Part", 43, 183 102 67 20, disable tab 76
  edit "", 44, 255 101 83 21, tab 76 autohs
  edit "", 45, 340 103 204 21, tab 76 autohs
  button "Join Part", 46, 183 125 67 20, disable tab 76
  edit "", 47, 253 355 84 21, hide tab 76 autohs
  edit "", 48, 338 378 204 21, hide tab 76 autohs
  button "Message", 49, 183 189 67 20, disable tab 76
  edit "", 50, 254 190 83 21, tab 76 autohs
  edit "", 51, 340 190 204 21, tab 76 autohs
  button "Notice", 52, 183 213 67 20, disable tab 76
  edit "", 53, 254 213 84 21, tab 76 autohs
  edit "", 54, 340 213 204 21, tab 76 autohs
  button "Describe", 55, 183 237 67 20, disable tab 76
  edit "", 56, 254 237 84 21, tab 76 autohs
  edit "", 57, 339 237 204 21, tab 76 autohs
  button "CTCP", 58, 182 404 67 20, hide disable tab 76
  edit "", 59, 253 404 84 21, tab 76 autohs
  combo 60, 340 404 204 71, tab 76 size edit drop
  button "DCC Send", 61, 182 380 67 20, hide disable tab 76
  edit "", 62, 254 125 84 21, tab 76 autohs
  edit "", 63, 340 125 204 21, tab 76 autohs
  button "DCC Chat", 64, 182 355 67 20, disable tab 76
  edit "", 65, 253 379 84 21, tab 76 autohs
  button "Nick", 66, 99 363 67 20, tab 76
  radio "Nicklist:", 68, 26 267 54 20, tab 76
  radio "Other:", 69, 26 324 54 20, tab 76
  radio "Random", 67, 25 249 58 20, tab 76
  button "Browse", 72, 99 307 67 20, disable tab 76
  edit "Broken!", 70, 25 285 141 21, disable tab 76 autohs
  edit "", 74, 253 430 292 21, tab 76 multi return autohs autovs
  button "Raw", 73, 182 430 67 20, disable tab 76
  edit "", 71, 25 340 141 21, disable tab 76 limit 10
  list 38, 24 56 140 192, tab 76 size extsel vsbar
  text "Control:", 39, 413 57 42 16, tab 76
  combo 40, 461 53 92 60, tab 76 size drop
  box "Statistics", 21, 16 400 156 60, tab 76
  text "Total Sockets:", 23, 20 436 96 16, tab 76 center
  text "Connected Sockets:", 22, 20 420 96 16, tab 76 center
  text "0", 24, 120 420 42 16, tab 76
  text "0", 25, 120 436 42 16, tab 76
  text "---------------------------------------------------------------------------------------", 92, 183 150 367 13, tab 76 center
  tab "Leech!", 97
  edit "", 98, 24 56 260 21, tab 97 autohs
  button "&Add URL", 99, 288 56 67 20, tab 97
  list 100, 24 80 332 340, tab 97 size hsbar
  box "URL List", 101, 16 40 348 420, tab 97
  box "Taken Proxies/Socks", 102, 368 40 188 261, tab 97
  list 103, 376 56 172 197, tab 97 size
  button "Export", 104, 465 254 84 20, tab 97
  text "Completed:", 105, 368 327 58 16, tab 97
  text "0", 106, 432 346 122 16, tab 97
  button "Get List", 107, 368 366 187 25, tab 97
  button "Move to Proxy/Socks List", 109, 376 275 173 20, tab 97
  text "Total Sites:", 110, 368 345 58 16, tab 97
  text "0", 111, 432 327 122 16, tab 97
  text "Socks/Proxies Taken:", 112, 368 307 106 16, tab 97
  text "0", 113, 480 307 74 16, tab 97
  button "Clear", 108, 376 253 84 20, tab 97
  button "Remove Selected", 114, 24 432 163 20, tab 97
  button "Remove All", 115, 192 432 163 20, tab 97
  button "&Connect", 77, 28 473 98 35
  button "&Disconnect", 78, 142 472 99 36
  button "Clos&e", 79, 490 480 75 25
  button "Connected &IP:Ports", 80, 449 4 115 23
  button "Close Open &Sockets", 84, 379 480 107 25
  text "MithX Devo v0.6", 93, 213 7 99 16, center
  link "#Remy", 94, 326 7 44 16
  link "Known Bugs", 95, 376 7 63 16
}


On *:Dialog:Clone:Init:*: {
  Did -a $DName 6 Normal
  Did -a $DName 6 Proxy
  Did -a $DName 6 Sock
  Did -c $DName 6 2
  Did -a $DName 40 All
  Did -a $DName 40 Selected
  Did -c $DName 40 1
  Did -a $DName 60 PING
  Did -a $DName 60 TIME
  Did -a $DName 60 VERSION
  Did -c $DName 11
  Did -c $DName 67
  Add Socks
}

On *:Dialog:Clone:Edit:*: {
  If ($Did == 42) {
    If ($Left($Did(42),1) == $Chr(35)) && ($Count($Did(42),$Chr(32)) <= 1) { Did -e $DName 41 }
    Else { Did -b $DName 41 }
  }
  If ($Did == 44) {
    If ($Left($Did(44),1) == $Chr(35)) && ($Count($Did(44),$Chr(32)) == 0) { Did -e $DName 43 }
    Else { Did -b $DName 43 }
  }
  If ($Did == 47) {
    If ($Left($Did(47),1) == $Chr(35)) && ($Count($Did(47),$Chr(32)) == 0) { Did -e $DName 46 }
    Else { Did -b $DName 46 }
  }
  If ($Did == 50) {
    If ($Count($Did(50),$Chr(32)) == 0) && ($Len($Did(50)) >= 1) && ($Did(51)) { Did -e $DName 49 }
    Else { Did -b $DName 49 }
  }
  If ($Did == 51) {
    If ($Count($Did(50),$Chr(32)) == 0) && ($Len($Did(50)) >= 1) && ($Did(51)) { Did -e $DName 49 }
    Else { Did -b $DName 49 }
  }
  If ($Did == 53) {
    If ($Count($Did(53),$Chr(32)) == 0) && ($Len($Did(53)) >= 1) && ($Did(54)) { Did -e $DName 52 }
    Else { Did -b $DName 52 }
  }
  If ($Did == 54) {
    If ($Count($Did(53),$Chr(32)) == 0) && ($Len($Did(50)) >= 1) && ($Did(54)) { Did -e $DName 52 }
    Else { Did -b $DName 52 }
  }
  If ($Did == 56) {
    If ($Count($Did(56),$Chr(32)) == 0) && ($Len($Did(56)) >= 1) && ($Did(57)) { Did -e $DName 55 }
    Else { Did -b $DName 55 }
  }
  If ($Did == 57) {
    If ($Count($Did(56),$Chr(32)) == 0) && ($Len($Did(56)) >= 1) && ($Did(57)) { Did -e $DName 55 }
    Else { Did -b $DName 55 }
  }
  If ($Did == 59) {
    If ($Count($Did(59),$Chr(32)) == 0) && ($Len($Did(59)) >= 1) && ($Did(60)) { Did -e $DName 58 }
    Else { Did -b $DName 58 }
  }
  If ($Did == 60) {
    If ($Count($Did(59),$Chr(32)) == 0) && ($Len($Did(59)) >= 1) && ($Did(60)) { Did -e $DName 58 }
    Else { Did -b $DName 58 }
  }
  If ($Did == 62) {
    If ($Count($Did(62),$Chr(32)) == 0) && ($Len($Did(62)) >= 1) && ($Left($Did(62),1) != $Chr(35)) && ($Did(63)) { Did -e $DName 61 }
    Else { Did -b $DName 61 }
  }
  If ($Did == 63) {
    If ($Count($Did(62),$Chr(32)) == 0) && ($Len($Did(62)) >= 1) && ($Left($Did(62),1) != $Chr(35)) && ($Did(63)) { Did -e $DName 61 }
    Else { Did -b $DName 61 }
  }
  If ($Did == 65) {
    If ($Count($Did(65),$Chr(32)) == 0) && ($Len($Did(65)) >= 1) && ($Left($Did(65),1) != $Chr(35)) { Did -e $DName 64 }
    Else { Did -b $DName 64 }
  }
  If ($Did == 74) {
    If ($Len($Did(74)) >= 1) { Did -e $DName 73 }
    Else { Did -b $DName 73 }
  }
  If ($Did == 70) {
    If ($Did(70)) { Did -e $DName 66 }
    Else { Did -b $DName 66 }
  }
  If ($Did == 71) {
    If ($Did(71)) { Did -e $DName 66 }
    Else { Did -b $DName 66 }
  }
}

Alias Clone.Error { Var %E = $Input($1-,o,Clone) }

On *:Dialog:Clone:SClick:*: {
  If ($Did == 31) {
    If (*.*.* iswm $Did(29)) && ($Did(30) <= 65535) && ($Did(30) >= 1) { Did -a $DName 34 $Did(29) $Did(30) }
    Else { Clone.Error Invalid Sock/Proxy or Port }
  }
  If ($Did == 32) && ($Did(34).Sel) { Did -d $DName 34 $Did(34).Sel }
  If ($Did == 33) {
    Var %F = $SFile($mIRCDir,Clone,Import)
    If (%F) {
      Var %I = 1
      While ($Read(%F,%I)) {
        Var %F1 = $Read(%F,%I)
        If ($Gettok(%F1,0,58) == 2) { Var %F1 = $Replace(%F1,$Chr(58),$Chr(32)) }
        If ($Gettok(%F1,0,32) != 2) || ($Abs($Gettok(%F1,2,32)) == 0) { Clone.Error Invalid Sock/Proxy file | Return }
        Else { Did -a $DName 34 %F1 }
        Inc %I
      }
    }
  }
  If ($Did == 83) {
    Var %I = 1
    While ($CB(%I)) {
      Var %F1 = $CB(%I)
      If ($Gettok(%F1,0,58) == 2) { Var %F1 = $Replace(%F1,$Chr(58),$Chr(32)) }
      If ($Gettok(%F1,0,32) != 2) || ($Abs($Gettok(%F1,2,32)) == 0) { Clone.Error Invalid Socks/Proxys in Clipboard | Return }
      Else { Did -a $DName 34 %F1 }
      Inc %I
    }
  }
  If ($Did == 35) { Did -r $DName 34 }
  If ($Did == 11) { Did -b $DName 14 | Did -b $DName 15 | Did -b $DName 16 }
  If ($Did == 12) { Did -e $DName 14 | Did -b $DName 15 | Did -e $DName 16 }
  If ($Did == 13) { Did -b $DName 14 | Did -e $DName 15 | Did -b $DName 16 }
  If ($Did == 67) { Did -b $DName 70 | Did -b $DName 71 | Did -b $DName 72 | Did -e $DName 66 }
  If ($Did == 68) {
    Did -e $DName 70 | Did -b $DName 71 | Did -e $DName 72
    If ($Did(70)) { Did -e $DName 66 }
    Else { Did -b $DName 66 }
  }
  If ($Did == 69) {
    Did -b $DName 70 | Did -e $DName 71 | Did -b $DName 72
    If ($Did(71)) { Did -e $DName 66 }
    Else { Did -b $DName 66 }
  }
  If ($Did == 16) {
    Var %F = $SFile($mIRCDir,Clone,Import)
    If (%F) { Did -ra $DName 14 %F }
  }
  If ($Did == 72) {
    Var %F = $SFile($mIRCDir,Clone,Import)
    If (%F) { Did -ra $DName 70 %F | Did -e $DName 66 }
  }
  If ($Did == 60) {
    If ($Count($Did(59),$Chr(32)) == 0) && ($Len($Did(59)) >= 1) && ($Did(60)) { Did -e $DName 58 }
    Else { Did -b $DName 58 }
  }
  If ($Did == 41) { Clone.Do $Did(40) JOIN $Did(42) }
  If ($Did == 43) { Clone.Do $Did(40) PART $Did(44) : $+ $Did(45) }
  If ($Did == 46) { Clone.Do $Did(40) JOINPART $Did(47) : $+ $Did(48) }
  If ($Did == 49) { Clone.Do $Did(40) PRIVMSG $Did(50) : $+ $Did(51) }
  If ($Did == 52) { Clone.Do $Did(40) NOTICE $Did(53) : $+ $Did(54) }
  If ($Did == 55) { Clone.Do $Did(40) PRIVMSG $Did(56) :ACTION $Did(57) $+  }
  If ($Did == 58) { Clone.Do $Did(40) PRIVMSG $Did(59) : $+ $Did(60) $+  }
  If ($Did == 61) { Clone.Do $Did(40) PRIVMSG $Did(62) :DCC SEND $Did(63) $Rand(0,4294967294) 1024 $Rand(10000,500000) $+  }
  If ($Did == 64) { Clone.Do $Did(40) PRIVMSG $Did(65) :DCC CHAT chat $Rand(0,4294967294) 1024 }
  If ($Did == 66) { Clone.Do $Did(40) NICK }
  If ($Did == 73) {
    Var %I = 1
    While ($Did(74,%I)) { Clone.Do $Did(40) RAW $Did(74,%I) | Inc %I }
  }
  If ($Did == 77) {
    If (!$Did(34,1)) && (($Did(6) == Proxy) || ($Did(6) == Sock)) { Clone.Error Enter $Did(6) to the $Did(6) list }
    ElseIf (*.*.* !iswm $Did(2)) { Clone.Error Enter a valid Server }
    ElseIf ($Did(4) <= 0) && ($Did(4) >= 65535) { Clone.Error Enter a valid Port }
    ElseIf (!$Did(10)) || ($Did(10) !isnum) { Clone.Error Enter the number clones to connect }
    ElseIf ($Did(12).State == 1) && ($Exists($Did(14)) == $False) { Clone.Error Nicklist doesnt Exist }
    ElseIf ($Did(13).State == 1) && (!$Did(15)) { Clone.Error Enter a Nickname }
    ElseIf ($Did(6) == Sock) && ($Remove($Did(2),.) !isnum) { .Enable #Clone.DNS | .DNS $Did(2) }
    Else { .TimerClone.Go $Did(10) 0 Clone.Go }
  }
  If ($Did == 78) { Did -r $DName 38 | Did -ra $DName 24 0 | Did -ra $DName 25 0 | SockClose Clone.* | Unset %Clone.* }
  If ($Did == 79) { SockClose Clone.* | Dialog -x $DName }
  If ($Did == 80) { Clone.IPs }
  If ($Did == 84) {
    Var %I = 1
    While ($Sock(Clone.*,%I)) {
      If (!$Sock(Clone.*,%I).Mark) { SockClose $Sock(Clone.*,%I) }
      Inc %I
    }
    Did -ra Clone 25 $Sock(Clone.*,0)
  }
  If ($Did == 99) {
    Did -a $DName 100 $Did(98)
    Did -ra $DName 106 $Calc($Did(106) + 1)
  }
  If ($Did == 104) {
    Var %F = $Input(Enter Filename:,ego,Clone)
    If (%F) {
      Var %I = 1
      While ($Did(103,%I)) { Write %F $Did(103,%I) | Inc %I }
    }
  }
  If ($Did == 107) {
    Did -ra $DName 111 0
    Var %I = 1
    While ($Did(100,%I)) {
      SockQueue CloneGet. [ $+ [ %I ] ] $Gettok($Remove($Did(100,%I),http://,www.),1,47) 80
      Set %Clone.Get.URL. [ $+ [ %I ] ] $Gettok($Remove($Did(100,%I),http://,www.),1,47)
      Set %Clone.Get.Ext. [ $+ [ %I ] ] $Iif($Gettok($Remove($Did(100,%I),http://,www.),2-,47),$Chr(47) $+ $Gettok($Remove($Did(100,%I),http://,www.),2-,47),$Chr(47))
      Inc %I
    }
  }
  If ($Did == 108) { Did -r $DName 103 }
  If ($Did == 109) {
    Did -r $DName 34
    Var %I = 1
    While ($Did(103,%I)) { Did -a $DName 34 $Replace($Did(103,%I),$Chr(58),$Chr(32)) | Inc %I }
  }
  If ($Did == 114) && ($Did(100).Sel) { Did -d $DName 100 $Did(100).Sel }
  If ($Did == 115) { Did -r $DName 100 }
}

On *:SockOpen:CloneGet.*: {
  SockWrite -n $SockName GET %Clone.Get.EXT. [ $+ [ $Gettok($SockName,2,46) ] ] HTTP/1.0
  SockWrite -n $SockName Accept: */*
  SockWrite -n $SockName Host: www. $+ %Clone.Get.URL. [ $+ [ $Gettok($SockName,2,46) ] ]
  SockWrite -n $SockName Connection: Keep-Alive
  SockWrite -n $SockName
  Unset %Clone.Get.EXT. [ $+ [ $Gettok($SockName,2,46) ] ]
  Unset %Clone.Get.URL. [ $+ [ $Gettok($SockName,2,46) ] ]
}

On *:SockRead:CloneGet.*: {
  SockRead %R
  If $WildTok(%R,*.*.*.*:*,1,32) && ($Remove($WildTok(%R,*.*.*.*:*,1,32),$Chr(46),$Chr(58)) isnum) {
    Did -a Clone 103 $WildTok(%R,*.*.*.*:*,1,32)
    Did -ra Clone 113 $Calc($Did(Clone,113) + 1)
  }
  Unset %R
}

Alias SockQueue {
  If ($Sock(CloneGet.*,0) <= 6) { SockOpen $1- }
  Else { Set %Clone.Queue. [ $+ [ $Rand(1,9999999) ] ] $1- }
}

On *:SockClose:CloneGet.* {
  If ($Var(%Clone.Queue.*,1)) {
    SockOpen $Var(%Clone.Queue.*,1).Value
    Unset $Var(%Clone.Queue.*,1)
  }
  Did -ra Clone 111 $Calc($Did(Clone,111) + 1)
}

#Clone.DNS off
On *:DNS: {
  If ($RAddress) { Did -ra Clone 2 $RAddress | .TimerClone.Go $Did(Clone,10) 0 Clone.Go }
  Else { Clone.Error Unable to resolve DNS of $Did(Clone,10) }
  .Disable #Clone.DNS
  Halt
}
#Clone.DNS End

Alias Clone.Do {
  If ($1 == All) {
    Var %I = 1
    While ($Sock(Clone.*,%I)) {
      If ($2 == JOINPART) { SockWrite -nt $Sock(Clone.*,%I) JOIN $3 | SockWrite -nt $Sock(Clone.*,%I) PART $3- }
      ElseIf ($2 == RAW) { SockWrite -nt $Sock(Clone.*,%I) $Replace($3-,^Nick^,$Clone.Nick($Sock(Clone.*,%I))) }
      ElseIf ($2 == NICK) {
        If ($Did(Clone,67).State == 1) { SockWrite -nt $Sock(Clone.*,%I) NICK $Clone.RandNick }
        If ($Did(Clone,68).State == 1) { SockWrite -nt $Sock(Clone.*,%I) NICK $Gettok($Read($Did(Clone,70)),1,32) }
        If ($Did(Clone,69).State == 1) { SockWrite -nt $Sock(Clone.*,%I) NICK $Did(Clone,71) $+ $Clone.RandNick(2) }
      }
      Else { SockWrite -nt $Sock(Clone.*,%I) $2- }
      Inc %I
    }
  }
  If ($1 == Selected) {
    Var %I = 1
    While ($Did(Clone,38,%I)) {
      If ($Did(Clone,38,%I).State == 1) {
        Var %J = 1
        While ($Sock(Clone.*,%J)) {
          If ($Sock(Clone.*,%J).Mark == $Did(Clone,38,%I)) {
            If ($2 == JOINPART) { SockWrite -nt $Sock(Clone.*,%J) JOIN $3 | SockWrite -nt $Sock(Clone.*,%J) PART $3- }
            ElseIf ($2 == RAW) { SockWrite -nt $Sock(Clone.*,%J) $Replace($3-,^Nick^,$Clone.Nick($Sock(Clone.*,%J))) }
            ElseIf ($2 == NICK) {
              If ($Did(Clone,67).State == 1) { SockWrite -nt $Sock(Clone.*,%J) NICK $Clone.RandNick }
              If ($Did(Clone,68).State == 1) { SockWrite -nt $Sock(Clone.*,%J) NICK $Gettok($Read($Did(Clone,70)),1,32) }
              If ($Did(Clone,69).State == 1) { SockWrite -nt $Sock(Clone.*,%J) NICK $Did(Clone,71) }
            }
            Else { SockWrite -nt $Sock(Clone.*,%J) $2- }
          }
          Inc %J
        }
      }
      Inc %I
    }
  }
}

Alias Clone.Conn { If ($Did(Clone,38,1)) { Return $Did(Clone,38).Lines } }

On *:SockOpen:Clone.*: {
  If ($SockErr) { SockClose $SockName | Did -ra Clone 25 $Sock(Clone.*,0) | Return }
  If (Clone.Sock.* iswm $SockName) { BSet &Clone 1 5 1 0 | SockWrite $SockName &Clone }
  If (Clone.Proxy.* iswm $SockName) {
    SockWrite $SockName CONNECT $+($Did(Clone,2),:,$Did(Clone,4)) HTTP/1.1
    SockWrite $SockName $CRLF $+ $CRLF $+ $CRLF
    Clone.Conn.User $SockName
  }
  If (Clone.Normal.* iswm $Sockname) { Clone.Conn.User $SockName }
  Did -ra Clone 25 $Sock(Clone.*,0)
}

On *:SockRead:Clone.*: {
  If ($SockErr) { SockClose $SockName | Did -ra Clone 25 $Sock(Clone.*,0) | Return }
  If (Clone.Sock.* iswm $SockName) && (!$Sock($SockName).Mark) {
    SockRead &Read
    If ($BVar(&Read,1,2) == 5 0) && ($BVar(&Read,3) != 0) {
      Var %Port = $Gettok($LongIP($Did(Clone,4)),3,46) $Gettok($LongIP($Did(Clone,4)),4,46)
      Var %Serv = $Replace($Did(Clone,2),$Chr(46),$Chr(32))
      BSet &Clone.Send 1 5 1 0 1 %Serv %Port
      SockWrite $SockName &Clone.Send
    }
    If ($BVar(&Read,1,3) == 5 0 0) { SockMark $SockName 1 | Clone.Conn.User $SockName }
  }
  SockRead %Clone.Read
  If (%Clone.Read) { Echo %Clone.Read }
  Tokenize 32 %Clone.Read
  Unset %Clone.Read
  If (*<HTML>* iswm $1-) && (!$Sock($SockName).Mark) {
    SockClose $SockName
  }
  If ($1 == PING) { SockWrite -nt $SockName PONG : $+ $Remove($2,:) }
  If ($2 == PRIVMSG) && ($Did(Clone,81).State == 1) {
    If ($4 == :PING) { SockWrite -nt $SockName NOTICE $Remove($Gettok($1,1,33),:) :PING $5 }
    If ($4 == :TIME) { SockWrite -nt $SockName NOTICE $Remove($Gettok($1,1,33),:) :TIME $ASCTime($Calc($Rand($Calc($CTime - 10000),$Calc($CTime + 10000)))) $+  }
    If ($4 == :VERSION) { SockWrite -nt $SockName NOTICE $Remove($Gettok($1,1,33),:) :VERSION mIRC v6.16 Khaled Mardam-Bey }
  }
  If ($2 == 001) {
    Var %I = 1
    While ($Did(Clone,19,%I)) { SockWrite -nt $SockName $Replace($Did(Clone,19,%I),^Nick^,$3) | Inc %I }
    If ($3) { Did -a Clone 38 $3 }
    Did -ra Clone 24 $Iif($Clone.Conn,$Clone.Conn,0)
    SockWrite -nt $SockName Mode $3 $Did(Clone,18)
    SockMark $SockName $3
  }
  If ($2 == 433) {
    If ($Sock($SockName).Mark) && ($Sock($SockName).Mark != 1) {
      If ($Did(Clone,67).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 SockWrite -nt $SockName NICK $Clone.RandNick }
      If ($Did(Clone,68).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 SockWrite -nt $SockName NICK $Read($Did(Clone,70)) }
      If ($Did(Clone,69).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 SockWrite -nt $SockName NICK $Did(Clone,71) $+ $Clone.RandNick(2) }
    }
    Else {
      If ($Did(Clone,11).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 SockWrite -nt $SockName NICK $Clone.RandNick }
      If ($Did(Clone,12).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 Clone.Conn.User $SockName }
      If ($Did(Clone,13).State == 1) { .TimerClone. [ $+ [ $SockName ] ] 1 1 SockWrite -nt $SockName NICK $Did(Clone,15) $+ $Clone.RandNick(2) }
    }
  }
  If ($2 == NICK) && ($Remove($Gettok($1,1,33),:) == $Sock($SockName).Mark) {
    Var %I = 1
    While ($Did(Clone,38,%I)) {
      If ($Did(Clone,38,%I) == $Remove($Gettok($1,1,33),:)) { Did -o Clone 38 %I $Remove($3,:) }
      Inc %I
    }
    SockMark $SockName $Remove($3,:)
  }
  Did -ra Clone 25 $Sock(Clone.*,0)
}

Alias Clone.Ignore {
  Var %I = 1
  While ($Did(Clone,96,%I)) {
    If ($Did(Clone,96,%I) iswm $Remove($1,$Chr(58))) { Return $Did(Clone,96,%I) }
    Inc %I
  }
}

On *:SockClose:Clone.*: {
  If ($Sock($SockName).Mark) && ($Sock($SockName).Mark != 1) {
    Var %I = 1
    While ($Did(Clone,38,%I)) {
      If ($Did(Clone,38,%I) == $Sock($SockName).Mark) { Did -d Clone 38 %I }
      Inc %I
    }
  }
  Did -ra Clone 25 $Sock(Clone.*,0)
  Did -ra Clone 24 $Iif($Clone.Conn,$Clone.Conn,0)
}

Alias Clone.Nick { Return $Sock($1).Mark }

Alias Clone.Sock {
  Var %I = 1
  While ($Sock(Clone.*,%I)) {
    If ($Sock(Clone.*,%I).Mark == $1) { Return $Sock(Clone.*,%I) }
    Inc %I
  }
}

Alias Clone.RandNick {
  Var %I = $Iif($1,$1,$Rand(3,12)), %J = 1
  While (%J <= %I) { Var %C = $Rand(1,0), %N = %N $+ $Iif(%C == 1,$Rand(A,Z),$Rand(a,z)) | Inc %J }
  Return %N
}

Alias Clone.Conn.User {
  If ($Did(Clone,11).State == 1) {
    SockWrite -nt $1 USER $Lower($Clone.RandNick) "" "" : $+ $Iif($Did(Clone,85),$Did(Clone,85),$Clone.RandNick($Rand(20,70)))
    SockWrite -nt $1 NICK $Clone.RandNick
  }
  If ($Did(Clone,12).State == 1) {
    Var %N = $Gettok($Read($Did(Clone,14)),1,32)
    SockWrite -nt $1 USER $Lower(%N) "" "" : $+ $Iif($Did(Clone,85),$Did(Clone,85),%N)
    SockWrite -nt $1 NICK %N
  }
  If ($Did(Clone,13).State == 1) {
    SockWrite -nt $1 USER $Lower($Did(Clone,15)) "" "" : $+ $Iif($Did(Clone,85),$Did(Clone,85),$Did(Clone,15))
    SockWrite -nt $1 NICK $Did(Clone,15) $+ $Clone.RandNick(2)
  }
}

Alias Clone.Go {
  If (!$Did(Clone,34,%Clone.List)) { Set %Clone.List 1 }
  :Again
  Var %R = $Rand(0,9999999)
  If ($Sock($+(Clone.,$Did(Clone,6),.,%R))) { Goto Again }
  If ($Did(Clone,6) == Normal) { SockOpen Clone.Normal. $+ %R $Did(Clone,2) $Did(Clone,4) }
  Else { SockOpen $+(Clone.,$Did(Clone,6),.,%R) $Did(Clone,34,%Clone.List) }
  Inc %Clone.List
  Did -ra Clone 25 $Sock(Clone.*,0)
}

Dialog -l Clone.IPs {
  Title "Connected IP Ports"
  Size -1 -1 254 360
  Option Pixels
  Edit "", 1, 8 8 236 317, Read Multi
  Button &Refresh List, 2, 8 332 235 20
}

On *:Dialog:Clone.IPs:Init:*: { Clone.IPs }
On *:Dialog:Clone.IPs:SClick:2: { Clone.IPs }

Alias Clone.IPs {
  If (!$Dialog(Clone.IPs)) { Dialog -md Clone.IPs Clone.IPs }
  Did -r Clone.IPs 1
  Var %I = 1
  While ($Sock(Clone.*,%I)) {
    If ($Sock(Clone.*,%I).Mark) && ($Sock(Clone.*,%I).Mark != 1) && (!$DidWM(Clone.IPs,1,$Sock(Clone.*,%I).IP $Sock(Clone.*,%I).Port)) {
      Did -i Clone.IPs 1 1 $Sock(Clone.*,%I).IP $Sock(Clone.*,%I).Port
    }
    Inc %I
  }
}