Skip to content

Commit 2533d9a

Browse files
author
pyama86
committedFeb 25, 2020
create homedir
1 parent c092886 commit 2533d9a

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed
 

‎cli.go

+31-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"os/user"
1212
"path/filepath"
13+
"strconv"
1314
"strings"
1415
"syscall"
1516

@@ -145,14 +146,41 @@ func tokenCacheFile() (string, error) {
145146
if err != nil {
146147
return "", fmt.Errorf("user lookup error %s %s", uname, err.Error())
147148
}
148-
tokenCacheDir := filepath.Join(userInfo.HomeDir, ".credentials")
149-
err = os.MkdirAll(tokenCacheDir, 0700)
150-
if err != nil {
149+
150+
// create home dir
151+
if err := createDir(userInfo.HomeDir, userInfo.Uid, userInfo.Gid, 0755); err != nil {
152+
return "", err
153+
}
154+
// create token dir
155+
tokenCacheDir := filepath.Join("/opt/google-web-oauth", uname, ".credentials")
156+
if err := createDir(tokenCacheDir, "0", "0", 0700); err != nil {
151157
return "", err
152158
}
159+
153160
return filepath.Join(tokenCacheDir, url.QueryEscape("google_oauth.json")), nil
154161
}
155162

163+
func createDir(path, uid, gid string, mode os.FileMode) error {
164+
if _, err := os.Stat(path); os.IsNotExist(err) {
165+
if err = os.MkdirAll(path, mode); err != nil {
166+
return err
167+
}
168+
iuid, err := strconv.Atoi(uid)
169+
if err != nil {
170+
return err
171+
}
172+
igid, err := strconv.Atoi(gid)
173+
if err != nil {
174+
return err
175+
}
176+
if err = os.Chown(path, iuid, igid); err != nil {
177+
return err
178+
}
179+
}
180+
return nil
181+
182+
}
183+
156184
type tokenCache struct {
157185
OAuthToken *oauth2.Token
158186
LastIP string

0 commit comments

Comments
 (0)
Please sign in to comment.