Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions storage/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func Test_Config(t *testing.T) {
assert.Equal(t, &Config{
Profile: "default",
Profiles: make(map[string]*Profile),
LastMigration: 1,
LastMigration: 2,
}, config)

profile := _storage.GetProfile()
Expand Down Expand Up @@ -51,6 +51,6 @@ func Test_Config(t *testing.T) {
Profiles: map[string]*Profile{
"default": {Token: profile.Token},
},
LastMigration: 1,
LastMigration: 2,
}, c)
}
43 changes: 43 additions & 0 deletions storage/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,46 @@ func (s *LocalStorage) UpdateSessionDir() error {
}
return nil
}

func (s *LocalStorage) MoveSessionsToUserDir() error {
// Old location: TempDir() + dirName + "sessions"
// New location: TempDir() + dirName + userId + "sessions"
oldSessionsDir := filepath.Join(filepath.Dir(s.tempDir), "sessions")

if _, err := os.Stat(oldSessionsDir); os.IsNotExist(err) {
return nil
}

entries, err := os.ReadDir(oldSessionsDir)
if err != nil {
return err
}

err = os.MkdirAll(s.sessionsDir, 0755)
if err != nil {
return err
}

for _, e := range entries {
if !e.IsDir() {
continue
}

oldPath := filepath.Join(oldSessionsDir, e.Name())
newPath := filepath.Join(s.sessionsDir, e.Name())

if _, err := os.Stat(newPath); err == nil {
continue
}

err = os.Rename(oldPath, newPath)
if err != nil {
fmt.Printf("Warning: failed to move session %s: %v\n", e.Name(), err)
continue
}
}

os.RemoveAll(oldSessionsDir)

return nil
}
21 changes: 20 additions & 1 deletion storage/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"io"
"os"
"os/user"
"path/filepath"
"runtime"

Expand Down Expand Up @@ -35,6 +36,7 @@ func NewLocalStorage(utils utils.Utils) *LocalStorage {
func (s *LocalStorage) Init(dirName string) error {
s.migrations = []MigrationFunc{
s.UpdateSessionDir,
s.MoveSessionsToUserDir,
}

homeDir, err := os.UserHomeDir()
Expand All @@ -46,13 +48,19 @@ func (s *LocalStorage) Init(dirName string) error {
if err != nil {
return err
}
s.tempDir = filepath.Join(os.TempDir(), dirName)

userId, err := getUserID()
if err != nil {
return err
}
s.tempDir = filepath.Join(os.TempDir(), dirName, userId)
s.sessionsDir = filepath.Join(s.tempDir, "sessions")
s.currentSessionDir = filepath.Join(s.sessionsDir, getSessionId())
err = os.MkdirAll(s.currentSessionDir, 0755)
if err != nil {
return err
}

_, err = s.LoadConfig()
if err != nil {
if os.IsNotExist(err) {
Expand Down Expand Up @@ -134,6 +142,17 @@ func getSessionId() string {
return fmt.Sprintf("%d_%d", createTime, p.Pid)
}

func getUserID() (string, error) {
user, err := user.Current()
if err != nil {
return "", err
}
if user.Uid == "" {
return user.Username, nil
}
return user.Uid, nil
}

func truncateFile(file string, maxSize int64) error {
f, err := os.OpenFile(file, os.O_RDWR, 0644)
if err != nil {
Expand Down