Compare commits

...

12 Commits

Author SHA1 Message Date
Urko. 1dc6ce6e5e fix: type conversion 2023-12-27 07:42:38 +01:00
Urko. 69389d030b refactor: parameterize submit delay 2023-12-27 07:38:48 +01:00
Urko cc7a59c109 feat triple c lick on save button archer 2023-07-04 16:42:46 +02:00
Urko 62bda54d98 feat: adjust waiting times 2023-07-02 23:56:23 +02:00
Urko 0933174ea1 fix bug 2023-07-02 23:28:38 +02:00
Urko bf700eeeb3 feat add log date 2023-07-02 23:13:30 +02:00
Urko bbc94e0375 polish logs 2023-07-02 23:08:07 +02:00
Urko ad8ed58366 feat increase wait 2023-07-02 22:16:17 +02:00
Urko db9f7495aa increase wait time after login submit 2023-07-02 22:14:31 +02:00
Urko 0ae922e58d feat: change jquery to pure js 2023-07-02 21:28:53 +02:00
Urko fc35559ab8 feat wait a little more 2023-07-02 20:16:34 +02:00
Urko c09933767b feat: archer add print message 2023-07-02 20:15:54 +02:00
7 changed files with 43 additions and 18 deletions

View File

@ -8,11 +8,12 @@ import (
) )
type Config struct { type Config struct {
Page string `required:"true" split_words:"true"` Page string `required:"true" split_words:"true"`
AdminUser string `required:"true" split_words:"true"` AdminUser string `required:"true" split_words:"true"`
Password string `required:"true" split_words:"true"` Password string `required:"true" split_words:"true"`
LogFile bool `required:"true" split_words:"true"` LogFile bool `required:"true" split_words:"true"`
Bin string `required:"true" split_words:"true"` Bin string `required:"true" split_words:"true"`
SubmitDelay int `default:"7500" required:"false" split_words:"true"`
} }
func NewConfig(envFilePath string) *Config { func NewConfig(envFilePath string) *Config {

View File

@ -5,6 +5,7 @@ import (
"log" "log"
"time" "time"
"gitea.urkob.com/urko/go-wifi-switcher/pkg/provider"
"github.com/go-rod/rod" "github.com/go-rod/rod"
) )
@ -29,11 +30,11 @@ func NewArcherAx50(page *rod.Page) ArcherAx50 {
} }
func (p ArcherAx50) Login(user, pass string) error { func (p ArcherAx50) Login(user, pass string) error {
time.Sleep(time.Millisecond * 1250) time.Sleep(time.Millisecond * 5550)
p.page.MustEvaluate(&rod.EvalOptions{ p.page.MustEvaluate(&rod.EvalOptions{
JS: `() => { JS: `() => {
$("input.password-text").each((i,v) => { document.querySelectorAll("input.password-text").forEach((v, i) => {
v.click(); v.click();
v.focus(); v.focus();
v.value="` + pass + `"; v.value="` + pass + `";
@ -41,7 +42,8 @@ func (p ArcherAx50) Login(user, pass string) error {
return ''; return '';
}`, }`,
}) })
time.Sleep(time.Millisecond * 250)
time.Sleep(time.Millisecond * 550)
log.Println(p.passwordID, "DONE") log.Println(p.passwordID, "DONE")
@ -51,12 +53,11 @@ func (p ArcherAx50) Login(user, pass string) error {
} }
login.MustClick() login.MustClick()
log.Println(p.loginButtonID, "DONE") log.Println(p.loginButtonID, "DONE")
time.Sleep(time.Millisecond * 400) time.Sleep(time.Millisecond * 4550)
return nil return nil
} }
func (p ArcherAx50) SwitchWIFI() error { func (p ArcherAx50) SwitchWIFI(cfg provider.SwitchConfig) error {
time.Sleep(time.Second * 1)
pageURL := p.page.MustInfo().URL pageURL := p.page.MustInfo().URL
log.Println("p.page.MustInfo().URL", pageURL) log.Println("p.page.MustInfo().URL", pageURL)
@ -67,7 +68,7 @@ func (p ArcherAx50) SwitchWIFI() error {
wirelessTab.MustClick() wirelessTab.MustClick()
log.Println(p.wirelessTab, "DONE") log.Println(p.wirelessTab, "DONE")
time.Sleep(time.Millisecond * 750) time.Sleep(time.Millisecond * 1850)
checked := p.page.MustEvaluate(&rod.EvalOptions{ checked := p.page.MustEvaluate(&rod.EvalOptions{
JS: `() => { JS: `() => {
return document.getElementById('` + p.chkWifi2gID + `').checked; return document.getElementById('` + p.chkWifi2gID + `').checked;
@ -75,6 +76,7 @@ func (p ArcherAx50) SwitchWIFI() error {
}) })
isChecked := checked.Value.Bool() isChecked := checked.Value.Bool()
log.Println(getCheckedMessage(isChecked))
p.page.MustEvaluate(&rod.EvalOptions{ p.page.MustEvaluate(&rod.EvalOptions{
JS: `() => { JS: `() => {
document.getElementById('` + p.chkWifi2gID + `').checked=` + fmt.Sprint(!isChecked) + `; document.getElementById('` + p.chkWifi2gID + `').checked=` + fmt.Sprint(!isChecked) + `;
@ -82,14 +84,25 @@ func (p ArcherAx50) SwitchWIFI() error {
}`, }`,
}) })
time.Sleep(time.Millisecond * 550)
log.Println(p.chkWifi2gID, "DONE") log.Println(p.chkWifi2gID, "DONE")
saveButton, err := p.page.Element(p.saveButtonID) saveButton, err := p.page.Element(p.saveButtonID)
if err != nil { if err != nil {
return fmt.Errorf("page.Element %s: %s", p.saveButtonID, err) return fmt.Errorf("page.Element %s: %s", p.saveButtonID, err)
} }
saveButton.MustClick() saveButton.MustClick()
saveButton.MustClick()
saveButton.MustClick()
log.Println(p.saveButtonID, "DONE") log.Println(p.saveButtonID, "DONE")
time.Sleep(time.Millisecond * 1500) time.Sleep(time.Millisecond * time.Duration(cfg.SubmitDelay))
return nil return nil
} }
func getCheckedMessage(isChecked bool) string {
if isChecked {
return "Time to sleep, let's switch off"
}
return "Time to laborate, let's switch WIFI on"
}

View File

@ -5,6 +5,7 @@ import (
"log" "log"
"time" "time"
"gitea.urkob.com/urko/go-wifi-switcher/pkg/provider"
"github.com/go-rod/rod" "github.com/go-rod/rod"
) )
@ -66,7 +67,7 @@ func (p Huawei) Login(user, pass string) error {
return nil return nil
} }
func (p Huawei) SwitchWIFI() error { func (p Huawei) SwitchWIFI(cfg provider.SwitchConfig) error {
net, err := p.page.Element(p.netID) net, err := p.page.Element(p.netID)
if err != nil { if err != nil {
return fmt.Errorf("page.Element %s: %s", p.netID, err) return fmt.Errorf("page.Element %s: %s", p.netID, err)

View File

@ -5,6 +5,7 @@ import (
"log" "log"
"time" "time"
"gitea.urkob.com/urko/go-wifi-switcher/pkg/provider"
"github.com/go-rod/rod" "github.com/go-rod/rod"
) )
@ -62,7 +63,7 @@ func (p Nucom) Login(user, pass string) error {
return nil return nil
} }
func (p Nucom) SwitchWIFI() error { func (p Nucom) SwitchWIFI(cfg provider.SwitchConfig) error {
wirelessMenu, err := p.page.Element(`a[id="` + p.wirelessTabID + `"]`) wirelessMenu, err := p.page.Element(`a[id="` + p.wirelessTabID + `"]`)
if err != nil { if err != nil {
return fmt.Errorf("page.Element %s: %s", p.wirelessTabID, err) return fmt.Errorf("page.Element %s: %s", p.wirelessTabID, err)

View File

@ -37,7 +37,11 @@ func (s Switcher) SwitchWIFI(prv provider.ProviderIface) error {
return fmt.Errorf("prv.Login %w", err) return fmt.Errorf("prv.Login %w", err)
} }
if err := prv.SwitchWIFI(); err != nil { switchConfig := provider.SwitchConfig{
SubmitDelay: s.config.SubmitDelay,
}
if err := prv.SwitchWIFI(switchConfig); err != nil {
return fmt.Errorf("prv.SwitchWIFI %w", err) return fmt.Errorf("prv.SwitchWIFI %w", err)
} }

View File

@ -22,6 +22,7 @@ func main() {
} }
config := cfg.NewConfig(envFile) config := cfg.NewConfig(envFile)
log.SetFlags(log.Ldate)
log.SetFlags(log.Lmicroseconds) log.SetFlags(log.Lmicroseconds)
if config.LogFile { if config.LogFile {
logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_"))) logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_")))

View File

@ -1,6 +1,10 @@
package provider package provider
type ProviderIface interface { type ProviderIface interface {
Login(user, pass string) error Login(string, string) error
SwitchWIFI() error SwitchWIFI(SwitchConfig) error
}
type SwitchConfig struct {
SubmitDelay int
} }