| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- package platform
 
- import (
 
- 	"os"
 
- 	"path/filepath"
 
- 	"strconv"
 
- 	"strings"
 
- )
 
- type EnvFlag struct {
 
- 	Name    string
 
- 	AltName string
 
- }
 
- func (f EnvFlag) GetValue(defaultValue func() string) string {
 
- 	if v, found := os.LookupEnv(f.Name); found {
 
- 		return v
 
- 	}
 
- 	if len(f.AltName) > 0 {
 
- 		if v, found := os.LookupEnv(f.AltName); found {
 
- 			return v
 
- 		}
 
- 	}
 
- 	return defaultValue()
 
- }
 
- func (f EnvFlag) GetValueAsInt(defaultValue int) int {
 
- 	useDefaultValue := false
 
- 	s := f.GetValue(func() string {
 
- 		useDefaultValue = true
 
- 		return ""
 
- 	})
 
- 	if useDefaultValue {
 
- 		return defaultValue
 
- 	}
 
- 	v, err := strconv.ParseInt(s, 10, 32)
 
- 	if err != nil {
 
- 		return defaultValue
 
- 	}
 
- 	return int(v)
 
- }
 
- func NormalizeEnvName(name string) string {
 
- 	return strings.Replace(strings.ToUpper(strings.TrimSpace(name)), ".", "_", -1)
 
- }
 
- func getExecutableDir() string {
 
- 	exec, err := os.Executable()
 
- 	if err != nil {
 
- 		return ""
 
- 	}
 
- 	return filepath.Dir(exec)
 
- }
 
- func getExecutableSubDir(dir string) func() string {
 
- 	return func() string {
 
- 		return filepath.Join(getExecutableDir(), dir)
 
- 	}
 
- }
 
- func GetAssetLocation(file string) string {
 
- 	const name = "v2ray.location.asset"
 
- 	assetPath := EnvFlag{Name: name, AltName: NormalizeEnvName(name)}.GetValue(getExecutableDir)
 
- 	return filepath.Join(assetPath, file)
 
- }
 
- func GetPluginDirectory() string {
 
- 	const name = "v2ray.location.plugin"
 
- 	pluginDir := EnvFlag{Name: name, AltName: NormalizeEnvName(name)}.GetValue(getExecutableSubDir("plugins"))
 
- 	return pluginDir
 
- }
 
- func GetConfigurationPath() string {
 
- 	const name = "v2ray.location.config"
 
- 	configPath := EnvFlag{Name: name, AltName: NormalizeEnvName(name)}.GetValue(getExecutableDir)
 
- 	return filepath.Join(configPath, "config.json")
 
- }
 
 
  |