mirror of
https://github.com/openziti/zrok.git
synced 2025-03-13 15:08:21 +01:00
redirect caddy logging to the non-headless tui when appropriate (#392)
This commit is contained in:
parent
6daa73b95c
commit
5fcba2dc62
@ -135,6 +135,12 @@ func (cmd *sharePrivateCommand) run(_ *cobra.Command, args []string) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
shareDescription := fmt.Sprintf("access your share with: %v", tui.Code.Render(fmt.Sprintf("zrok access private %v", resp.Payload.ShrToken)))
|
||||
mdl := newShareModel(resp.Payload.ShrToken, []string{shareDescription}, sdk.PrivateShareMode, sdk.BackendMode(cmd.backendMode))
|
||||
if !cmd.headless {
|
||||
proxy.SetCaddyLoggingWriter(mdl)
|
||||
}
|
||||
|
||||
c := make(chan os.Signal)
|
||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||
go func() {
|
||||
@ -230,8 +236,6 @@ func (cmd *sharePrivateCommand) run(_ *cobra.Command, args []string) {
|
||||
}
|
||||
|
||||
} else {
|
||||
shareDescription := fmt.Sprintf("access your share with: %v", tui.Code.Render(fmt.Sprintf("zrok access private %v", resp.Payload.ShrToken)))
|
||||
mdl := newShareModel(resp.Payload.ShrToken, []string{shareDescription}, sdk.PrivateShareMode, sdk.BackendMode(cmd.backendMode))
|
||||
logrus.SetOutput(mdl)
|
||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||
mdl.prg = prg
|
||||
|
@ -130,6 +130,11 @@ func (cmd *sharePublicCommand) run(_ *cobra.Command, args []string) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
mdl := newShareModel(resp.Payload.ShrToken, resp.Payload.FrontendProxyEndpoints, sdk.PublicShareMode, sdk.BackendMode(cmd.backendMode))
|
||||
if !cmd.headless {
|
||||
proxy.SetCaddyLoggingWriter(mdl)
|
||||
}
|
||||
|
||||
c := make(chan os.Signal)
|
||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||
go func() {
|
||||
@ -185,7 +190,6 @@ func (cmd *sharePublicCommand) run(_ *cobra.Command, args []string) {
|
||||
}
|
||||
|
||||
} else {
|
||||
mdl := newShareModel(resp.Payload.ShrToken, resp.Payload.FrontendProxyEndpoints, sdk.PublicShareMode, sdk.BackendMode(cmd.backendMode))
|
||||
logrus.SetOutput(mdl)
|
||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||
mdl.prg = prg
|
||||
|
@ -106,6 +106,19 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
||||
logrus.Infof("using existing backend proxy endpoint: %v", target)
|
||||
}
|
||||
|
||||
var shareDescription string
|
||||
switch resp.Payload.ShareMode {
|
||||
case string(sdk.PublicShareMode):
|
||||
shareDescription = resp.Payload.FrontendEndpoint
|
||||
case string(sdk.PrivateShareMode):
|
||||
shareDescription = fmt.Sprintf("access your share with: %v", tui.Code.Render(fmt.Sprintf("zrok access private %v", shrToken)))
|
||||
}
|
||||
|
||||
mdl := newShareModel(shrToken, []string{shareDescription}, sdk.ShareMode(resp.Payload.ShareMode), sdk.BackendMode(resp.Payload.BackendMode))
|
||||
if !cmd.headless {
|
||||
proxy.SetCaddyLoggingWriter(mdl)
|
||||
}
|
||||
|
||||
requestsChan := make(chan *endpoints.Request, 1024)
|
||||
switch resp.Payload.BackendMode {
|
||||
case "proxy":
|
||||
@ -158,15 +171,6 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var shareDescription string
|
||||
switch resp.Payload.ShareMode {
|
||||
case string(sdk.PublicShareMode):
|
||||
shareDescription = resp.Payload.FrontendEndpoint
|
||||
case string(sdk.PrivateShareMode):
|
||||
shareDescription = fmt.Sprintf("access your share with: %v", tui.Code.Render(fmt.Sprintf("zrok access private %v", shrToken)))
|
||||
}
|
||||
|
||||
mdl := newShareModel(shrToken, []string{shareDescription}, sdk.ShareMode(resp.Payload.ShareMode), sdk.BackendMode(resp.Payload.BackendMode))
|
||||
logrus.SetOutput(mdl)
|
||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||
mdl.prg = prg
|
||||
|
@ -218,6 +218,10 @@ func (m *shareModel) Write(p []byte) (n int, err error) {
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (shareModel) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func wrap(lines []string, width int) []string {
|
||||
ret := make([]string, 0)
|
||||
for _, line := range lines {
|
||||
|
52
endpoints/proxy/caddyLogger.go
Normal file
52
endpoints/proxy/caddyLogger.go
Normal file
@ -0,0 +1,52 @@
|
||||
package proxy
|
||||
|
||||
import (
|
||||
"github.com/caddyserver/caddy/v2"
|
||||
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
|
||||
"io"
|
||||
)
|
||||
|
||||
func init() {
|
||||
caddy.RegisterModule(CaddyLogWriter{})
|
||||
}
|
||||
|
||||
func SetCaddyLoggingWriter(w io.WriteCloser) {
|
||||
loggingRequests = w
|
||||
}
|
||||
|
||||
var loggingRequests io.WriteCloser
|
||||
|
||||
type CaddyLogWriter struct{}
|
||||
|
||||
func (CaddyLogWriter) CaddyModule() caddy.ModuleInfo {
|
||||
return caddy.ModuleInfo{
|
||||
ID: "caddy.logging.writers.zrok_tui",
|
||||
New: func() caddy.Module { return new(CaddyLogWriter) },
|
||||
}
|
||||
}
|
||||
|
||||
func (w *CaddyLogWriter) Provision(_ caddy.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (CaddyLogWriter) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (CaddyLogWriter) WriterKey() string {
|
||||
return "zrok_tui"
|
||||
}
|
||||
|
||||
func (CaddyLogWriter) OpenWriter() (io.WriteCloser, error) {
|
||||
return loggingRequests, nil
|
||||
}
|
||||
|
||||
func (*CaddyLogWriter) UnmarshalCaddyfile(_ *caddyfile.Dispenser) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
_ caddy.Provisioner = (*CaddyLogWriter)(nil)
|
||||
_ caddy.WriterOpener = (*CaddyLogWriter)(nil)
|
||||
_ caddyfile.Unmarshaler = (*CaddyLogWriter)(nil)
|
||||
)
|
@ -68,6 +68,11 @@ func NewCaddyWebBackend(cfg *CaddyWebBackendConfig) (*CaddyWebBackend, error) {
|
||||
},
|
||||
},
|
||||
}
|
||||
if loggingRequests != nil {
|
||||
caddyLog := caddyCfg.Logging.Logs["default"]
|
||||
caddyLog.WriterRaw = caddyconfig.JSONModuleObject(&CaddyLogWriter{}, "output", "zrok_tui", nil)
|
||||
caddyCfg.Logging.Logs["default"] = caddyLog
|
||||
}
|
||||
|
||||
return &CaddyWebBackend{cfg: cfg, caddyCfg: caddyCfg}, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user