- commit
- 5f405b9
- parent
- 2ba02ac
- author
- Antonio Mika
- date
- 2025-04-10 14:40:40 -0400 EDT
Fix user registration
7 files changed,
+43,
-17
+2,
-1
1@@ -5,6 +5,7 @@ import (
2 "os"
3 "os/signal"
4 "syscall"
5+ "time"
6
7 "github.com/picosh/pico/pkg/db/postgres"
8 "github.com/picosh/pico/pkg/filehandlers"
9@@ -60,7 +61,7 @@ func StartSshServer() {
10 scp.Middleware(handler),
11 rsync.Middleware(handler),
12 auth.Middleware(handler),
13- pssh.PtyMdw(pssh.DeprecatedNotice()),
14+ pssh.PtyMdw(pssh.DeprecatedNotice(), 200*time.Millisecond),
15 pssh.LogMiddleware(handler, dbh),
16 },
17 []pssh.SSHServerMiddleware{
+2,
-1
1@@ -5,6 +5,7 @@ import (
2 "os"
3 "os/signal"
4 "syscall"
5+ "time"
6
7 "git.sr.ht/~rockorager/vaxis"
8 "github.com/picosh/pico/pkg/db/postgres"
9@@ -98,7 +99,7 @@ func StartSshServer() {
10 Dbpool: handler.DBPool,
11 Logger: cfg.Logger,
12 }
13- return pssh.PtyMdw(createTui(shrd))(next)(sesh)
14+ return pssh.PtyMdw(createTui(shrd), 200*time.Millisecond)(next)(sesh)
15 }
16 },
17 Middleware(cliHandler),
+2,
-1
1@@ -5,6 +5,7 @@ import (
2 "os"
3 "os/signal"
4 "syscall"
5+ "time"
6
7 "github.com/picosh/pico/pkg/db/postgres"
8 "github.com/picosh/pico/pkg/filehandlers"
9@@ -79,7 +80,7 @@ func StartSshServer() {
10 scp.Middleware(handler),
11 rsync.Middleware(handler),
12 auth.Middleware(handler),
13- pssh.PtyMdw(pssh.DeprecatedNotice()),
14+ pssh.PtyMdw(pssh.DeprecatedNotice(), 200*time.Millisecond),
15 pssh.LogMiddleware(handler, dbh),
16 },
17 []pssh.SSHServerMiddleware{
+3,
-0
1@@ -82,6 +82,7 @@ func (s *StorageMinio) GetBucket(name string) (Bucket, error) {
2 s.Logger.Info("bucket found in lru cache", "name", name)
3 return cachedBucket.Bucket, cachedBucket.Error
4 }
5+
6 s.Logger.Info("bucket not found in lru cache", "name", name)
7
8 bucket := Bucket{
9@@ -114,6 +115,8 @@ func (s *StorageMinio) UpsertBucket(name string) (Bucket, error) {
10 return bucket, err
11 }
12
13+ s.BucketCache.Remove(name)
14+
15 return bucket, nil
16 }
17
+13,
-12
1@@ -1,7 +1,6 @@
2 package pssh
3
4 import (
5- "fmt"
6 "log/slog"
7 "time"
8
9@@ -31,18 +30,20 @@ func LogMiddleware(getLogger GetLoggerInterface, db FindUserInterface) SSHServer
10 user := GetUser(s)
11 if user == nil {
12 userID, ok := s.Permissions().Extensions["user_id"]
13- if !ok {
14- return fmt.Errorf("`user_id` not set in permissions")
15- }
16- user, err := db.FindUser(userID)
17- if err == nil && user != nil {
18- logger = logger.With(
19- "user", user.Name,
20- "userId", user.ID,
21- "ip", s.RemoteAddr().String(),
22- )
23- s.SetValue(ctxUserKey{}, user)
24+ if ok {
25+ user, err := db.FindUser(userID)
26+ if err == nil && user != nil {
27+ logger = logger.With(
28+ "user", user.Name,
29+ "userId", user.ID,
30+ "ip", s.RemoteAddr().String(),
31+ )
32+ s.SetValue(ctxUserKey{}, user)
33+ }
34+ } else {
35+ logger.Error("`user_id` not set in permissions")
36 }
37+
38 }
39
40 s.SetValue(ctxLoggerKey{}, logger)
+19,
-1
1@@ -3,6 +3,7 @@ package pssh
2 import (
3 "encoding/binary"
4 "fmt"
5+ "time"
6 )
7
8 func SessionMessage(sesh *SSHServerConnSession, msg string) {
9@@ -23,9 +24,26 @@ func DeprecatedNotice() SSHServerMiddleware {
10 }
11 }
12
13-func PtyMdw(mdw SSHServerMiddleware) SSHServerMiddleware {
14+func PtyMdw(mdw SSHServerMiddleware, waitTimeout time.Duration) SSHServerMiddleware {
15 return func(next SSHServerHandler) SSHServerHandler {
16 return func(sesh *SSHServerConnSession) error {
17+ if waitTimeout > 0 {
18+ afterTime := time.Now().Add(waitTimeout)
19+
20+ for {
21+ if time.Now().After(afterTime) {
22+ break
23+ }
24+
25+ _, _, ok := sesh.Pty()
26+ if ok {
27+ break
28+ }
29+
30+ time.Sleep(50 * time.Millisecond)
31+ }
32+ }
33+
34 _, _, ok := sesh.Pty()
35 if !ok {
36 return next(sesh)
+2,
-1
1@@ -614,7 +614,8 @@ func NewSSHServerWithConfig(
2 app, host, port, promPort, hostKey string,
3 pubKeyAuthHandler PubKeyAuthHandler,
4 middleware, subsystemMiddleware []SSHServerMiddleware,
5- channelMiddleware map[string]SSHServerChannelMiddleware) (*SSHServer, error) {
6+ channelMiddleware map[string]SSHServerChannelMiddleware,
7+) (*SSHServer, error) {
8 server := NewSSHServer(ctx, logger, &SSHServerConfig{
9 App: app,
10 ListenAddr: fmt.Sprintf("%s:%s", host, port),