110 lines
1.8 KiB
Go
110 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/mattn/go-tty"
|
|
|
|
"git.tcp.direct/kayos/pxndscvm"
|
|
)
|
|
|
|
var swamp *pxndscvm.Swamp
|
|
var quit chan bool
|
|
|
|
func init() {
|
|
quit = make(chan bool)
|
|
swamp = pxndscvm.NewDefaultSwamp()
|
|
if err := swamp.SetMaxWorkers(1000); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
count := swamp.LoadProxyTXT("socks.list")
|
|
if count < 1 {
|
|
println("file contained no valid SOCKS host:port combos")
|
|
os.Exit(1)
|
|
}
|
|
|
|
if err := swamp.Start(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
println("[USAGE] q: quit | d: debug | a: socks4 | b: socks4a | c: socks5 | p: pause/unpause")
|
|
}
|
|
|
|
func get(ver string) {
|
|
switch ver {
|
|
case "4":
|
|
println("retrieving SOCKS4...")
|
|
println(swamp.Socks4Str())
|
|
case "4a":
|
|
println("retrieving SOCKS4a...")
|
|
println(swamp.Socks4aStr())
|
|
case "5":
|
|
println("retrieving SOCKS5...")
|
|
println(swamp.Socks5Str())
|
|
|
|
}
|
|
}
|
|
|
|
func watchKeyPresses() {
|
|
t, err := tty.Open()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer t.Close()
|
|
|
|
for {
|
|
r, err := t.ReadRune()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
switch string(r) {
|
|
case "d":
|
|
if swamp.DebugEnabled() {
|
|
println("disabling debug")
|
|
swamp.DisableDebug()
|
|
} else {
|
|
println("enabling debug")
|
|
swamp.EnableDebug()
|
|
}
|
|
case "a":
|
|
go get("4")
|
|
case "b":
|
|
go get("4a")
|
|
case "c":
|
|
go get("5")
|
|
case "p":
|
|
if swamp.Status == 0 {
|
|
err := swamp.Pause()
|
|
if err != nil {
|
|
println(err.Error())
|
|
}
|
|
} else {
|
|
if err := swamp.Resume(); err != nil {
|
|
println(err.Error())
|
|
}
|
|
}
|
|
case "q":
|
|
quit <- true
|
|
default:
|
|
time.Sleep(25 * time.Millisecond)
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
go watchKeyPresses()
|
|
|
|
for {
|
|
select {
|
|
case <-quit:
|
|
return
|
|
default:
|
|
fmt.Printf("4: %d, 4a: %d, 5: %d \n", swamp.Stats.Valid4, swamp.Stats.Valid4a, swamp.Stats.Valid5)
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
}
|
|
}
|