setup.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package libbox
  2. import (
  3. "os"
  4. "os/user"
  5. "strconv"
  6. "github.com/sagernet/sing-box/common/humanize"
  7. C "github.com/sagernet/sing-box/constant"
  8. )
  9. var (
  10. sBasePath string
  11. sWorkingPath string
  12. sTempPath string
  13. sUserID int
  14. sGroupID int
  15. sTVOS bool
  16. )
  17. func Setup(basePath string, workingPath string, tempPath string, isTVOS bool) {
  18. sBasePath = basePath
  19. sWorkingPath = workingPath
  20. sTempPath = tempPath
  21. sUserID = os.Getuid()
  22. sGroupID = os.Getgid()
  23. sTVOS = isTVOS
  24. }
  25. func SetupWithUsername(basePath string, workingPath string, tempPath string, username string) error {
  26. sBasePath = basePath
  27. sWorkingPath = workingPath
  28. sTempPath = tempPath
  29. sUser, err := user.Lookup(username)
  30. if err != nil {
  31. return err
  32. }
  33. sUserID, _ = strconv.Atoi(sUser.Uid)
  34. sGroupID, _ = strconv.Atoi(sUser.Gid)
  35. return nil
  36. }
  37. func Version() string {
  38. return C.Version
  39. }
  40. func FormatBytes(length int64) string {
  41. return humanize.Bytes(uint64(length))
  42. }
  43. func FormatMemoryBytes(length int64) string {
  44. return humanize.MemoryBytes(uint64(length))
  45. }
  46. func ProxyDisplayType(proxyType string) string {
  47. return C.ProxyDisplayName(proxyType)
  48. }