mirror of https://github.com/XTLS/Xray-core
				
				
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1000 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1000 B
		
	
	
	
		
			Go
		
	
	
package filesystem
 | 
						|
 | 
						|
import (
 | 
						|
	"io"
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
 | 
						|
	"github.com/xtls/xray-core/common/buf"
 | 
						|
	"github.com/xtls/xray-core/common/platform"
 | 
						|
)
 | 
						|
 | 
						|
type FileReaderFunc func(path string) (io.ReadCloser, error)
 | 
						|
 | 
						|
var NewFileReader FileReaderFunc = func(path string) (io.ReadCloser, error) {
 | 
						|
	return os.Open(path)
 | 
						|
}
 | 
						|
 | 
						|
func ReadFile(path string) ([]byte, error) {
 | 
						|
	reader, err := NewFileReader(path)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	defer reader.Close()
 | 
						|
 | 
						|
	return buf.ReadAllToBytes(reader)
 | 
						|
}
 | 
						|
 | 
						|
func ReadAsset(file string) ([]byte, error) {
 | 
						|
	return ReadFile(platform.GetAssetLocation(file))
 | 
						|
}
 | 
						|
 | 
						|
func ReadCert(file string) ([]byte, error) {
 | 
						|
	if filepath.IsAbs(file) {
 | 
						|
		return ReadFile(file)
 | 
						|
	}
 | 
						|
	return ReadFile(platform.GetCertLocation(file))
 | 
						|
}
 | 
						|
 | 
						|
func CopyFile(dst string, src string) error {
 | 
						|
	bytes, err := ReadFile(src)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	f, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY, 0o644)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	defer f.Close()
 | 
						|
 | 
						|
	_, err = f.Write(bytes)
 | 
						|
	return err
 | 
						|
}
 |