自动更新管控端
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.
 
 
 
 
 
 

265 lines
7.8 KiB

<!DOCTYPE html>
<html>
<head>
<title>UPSYS console</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/static/css/bootstrap.css">
<link rel="icon" type="image/x-icon" href="/favicon.ico?v=2">
<script type="text/javascript" src="/static/static/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/static/js/bootstrap.min.js"></script>
<style>
.list-group>.list-group-item {
padding: 20px;
}
.optzone {
height: 60px;
}
.stabox{
height: 260px;
overflow:scroll;
}
.flist{
height:360px;
overflow:auto;
}
.icon {
display: inline-block;
width: 24px;
height: 24px;
}
.icon:hover{
cursor: pointer;
background-color: #4598F0;
}
.folder-icon {
mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyAgcHJlc2VydmVBc3BlY3RSYXRpbz0neE1pZFlNaWQgbWVldCcgIHZpZXdCb3g9IjAgMCAyNCAyNCIgPjxwYXRoIGQ9Ik0xMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2LjkgMjEuMSA2IDIwIDZIMTJMMTAgNFoiIC8+PC9zdmc+");
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyAgcHJlc2VydmVBc3BlY3RSYXRpbz0neE1pZFlNaWQgbWVldCcgIHZpZXdCb3g9IjAgMCAyNCAyNCIgPjxwYXRoIGQ9Ik0xMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2LjkgMjEuMSA2IDIwIDZIMTJMMTAgNFoiIC8+PC9zdmc+");
background-color: #c1972e;
}
.file-icon {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyAgcHJlc2VydmVBc3BlY3RSYXRpbz0neE1pZFlNaWQgbWVldCcgIHZpZXdCb3g9IjAgMCAyNCAyNCIgPjxwYXRoIGQ9Ik0xNCAySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWOEwxNCAyTTEzIDlWMy41TDE4LjUgOUgxM1oiIC8+IDwvc3ZnPg==");
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div class="jumbotron">
<div class="container">
<p>文件更新控制台</p>
</div>
</div>
<!-- 输入服务器ip -->
<div class="container">
<div class="col-md-12 no-padding">
<div class="form-group col-md-10">
<div class="input-group">
<div class="input-group-addon">服务器ip</div>
<input type="text" class="form-control" name="scip" id="scip" placeholder="eg:192.168.66.99">
</div>
</div>
<div class="form-group col-md-2">
<button type="button" id="entsip" class="btn btn-primary">Transfer</button>
</div>
</div>
</div>
<!-- 罗列文件的列表信息 -->
<div class="container">
<!-- 源服务器 -->
<div class="col-md-6">
<div class="panel panel-default">
<!-- Default panel contents -->
<div class="panel-heading">源站({{.Loip}})</div>
<div class="panel-body">
<p>监听目录:{{.Rundir}}</p>
<p>相对目录: {{.DownloadPath}}</p>
<p>
<a href="./console" class="btn btn-primary btn-sm">home</a>
<a href="?p={{b64en $.Relpath}}&f=&file=1" class="btn btn-success btn-sm">返回上层</a>
<a href="javascript:void(0);" class="btn btn-success btn-sm" id="slall">全选</a>
<a href="javascript:void(0);" class="btn btn-info btn-sm" id="sybtn">同步</a>
</p>
</div>
<form action="/sendZip" method="post" class="form-inline">
<!-- List group -->
<ul class="list-group">
{{ range .Files }}
<li class="list-group-item optzone">
<div class="col-md-8">
<input class="mfile" type="checkbox" name="zipfiles" value="{{.Name}}">
{{ if .IsDir }}
<span class="icon folder-icon"></span>
<a href="?p={{b64en $.UrlPath}}&f={{b64en .Name }}&file=0">{{ .Name }}</a>
{{ else }}
<span class="icon file-icon"></span>
<a href="?p={{b64en $.UrlPath}}&f={{b64en .Name}}&file=1">{{ .Name }}</a>
{{ end }}
</div>
<div class="col-md-4">
{{ if .IsDir }} <!-- 空白 --> {{else}}
<a href="/up?p={{b64en $.UrlPath}}&f={{b64en .Name}}&s={{b64en $.Loip}}" title="更新{{ .Name }}" class="btn btn-primary btn-sm">同步</a>
{{end}}
</div>
</li>
{{ end }}
</ul>
<input type="hidden" name="curpath" value="{{$.UrlPath}}"/>
<input type="hidden" name="serverip" id="hscip" />
</form>
</div>
</div>
<!-- 目标服务器 -->
<div class="col-md-6">
<div class="panel panel-default">
<!-- Default panel contents -->
<div class="panel-heading" id="mbip">目标站</div>
<div class="panel-body">
<p>监听目录:<span id="sc01"></span></p>
<p>相对目录: <span id="sc02"></span> </p>
</div>
<!-- List group -->
<ul class="list-group" id="tgsc">
</ul>
</div>
</div>
</div>
<!-- 状态信息 -->
<div class="container">
<div class="col-md-12">
<div class="panel">
<div class="panel-heading">运行状态</div>
<div class="panel-body" >
<ul class="list-group flist" id="rstatus">
<li class="list-group-item">控制台ip:{{.Loip}},监视目录:{{.Rundir}}</li>
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var chkall = true;
var chknum=0;
var scip=""; //目标服务器ip
var urlpath="{{$.UrlPath}}";// 当前的操作目录
$(function(){
// read sessionStorage
var oscip = sessionStorage.getItem("scip")
if(oscip!=""){
$("#scip").val(oscip);
scip = oscip;
$("input[name='serverip']").val(oscip);
}
// click function
$("#entsip").on("click",function(){
tgfs()
})
// 目标服务器的文件信息
var tgfs=function(){
//
scip = $("#scip").val();
// ip storage
sessionStorage.setItem("scip",scip);
var html = "<li class=\"list-group-item\">输入目标服务器"+scip+"</li>";
// 目标站
$("#mbip").text("目标站("+scip+")");
// 获取信息
gescinfo(scip)
//
$("#rstatus").append(html)
}
// 获取目标服务器的信息
var gescinfo=function(scip){
// 客户端的状态地址
var url="http://"+scip+":9099/sc?p="+urlpath
//
var html="";
$.getJSON(url,function(res){
// res.curdir
$.each(res.data.list,function(k,v){
html+="<li class=\"list-group-item optzone\"><div class=\"col-md-8\">";
if(v.dirflag){
html +="<span class=\"icon folder-icon\"></span>"+v.fname+"</div>";
}else{
html +="<span class=\"icon file-icon\"></span>"+v.fname+"</div>";
}
/*
if(!v.dirflag){
html+="<div class=\"col-md-4\"><a href=\"#\" class=\"btn btn-primary btn-sm\">同步</a></div>";
}else {
html+="<div class=\"col-md-4\"></div>";
}
*/
html+="</li>";
})
// append to html
$("#tgsc").html(html)
writelog(scip+"获取数据:"+res.data.list.length+"条数据" )
// 客户端监控目录
$("#sc01").text(res.workdir);
$("#sc02").text(res.curdir);
});
}
// write log
var writelog=function(html){
var hprex="<li class=\"list-group-item\">"+html+"</li>";
$("#rstatus").append(hprex)
}
//全选按钮设置点击事件
$("#slall").click(function () {
//1、循环设置其它多选框选中状态,跟标识用的变量一样
$(".mfile").prop("checked", chkall);
// down button toggle
if(chkall ||chknum>2){
$("#tropt").show()
chknum +=1
}else{
$("#tropt").hide()
chknum -=1
}
//2、标识的变量取反
chkall = !chkall;
})
//同步操作
$("#sybtn").on("click",function(){
var ttsip = $("input[name='serverip']").val();
if(ttsip==""){
alert("老天鹅,你还没填写目标服务器地址。");
}else{
$("#hscip").val(scip);
// 提交表单
$(".form-inline").submit();
}
});
});
</script>
</body>
</html>