自动更新管控端
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.
 
 
 
 
 
 

101 lines
2.2 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)
// ico
http.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "image/x-icon")
http.ServeFile(w, r, "./favicon.ico")
})
// 加载静态资源
http.Handle("/static/", http.StripPrefix("/static/",
http.FileServer(http.FS(web.StaticFs))))
// 文件更新包
http.HandleFunc("/up", handler.UpServer)
// 传送单文件
http.HandleFunc("/sup", handler.Supfile)
// udp 传送文件
http.HandleFunc("/sendZip", handler.SendZip)
// 监视目标的fs json
http.HandleFunc("/nf", handler.NfTest)
// web console
http.HandleFunc("/console", handler.WebConsole)
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())
}
}