|
|
@@ -334,7 +334,7 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
defer tfile.Close() |
|
|
|
|
|
|
|
serverSh := shell.NewShell(config.ServerIpfsUrl) |
|
|
|
serverSh.SetTimeout(time.Duration(30)*time.Second) |
|
|
|
//serverSh.SetTimeout(time.Duration(30)*time.Second) |
|
|
|
log.Println("检测引导节点存活情况"+config.ServerIpfsUrl) |
|
|
|
//检测引导节点是否连接成功 |
|
|
|
isUp := serverSh.IsUp() |
|
|
@@ -427,6 +427,10 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
log.Println("cmd.Run() failed with %s\n", err) |
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
return err |
|
|
|
} |
|
|
|
if errStdout != nil || errStderr != nil { |
|
|
|
log.Println("failed to capture stdout or stderr\n") |
|
|
@@ -444,7 +448,7 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
prog.Process=100.00 |
|
|
|
|
|
|
|
sh := shell.NewShell(config.GobalIpfsUrl) |
|
|
|
sh.SetTimeout(time.Duration(30)*time.Second) |
|
|
|
//sh.SetTimeout(time.Duration(30)*time.Second) |
|
|
|
objectStat,err :=sh.ObjectStat(prog.Hash) |
|
|
|
if err != nil { |
|
|
|
log.Println(err) |
|
|
@@ -453,10 +457,11 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
prog.Size=strconv.Itoa(objectStat.CumulativeSize) |
|
|
|
|
|
|
|
projson,err :=json.Marshal(prog) |
|
|
|
serverSh.SetTimeout(time.Duration(30)*time.Second) |
|
|
|
err = serverSh.Pin(prog.Hash) |
|
|
|
|
|
|
|
// |
|
|
|
cmd = exec.Command(ipfsPath,"dht","provide",prog.Hash) |
|
|
|
err = cmd.Run() |
|
|
|
if err != nil { |
|
|
|
log.Println("引导节点备份失败") |
|
|
|
log.Println(err) |
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil { |
|
|
|
return err |
|
|
@@ -464,17 +469,21 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, projson); err != nil { |
|
|
|
//serverSh.SetTimeout(time.Duration(600)*time.Second) |
|
|
|
|
|
|
|
err = serverSh.Pin(prog.Hash) |
|
|
|
if err != nil { |
|
|
|
log.Println("引导节点备份失败") |
|
|
|
log.Println(err) |
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
log.Println("引导节点文件备份成功") |
|
|
|
|
|
|
|
|
|
|
|
//本地文件夹拷贝 |
|
|
|
err = sh.Get(prog.Hash,fmt.Sprint((absoluteDir+"\\"+fileName))) |
|
|
|
|
|
|
|
|
|
|
|
if err != nil { |
|
|
|
log.Println(err) |
|
|
|
return err |
|
|
@@ -488,6 +497,9 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, projson); err != nil { |
|
|
|
log.Println(err) |
|
|
|
} |
|
|
|
log.Println("上传成功") |
|
|
|
|
|
|
|
return nil |
|
|
@@ -620,7 +632,7 @@ func SubscriptionFileChange(conn *websocket.Conn, projectName string) error{ |
|
|
|
//定期校验缓存的本地文件状态 |
|
|
|
go func() { |
|
|
|
for true { |
|
|
|
time.Sleep(time.Duration(1)*time.Minute) |
|
|
|
time.Sleep(time.Duration(5)*time.Minute) |
|
|
|
dataMap,err := etcdclient.QueryWithPrefix(keyPrefix) |
|
|
|
if err != nil { |
|
|
|
log.Println(err) |
|
|
@@ -671,9 +683,15 @@ func SubscriptionFileChange(conn *websocket.Conn, projectName string) error{ |
|
|
|
// 不存在则初始化进etcd |
|
|
|
|
|
|
|
err =filepath.Walk(getLocalFileListDir,walkfunc) |
|
|
|
//路径错误 |
|
|
|
if err != nil { |
|
|
|
log.Println(err) |
|
|
|
//time.Sleep(time.Duration(1)*time.Minute) |
|
|
|
if err := conn.WriteMessage(websocket.TextMessage, []byte("{}")); err != nil { |
|
|
|
log.Println(err) |
|
|
|
return err |
|
|
|
} |
|
|
|
time.Sleep(time.Duration(1)*time.Minute) |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
mapByte,err:=json.Marshal(gobalFileMap) |
|
|
@@ -812,6 +830,10 @@ func CheckForUpdates(forceUpdate string) error{ |
|
|
|
|
|
|
|
func walkfunc(path string, info os.FileInfo, err error) error { |
|
|
|
|
|
|
|
if info == nil{ |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
if info.IsDir()==false{ |
|
|
|
|
|
|
|
sh := shell.NewShell(config.GobalIpfsUrl) |
|
|
|