Skip to content

Commit 5f405b9

Browse files
committed
Fix user registration
1 parent 2ba02ac commit 5f405b9

File tree

7 files changed

+43
-17
lines changed

7 files changed

+43
-17
lines changed

pkg/apps/pastes/ssh.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"os"
66
"os/signal"
77
"syscall"
8+
"time"
89

910
"github.com/picosh/pico/pkg/db/postgres"
1011
"github.com/picosh/pico/pkg/filehandlers"
@@ -60,7 +61,7 @@ func StartSshServer() {
6061
scp.Middleware(handler),
6162
rsync.Middleware(handler),
6263
auth.Middleware(handler),
63-
pssh.PtyMdw(pssh.DeprecatedNotice()),
64+
pssh.PtyMdw(pssh.DeprecatedNotice(), 200*time.Millisecond),
6465
pssh.LogMiddleware(handler, dbh),
6566
},
6667
[]pssh.SSHServerMiddleware{

pkg/apps/pico/ssh.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"os"
66
"os/signal"
77
"syscall"
8+
"time"
89

910
"git.sr.ht/~rockorager/vaxis"
1011
"github.com/picosh/pico/pkg/db/postgres"
@@ -98,7 +99,7 @@ func StartSshServer() {
9899
Dbpool: handler.DBPool,
99100
Logger: cfg.Logger,
100101
}
101-
return pssh.PtyMdw(createTui(shrd))(next)(sesh)
102+
return pssh.PtyMdw(createTui(shrd), 200*time.Millisecond)(next)(sesh)
102103
}
103104
},
104105
Middleware(cliHandler),

pkg/apps/prose/ssh.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"os"
66
"os/signal"
77
"syscall"
8+
"time"
89

910
"github.com/picosh/pico/pkg/db/postgres"
1011
"github.com/picosh/pico/pkg/filehandlers"
@@ -79,7 +80,7 @@ func StartSshServer() {
7980
scp.Middleware(handler),
8081
rsync.Middleware(handler),
8182
auth.Middleware(handler),
82-
pssh.PtyMdw(pssh.DeprecatedNotice()),
83+
pssh.PtyMdw(pssh.DeprecatedNotice(), 200*time.Millisecond),
8384
pssh.LogMiddleware(handler, dbh),
8485
},
8586
[]pssh.SSHServerMiddleware{

pkg/pobj/storage/minio.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func (s *StorageMinio) GetBucket(name string) (Bucket, error) {
8282
s.Logger.Info("bucket found in lru cache", "name", name)
8383
return cachedBucket.Bucket, cachedBucket.Error
8484
}
85+
8586
s.Logger.Info("bucket not found in lru cache", "name", name)
8687

8788
bucket := Bucket{
@@ -114,6 +115,8 @@ func (s *StorageMinio) UpsertBucket(name string) (Bucket, error) {
114115
return bucket, err
115116
}
116117

118+
s.BucketCache.Remove(name)
119+
117120
return bucket, nil
118121
}
119122

pkg/pssh/logger.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package pssh
22

33
import (
4-
"fmt"
54
"log/slog"
65
"time"
76

@@ -31,18 +30,20 @@ func LogMiddleware(getLogger GetLoggerInterface, db FindUserInterface) SSHServer
3130
user := GetUser(s)
3231
if user == nil {
3332
userID, ok := s.Permissions().Extensions["user_id"]
34-
if !ok {
35-
return fmt.Errorf("`user_id` not set in permissions")
36-
}
37-
user, err := db.FindUser(userID)
38-
if err == nil && user != nil {
39-
logger = logger.With(
40-
"user", user.Name,
41-
"userId", user.ID,
42-
"ip", s.RemoteAddr().String(),
43-
)
44-
s.SetValue(ctxUserKey{}, user)
33+
if ok {
34+
user, err := db.FindUser(userID)
35+
if err == nil && user != nil {
36+
logger = logger.With(
37+
"user", user.Name,
38+
"userId", user.ID,
39+
"ip", s.RemoteAddr().String(),
40+
)
41+
s.SetValue(ctxUserKey{}, user)
42+
}
43+
} else {
44+
logger.Error("`user_id` not set in permissions")
4545
}
46+
4647
}
4748

4849
s.SetValue(ctxLoggerKey{}, logger)

pkg/pssh/pty.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package pssh
33
import (
44
"encoding/binary"
55
"fmt"
6+
"time"
67
)
78

89
func SessionMessage(sesh *SSHServerConnSession, msg string) {
@@ -23,9 +24,26 @@ func DeprecatedNotice() SSHServerMiddleware {
2324
}
2425
}
2526

26-
func PtyMdw(mdw SSHServerMiddleware) SSHServerMiddleware {
27+
func PtyMdw(mdw SSHServerMiddleware, waitTimeout time.Duration) SSHServerMiddleware {
2728
return func(next SSHServerHandler) SSHServerHandler {
2829
return func(sesh *SSHServerConnSession) error {
30+
if waitTimeout > 0 {
31+
afterTime := time.Now().Add(waitTimeout)
32+
33+
for {
34+
if time.Now().After(afterTime) {
35+
break
36+
}
37+
38+
_, _, ok := sesh.Pty()
39+
if ok {
40+
break
41+
}
42+
43+
time.Sleep(50 * time.Millisecond)
44+
}
45+
}
46+
2947
_, _, ok := sesh.Pty()
3048
if !ok {
3149
return next(sesh)

pkg/pssh/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,8 @@ func NewSSHServerWithConfig(
614614
app, host, port, promPort, hostKey string,
615615
pubKeyAuthHandler PubKeyAuthHandler,
616616
middleware, subsystemMiddleware []SSHServerMiddleware,
617-
channelMiddleware map[string]SSHServerChannelMiddleware) (*SSHServer, error) {
617+
channelMiddleware map[string]SSHServerChannelMiddleware,
618+
) (*SSHServer, error) {
618619
server := NewSSHServer(ctx, logger, &SSHServerConfig{
619620
App: app,
620621
ListenAddr: fmt.Sprintf("%s:%s", host, port),

0 commit comments

Comments
 (0)