diff --git a/fssc/fssc b/fssc/fssc index f6d79c5..ac3ce52 100644 Binary files a/fssc/fssc and b/fssc/fssc differ diff --git a/fssc/internal/handler/handler.go b/fssc/internal/handler/handler.go index 0172154..63ad0df 100644 --- a/fssc/internal/handler/handler.go +++ b/fssc/internal/handler/handler.go @@ -69,45 +69,14 @@ func UpServer(w http.ResponseWriter, r *http.Request) { 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, + Bpath: fpath, + Bfile: fname, } // 文件列表模板 tmpl, err := template.New("up").Parse(web.UpPage) @@ -126,6 +95,62 @@ func UpServer(w http.ResponseWriter, r *http.Request) { } +// 处理单文件同步 +func Supfile(w http.ResponseWriter, r *http.Request) { + r.ParseForm() + // loop + // for k, v := range r.Form { + // fmt.Println("key:%s,value:%s", k, v) + // } + + // 服务器ip地址 + serip := r.Form["sip"] + if serip[0] == "" { + http.Error(w, "remote server ip is blank!", http.StatusInternalServerError) + return + } + // 文件名 + sbfile := r.Form["bfile"] + // 文件路径 + sbpath := r.Form["bpath"] + // 需要对他们进行base64解码 + bpath := util.Base64dec(sbpath[0]) + bfile := util.Base64dec(sbfile[0]) + // 替换 反斜杠 + bbpath := strings.Replace(bpath, "/", "\\", -1) + // 拼装, 文件的实际地址 + ziprl := filepath.Join(bbpath, "/", bfile) + + // 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.", sbfile, sbpath) + fmt.Fprintf(w, "deubg.....") + +} + // 文件服务 func FileServerHandler(w http.ResponseWriter, r *http.Request) { currentPath := config.G.FilePath diff --git a/fssc/main.go b/fssc/main.go index efb34f8..1e386d0 100644 --- a/fssc/main.go +++ b/fssc/main.go @@ -40,6 +40,8 @@ func sendClient() error { http.HandleFunc("/download/", handler.FileServerHandler) // 文件更新包 http.HandleFunc("/up", handler.UpServer) + // 传送单文件 + http.HandleFunc("/sup", handler.Supfile) // udp 传送文件 http.HandleFunc("/sendZip", handler.SendZip) diff --git a/fssc/web/up.tmpl b/fssc/web/up.tmpl index 0e386d4..42b1b0f 100644 --- a/fssc/web/up.tmpl +++ b/fssc/web/up.tmpl @@ -13,21 +13,20 @@
-
+
- +
- +
服务器ip
- - +