Browse Source

在后端输出参考hash,前端比较

master
453530270@qq.com 2 years ago
parent
commit
b98cf13cb0
  1. 23
      fss/core/serverinfo.go
  2. 18
      fss/www/index.html

23
fss/core/serverinfo.go

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

18
fss/www/index.html

@ -244,12 +244,6 @@
// 获取目标服务器的信息
var gescinfo = function (elemnt, scip, upath) {
upath = upath.replace("/\\/g", "\/");
// 获取基础结构信息
// var bfsarr = new Array;
var bfsarr = bsfinfo(upath);
// bfsarr = JSON.parse(bfsarr)
console.log("in gsc",upath, bfsarr)
// 客户端的状态地址
var url = "http://" + scip + ":9099/sc?p=" + upath;
//
@ -260,18 +254,14 @@
var chgflag;
// res.curdir
$.each(res.data.list, function (k, v) {
// console.log("kn",btoa(v.fname))
// console.log("kkkk "+k,bfsarr[btoa(v.fname)])
// 处理后的base64
var bsfn="";
// 判读是否存在 变化
if (!v.dirflag) {
bsfn=btoa(v.fname)
// console.log(bsfn)
// console.log(bsfn,bfsarr.bsfn)
//chgflag = bfsarr[bsfn] == v.hash ? " nochage" : " hschange";
chgflag = bfsarr[bsfn] == v.hash? " nochage" : " hschange";
// hash相同,未修改
chgflag = v.rehash == v.hash? " nochage" : " hschange";
}
//
@ -283,7 +273,7 @@
html += "<span class=\"icon file-icon\"></span>" +
"<a href=\"javascript:void(0);\" hsval='" + v.hash + "' bhasval='" + bfsarr[bsfn] + "'>" + v.fname + "</a></div>";
"<a href=\"javascript:void(0);\" hsval='" + v.hash + "' bhasval='" + v.rehash + "'>" + v.fname + "</a></div>";
}

Loading…
Cancel
Save