Browse Source

use environment based operation in protofilter

Shelikhoo 4 years ago
parent
commit
4c4d6c6944
1 changed files with 16 additions and 3 deletions
  1. 16 3
      common/protofilter/filter.go

+ 16 - 3
common/protofilter/filter.go

@@ -2,10 +2,12 @@ package protofilter
 
 
 import (
 import (
 	"context"
 	"context"
-	"github.com/v2fly/v2ray-core/v4/common/platform/filesystem"
+	"github.com/v2fly/v2ray-core/v4/common/environment/envctx"
+	"github.com/v2fly/v2ray-core/v4/common/environment/filesystemcap"
 	"github.com/v2fly/v2ray-core/v4/common/protoext"
 	"github.com/v2fly/v2ray-core/v4/common/protoext"
 	"google.golang.org/protobuf/proto"
 	"google.golang.org/protobuf/proto"
 	"google.golang.org/protobuf/reflect/protoreflect"
 	"google.golang.org/protobuf/reflect/protoreflect"
+	"io"
 )
 )
 
 
 //go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen
 //go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen
@@ -55,13 +57,24 @@ func filterMessage(ctx context.Context, message protoreflect.Message) error {
 		return true
 		return true
 	})
 	})
 
 
+	if err != nil {
+		return err
+	}
+
+	fsenvironment := envctx.EnvironmentFromContext(ctx)
+	fsifce := fsenvironment.(filesystemcap.FileSystemCapabilitySet)
 	for _, v := range fileReadingQueue {
 	for _, v := range fileReadingQueue {
-		file, err := filesystem.ReadFile(v.filename)
+		file, err := fsifce.OpenFileForRead()(v.filename)
+		if err != nil {
+			return newError("unable to open file").Base(err)
+		}
+		fileContent, err := io.ReadAll(file)
 		if err != nil {
 		if err != nil {
 			return newError("unable to read file").Base(err)
 			return newError("unable to read file").Base(err)
 		}
 		}
+		file.Close()
 		field := message.Descriptor().Fields().ByTextName(v.field)
 		field := message.Descriptor().Fields().ByTextName(v.field)
-		message.Set(field, protoreflect.ValueOf(file))
+		message.Set(field, protoreflect.ValueOf(fileContent))
 	}
 	}
 	return nil
 	return nil
 }
 }