文件同步
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.

64 rivejä
1.5 KiB

  1. package main
  2. import (
  3. "fmt"
  4. _ "fmt"
  5. "fts/config"
  6. "fts/websocket"
  7. _ "github.com/ipfs/go-ipfs-api"
  8. "io"
  9. "io/ioutil"
  10. "log"
  11. "net/http"
  12. "os"
  13. _ "os"
  14. _ "strings"
  15. )
  16. func main() {
  17. config.InitConfig()
  18. //日志设置
  19. logpath :=config.LocalWorkSpaceDir+"\\"+"fts.log"
  20. logFile, err := os.OpenFile(logpath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
  21. if err != nil {
  22. log.Printf("open log file failed, err:", err)
  23. return
  24. }
  25. multiWriter := io.MultiWriter(os.Stdout,logFile)
  26. log.SetOutput(multiWriter)
  27. log.SetPrefix("[fts] ")
  28. log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
  29. //handle.InitLocalWorkSpace(nil,"324523676458291200","11.4")
  30. //http://localhost:7777/ws
  31. http.HandleFunc("/upload", websocket.UploadHandler)
  32. http.HandleFunc("/subscriptionFileChange", websocket.SubscriptionFileChangeHandler)
  33. http.HandleFunc("/download", websocket.DownloadHandler)
  34. http.HandleFunc("/init", websocket.InitLocalWorkSpaceHandler)
  35. //服务端启动
  36. log.Println("服务启动成功,监听端口7777,等待连接。")
  37. http.ListenAndServe("0.0.0.0:7777", nil)
  38. }
  39. // 递归扫描目录
  40. func ScanDirs(dirName string) []string {
  41. files, err := ioutil.ReadDir(dirName)
  42. if err != nil {
  43. log.Println(err)
  44. }
  45. var fileList []string
  46. for _, file := range files {
  47. fmt.Println(file.Name()+" "+file.ModTime().String())
  48. fileList = append(fileList, dirName + string(os.PathSeparator) + file.Name())
  49. if file.IsDir() {
  50. fileList = append(fileList, ScanDirs(dirName + string(os.PathSeparator) + file.Name())...)
  51. }
  52. }
  53. return fileList
  54. }