|
|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
"encoding/json" |
|
|
|
"fmt" |
|
|
|
"fss/config" |
|
|
|
"fss/db" |
|
|
|
"fss/util" |
|
|
|
"net/http" |
|
|
|
"os" |
|
|
|
@ -24,8 +25,9 @@ type FileJson struct { |
|
|
|
Fname string `json:"fname"` |
|
|
|
Dirflag bool `json:"dirflag"` |
|
|
|
Isbackup int `json:"isbackup"` |
|
|
|
Fhash string `json:"hash"` // hash
|
|
|
|
Fsize string `json:"size"` //文件大小, 输出带单位的大小
|
|
|
|
Fhash string `json:"hash"` // hash
|
|
|
|
Fsize string `json:"size"` //文件大小, 输出带单位的大小
|
|
|
|
Frehash string `json:"rehash"` // 参考hash
|
|
|
|
} |
|
|
|
|
|
|
|
type FilesListJson struct { |
|
|
|
@ -54,7 +56,11 @@ func SerInfo(w http.ResponseWriter, r *http.Request) { |
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 链接数据库
|
|
|
|
db.Init() |
|
|
|
// 获取请求的信息
|
|
|
|
rcflists := db.Fquery(util.Bas64end(dsrpath)) |
|
|
|
//
|
|
|
|
// list json
|
|
|
|
var flist FilesListJson |
|
|
|
//针对目录的情况才输出
|
|
|
|
@ -70,6 +76,7 @@ func SerInfo(w http.ResponseWriter, r *http.Request) { |
|
|
|
for _, v := range files { |
|
|
|
// fmt.Printf("rang v:%v\n", v)
|
|
|
|
isbak := 0 |
|
|
|
rchash := "" //参考的hash
|
|
|
|
// 如果有 backup
|
|
|
|
if strings.Contains(v.Name(), "backup") { |
|
|
|
isbak = 1 |
|
|
|
@ -77,17 +84,23 @@ func SerInfo(w http.ResponseWriter, r *http.Request) { |
|
|
|
// 如果是文件的话,就计算hash和大小
|
|
|
|
if v.IsDir() { |
|
|
|
//While entry is A Directory
|
|
|
|
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak, Fhash: "", Fsize: ""}) |
|
|
|
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak, Fhash: "", Fsize: "", Frehash: ""}) |
|
|
|
} else { |
|
|
|
// 计算文件的hash
|
|
|
|
funame := filepath.Join(realFilePath, v.Name()) |
|
|
|
fhash := util.CalacHash(funame) |
|
|
|
//
|
|
|
|
for _, av := range rcflists { |
|
|
|
if av.Fname == v.Name() { |
|
|
|
rchash = av.Fhash |
|
|
|
} |
|
|
|
} |
|
|
|
// 文件大小
|
|
|
|
// 获取文件大小(以字节为单位)
|
|
|
|
sizeInBytes := fileInfo.Size() |
|
|
|
sizeStr := fmt.Sprintf("%.2f KB", float64(sizeInBytes)/1024) |
|
|
|
// output
|
|
|
|
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak, Fhash: fhash, Fsize: sizeStr}) |
|
|
|
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak, Fhash: fhash, Fsize: sizeStr, Frehash: rchash}) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|