| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package libbox
- import (
- "os"
- "runtime/debug"
- "time"
- C "github.com/sagernet/sing-box/constant"
- "github.com/sagernet/sing-box/experimental/locale"
- "github.com/sagernet/sing-box/log"
- "github.com/sagernet/sing/common/byteformats"
- )
- var (
- sBasePath string
- sWorkingPath string
- sTempPath string
- sUserID int
- sGroupID int
- sFixAndroidStack bool
- sCommandServerListenPort uint16
- sCommandServerSecret string
- sLogMaxLines int
- sDebug bool
- )
- func init() {
- debug.SetPanicOnFault(true)
- debug.SetTraceback("all")
- }
- type SetupOptions struct {
- BasePath string
- WorkingPath string
- TempPath string
- FixAndroidStack bool
- CommandServerListenPort int32
- CommandServerSecret string
- LogMaxLines int
- Debug bool
- }
- func Setup(options *SetupOptions) error {
- sBasePath = options.BasePath
- sWorkingPath = options.WorkingPath
- sTempPath = options.TempPath
- sUserID = os.Getuid()
- sGroupID = os.Getgid()
- // TODO: remove after fixed
- // https://github.com/golang/go/issues/68760
- sFixAndroidStack = options.FixAndroidStack
- sCommandServerListenPort = uint16(options.CommandServerListenPort)
- sCommandServerSecret = options.CommandServerSecret
- sLogMaxLines = options.LogMaxLines
- sDebug = options.Debug
- os.MkdirAll(sWorkingPath, 0o777)
- os.MkdirAll(sTempPath, 0o777)
- return nil
- }
- func SetLocale(localeId string) {
- locale.Set(localeId)
- }
- func Version() string {
- return C.Version
- }
- func FormatBytes(length int64) string {
- return byteformats.FormatBytes(uint64(length))
- }
- func FormatMemoryBytes(length int64) string {
- return byteformats.FormatMemoryBytes(uint64(length))
- }
- func FormatDuration(duration int64) string {
- return log.FormatDuration(time.Duration(duration) * time.Millisecond)
- }
- func ProxyDisplayType(proxyType string) string {
- return C.ProxyDisplayName(proxyType)
- }
|