88 "net/http"
99 "os"
1010 "path/filepath"
11+ "runtime"
1112 "strings"
1213)
1314
@@ -29,6 +30,9 @@ const (
2930 DOCKER_CONFIG_FILE = ".config/403unlocker/dockerRegistry.conf"
3031 DNS_CONFIG_URL = "https://raw.githubusercontent.com/403unlocker/403Unlocker-cli/refs/heads/main/config/dns.conf"
3132 DOCKER_CONFIG_URL = "https://raw.githubusercontent.com/403unlocker/403Unlocker-cli/refs/heads/main/config/dockerRegistry.conf"
33+
34+ // OS names
35+ WINDOWS_OS_NAME = "windows"
3236)
3337
3438// FormatDataSize converts the size in bytes to a human-readable string in KB, MB, or GB.
@@ -52,14 +56,12 @@ func FormatDataSize(bytes int64) string {
5256}
5357
5458func DownloadConfigFile (url , path string ) error {
55-
56- homeDir := os .Getenv ("HOME" )
59+ homeDir := GetHomeDir ()
5760 if homeDir == "" {
5861 fmt .Println ("HOME environment variable not set" )
5962 os .Exit (1 )
6063 }
61- filePath := homeDir + "/" + path
62-
64+ filePath := AddPathToDir (homeDir , path )
6365 dir := filepath .Dir (filePath )
6466 if err := os .MkdirAll (dir , os .ModePerm ); err != nil {
6567 fmt .Printf ("Error creating directory: %v\n " , err )
@@ -100,14 +102,12 @@ func DownloadConfigFile(url, path string) error {
100102}
101103
102104func WriteDNSToFile (filename string , dnsList []string ) error {
103- homeDir := os . Getenv ( "HOME" )
105+ homeDir := GetHomeDir ( )
104106 if homeDir == "" {
105107 fmt .Println ("HOME environment variable not set" )
106108 os .Exit (1 )
107109 }
108-
109- filename = homeDir + "/" + filename
110-
110+ filename = AddPathToDir (homeDir , filename )
111111 _ , err := os .Stat (filename )
112112 if os .IsNotExist (err ) {
113113 file , err := os .Create (filename )
@@ -130,12 +130,12 @@ func WriteDNSToFile(filename string, dnsList []string) error {
130130}
131131
132132func ReadDNSFromFile (filename string ) ([]string , error ) {
133- homeDir := os . Getenv ( "HOME" )
133+ homeDir := GetHomeDir ( )
134134 if homeDir == "" {
135135 fmt .Println ("HOME environment variable not set" )
136136 os .Exit (1 )
137137 }
138- filename = homeDir + "/" + filename
138+ filename = AddPathToDir ( homeDir , filename )
139139 data , err := os .ReadFile (filename )
140140 if err != nil {
141141 return nil , err
@@ -164,3 +164,24 @@ func ChangeDNS(dns string) *http.Client {
164164 }
165165 return client
166166}
167+ func GetHomeDir () string {
168+ if runtime .GOOS == WINDOWS_OS_NAME {
169+ return os .Getenv ("USERPROFILE" )
170+ } else {
171+ return os .Getenv ("HOME" )
172+ }
173+ }
174+ func GetTempDir () string {
175+ if runtime .GOOS == WINDOWS_OS_NAME {
176+ return os .Getenv ("TEMP" )
177+ } else {
178+ return "/tmp"
179+ }
180+ }
181+ func AddPathToDir (baseDir , extraDir string ) string {
182+ if runtime .GOOS == WINDOWS_OS_NAME {
183+ return baseDir + "\\ " + extraDir
184+ } else {
185+ return baseDir + "/" + extraDir
186+ }
187+ }
0 commit comments