From eaf401eda93ea97f95136e480f465dba8b652275 Mon Sep 17 00:00:00 2001 From: Nanyu <42733664+cross-hello@users.noreply.github.com> Date: Tue, 3 Jan 2023 23:52:11 +0800 Subject: [PATCH] add file soft link path resolve support (#1482) * add file soft link path resolve * add configuration file soft link path resolve support --- common/platform/filesystem/file.go | 8 ++++++-- infra/conf/serial/builder.go | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/common/platform/filesystem/file.go b/common/platform/filesystem/file.go index e10bfc11..e8ee46b0 100644 --- a/common/platform/filesystem/file.go +++ b/common/platform/filesystem/file.go @@ -3,7 +3,7 @@ package filesystem import ( "io" "os" - + "path/filepath" "github.com/xtls/xray-core/common/buf" "github.com/xtls/xray-core/common/platform" ) @@ -11,7 +11,11 @@ import ( type FileReaderFunc func(path string) (io.ReadCloser, error) var NewFileReader FileReaderFunc = func(path string) (io.ReadCloser, error) { - return os.Open(path) + resolved_path,err:=filepath.EvalSymlinks(path) + if err!= nil{ + return nil,err + } + return os.Open(resolved_path) } func ReadFile(path string) ([]byte, error) { diff --git a/infra/conf/serial/builder.go b/infra/conf/serial/builder.go index 443dbdb0..fc9a0c3c 100644 --- a/infra/conf/serial/builder.go +++ b/infra/conf/serial/builder.go @@ -2,6 +2,7 @@ package serial import ( "io" + "path/filepath" "github.com/xtls/xray-core/core" "github.com/xtls/xray-core/infra/conf" @@ -10,7 +11,11 @@ import ( func BuildConfig(files []string, formats []string) (*core.Config, error) { cf := &conf.Config{} - for i, file := range files { + for i, file_ := range files { + file, err := filepath.EvalSymlinks(file_) + if err != nil { + return nil, err + } newError("Reading config: ", file).AtInfo().WriteToLog() r, err := confloader.LoadConfig(file) if err != nil {