From f22cdb1c78a26ec54214638c3dd8e81e63f6257e Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Sat, 18 Jan 2025 09:04:47 -0500 Subject: [PATCH] chore(prose): rm cli mdw --- prose/cli.go | 154 --------------------------------------------------- prose/ssh.go | 13 +---- 2 files changed, 3 insertions(+), 164 deletions(-) delete mode 100644 prose/cli.go diff --git a/prose/cli.go b/prose/cli.go deleted file mode 100644 index 32f43346..00000000 --- a/prose/cli.go +++ /dev/null @@ -1,154 +0,0 @@ -package prose - -import ( - "fmt" - "log/slog" - "strings" - - "github.com/charmbracelet/ssh" - "github.com/charmbracelet/wish" - bm "github.com/charmbracelet/wish/bubbletea" - "github.com/muesli/termenv" - "github.com/picosh/pico/db" - "github.com/picosh/pico/tui/common" - "github.com/picosh/utils" -) - -func getUser(s ssh.Session, dbpool db.DB) (*db.User, error) { - if s.PublicKey() == nil { - return nil, fmt.Errorf("key not found") - } - - key := utils.KeyForKeyText(s.PublicKey()) - - user, err := dbpool.FindUserForKey(s.User(), key) - if err != nil { - return nil, err - } - - if user.Name == "" { - return nil, fmt.Errorf("must have username set") - } - - return user, nil -} - -type Cmd struct { - User *db.User - Session utils.CmdSession - Log *slog.Logger - Dbpool db.DB - Styles common.Styles - Width int - Height int -} - -func (c *Cmd) output(out string) { - _, _ = c.Session.Write([]byte(out + "\r\n")) -} - -func (c *Cmd) help() { - helpStr := "Commands: [help, stats]\n" - c.output(helpStr) -} - -func (c *Cmd) statsByPost(_ string) error { - msg := fmt.Sprintf( - "%s\n\nRun %s to access pico's analytics TUI", - c.Styles.Logo.Render("DEPRECATED"), - c.Styles.Code.Render("ssh pico.sh"), - ) - c.output(c.Styles.RoundedBorder.Render(msg)) - return nil -} - -func (c *Cmd) stats() error { - return c.statsByPost("") -} - -type CliHandler struct { - DBPool db.DB - Logger *slog.Logger -} - -func WishMiddleware(handler *CliHandler) wish.Middleware { - dbpool := handler.DBPool - log := handler.Logger - - return func(next ssh.Handler) ssh.Handler { - return func(sesh ssh.Session) { - args := sesh.Command() - if len(args) == 0 { - next(sesh) - return - } - - // default width and height when no pty - width := 80 - height := 24 - pty, _, ok := sesh.Pty() - if ok { - width = pty.Window.Width - height = pty.Window.Height - } - - user, err := getUser(sesh, dbpool) - if err != nil { - wish.Errorln(sesh, err) - return - } - - renderer := bm.MakeRenderer(sesh) - renderer.SetColorProfile(termenv.TrueColor) - styles := common.DefaultStyles(renderer) - - opts := Cmd{ - Session: sesh, - User: user, - Log: log, - Dbpool: dbpool, - Styles: styles, - Width: width, - Height: height, - } - - cmd := strings.TrimSpace(args[0]) - if len(args) == 1 { - if cmd == "help" { - opts.help() - return - } else if cmd == "stats" { - err := opts.stats() - if err != nil { - wish.Fatalln(sesh, err) - } - return - } else { - next(sesh) - return - } - } - - postSlug := strings.TrimSpace(args[1]) - cmdArgs := args[2:] - log.Info( - "pgs middleware detected command", - "args", args, - "cmd", cmd, - "post", postSlug, - "cmdArgs", cmdArgs, - ) - - if cmd == "stats" { - err := opts.statsByPost(postSlug) - if err != nil { - wish.Fatalln(sesh, err) - } - return - } else { - next(sesh) - return - } - } - } -} diff --git a/prose/ssh.go b/prose/ssh.go index 43d88688..547bffad 100644 --- a/prose/ssh.go +++ b/prose/ssh.go @@ -27,7 +27,7 @@ import ( "github.com/picosh/utils" ) -func createRouter(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandler) proxy.Router { +func createRouter(handler *filehandlers.FileHandlerRouter) proxy.Router { return func(sh ssh.Handler, s ssh.Session) []wish.Middleware { return []wish.Middleware{ pipe.Middleware(handler, ".md"), @@ -36,20 +36,19 @@ func createRouter(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandle wishrsync.Middleware(handler), auth.Middleware(handler), wsh.PtyMdw(wsh.DeprecatedNotice()), - WishMiddleware(cliHandler), wsh.LogMiddleware(handler.GetLogger()), } } } -func withProxy(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandler, otherMiddleware ...wish.Middleware) ssh.Option { +func withProxy(handler *filehandlers.FileHandlerRouter, otherMiddleware ...wish.Middleware) ssh.Option { return func(server *ssh.Server) error { err := sftp.SSHOption(handler)(server) if err != nil { return err } - return proxy.WithProxy(createRouter(handler, cliHandler), otherMiddleware...)(server) + return proxy.WithProxy(createRouter(handler), otherMiddleware...)(server) } } @@ -88,11 +87,6 @@ func StartSshServer() { handler := filehandlers.NewFileHandlerRouter(cfg, dbh, fileMap) handler.Spaces = []string{cfg.Space, "imgs"} - cliHandler := &CliHandler{ - Logger: logger, - DBPool: dbh, - } - sshAuth := shared.NewSshAuthHandler(dbh, logger, cfg) s, err := wish.NewServer( wish.WithAddress(fmt.Sprintf("%s:%s", host, port)), @@ -100,7 +94,6 @@ func StartSshServer() { wish.WithPublicKeyAuth(sshAuth.PubkeyAuthHandler), withProxy( handler, - cliHandler, promwish.Middleware(fmt.Sprintf("%s:%s", host, promPort), "prose-ssh"), ), )