mirror of https://github.com/fatedier/frp
				
				
				
			Let's get rid of ugly statik (#2255)
* Get rid of ugly statik go1.16 introduced the embed package, it's the more graceful solution for embedding file into binary. https://golang.org/pkg/embed/ * remove statik totally * split go and static files in assetspull/2558/head
							parent
							
								
									a62a9431b1
								
							
						
					
					
						commit
						2f74f54f18
					
				
							
								
								
									
										3
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										3
									
								
								Makefile
								
								
								
								
							|  | @ -12,9 +12,6 @@ file: | |||
| 	rm -rf ./assets/frpc/static/* | ||||
| 	cp -rf ./web/frps/dist/* ./assets/frps/static | ||||
| 	cp -rf ./web/frpc/dist/* ./assets/frpc/static | ||||
| 	rm -rf ./assets/frps/statik | ||||
| 	rm -rf ./assets/frpc/statik | ||||
| 	go generate ./assets/... | ||||
| 
 | ||||
| fmt: | ||||
| 	go fmt ./... | ||||
|  |  | |||
|  | @ -14,22 +14,15 @@ | |||
| 
 | ||||
| package assets | ||||
| 
 | ||||
| //go:generate statik -src=./frps/static -dest=./frps
 | ||||
| //go:generate statik -src=./frpc/static -dest=./frpc
 | ||||
| //go:generate go fmt ./frps/statik/statik.go
 | ||||
| //go:generate go fmt ./frpc/statik/statik.go
 | ||||
| 
 | ||||
| import ( | ||||
| 	"io/ioutil" | ||||
| 	"io/fs" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 
 | ||||
| 	"github.com/rakyll/statik/fs" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	// store static files in memory by statik
 | ||||
| 	// read-only filesystem created by "embed" for embedded files
 | ||||
| 	content fs.FS | ||||
| 
 | ||||
| 	FileSystem http.FileSystem | ||||
| 
 | ||||
| 	// if prefix is not empty, we get file content from disk
 | ||||
|  | @ -38,40 +31,18 @@ var ( | |||
| 
 | ||||
| // if path is empty, load assets in memory
 | ||||
| // or set FileSystem using disk files
 | ||||
| func Load(path string) (err error) { | ||||
| func Load(path string) { | ||||
| 	prefixPath = path | ||||
| 	if prefixPath != "" { | ||||
| 		FileSystem = http.Dir(prefixPath) | ||||
| 		return nil | ||||
| 	} else { | ||||
| 		FileSystem, err = fs.New() | ||||
| 		FileSystem = http.FS(content) | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func ReadFile(file string) (content string, err error) { | ||||
| 	if prefixPath == "" { | ||||
| 		file, err := FileSystem.Open(path.Join("/", file)) | ||||
| 		if err != nil { | ||||
| 			return content, err | ||||
| 		} | ||||
| 		defer file.Close() | ||||
| 		buf, err := ioutil.ReadAll(file) | ||||
| 		if err != nil { | ||||
| 			return content, err | ||||
| 		} | ||||
| 		content = string(buf) | ||||
| 	} else { | ||||
| 		file, err := os.Open(path.Join(prefixPath, file)) | ||||
| 		if err != nil { | ||||
| 			return content, err | ||||
| 		} | ||||
| 		defer file.Close() | ||||
| 		buf, err := ioutil.ReadAll(file) | ||||
| 		if err != nil { | ||||
| 			return content, err | ||||
| 		} | ||||
| 		content = string(buf) | ||||
| func Register(fileSystem fs.FS) { | ||||
| 	subFs, err := fs.Sub(fileSystem, "static") | ||||
| 	if err == nil { | ||||
| 		content = subFs | ||||
| 	} | ||||
| 	return content, err | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,14 @@ | |||
| package frpc | ||||
| 
 | ||||
| import ( | ||||
| 	"embed" | ||||
| 
 | ||||
| 	"github.com/fatedier/frp/assets" | ||||
| ) | ||||
| 
 | ||||
| //go:embed static/*
 | ||||
| var content embed.FS | ||||
| 
 | ||||
| func init() { | ||||
| 	assets.Register(content) | ||||
| } | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -0,0 +1,14 @@ | |||
| package frpc | ||||
| 
 | ||||
| import ( | ||||
| 	"embed" | ||||
| 
 | ||||
| 	"github.com/fatedier/frp/assets" | ||||
| ) | ||||
| 
 | ||||
| //go:embed static/*
 | ||||
| var content embed.FS | ||||
| 
 | ||||
| func init() { | ||||
| 	assets.Register(content) | ||||
| } | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -124,13 +124,10 @@ func (svr *Service) Run() error { | |||
| 
 | ||||
| 	if svr.cfg.AdminPort != 0 { | ||||
| 		// Init admin server assets
 | ||||
| 		err := assets.Load(svr.cfg.AssetsDir) | ||||
| 		if err != nil { | ||||
| 			return fmt.Errorf("Load assets error: %v", err) | ||||
| 		} | ||||
| 		assets.Load(svr.cfg.AssetsDir) | ||||
| 
 | ||||
| 		address := net.JoinHostPort(svr.cfg.AdminAddr, strconv.Itoa(svr.cfg.AdminPort)) | ||||
| 		err = svr.RunAdminServer(address) | ||||
| 		err := svr.RunAdminServer(address) | ||||
| 		if err != nil { | ||||
| 			log.Warn("run admin server error: %v", err) | ||||
| 		} | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"math/rand" | ||||
| 	"time" | ||||
| 
 | ||||
| 	_ "github.com/fatedier/frp/assets/frpc/statik" | ||||
| 	_ "github.com/fatedier/frp/assets/frpc" | ||||
| 	"github.com/fatedier/frp/cmd/frpc/sub" | ||||
| 
 | ||||
| 	"github.com/fatedier/golib/crypto" | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/fatedier/golib/crypto" | ||||
| 
 | ||||
| 	_ "github.com/fatedier/frp/assets/frps/statik" | ||||
| 	_ "github.com/fatedier/frp/assets/frps" | ||||
| 	_ "github.com/fatedier/frp/pkg/metrics" | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										1
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										1
									
								
								go.mod
								
								
								
								
							|  | @ -21,7 +21,6 @@ require ( | |||
| 	github.com/pires/go-proxyproto v0.5.0 | ||||
| 	github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 // indirect | ||||
| 	github.com/prometheus/client_golang v1.11.0 | ||||
| 	github.com/rakyll/statik v0.1.1 | ||||
| 	github.com/rodaine/table v1.0.1 | ||||
| 	github.com/spf13/cobra v1.1.3 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										2
									
								
								go.sum
								
								
								
								
							|  | @ -332,8 +332,6 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O | |||
| github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= | ||||
| github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= | ||||
| github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= | ||||
| github.com/rakyll/statik v0.1.1 h1:fCLHsIMajHqD5RKigbFXpvX3dN7c80Pm12+NCrI3kvg= | ||||
| github.com/rakyll/statik v0.1.1/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs= | ||||
| github.com/rodaine/table v1.0.1 h1:U/VwCnUxlVYxw8+NJiLIuCxA/xa6jL38MY3FYysVWWQ= | ||||
| github.com/rodaine/table v1.0.1/go.mod h1:UVEtfBsflpeEcD56nF4F5AocNFta0ZuolpSVdPtlmP4= | ||||
| github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= | ||||
|  |  | |||
|  | @ -280,11 +280,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { | |||
| 	// Create dashboard web server.
 | ||||
| 	if cfg.DashboardPort > 0 { | ||||
| 		// Init dashboard assets
 | ||||
| 		err = assets.Load(cfg.AssetsDir) | ||||
| 		if err != nil { | ||||
| 			err = fmt.Errorf("Load assets error: %v", err) | ||||
| 			return | ||||
| 		} | ||||
| 		assets.Load(cfg.AssetsDir) | ||||
| 
 | ||||
| 		address := net.JoinHostPort(cfg.DashboardAddr, strconv.Itoa(cfg.DashboardPort)) | ||||
| 		err = svr.RunDashboardServer(address) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 bobo liu
						bobo liu