this repo has no description smallweb.run
smallweb
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix stdin error when running a command through ssh

pomdtr d82d8757 7fb0b78a

+30 -16
+30 -16
cmd/up.go
··· 231 231 sftp.SSHOption(k.String("dir"), nil), 232 232 wish.WithMiddleware(func(next ssh.Handler) ssh.Handler { 233 233 return func(sess ssh.Session) { 234 - var cmd *exec.Cmd 235 - if sess.User() == "_" { 236 - execPath, err := os.Executable() 237 - if err != nil { 238 - fmt.Fprintf(sess.Stderr(), "failed to get executable path: %v\n", err) 239 - sess.Exit(1) 240 - return 241 - } 242 - 243 - cmd = exec.Command(execPath, "--dir", k.String("dir"), "--domain", k.String("domain")) 244 - cmd.Args = append(cmd.Args, sess.Command()...) 245 - cmd.Env = os.Environ() 246 - cmd.Env = append(cmd.Env, "SMALLWEB_DISABLE_PLUGINS=true") 247 - } else { 234 + if sess.User() != "_" { 248 235 a, err := app.LoadApp(sess.User(), k.String("dir"), k.String("domain"), k.Bool(fmt.Sprintf("apps.%s.admin", sess.User()))) 249 236 if err != nil { 250 237 fmt.Fprintf(sess, "failed to load app: %v\n", err) ··· 253 240 } 254 241 255 242 wk := worker.NewWorker(a) 256 - command, err := wk.Command(sess.Context(), sess.Command()...) 243 + cmd, err := wk.Command(sess.Context(), sess.Command()...) 257 244 if err != nil { 258 245 fmt.Fprintf(sess, "failed to get command: %v\n", err) 259 246 sess.Exit(1) 260 247 return 261 248 } 262 249 263 - cmd = command 250 + cmd.Stdout = sess 251 + cmd.Stderr = sess.Stderr() 252 + 253 + if err := cmd.Run(); err != nil { 254 + var exitErr *exec.ExitError 255 + if errors.As(err, &exitErr) { 256 + sess.Exit(exitErr.ExitCode()) 257 + return 258 + } 259 + 260 + fmt.Fprintf(sess, "failed to run command: %v", err) 261 + sess.Exit(1) 262 + return 263 + } 264 + 265 + return 264 266 } 267 + 268 + execPath, err := os.Executable() 269 + if err != nil { 270 + fmt.Fprintf(sess.Stderr(), "failed to get executable path: %v\n", err) 271 + sess.Exit(1) 272 + return 273 + } 274 + 275 + cmd := exec.Command(execPath, "--dir", k.String("dir"), "--domain", k.String("domain")) 276 + cmd.Args = append(cmd.Args, sess.Command()...) 277 + cmd.Env = os.Environ() 278 + cmd.Env = append(cmd.Env, "SMALLWEB_DISABLE_PLUGINS=true") 265 279 266 280 ptyReq, winCh, isPty := sess.Pty() 267 281 if isPty {