function rsPost(method,args,callback, title){ var _args = null; if (typeof(args) == 'string'){ _args = JSON.stringify(toArrayObject(args)); } else { _args = JSON.stringify(args); } var _title = '正在获取...'; if (typeof(title) != 'undefined'){ _title = title; } var loadT = layer.msg(_title, { icon: 16, time: 0, shade: 0.3 }); $.post('/plugins/run', {name:'rsyncd', func:method, args:_args}, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } ///////////////// ----------------- 发送配置 ---------------- ////////////// 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:"
\
\ 服务器IP\
\ \
\
\
\ 同步目录\
\ \ ?\
\
\
\ 同步方式\
\ \ ?\ 同步周期\ \
\
\ \
\ 限速\
\ KB\ ?\ 延迟 秒\ ?\
\
\
\ 连接方式\
\ \ 压缩传输\ \ ?\
\
\
\ 接收密钥\
\ \
\
\
\ 用户名\
\ \
\
\
\ 密码\
\ \
\
\
\ 端口\
\ \
\
\ \
", 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 = '
警告:您选择了完全同步,将会使本机同步与目标机器指定目录的文件保持一致,' +'
请确认目录设置是否有误,一但设置错误,可能导致目标机器的目录文件被删除!
' +'

注意: 同步程序将本机目录:' +mpath+'的所有数据同步到目标服务器,若目标服务器的同步目录存在其它文件将被删除!

已了解风险,请按确定继续
'; 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{ $('.hour,.minute').hide(); $('.minute-n').show(); if ($('.minute-n input').val() == ''){ $('.minute-n input').val('1'); } } $('#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); lsyncdSend(); },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 lsyncdRun(name){ var args = {}; args["name"] = name; rsPost('lsyncd_run', args, function(rdata){ var rdata = $.parseJSON(rdata.data); layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); }); } function lsyncdLog(name){ var args = {}; args["name"] = name; pluginStandAloneLogs("rsyncd", '', "lsyncd_log", JSON.stringify(args)); } function lsyncdExclude(name){ layer.open({ type:1, title:'过滤器', area: '400px', shadeClose:false, closeBtn:2, content:'
\
\
\ 排除的文件和目录\ \ \
\
\
\
\
\
\ \
\
' }); function getIncludeExclude(mName){ loadT = layer.msg('正在获取数据...',{icon:16,time:0,shade: [0.3, '#000']}); rsPost('lsyncd_get_exclude',{"name":mName}, function(rdata) { layer.close(loadT); var rdata = $.parseJSON(rdata.data); var res = rdata.data; var list='' for (var i = 0; i < res.length; i++) { list += ''+ res[i] +'删除'; } $('.lsyncd_exclude .BlockList tbody').empty().append(list); }); } getIncludeExclude(name); function addArgs(name,exclude){ loadT = layer.msg('正在添加...',{icon:16,time:0,shade: [0.3, '#000']}); rsPost('lsyncd_add_exclude', {name:name,exclude:exclude}, function(res){ layer.close(loadT); console.log('addArgs:',res); if (res.status){ getIncludeExclude(name); $('.lsyncd_exclude input').val(''); layer.msg(res.msg); }else{ layer.msg(res.msg); } }); } $('.addList').click(function(event) { var val = $(this).prev().val(); if(val == ''){ layer.msg('当前输入内容为空,请输入'); return false; } addArgs(name,val); }); $('.lsyncd_exclude input').keyup(function(event){ if (event.which == 13){ var val = $(this).val(); if(val == ''){ layer.msg('当前输入内容为空,请输入'); return false; } addArgs(name,val); } }); $('.lsyncd_exclude').on('click', '.delList', function(event) { loadT = layer.msg('正在删除...',{icon:16,time:0,shade: [0.3, '#000']}); var val = $(this).parent().prev().text(); rsPost('lsyncd_remove_exclude',{"name":name,exclude:val}, function(rdata) { layer.close(loadT); console.log(rdata) var rdata = $.parseJSON(rdata.data); var res = rdata.data; var list='' for (var i = 0; i < res.length; i++) { list += ''+ res[i] +'删除'; } $('.lsyncd_exclude .BlockList tbody').empty().append(list); }); }); } function lsyncdConfLog(){ pluginRollingLogs("rsyncd","","lsyncd_conf_log");; } function lsyncdSend(){ rsPost('lsyncd_list', '', function(data){ var rdata = $.parseJSON(data.data); console.log(rdata); if (!rdata.status){ layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); return; } var list = rdata.data.list; var con = ''; con += '
\ \ \
'; con += '
'; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; 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 += ''+ '' + '' + '' + '' + '' + '\ '; } con += ''; con += '
名称(标识)源目录同步到模式周期操作
' + list[i]['name']+'' + list[i]['path']+'' + list[i]['ip']+":"+list[i]['name']+'' + mode+'' + period +'\ 同步\ | 手动日志\ | 过滤器\ | 编辑\ | 删除\
'; $(".soft-man-con").html(con); }); } ///////////////// ----------------- 接收配置 ---------------- ////////////// function rsyncdConf(){ rsPost('conf', {}, function(rdata){ rpath = rdata['data']; if (rdata['status']){ onlineEditFile(0, rpath); } else { layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']}); } }); } function rsyncdLog(){ pluginRollingLogs("rsyncd","","run_log"); } function rsyncdReceive(){ rsPost('rec_list', '', function(data){ var rdata = $.parseJSON(data.data); if (!rdata.status){ layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); return; } // console.log(rdata); var list = rdata.data; var con = ''; con += '
\ \ \
'; con += '
'; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; con += ''; //编辑 for (var i = 0; i < list.length; i++) { con += ''+ '' + '' + '' + '\ '; } con += ''; con += '
服务名路径备注操作(添加)
' + list[i]['name']+'' + list[i]['path']+'' + list[i]['comment']+'\ 命令\ | 密钥\ | 编辑\ | 删除
'; $(".soft-man-con").html(con); }); } function addReceive(name = ""){ rsPost('get_rec',{"name":name},function(rdata) { var rdata = $.parseJSON(rdata.data); var data = rdata.data; var readonly = ""; if (name !=""){ readonly = 'readonly="readonly"' } var loadOpen = layer.open({ type: 1, title: '创建接收', area: '400px', btn:['确认','取消'], content:"
\
\ 项目名\
\ \
\
\
\ 密钥\
\ \ \
\
\
\ 同步到\
\ \ \
\
\
\ 备注\
\ \
\
\
", success:function(layero, index){}, yes:function(){ var args = {}; args['name'] = $('#name').val(); args['pwd'] = $('#MyPassword').val(); args['path'] = $('#inputPath').val(); args['ps'] = $('#ps').val(); var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); rsPost('add_rec', args, function(data){ var rdata = $.parseJSON(data.data); layer.close(loadOpen); layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); setTimeout(function(){rsyncdReceive();},2000); }); } }); }) } function delReceive(name){ safeMessage('删除['+name+']', '您真的要删除['+name+']吗?', function(){ var _data = {}; _data['name'] = name; rsPost('del_rec', _data, function(data){ var rdata = $.parseJSON(data.data); layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']}); setTimeout(function(){rsyncdReceive();},2000); }); }); } function cmdRecSecretKey(name){ var _data = {}; _data['name'] = name; rsPost('cmd_rec_secret_key', _data, function(data){ var rdata = $.parseJSON(data.data); layer.open({ type: 1, title: '接收密钥', area: '400px', content:"
" }); }); } function cmdRecCmd(name){ var _data = {}; _data['name'] = name; rsPost('cmd_rec_cmd', _data, function(data){ var rdata = $.parseJSON(data.data); layer.open({ type: 1, title: '接收命令例子', area: '400px', content:"
"+rdata.data+"
" }); }); } function rsRead(){ var readme = ''; $('.soft-man-con').html(readme); }