package main import ( "fmt" "log" "os" "strings" "time" "gitea.urkob.com/urko/go-wifi-switcher/cfg" "github.com/go-rod/rod" "github.com/go-rod/rod/lib/launcher" "github.com/go-rod/rod/lib/utils" "github.com/ysmood/leakless" ) func main() { config := cfg.NewConfig("./.env") log.Println("config", config) log.SetFlags(log.Lmicroseconds) if config.LogFile { logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_"))) f, err := os.OpenFile(logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) if err != nil { log.Fatal(err) } defer f.Close() log.SetOutput(f) } // get the browser executable path path := launcher.NewBrowser().MustGet() args := launcher.New().FormatArgs() cmd := leakless.New().Command(path, args...) parser := launcher.NewURLParser() cmd.Stderr = parser utils.E(cmd.Start()) u := launcher.MustResolveURL(<-parser.URL) browser := rod.New(). ControlURL(u). MustConnect(). MustIgnoreCertErrors(true) defer browser.MustClose() page := browser.MustPage(config.Page) page.MustElement(`#username`).MustInput(config.AdminUser) page.MustElement(`#userpassword`).MustInput(config.Password) log.Println("INPUT DONE") page.MustElement(`input[value="Login"]`).MustClick() log.Println("LOGIN DONE") page.MustElement(`input[value="Skip"]`).MustClick() log.Println("SKIP DONE") time.Sleep(time.Second * 3) printContent(page) net := page.MustElement("#Net") log.Println("Net", net) net.MustClick() log.Println("Net DONE") wlan := page.MustElement("#Net-WLAN") log.Println("wlan", wlan) wlan.MustClick() log.Println("Net-WLAN DONE") mainFrame := page.MustElement("#mainFrame").MustFrame() mainFrame.MustElement("#wlanEnable").MustClick() log.Println("wlanEnable DONE") printContent(mainFrame) mainFrame.MustElement("#sysSubmit").MustClick() log.Println("task completed") } func printContent(page *rod.Page) { content, err := page.HTML() if err != nil { log.Fatalf("page.HTML: %s\n", err) } log.Println("content", content) }