'zrok http -s' for 'service mode' (no tui chrome)

This commit is contained in:
Michael Quigley 2022-08-16 13:31:45 -04:00
parent e32bca31b2
commit 2983d16a06
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62

View File

@ -28,6 +28,7 @@ func init() {
}
type httpCommand struct {
service bool
basicAuth []string
cmd *cobra.Command
}
@ -39,17 +40,20 @@ func newHttpCommand() *httpCommand {
Args: cobra.ExactArgs(1),
}
command := &httpCommand{cmd: cmd}
cmd.Flags().BoolVarP(&command.service, "service", "s", false, "Disable TUI 'chrome' for service operation")
cmd.Flags().StringArrayVar(&command.basicAuth, "basic-auth", []string{}, "Basic authentication users (<username:password>,...")
cmd.Run = command.run
return command
}
func (self *httpCommand) run(_ *cobra.Command, args []string) {
if err := ui.Init(); err != nil {
panic(err)
if !self.service {
if err := ui.Init(); err != nil {
panic(err)
}
defer ui.Close()
tb.SetInputMode(tb.InputEsc)
}
defer ui.Close()
tb.SetInputMode(tb.InputEsc)
idCfg, err := zrokdir.IdentityConfigFile()
if err != nil {
@ -113,63 +117,70 @@ func (self *httpCommand) run(_ *cobra.Command, args []string) {
}
}()
ui.Clear()
w, h := ui.TerminalDimensions()
if !self.service {
ui.Clear()
w, h := ui.TerminalDimensions()
p := widgets.NewParagraph()
p.Border = true
p.Title = " access your zrok service "
p.Text = fmt.Sprintf("%v%v", strings.Repeat(" ", (((w-12)-len(resp.Payload.ProxyEndpoint))/2)-1), resp.Payload.ProxyEndpoint)
p.TextStyle = ui.Style{Fg: ui.ColorWhite}
p.PaddingTop = 1
p.SetRect(5, 5, w-10, 10)
p := widgets.NewParagraph()
p.Border = true
p.Title = " access your zrok service "
p.Text = fmt.Sprintf("%v%v", strings.Repeat(" ", (((w-12)-len(resp.Payload.ProxyEndpoint))/2)-1), resp.Payload.ProxyEndpoint)
p.TextStyle = ui.Style{Fg: ui.ColorWhite}
p.PaddingTop = 1
p.SetRect(5, 5, w-10, 10)
lastRequests := float64(0)
var requestData []float64
spk := widgets.NewSparkline()
spk.Title = " requests "
spk.Data = requestData
spk.LineColor = ui.ColorCyan
lastRequests := float64(0)
var requestData []float64
spk := widgets.NewSparkline()
spk.Title = " requests "
spk.Data = requestData
spk.LineColor = ui.ColorCyan
slg := widgets.NewSparklineGroup(spk)
slg.SetRect(5, 11, w-10, h-5)
slg := widgets.NewSparklineGroup(spk)
slg.SetRect(5, 11, w-10, h-5)
ui.Render(p, slg)
ui.Render(p, slg)
ticker := time.NewTicker(time.Second).C
uiEvents := ui.PollEvents()
for {
select {
case e := <-uiEvents:
switch e.Type {
case ui.ResizeEvent:
ui.Clear()
w, h = ui.TerminalDimensions()
p.SetRect(5, 5, w-10, 10)
slg.SetRect(5, 11, w-10, h-5)
ui.Render(p, slg)
ticker := time.NewTicker(time.Second).C
uiEvents := ui.PollEvents()
for {
select {
case e := <-uiEvents:
switch e.Type {
case ui.ResizeEvent:
ui.Clear()
w, h = ui.TerminalDimensions()
p.SetRect(5, 5, w-10, 10)
slg.SetRect(5, 11, w-10, h-5)
ui.Render(p, slg)
case ui.KeyboardEvent:
switch e.ID {
case "q", "<C-c>":
ui.Close()
cleanupHttp(id, cfg, zrok, auth)
os.Exit(0)
case ui.KeyboardEvent:
switch e.ID {
case "q", "<C-c>":
ui.Close()
cleanupHttp(id, cfg, zrok, auth)
os.Exit(0)
}
}
}
case <-ticker:
currentRequests := float64(httpProxy.Requests())
deltaRequests := currentRequests - lastRequests
requestData = append(requestData, deltaRequests)
lastRequests = currentRequests
requestData = append(requestData, deltaRequests)
for len(requestData) > w-17 {
requestData = requestData[1:]
case <-ticker:
currentRequests := float64(httpProxy.Requests())
deltaRequests := currentRequests - lastRequests
requestData = append(requestData, deltaRequests)
lastRequests = currentRequests
requestData = append(requestData, deltaRequests)
for len(requestData) > w-17 {
requestData = requestData[1:]
}
spk.Title = fmt.Sprintf(" requests (%d) ", int(currentRequests))
spk.Data = requestData
ui.Render(p, slg)
}
spk.Title = fmt.Sprintf(" requests (%d) ", int(currentRequests))
spk.Data = requestData
ui.Render(p, slg)
}
} else {
for {
logrus.Infof("access your zrok service: %v", resp.Payload.ProxyEndpoint)
time.Sleep(30 * time.Second)
}
}
}