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
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>
|