@@ -5,13 +5,15 @@ import (
5
5
"github.com/musiclover789/luna/log"
6
6
"github.com/musiclover789/luna/reverse_proxy"
7
7
"log"
8
+ "math/rand"
8
9
"net"
9
10
"net/url"
10
11
"os"
11
12
"os/exec"
12
13
"path/filepath"
13
14
"strconv"
14
15
"strings"
16
+ "sync"
15
17
"time"
16
18
)
17
19
@@ -102,15 +104,39 @@ var StartChromiumWithUserDataDir = func(chromiumPath, userDataDirFullPath string
102
104
return port , proxyServer
103
105
}
104
106
107
+ var mutex sync.Mutex
105
108
var CreateCacheDirInSubDir = func (basePath string ) string {
106
- // 组装完整的随机文件夹路径
107
- randFolderName := fmt .Sprintf ("chromium_user_data_%d" , time .Now ().UnixNano ())
109
+ rand .Seed (time .Now ().UnixNano ())
110
+
111
+ // 生成随机字母
112
+ letters := make ([]rune , 3 )
113
+ for i := 0 ; i < 3 ; i ++ {
114
+ letters [i ] = rune ('a' + rand .Intn (26 ))
115
+ }
116
+
117
+ // 获取当前时间戳的中间 9 到 16 位数字
118
+ timestamp := time .Now ().UnixNano ()
119
+ middleDigits := (timestamp / 1e6 ) % 1e8
120
+
121
+ randFolderName := fmt .Sprintf ("user_%08d%s" , middleDigits , string (letters ))
122
+
123
+ // 加锁
124
+ mutex .Lock ()
125
+ defer mutex .Unlock ()
126
+
108
127
cacheDirFullPath := filepath .Join (basePath , randFolderName )
109
- // 创建随机文件夹
110
- if err := os .MkdirAll (cacheDirFullPath , 0700 ); err != nil {
111
- fmt .Printf ("创建缓存目录失败:" , err )
128
+
129
+ // 检查文件夹是否已存在
130
+ if _ , err := os .Stat (cacheDirFullPath ); err == nil {
131
+ return cacheDirFullPath
132
+ }
133
+
134
+ if err := os .MkdirAll (cacheDirFullPath , 0777 ); err != nil {
135
+ fmt .Printf ("创建缓存目录失败: %v\n " , err )
112
136
return ""
113
137
}
138
+ time .Sleep (time .Millisecond * 10 )
139
+ fmt .Println ("当前缓存目录为:" , cacheDirFullPath )
114
140
return cacheDirFullPath
115
141
}
116
142
0 commit comments