mirror of
https://github.com/openziti/zrok.git
synced 2025-06-25 04:02:15 +02: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)
|
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)
|
c := make(chan os.Signal)
|
||||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||||
go func() {
|
go func() {
|
||||||
@ -230,8 +236,6 @@ func (cmd *sharePrivateCommand) run(_ *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} 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)
|
logrus.SetOutput(mdl)
|
||||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||||
mdl.prg = prg
|
mdl.prg = prg
|
||||||
|
@ -130,6 +130,11 @@ func (cmd *sharePublicCommand) run(_ *cobra.Command, args []string) {
|
|||||||
panic(err)
|
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)
|
c := make(chan os.Signal)
|
||||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||||
go func() {
|
go func() {
|
||||||
@ -185,7 +190,6 @@ func (cmd *sharePublicCommand) run(_ *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mdl := newShareModel(resp.Payload.ShrToken, resp.Payload.FrontendProxyEndpoints, sdk.PublicShareMode, sdk.BackendMode(cmd.backendMode))
|
|
||||||
logrus.SetOutput(mdl)
|
logrus.SetOutput(mdl)
|
||||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||||
mdl.prg = prg
|
mdl.prg = prg
|
||||||
|
@ -106,6 +106,19 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
|||||||
logrus.Infof("using existing backend proxy endpoint: %v", target)
|
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)
|
requestsChan := make(chan *endpoints.Request, 1024)
|
||||||
switch resp.Payload.BackendMode {
|
switch resp.Payload.BackendMode {
|
||||||
case "proxy":
|
case "proxy":
|
||||||
@ -158,15 +171,6 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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)
|
logrus.SetOutput(mdl)
|
||||||
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
prg := tea.NewProgram(mdl, tea.WithAltScreen())
|
||||||
mdl.prg = prg
|
mdl.prg = prg
|
||||||
|
@ -218,6 +218,10 @@ func (m *shareModel) Write(p []byte) (n int, err error) {
|
|||||||
return len(p), nil
|
return len(p), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (shareModel) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func wrap(lines []string, width int) []string {
|
func wrap(lines []string, width int) []string {
|
||||||
ret := make([]string, 0)
|
ret := make([]string, 0)
|
||||||
for _, line := range lines {
|
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
|
return &CaddyWebBackend{cfg: cfg, caddyCfg: caddyCfg}, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user