- commit
- f22cdb1
- parent
- 561ede5
- author
- Eric Bower
- date
- 2025-01-18 09:04:47 -0500 EST
chore(prose): rm cli mdw
2 files changed,
+3,
-164
+0,
-154
1@@ -1,154 +0,0 @@
2-package prose
3-
4-import (
5- "fmt"
6- "log/slog"
7- "strings"
8-
9- "github.com/charmbracelet/ssh"
10- "github.com/charmbracelet/wish"
11- bm "github.com/charmbracelet/wish/bubbletea"
12- "github.com/muesli/termenv"
13- "github.com/picosh/pico/db"
14- "github.com/picosh/pico/tui/common"
15- "github.com/picosh/utils"
16-)
17-
18-func getUser(s ssh.Session, dbpool db.DB) (*db.User, error) {
19- if s.PublicKey() == nil {
20- return nil, fmt.Errorf("key not found")
21- }
22-
23- key := utils.KeyForKeyText(s.PublicKey())
24-
25- user, err := dbpool.FindUserForKey(s.User(), key)
26- if err != nil {
27- return nil, err
28- }
29-
30- if user.Name == "" {
31- return nil, fmt.Errorf("must have username set")
32- }
33-
34- return user, nil
35-}
36-
37-type Cmd struct {
38- User *db.User
39- Session utils.CmdSession
40- Log *slog.Logger
41- Dbpool db.DB
42- Styles common.Styles
43- Width int
44- Height int
45-}
46-
47-func (c *Cmd) output(out string) {
48- _, _ = c.Session.Write([]byte(out + "\r\n"))
49-}
50-
51-func (c *Cmd) help() {
52- helpStr := "Commands: [help, stats]\n"
53- c.output(helpStr)
54-}
55-
56-func (c *Cmd) statsByPost(_ string) error {
57- msg := fmt.Sprintf(
58- "%s\n\nRun %s to access pico's analytics TUI",
59- c.Styles.Logo.Render("DEPRECATED"),
60- c.Styles.Code.Render("ssh pico.sh"),
61- )
62- c.output(c.Styles.RoundedBorder.Render(msg))
63- return nil
64-}
65-
66-func (c *Cmd) stats() error {
67- return c.statsByPost("")
68-}
69-
70-type CliHandler struct {
71- DBPool db.DB
72- Logger *slog.Logger
73-}
74-
75-func WishMiddleware(handler *CliHandler) wish.Middleware {
76- dbpool := handler.DBPool
77- log := handler.Logger
78-
79- return func(next ssh.Handler) ssh.Handler {
80- return func(sesh ssh.Session) {
81- args := sesh.Command()
82- if len(args) == 0 {
83- next(sesh)
84- return
85- }
86-
87- // default width and height when no pty
88- width := 80
89- height := 24
90- pty, _, ok := sesh.Pty()
91- if ok {
92- width = pty.Window.Width
93- height = pty.Window.Height
94- }
95-
96- user, err := getUser(sesh, dbpool)
97- if err != nil {
98- wish.Errorln(sesh, err)
99- return
100- }
101-
102- renderer := bm.MakeRenderer(sesh)
103- renderer.SetColorProfile(termenv.TrueColor)
104- styles := common.DefaultStyles(renderer)
105-
106- opts := Cmd{
107- Session: sesh,
108- User: user,
109- Log: log,
110- Dbpool: dbpool,
111- Styles: styles,
112- Width: width,
113- Height: height,
114- }
115-
116- cmd := strings.TrimSpace(args[0])
117- if len(args) == 1 {
118- if cmd == "help" {
119- opts.help()
120- return
121- } else if cmd == "stats" {
122- err := opts.stats()
123- if err != nil {
124- wish.Fatalln(sesh, err)
125- }
126- return
127- } else {
128- next(sesh)
129- return
130- }
131- }
132-
133- postSlug := strings.TrimSpace(args[1])
134- cmdArgs := args[2:]
135- log.Info(
136- "pgs middleware detected command",
137- "args", args,
138- "cmd", cmd,
139- "post", postSlug,
140- "cmdArgs", cmdArgs,
141- )
142-
143- if cmd == "stats" {
144- err := opts.statsByPost(postSlug)
145- if err != nil {
146- wish.Fatalln(sesh, err)
147- }
148- return
149- } else {
150- next(sesh)
151- return
152- }
153- }
154- }
155-}
+3,
-10
1@@ -27,7 +27,7 @@ import (
2 "github.com/picosh/utils"
3 )
4
5-func createRouter(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandler) proxy.Router {
6+func createRouter(handler *filehandlers.FileHandlerRouter) proxy.Router {
7 return func(sh ssh.Handler, s ssh.Session) []wish.Middleware {
8 return []wish.Middleware{
9 pipe.Middleware(handler, ".md"),
10@@ -36,20 +36,19 @@ func createRouter(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandle
11 wishrsync.Middleware(handler),
12 auth.Middleware(handler),
13 wsh.PtyMdw(wsh.DeprecatedNotice()),
14- WishMiddleware(cliHandler),
15 wsh.LogMiddleware(handler.GetLogger()),
16 }
17 }
18 }
19
20-func withProxy(handler *filehandlers.FileHandlerRouter, cliHandler *CliHandler, otherMiddleware ...wish.Middleware) ssh.Option {
21+func withProxy(handler *filehandlers.FileHandlerRouter, otherMiddleware ...wish.Middleware) ssh.Option {
22 return func(server *ssh.Server) error {
23 err := sftp.SSHOption(handler)(server)
24 if err != nil {
25 return err
26 }
27
28- return proxy.WithProxy(createRouter(handler, cliHandler), otherMiddleware...)(server)
29+ return proxy.WithProxy(createRouter(handler), otherMiddleware...)(server)
30 }
31 }
32
33@@ -88,11 +87,6 @@ func StartSshServer() {
34 handler := filehandlers.NewFileHandlerRouter(cfg, dbh, fileMap)
35 handler.Spaces = []string{cfg.Space, "imgs"}
36
37- cliHandler := &CliHandler{
38- Logger: logger,
39- DBPool: dbh,
40- }
41-
42 sshAuth := shared.NewSshAuthHandler(dbh, logger, cfg)
43 s, err := wish.NewServer(
44 wish.WithAddress(fmt.Sprintf("%s:%s", host, port)),
45@@ -100,7 +94,6 @@ func StartSshServer() {
46 wish.WithPublicKeyAuth(sshAuth.PubkeyAuthHandler),
47 withProxy(
48 handler,
49- cliHandler,
50 promwish.Middleware(fmt.Sprintf("%s:%s", host, promPort), "prose-ssh"),
51 ),
52 )