This repository has been archived on 2024-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
adlin/login-app/main.go

59 lines
1.3 KiB
Go

package main
import (
gc "github.com/rthornton128/goncurses"
)
const URLLogin = "https://auth.adlin.nemunai.re/login"
func goLogin(stdscr *gc.Window, in chan gc.Key) (string, string, bool) {
username, password := login(stdscr, in)
validator := make(chan bool)
validator_err := make(chan error)
go func(username, password string, progress chan bool, err chan error) {
st, errm := checkLogin(username, password)
progress <- st
err <- errm
}(username, password, validator, validator_err)
if connection(stdscr, in, validator, validator_err) {
e := <- validator_err
return username, e.Error(), true
} else {
return goLogin(stdscr, in)
}
}
func main() {
stdscr, _ := gc.Init()
defer gc.End()
// Set main properties
gc.Cursor(0)
gc.StartColor()
gc.Raw(true)
gc.Echo(false)
stdscr.Keypad(true)
// Define colors
gc.InitPair(1, gc.C_WHITE, gc.C_BLUE)
gc.InitPair(2, gc.C_GREEN, gc.C_BLACK)
gc.InitPair(3, gc.C_CYAN, gc.C_BLACK)
gc.InitPair(4, gc.C_RED, gc.C_BLACK)
gc.InitPair(5, gc.C_BLACK, gc.C_WHITE)
// Register pressed key through channel
in := make(chan gc.Key)
go func(w *gc.Window, ch chan<- gc.Key) {
for {
ch <- w.GetChar()
}
}(stdscr, in)
// Run!
if username, ip, ok := goLogin(stdscr, in); ok {
okreboot(stdscr, username, ip)
}
}