40行代码实现ftp服务器

70 阅读1分钟

客户临时要求传一个大压缩包给我们,说让开一个ftp服务,同事有的说把windows2012的ftp服务打开就行了,有点说在网上找一个ftp服务的软件就行了,就在他们争论不休之时,我悄悄的祭出golang大法: main.go


import (
	"flag"
	"log"

	filedriver "github.com/goftp/file-driver"
	"github.com/goftp/server"
)

func main() {
	var (
		root = flag.String("root", "d:/tools", "Root directory to serve")
		user = flag.String("user", "admin", "Username for login")
		pass = flag.String("pass", "123456", "Password for login")
		port = flag.Int("port", 21, "Port")
		host = flag.String("host", "", "Host")
	)
	flag.Parse()
	if *root == "" {
		log.Fatalf("Please set a root to serve with -root")
	}
	factory := &filedriver.FileDriverFactory{
		RootPath: *root,
		Perm:     server.NewSimplePerm("user", "group"),
	}
	opts := &server.ServerOpts{
		Factory:  factory,
		Port:     *port,
		Hostname: *host,
		Auth:     &server.SimpleAuth{Name: *user, Password: *pass},
	}
	log.Printf("Starting ftp server on %v:%v", opts.Hostname, opts.Port)
	log.Printf("Username %v, Password %v", *user, *pass)
	server := server.NewServer(opts)
	err := server.ListenAndServe()
	if err != nil {
		log.Fatal("Error starting server:", err)
	}
}

编译:go build -o ftpserver.exe

在服务器上运行:ftpserver.exe -root d:/tools -user admin -pass admin

让网络的同事加上鉴权配好映射,问题解决!

众同事皆默然......

果然golang大法好!