falcon/examples/advanced.go

65 lines
1.2 KiB
Go
Raw Normal View History

2024-07-25 07:47:36 -04:00
package main
import (
"fmt"
"os"
"strings"
"time"
2024-07-25 07:47:36 -04:00
"git.supernets.org/perp/falcon"
)
// Colors
2024-07-25 07:47:36 -04:00
const (
reset = "\033[0m"
blue = "\033[34m"
green = "\033[32m"
red = "\033[31m"
)
func main() {
// Read file
2024-07-25 07:47:36 -04:00
content, err := os.ReadFile(os.Args[1])
if err != nil {
panic(err)
}
// Create falcon, set proxies & set timeout
f := falcon.New(10)
f.Proxies = strings.Split(string(content), "\n")
f.Timeout = time.Second * 5
2024-07-25 07:47:36 -04:00
// Start falcon
err = f.Start()
if err != nil {
panic(err)
}
// Store count
2024-07-25 07:47:36 -04:00
var count int
// Go through proxies
2024-07-25 07:47:36 -04:00
for range len(f.Proxies) {
// Receive from incoming channels
2024-07-25 07:47:36 -04:00
select {
case socks5 := <-f.SOCKS5:
// Add count
2024-07-25 07:47:36 -04:00
count += 1
// Print information
2024-07-25 11:25:41 -04:00
fmt.Printf("%sIP%s: %s%s\n", green, reset, blue, socks5.IP)
2024-07-25 07:47:36 -04:00
fmt.Printf("%sISP%s: %s%s\n", blue, reset, green, socks5.Isp)
fmt.Printf("%sCountry%s: %s%s\n", green, reset, blue, socks5.Country)
fmt.Printf("%sCity%s: %s%s\n", blue, reset, green, socks5.City)
fmt.Println(reset)
case err := <-f.Error:
// Print error
2024-07-25 07:47:36 -04:00
fmt.Printf("%s%s%s\n", red, err, reset)
}
}
// Print count
2024-07-25 07:47:36 -04:00
fmt.Printf("Found %s%d%s SOCKS5 proxies\n", green, count, reset)
}