Browse Source

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

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

19
fss/core/serverinfo.go

@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"fss/config" "fss/config"
"fss/db"
"fss/util" "fss/util"
"net/http" "net/http"
"os" "os"
@ -26,6 +27,7 @@ type FileJson struct {
Isbackup int `json:"isbackup"` Isbackup int `json:"isbackup"`
Fhash string `json:"hash"` // hash Fhash string `json:"hash"` // hash
Fsize string `json:"size"` //文件大小, 输出带单位的大小 Fsize string `json:"size"` //文件大小, 输出带单位的大小
Frehash string `json:"rehash"` // 参考hash
} }
type FilesListJson struct { type FilesListJson struct {
@ -54,7 +56,11 @@ func SerInfo(w http.ResponseWriter, r *http.Request) {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
// 链接数据库
db.Init()
// 获取请求的信息
rcflists := db.Fquery(util.Bas64end(dsrpath))
//
// list json // list json
var flist FilesListJson var flist FilesListJson
//针对目录的情况才输出 //针对目录的情况才输出
@ -70,6 +76,7 @@ func SerInfo(w http.ResponseWriter, r *http.Request) {
for _, v := range files { for _, v := range files {
// fmt.Printf("rang v:%v\n", v) // fmt.Printf("rang v:%v\n", v)
isbak := 0 isbak := 0
rchash := "" //参考的hash
// 如果有 backup // 如果有 backup
if strings.Contains(v.Name(), "backup") { if strings.Contains(v.Name(), "backup") {
isbak = 1 isbak = 1
@ -77,17 +84,23 @@ func SerInfo(w http.ResponseWriter, r *http.Request) {
// 如果是文件的话,就计算hash和大小 // 如果是文件的话,就计算hash和大小
if v.IsDir() { if v.IsDir() {
//While entry is A Directory //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 { } else {
// 计算文件的hash // 计算文件的hash
funame := filepath.Join(realFilePath, v.Name()) funame := filepath.Join(realFilePath, v.Name())
fhash := util.CalacHash(funame) fhash := util.CalacHash(funame)
//
for _, av := range rcflists {
if av.Fname == v.Name() {
rchash = av.Fhash
}
}
// 文件大小 // 文件大小
// 获取文件大小(以字节为单位) // 获取文件大小(以字节为单位)
sizeInBytes := fileInfo.Size() sizeInBytes := fileInfo.Size()
sizeStr := fmt.Sprintf("%.2f KB", float64(sizeInBytes)/1024) sizeStr := fmt.Sprintf("%.2f KB", float64(sizeInBytes)/1024)
// output // 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) { var gescinfo = function (elemnt, scip, upath) {
upath = upath.replace("/\\/g", "\/"); 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; var url = "http://" + scip + ":9099/sc?p=" + upath;
// //
@ -260,18 +254,14 @@
var chgflag; var chgflag;
// res.curdir // res.curdir
$.each(res.data.list, function (k, v) { $.each(res.data.list, function (k, v) {
// console.log("kn",btoa(v.fname))
// console.log("kkkk "+k,bfsarr[btoa(v.fname)])
// 处理后的base64 // 处理后的base64
var bsfn=""; var bsfn="";
// 判读是否存在 变化 // 判读是否存在 变化
if (!v.dirflag) { if (!v.dirflag) {
bsfn=btoa(v.fname) // hash相同,未修改
// console.log(bsfn) chgflag = v.rehash == v.hash? " nochage" : " hschange";
// console.log(bsfn,bfsarr.bsfn)
//chgflag = bfsarr[bsfn] == v.hash ? " nochage" : " hschange";
chgflag = bfsarr[bsfn] == v.hash? " nochage" : " hschange";
} }
// //
@ -283,7 +273,7 @@
html += "<span class=\"icon file-icon\"></span>" + 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