diff --git a/fssc/internal/handler/handler.go b/fssc/internal/handler/handler.go index b020f73..0172154 100644 --- a/fssc/internal/handler/handler.go +++ b/fssc/internal/handler/handler.go @@ -65,7 +65,61 @@ func ReceiveStatus(w http.ResponseWriter, r *http.Request) { func UpServer(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: - fmt.Fprint(w, "UpServer") + // 解析url中传递来的参数 + fname := r.URL.Query().Get("f") + // 路径 + fpath := r.URL.Query().Get("p") + // 需要对他们进行base64解码 + bpath := util.Base64dec(fpath) + bfile := util.Base64dec(fname) + // // 发送文件对方 + // // 创建udp 渠道发送数据 + // // 1、获取udp addr + // remoteAddr, err := net.ResolveUDPAddr("udp", serip[0]+":9099") + // if err != nil { + // fmt.Printf("Failed to resolve %s: %v\n", serip[0], err) + // return + // } + // // 2、 监听端口 + // conn, err := net.DialUDP("udp", nil, remoteAddr) + // if err != nil { + // fmt.Printf("Failed to dial %s: %v\n", serip[0], err) + // return + // } + // defer conn.Close() + // // 3、在端口发送数据 + // message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender") + // // 向链接通道发送数据 数据包头 + // conn.Write([]byte(message)) + // // 发送文件 + // go func() { + // err := transfer.SendFiles(ziprl, fmt.Sprintf("http://%s", remoteAddr)) + // if err != nil { + // fmt.Printf("Send file to %s error: %s\n", remoteAddr, err) + // } + // }() + // // 页面上显示 + // fmt.Fprintf(w, "File:%s\\/%s,been sent successfully.", bpath, bfile) + // fmt.Fprint(w, "debug:"+bpath+fname) + // 文件列表模板 + data := struct { + Bpath string + Bfile string + }{ + Bpath: bpath, + Bfile: bfile, + } + // 文件列表模板 + tmpl, err := template.New("up").Parse(web.UpPage) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + err = tmpl.Execute(w, data) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + default: http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) } diff --git a/fssc/internal/util/net.go b/fssc/internal/util/net.go new file mode 100644 index 0000000..2aab6ba --- /dev/null +++ b/fssc/internal/util/net.go @@ -0,0 +1,40 @@ +package util + +import ( + "fmt" + "fssc/config" + + "net" +) + +// udp 模式发送文件 +/* +* sip string 目标服务器 +* furl string 文件的路径 + */ +func UpdSend(sip string, furl string) { + // 1、获取udp addr + remoteAddr, err := net.ResolveUDPAddr("udp", sip+":9099") + if err != nil { + fmt.Printf("Failed to resolve %s: %v\n", sip, err) + return + } + // 2、 监听端口 + conn, err := net.DialUDP("udp", nil, remoteAddr) + if err != nil { + fmt.Printf("Failed to dial %s: %v\n", sip, err) + return + } + defer conn.Close() + // 3、在端口发送数据 + message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender") + // 向链接通道发送数据 数据包头 + conn.Write([]byte(message)) + // 发送文件 + // go func() { + // err := transfer.SendFiles(furl, fmt.Sprintf("http://%s", remoteAddr)) + // if err != nil { + // fmt.Printf("Send file to %s error: %s\n", remoteAddr, err) + // } + // }() +} diff --git a/fssc/web/embed.go b/fssc/web/embed.go index c112e0b..d6facbe 100644 --- a/fssc/web/embed.go +++ b/fssc/web/embed.go @@ -9,3 +9,6 @@ var StaticFs embed.FS //go:embed list.tmpl var ListPage string + +//go:embed up.tmpl +var UpPage string diff --git a/fssc/web/up.tmpl b/fssc/web/up.tmpl new file mode 100644 index 0000000..0e386d4 --- /dev/null +++ b/fssc/web/up.tmpl @@ -0,0 +1,40 @@ + + + + send file to server + + + + + + + +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+
服务器ip
+ + +
+
+ +
+
+ + + + + \ No newline at end of file