自动更新管控端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

92 lines
2.0 KiB

package main
import (
"fmt"
"fssc/config"
"net/http"
"os"
"path/filepath"
"fssc/internal/discovery"
"fssc/internal/handler"
"fssc/web"
"github.com/urfave/cli/v2"
)
var (
port string
)
// 初始化配置
func initConfig(c *cli.Context) error {
return config.G.SetConf(port)
}
// 发送端
func sendClient() error {
// 发送者角色
go discovery.Send(discovery.Sender)
//udp 监听指定路径下的文件
go discovery.Listen(discovery.Receiver, config.G.FilePath)
url := fmt.Sprintf("http://%s:%s", config.G.LocalIP, config.G.Port)
fmt.Printf("Server address: %s\n", url)
http.HandleFunc("/", handler.SendHandler)
// 加载静态资源
http.Handle("/static/", http.StripPrefix("/static/",
http.FileServer(http.FS(web.StaticFs))))
http.HandleFunc("/download/", handler.FileServerHandler)
// 下载压缩包
http.HandleFunc("/dlzip", handler.Downzip)
// udp 传送文件
http.HandleFunc("/sendZip", handler.SendZip)
// 已经打包的zip存放位置
http.HandleFunc("/files", handler.Dfiles)
fmt.Println("send file to server...")
return http.ListenAndServe(config.G.WildcardAddress, nil)
}
// 入口函数
func main() {
app := &cli.App{
Name: "fssc",
Usage: "file transfer tool",
UsageText: "fssc [global options] [filename|foldername]",
Description: "fssc is a simple command-line tool send file/folder",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "port",
Value: "9099",
Usage: "server port",
Aliases: []string{"p"},
Destination: &port,
},
&cli.BoolFlag{
Name: "version",
Aliases: []string{"v"},
Usage: "print the version",
},
},
Action: func(c *cli.Context) error {
if c.NArg() > 0 {
currentPath := filepath.ToSlash(c.Args().Get(0))
config.G.FilePath = currentPath
return sendClient()
} else {
fmt.Println("no input args")
return nil
}
//return receiveClient()
},
Before: initConfig,
}
err := app.Run(os.Args)
if err != nil {
fmt.Println(err.Error())
}
}