|
|
|
@ -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 |
|
|
|
|