|
|
|
@ -38,162 +38,332 @@ function rsPost(method,args,callback, title){ |
|
|
|
|
|
|
|
|
|
///////////////// ----------------- 发送配置 ---------------- //////////////
|
|
|
|
|
|
|
|
|
|
function createSendTask(){ |
|
|
|
|
|
|
|
|
|
layer.open({ |
|
|
|
|
type: 1, |
|
|
|
|
area: ['600px','500px'], |
|
|
|
|
title: "创建发送任务", |
|
|
|
|
closeBtn: 1, |
|
|
|
|
shift: 0, |
|
|
|
|
shadeClose: false, |
|
|
|
|
btn: ['提交','取消'],
|
|
|
|
|
content:"<form class='bt-form pd20' id='fromServerPath' accept-charset='utf-8'>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>服务器IP</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='ip' placeholder='请输入接收服务器IP' value='' style='width:310px' />\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>同步目录</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input id='inputPath' class='bt-input-text mr5' type='text' name='path' value='/www/wwwroot' placeholder='请选择同步目录' style='width:310px' /><span class='glyphicon glyphicon-folder-open cursor' onclick='changePath(\"inputPath\")'></span>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【同步目录】若不以/结尾,则表示将数据同步到二级目录,一般情况下目录路径请以/结尾' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>同步方式</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text' name='delete' style='width:100px'>\ |
|
|
|
|
<option value='false'>增量</option>\ |
|
|
|
|
<option value='true'>完全</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【同步方式】增量: 数据更改/增加时同步,且只追加和替换文件\n【同步方式】完全: 保持两端的数据与目录结构的一致性,会同步删除、追加和替换文件和目录' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<span style='margin-left: 20px;margin-right: 10px;'>同步周期</span>\ |
|
|
|
|
<select class='bt-input-text synchronization' name='realtime' style='width:100px'>\ |
|
|
|
|
<option value='true'>实时同步</option>\ |
|
|
|
|
<option value='false'>定时同步</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<!--<div class='line'>\ |
|
|
|
|
<span class='tname'>同步周期</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text synchronization' name='realtime' style='width:100px'>\ |
|
|
|
|
<option value='true'>实时同步</option>\ |
|
|
|
|
<option value='false'>定时同步</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
function createSendTask(name = ''){ |
|
|
|
|
var args = {}; |
|
|
|
|
args["name"] = name; |
|
|
|
|
rsPost('lsyncd_get', args, function(rdata){ |
|
|
|
|
var rdata = $.parseJSON(rdata.data); |
|
|
|
|
var data = rdata.data; |
|
|
|
|
console.log(data); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var layerName = '创建'; |
|
|
|
|
if (name!=''){ |
|
|
|
|
layerName = '编辑'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var compress_true = ""; |
|
|
|
|
var compress_false = ""; |
|
|
|
|
if (data['rsync']['compress'] == 'true'){ |
|
|
|
|
compress_true = "selected"; |
|
|
|
|
compress_false = ""; |
|
|
|
|
} else { |
|
|
|
|
compress_true = ""; |
|
|
|
|
compress_false = "selected"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var delete_true = ""; |
|
|
|
|
var delete_false = ""; |
|
|
|
|
if (data['delete'] == 'false'){ |
|
|
|
|
delete_true = "selected"; |
|
|
|
|
delete_false = ""; |
|
|
|
|
} else { |
|
|
|
|
delete_true = ""; |
|
|
|
|
delete_false = "selected"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var realtime_true = ""; |
|
|
|
|
var realtime_false = ""; |
|
|
|
|
if (data['realtime'] == 'true'){ |
|
|
|
|
realtime_true = "selected"; |
|
|
|
|
realtime_false = ""; |
|
|
|
|
} else { |
|
|
|
|
realtime_true = ""; |
|
|
|
|
realtime_false = "selected"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var period_day = ""; |
|
|
|
|
var period_minute_n = ""; |
|
|
|
|
if (data['period'] == 'day'){ |
|
|
|
|
period_day = "selected"; |
|
|
|
|
period_minute_n = ""; |
|
|
|
|
} else { |
|
|
|
|
period_day = ""; |
|
|
|
|
period_minute_n = "selected"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var layerID = layer.open({ |
|
|
|
|
type: 1, |
|
|
|
|
area: ['600px','500px'], |
|
|
|
|
title: layerName+"发送任务", |
|
|
|
|
closeBtn: 1, |
|
|
|
|
shift: 0, |
|
|
|
|
shadeClose: false, |
|
|
|
|
btn: ['提交','取消'],
|
|
|
|
|
content:"<form class='bt-form pd20' id='fromServerPath' accept-charset='utf-8'>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>服务器IP</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='ip' placeholder='请输入接收服务器IP' value='"+data["ip"]+"' style='width:310px' />\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>-->\ |
|
|
|
|
<div class='line' id='period' style='height:45px;display:none;'>\ |
|
|
|
|
<span class='tname'>定时周期</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text pull-left mr20' name='period' style='width:100px;display:none;'>\ |
|
|
|
|
<option value='day' >每天</option>\ |
|
|
|
|
<option value='minute-n' >N分钟</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text hour' style='display:none;'>\ |
|
|
|
|
<span><input type='number' name='hour' value='0' maxlength='2' max='23' min='0'></span>\ |
|
|
|
|
<span class='name'>小时</span>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>同步目录</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input id='inputPath' class='bt-input-text mr5' type='text' name='path' value='/www/wwwroot' placeholder='请选择同步目录' style='width:310px' /><span class='glyphicon glyphicon-folder-open cursor' onclick='changePath(\"inputPath\")'></span>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【同步目录】若不以/结尾,则表示将数据同步到二级目录,一般情况下目录路径请以/结尾' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text minute' style='display:none;'>\ |
|
|
|
|
<span><input type='number' name='minute' value='0' maxlength='2' max='59' min='0'></span>\ |
|
|
|
|
<span class='name'>分钟</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>同步方式</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text' name='delete' style='width:100px'>\ |
|
|
|
|
<option value='false' "+delete_true+">增量</option>\ |
|
|
|
|
<option value='true' "+delete_false+">完全</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【同步方式】增量: 数据更改/增加时同步,且只追加和替换文件\n【同步方式】完全: 保持两端的数据与目录结构的一致性,会同步删除、追加和替换文件和目录' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<span style='margin-left: 20px;margin-right: 10px;'>同步周期</span>\ |
|
|
|
|
<select class='bt-input-text synchronization' name='realtime' style='width:100px'>\ |
|
|
|
|
<option value='true' "+realtime_true+">实时同步</option>\ |
|
|
|
|
<option value='false' "+realtime_false+">定时同步</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text minute-n' style='display:none;'>\ |
|
|
|
|
<span><input type='number' name='minute-n' value='0' maxlength='2' max='59' min='0'></span>\ |
|
|
|
|
<span class='name'>分钟</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line' id='period' style='height:45px;display:none;'>\ |
|
|
|
|
<span class='tname'>定时周期</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text pull-left mr20' name='period' style='width:100px;'>\ |
|
|
|
|
<option value='day' "+period_day+">每天</option>\ |
|
|
|
|
<option value='minute-n' "+period_minute_n+">N分钟</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text hour'>\ |
|
|
|
|
<span><input class='bt-input-text' type='number' name='hour' value='"+data["hour"]+"' maxlength='2' max='23' min='0'></span>\ |
|
|
|
|
<span class='name'>小时</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text minute'>\ |
|
|
|
|
<span><input class='bt-input-text' type='number' name='minute' value='"+data["minute"]+"' maxlength='2' max='59' min='0'></span>\ |
|
|
|
|
<span class='name'>分钟</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='plan_hms pull-left mr20 bt-input-text minute-n' style='display:none;'>\ |
|
|
|
|
<span><input class='bt-input-text' type='number' name='minute-n' value='"+data["minute-n"]+"' maxlength='2' max='59' min='0'></span>\ |
|
|
|
|
<span class='name'>分钟</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>限速</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='number' name='bwlimit' min='0' value='1000' style='width:100px' /> KB\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【限速】限制数据同步任务的速度,防止因同步数据导致带宽跑高' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<span style='margin-left: 29px;margin-right: 10px;'>延迟</span><input class='bt-input-text' min='0' type='number' name='delay' value='3' style='width:100px' /> 秒\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【延迟】在延迟时间周期内仅记录不同步,到达周期后一次性同步数据,以节省开销' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>限速</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='number' name='bwlimit' min='0' value='1024' style='width:100px' /> KB\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【限速】限制数据同步任务的速度,防止因同步数据导致带宽跑高' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<span style='margin-left: 29px;margin-right: 10px;'>延迟</span><input class='bt-input-text' min='0' type='number' name='delay' value='3' style='width:100px' /> 秒\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【延迟】在延迟时间周期内仅记录不同步,到达周期后一次性同步数据,以节省开销' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>连接方式</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text' name='conn_type' style='width:100px'>\ |
|
|
|
|
<option value='key'>密钥</option>\ |
|
|
|
|
<option value='user'>帐号</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span style='margin-left: 45px;margin-right: 10px;'>压缩传输</span>\ |
|
|
|
|
<select class='bt-input-text' name='compress' style='width:100px'>\ |
|
|
|
|
<option value='true'>开启</option>\ |
|
|
|
|
<option value='false'>关闭</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【压缩传输】开启后可减少带宽开销,但会增加CPU开销,如带宽充足,建议关闭此选项' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
<div class='line'>\ |
|
|
|
|
<span class='tname'>连接方式</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<select class='bt-input-text' name='conn_type' style='width:100px'>\ |
|
|
|
|
<option value='key'>密钥</option>\ |
|
|
|
|
<option value='user'>帐号</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span style='margin-left: 45px;margin-right: 10px;'>压缩传输</span>\ |
|
|
|
|
<select class='bt-input-text' name='compress' style='width:100px'>\ |
|
|
|
|
<option value='true' "+compress_true+">开启</option>\ |
|
|
|
|
<option value='false' "+compress_false+">关闭</option>\ |
|
|
|
|
</select>\ |
|
|
|
|
<span data-toggle='tooltip' data-placement='top' title='【压缩传输】开启后可减少带宽开销,但会增加CPU开销,如带宽充足,建议关闭此选项' class='bt-ico-ask' style='cursor: pointer;'>?</span>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line conn-key'>\ |
|
|
|
|
<span class='tname'>接收密钥</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<textarea id='mainDomain' class='bt-input-text' name='secret_key' style='width:310px;height:75px;line-height:22px' placeholder='此密钥为 接收配置[接收账号] 的密钥'></textarea>\ |
|
|
|
|
<div class='line conn-key'>\ |
|
|
|
|
<span class='tname'>接收密钥</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<textarea id='mainDomain' class='bt-input-text' name='secret_key' style='width:310px;height:75px;line-height:22px' placeholder='此密钥为 接收配置[接收账号] 的密钥'>"+data['secret_key']+"</textarea>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>用户名</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='u_user' min='0' value='' style='width:310px' />\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>用户名</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='u_user' min='0' value='"+data["name"]+"' style='width:310px' />\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>密码</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='u_pass' min='0' value='' style='width:310px' />\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>密码</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='text' name='u_pass' min='0' value='"+data["password"]+"' style='width:310px' />\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>端口</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='number' name='u_port' min='0' value='' style='width:310px' />\ |
|
|
|
|
<div class='line conn-user'>\ |
|
|
|
|
<span class='tname'>端口</span>\ |
|
|
|
|
<div class='info-r c4'>\ |
|
|
|
|
<input class='bt-input-text' type='number' name='u_port' min='0' value='"+data["rsync"]["port"]+"' style='width:310px' />\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
</div>\ |
|
|
|
|
<ul class=\"help-info-text c7\">\ |
|
|
|
|
</ul>\ |
|
|
|
|
</form>", |
|
|
|
|
success:function(){ |
|
|
|
|
$('[data-toggle="tooltip"]').tooltip(); |
|
|
|
|
|
|
|
|
|
$(".conn-user").hide(); |
|
|
|
|
$("select[name='conn_type']").change(function(){ |
|
|
|
|
if($(this).val() == 'key'){ |
|
|
|
|
$(".conn-user").hide(); |
|
|
|
|
$(".conn-key").show(); |
|
|
|
|
<ul class=\"help-info-text c7\">\ |
|
|
|
|
</ul>\ |
|
|
|
|
</form>", |
|
|
|
|
success:function(){ |
|
|
|
|
$('[data-toggle="tooltip"]').tooltip(); |
|
|
|
|
|
|
|
|
|
$(".conn-user").hide(); |
|
|
|
|
$("select[name='conn_type']").change(function(){ |
|
|
|
|
if($(this).val() == 'key'){ |
|
|
|
|
$(".conn-user").hide(); |
|
|
|
|
$(".conn-key").show(); |
|
|
|
|
}else{ |
|
|
|
|
$(".conn-user").show(); |
|
|
|
|
$(".conn-key").hide(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var selVal = $('.synchronization option:selected').val(); |
|
|
|
|
if (selVal == "false"){ |
|
|
|
|
$('#period').show(); |
|
|
|
|
}else{ |
|
|
|
|
$('#period').hide(); |
|
|
|
|
$('.hour input,.minute input').val('0'); |
|
|
|
|
$('.minute-n input').val('1'); |
|
|
|
|
}
|
|
|
|
|
$('.synchronization').change(function(event) { |
|
|
|
|
var selVal = $('.synchronization option:selected').val(); |
|
|
|
|
if (selVal == "false"){ |
|
|
|
|
$('#period').show(); |
|
|
|
|
}else{ |
|
|
|
|
$('#period').hide(); |
|
|
|
|
$('.hour input,.minute input').val('0'); |
|
|
|
|
$('.minute-n input').val('1'); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$("select[name='delete']").change(function(){ |
|
|
|
|
if($(this).val() == 'true'){ |
|
|
|
|
var mpath = $('input[name="path"]').val(); |
|
|
|
|
var msg = '<div><span style="color:orangered;">警告:您选择了完全同步,将会使本机同步与目标机器指定目录的文件保持一致,' |
|
|
|
|
+'<br />请确认目录设置是否有误,一但设置错误,可能导致目标机器的目录文件被删除!</span>' |
|
|
|
|
+'<br /><br /> <span style="color:red;">注意: 同步程序将本机目录:' |
|
|
|
|
+mpath+'的所有数据同步到目标服务器,若目标服务器的同步目录存在其它文件将被删除!</span> <br /><br /> 已了解风险,请按确定继续</div>'; |
|
|
|
|
|
|
|
|
|
layer.confirm(msg,{title:'数据安全风险警告',icon:2,closeBtn: 1,shift: 5, |
|
|
|
|
btn2:function(){ |
|
|
|
|
setTimeout(function(){$($("select[name='delete']").children("option")[0]).prop('selected',true);},100); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var selVal = $('#period select option:selected').val(); |
|
|
|
|
if (selVal == 'day'){ |
|
|
|
|
$('.hour,.minute').show(); |
|
|
|
|
if ($('.hour input').val() == ''){ |
|
|
|
|
$('.hour input,.minute input').val('0'); |
|
|
|
|
} |
|
|
|
|
$('.minute-n').hide(); |
|
|
|
|
}else{ |
|
|
|
|
$(".conn-user").show(); |
|
|
|
|
$(".conn-key").hide(); |
|
|
|
|
$('.hour,.minute').hide(); |
|
|
|
|
$('.minute-n').show(); |
|
|
|
|
if ($('.minute-n input').val() == ''){ |
|
|
|
|
$('.minute-n input').val('1'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
yes:function(){ |
|
|
|
|
var args = {}; |
|
|
|
|
args['ip'] = $('input[name="ip"]').val(); |
|
|
|
|
args['path'] = $('input[name="path"]').val(); |
|
|
|
|
args['delete'] = $('input[name="delete"]').val(); |
|
|
|
|
args['realtime'] = $('input[name="realtime"]').val(); |
|
|
|
|
|
|
|
|
|
args['bwlimit'] = $('input[name="bwlimit"]').val(); |
|
|
|
|
args['conn_type'] = $('input[name="conn_type"]').val(); |
|
|
|
|
args['compress'] = $('input[name="compress"]').val(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log(args); |
|
|
|
|
rsPost('lsyncd_add', args, function(rdata){ |
|
|
|
|
console.log(rdata); |
|
|
|
|
}); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$('#period').change(function(event) { |
|
|
|
|
var selVal = $('#period select option:selected').val(); |
|
|
|
|
if (selVal == 'day'){ |
|
|
|
|
$('.hour,.minute').show(); |
|
|
|
|
if ($('.hour input').val() == ''){ |
|
|
|
|
$('.hour input,.minute input').val('0'); |
|
|
|
|
} |
|
|
|
|
$('.minute-n').hide(); |
|
|
|
|
}else{ |
|
|
|
|
$('.hour,.minute').hide(); |
|
|
|
|
$('.minute-n').show(); |
|
|
|
|
if ($('.minute-n input').val() == ''){ |
|
|
|
|
$('.minute-n input').val('1'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
yes:function(index){ |
|
|
|
|
var args = {}; |
|
|
|
|
var conn_type = $("select[name='conn_type']").val(); |
|
|
|
|
|
|
|
|
|
if(conn_type == 'key'){ |
|
|
|
|
if ( $('textarea[name="secret_key"]').val() != ''){ |
|
|
|
|
args['secret_key'] = $('textarea[name="secret_key"]').val(); |
|
|
|
|
} else { |
|
|
|
|
layer.msg('请输入接收密钥!'); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
args['sname'] = $("input[name='u_user']").val(); |
|
|
|
|
args['password'] = $("input[name='u_pass']").val(); |
|
|
|
|
var port = Number($("input[name='u_port']").val()); |
|
|
|
|
args['port'] = port; |
|
|
|
|
if (!args['sname'] || !args['password'] || !args['port']){ |
|
|
|
|
layer.msg('请输入帐号、密码、端口信息'); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($('input[name="ip"]').val() == ''){ |
|
|
|
|
layer.msg('请输入服务器IP地址!'); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
args['sname'] = $("input[name='u_user']").val(); |
|
|
|
|
args['password'] = $("input[name='u_pass']").val(); |
|
|
|
|
var port = Number($("input[name='u_port']").val()); |
|
|
|
|
args['port'] = port; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
args['ip'] = $('input[name="ip"]').val(); |
|
|
|
|
args['path'] = $('input[name="path"]').val(); |
|
|
|
|
args['delete'] = $('select[name="delete"]').val(); |
|
|
|
|
args['realtime'] = $('select[name="realtime"]').val(); |
|
|
|
|
args['delay'] = $('input[name="delay"]').val(); |
|
|
|
|
|
|
|
|
|
args['bwlimit'] = $('input[name="bwlimit"]').val(); |
|
|
|
|
args['conn_type'] = $('select[name="conn_type"]').val(); |
|
|
|
|
args['compress'] = $('select[name="compress"]').val(); |
|
|
|
|
|
|
|
|
|
args['period'] = $('select[name="period"]').val();
|
|
|
|
|
args['hour'] = $('input[name="hour"]').val(); |
|
|
|
|
args['minute'] = $('input[name="minute"]').val(); |
|
|
|
|
args['minute-n'] = $('input[name="minute-n"]').val(); |
|
|
|
|
|
|
|
|
|
rsPost('lsyncd_add', args, function(rdata){ |
|
|
|
|
var rdata = $.parseJSON(rdata.data); |
|
|
|
|
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); |
|
|
|
|
|
|
|
|
|
if (rdata.status){ |
|
|
|
|
setTimeout(function(){layer.close(index);},2000); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function lsyncdDelete(name){ |
|
|
|
|
safeMessage('删除['+name+']', '您真的要删除['+name+']吗?', function(){ |
|
|
|
|
var args = {}; |
|
|
|
|
args['name'] = name; |
|
|
|
|
rsPost('lsyncd_delete', args, function(rdata){ |
|
|
|
|
var rdata = $.parseJSON(rdata.data); |
|
|
|
|
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); |
|
|
|
|
setTimeout(function(){lsyncdSend();},2000); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function rsyncdSend(){ |
|
|
|
|
function lsyncdSend(){ |
|
|
|
|
rsPost('lsyncd_list', '', function(data){ |
|
|
|
|
var rdata = $.parseJSON(data.data); |
|
|
|
|
console.log(rdata); |
|
|
|
@ -206,7 +376,6 @@ function rsyncdSend(){ |
|
|
|
|
|
|
|
|
|
con += '<div style="padding-top:1px;">\ |
|
|
|
|
<button class="btn btn-success btn-sm" onclick="createSendTask();">创建发送任务</button>\ |
|
|
|
|
<button class="btn btn-success btn-sm" onclick="rsyncdLog();">创建本地同步</button>\ |
|
|
|
|
<button class="btn btn-success btn-sm" onclick="rsyncdLog();">日志</button>\ |
|
|
|
|
</div>'; |
|
|
|
|
|
|
|
|
@ -222,19 +391,35 @@ function rsyncdSend(){ |
|
|
|
|
|
|
|
|
|
con += '<tbody>'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < list.length; i++) { |
|
|
|
|
var mode = '增量'; |
|
|
|
|
if (list[i]['delete'] == 'true'){ |
|
|
|
|
mode = '完全'; |
|
|
|
|
} else { |
|
|
|
|
mode = '增量'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var period = "实时"; |
|
|
|
|
if (list[i]['realtime'] == 'true'){ |
|
|
|
|
period = '实时'; |
|
|
|
|
} else { |
|
|
|
|
period = '定时'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
con += '<tr>'+ |
|
|
|
|
'<td>' + "dd"+'</td>' + |
|
|
|
|
'<td><a class="btlink" onclick="openPath(\''+list[i]['path']+'\')">' + list[i]['path']+'</a></td>' + |
|
|
|
|
'<td>' + list[i]['name']+'</td>' + |
|
|
|
|
'<td><a class="btlink overflow_hide" style="width:40px;" onclick="openPath(\''+list[i]['path']+'\')">' + list[i]['path']+'</a></td>' + |
|
|
|
|
'<td>' + list[i]['ip']+":"+"cc"+'</td>' + |
|
|
|
|
'<td>' + "增量"+'</td>' + |
|
|
|
|
'<td>' + "实时" +'</td>' + |
|
|
|
|
'<td>' + mode+'</td>' + |
|
|
|
|
'<td>' + period +'</td>' + |
|
|
|
|
'<td>\ |
|
|
|
|
<a class="btlink" onclick="cmdReceive(\''+list[i]['name']+'\')">同步</a>\ |
|
|
|
|
| <a class="btlink" onclick="delReceive(\''+list[i]['name']+'\')">日志</a>\ |
|
|
|
|
| <a class="btlink" onclick="delReceive(\''+list[i]['name']+'\')">过滤器</a>\ |
|
|
|
|
| <a class="btlink" onclick="delReceive(\''+list[i]['name']+'\')">编辑</a>\ |
|
|
|
|
| <a class="btlink" onclick="delReceive(\''+list[i]['name']+'\')">删除</a>\ |
|
|
|
|
<a class="btlink" onclick="lsyncdRun(\''+list[i]['name']+'\')">同步</a>\ |
|
|
|
|
| <a class="btlink" onclick="lsyncdLog(\''+list[i]['name']+'\')">日志</a>\ |
|
|
|
|
| <a class="btlink" onclick="lsyncdExclude(\''+list[i]['name']+'\')">过滤器</a>\ |
|
|
|
|
| <a class="btlink" onclick="createSendTask(\''+list[i]['name']+'\')">编辑</a>\ |
|
|
|
|
| <a class="btlink" onclick="lsyncdDelete(\''+list[i]['name']+'\')">删除</a>\ |
|
|
|
|
</td>\ |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|