|
|
@@ -6,7 +6,9 @@ import (
|
|
|
"encoding/base64"
|
|
|
"fmt"
|
|
|
"io"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/xtls/xray-core/common/buf"
|
|
|
"github.com/xtls/xray-core/common/net"
|
|
|
@@ -32,13 +34,16 @@ func init() {
|
|
|
if strings.ToLower(platform.NewEnvFlag(platform.XUDPLog).GetValue(func() string { return "" })) == "true" {
|
|
|
Show = true
|
|
|
}
|
|
|
- if raw := platform.NewEnvFlag(platform.XUDPBaseKey).GetValue(func() string { return "" }); raw != "" {
|
|
|
- if BaseKey, _ = base64.RawURLEncoding.DecodeString(raw); len(BaseKey) == 32 {
|
|
|
- return
|
|
|
- }
|
|
|
- panic(platform.XUDPBaseKey + ": invalid value: " + raw)
|
|
|
- }
|
|
|
rand.Read(BaseKey)
|
|
|
+ go func() {
|
|
|
+ time.Sleep(100 * time.Millisecond) // this is not nice, but need to give some time for Android to setup ENV
|
|
|
+ if raw := platform.NewEnvFlag(platform.XUDPBaseKey).GetValue(func() string { return "" }); raw != "" {
|
|
|
+ if BaseKey, _ = base64.RawURLEncoding.DecodeString(raw); len(BaseKey) == 32 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ panic(platform.XUDPBaseKey + ": invalid value (BaseKey must be 32 bytes): " + raw + " len " + strconv.Itoa(len(BaseKey)))
|
|
|
+ }
|
|
|
+ }()
|
|
|
}
|
|
|
|
|
|
func GetGlobalID(ctx context.Context) (globalID [8]byte) {
|