Take advantage of Go's speed and lightweight compiler
A workerpool/web automation toolkit which makes use of libraries such as gopher-lua and ants to make it easier to write fast tools.
function execute()
  local http = require("http")
  local client = http.client()
  local request = http.request("GET", "https://google.com")
  local result, err = client:do_request(request)
  if err then error(err) end
  return {
    success = true,
    counters = {"fart"}
  } 
endpackage main
import (
	"fmt"
	"strings"
	"time"
)
type TestScript struct {
	pool *WorkerPool
}
type ExecData struct {
	email string
	pass  string
}
func DummyLogin(email string, pass string) bool {
	users := map[string]string{
		"[email protected]": "real!!!123",
	}
	realpass, ok := users[email]
	if ok {
		if realpass == pass {
			return true
		}
	}
	return false
}
func (s TestScript) execute(datum any) (r ExecResponse) {
	time.Sleep(1 * time.Second)
	d := datum.(ExecData)
	r.Capture = []any{"example_value"}
	success := DummyLogin(d.email, d.pass)
	if success {
		r.Success = true
		return
	}
	return
}
func (s *TestScript) print() {
	fmt.Print("\033[H\033[2J")
	for k, v := range s.pool.counters {
		fmt.Printf("%s: %d\n", strings.Title(k), v)
	}
	fmt.Printf("RPM: %v\n", s.pool.RPM())
}
func NewTestScript() *TestScript {
	s := &TestScript{}
	s.pool = NewWorkerPool(s.execute, 1,
		WithPrintFunc(s.print),
		WithDatabase(NewFlatFileDatabase("test_log.txt", "line=%s thingamabob=%s")))
	s.pool.Start()
	return s
}
func main() {
	s := NewTestScript()
	for i := 0; i < 5; i++ {
		s.pool.DChan <- ExecData{
			email: "[email protected]",
			pass:  "real!!!123",
		}
	}
	for i := 0; i < 5; i++ {
		s.pool.DChan <- ExecData{
			email: "[email protected]",
			pass:  "wrongpassword",
		}
	}
	s.pool.Stop()
}- Fuzzing
- Credential stuffing
- Web scraping
- Custom Lua libraries (currently using a package)
- Libraries for web scraping
- Debugger with tools such as a HTML renderer
- GUI made in Wails
- PostgreSQL and SQLite3 database interfaces