function ssPost(method,args,callback){ var _args = null; if (typeof(args) == 'string'){ _args = JSON.stringify(toArrayObject(args)); } else { _args = JSON.stringify(args); } var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'system_safe'; req_data['script'] = 'system_safe'; req_data['func'] = method; req_data['args'] = _args; $.post('/plugins/run', req_data, 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 ssAsyncPost(method,args){ var _args = null; if (typeof(args) == 'string'){ _args = JSON.stringify(toArrayObject(args)); } else { _args = JSON.stringify(args); } return syncPost('/plugins/run', {name:'system_safe', func:method, args:_args}); } function ssPostCallbak(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'system_safe'; req_data['func'] = method; req_data['script'] = 'system_safe'; args['version'] = '1.0'; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, 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 getSafeConfigPathList(tag){ ssPost('get_safe_data', {tag:tag}, function(rdata){ var rdata = $.parseJSON(rdata.data); var slist = rdata.data.paths; var body = ''; for (var i = 0; i < slist.length; i++) { body += ""; body += ""+slist[i]['path']+""; if (slist[i]['chattr'] == 'i'){ body += "只读"; } else if (slist[i]['chattr'] == 'a'){ body += "追加"; } else{ body += "只读"; } if (rdata.msg['open']){ body += ""+slist[i]['d_mode']+""; body += "已保护"; } else { body += ""+slist[i]['s_mode']+""; body += "未保护"; } body += "删除"; body += ""; } $('#safe-file-table tbody').html(body); $('.safe_path_delete').click(function(){ var id = $(this).attr('row'); ssPost('del_safe_path',{tag:tag,index:id}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ getSafeConfigPathList(tag); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); }); } function setSafeConfigPath(tag, alist){ layer.open({ type: 1, area: ['700px','535px'], title: '配置【'+alist['name']+'】', content: "
\
\ \ \ \ \ \
\
\
\ \ \ \ \ \ \ \ \ \ \ \
路径模式权限状态操作
\
\
\ \
", success:function(){ $('.add_safe_config').click(function(){ var path = $('input[name="s_path"]').val(); var chattr = $('select[name="chattr"]').val(); var d_mode = $('input[name="d_mode"]').val(); ssPost('add_safe_path',{tag:tag,path:path,chattr:chattr,d_mode:d_mode}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ getSafeConfigPathList(tag); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); } }); getSafeConfigPathList(tag); } function setSafeConfigSsh(tag, alist){ function setSafeConfigSshData(){ ssPost('get_ssh_data', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); var info = rdata.data; $('input[name="s_cycle"]').val(info['cycle']); $('input[name="s_limit_count"]').val(info['limit_count']); $('input[name="s_limit"]').val(info['limit']); }); } layer.open({ type: 1, area: ['700px','210px'], title: '配置【'+alist['name']+'】', content: "
\
\ 在(检测周期)\ \ 秒内,登录错误(检测阈值)\ \ 次,封锁(封锁时间)\ \ \
\ \
", success:function(){ setSafeConfigSshData(); $('.save_safe_ssh').click(function(){ var cycle = $('input[name="s_cycle"]').val(); var limit_count = $('input[name="s_limit_count"]').val(); var limit = $('input[name="s_limit"]').val(); ssPost('save_safe_ssh',{cycle:cycle,limit_count:limit_count,limit:limit}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ setSafeConfigSshData(); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); } }); } function setSafeConfigProcessList(tag){ ssPost('get_process_data', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); var slist = rdata.data.process_white; var body = ''; for (var i = 0; i < slist.length; i++) { body += "\ "+slist[i]+"\ 删除\ "; } $('#safe-file-table tbody').html(body); $('.safe_path_delete').click(function(){ var id = $(this).attr('row'); ssPost('del_safe_proccess_name',{tag:tag,index:id}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ setSafeConfigProcessList(tag); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); }); } function setSafeConfigProcess(tag, alist){ layer.open({ type: 1, area: ['700px','535px'], title: '配置【进程白名单】', content: "
\
\ \ \
\
\
\ \ \ \ \ \ \ \ \
进程名称操作
\
\
\ \
", success:function(){ $('.add_process_white').click(function(){ var process_name = $('input[name="s_name"]').val(); ssPost('add_process_white',{process_name:process_name}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ setSafeConfigProcessList(tag); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); } }); setSafeConfigProcessList(tag); } function setSafeConfig(tag, alist){ if ($.inArray(tag, ['bin', 'service', 'home', 'user', 'bin', 'cron'])>-1){ setSafeConfigPath(tag,alist); } if ($.inArray(tag, ['ssh'])>-1){ setSafeConfigSsh(tag,alist); } if ($.inArray(tag, ['process'])>-1){ setSafeConfigProcess(tag,alist); } } //设置安全状态 function setSafeStatus(obj,tag){ var o = $(obj).prev(); var status = $(o).prop('checked'); ssPost('set_safe_status', {tag:tag,status:!status}, function(rdata){ var rdata = $.parseJSON(rdata.data); if (!rdata.status){ layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); $(o).prop('checked',status); return; } layer.msg("配置成功!",{icon:1,time:2000,shade: [0.3, '#000']}); }); } function ssConfigList(){ ssPost('conf',{},function(rdata){ var rdata = $.parseJSON(rdata.data); var libs = rdata.data; // console.log(libs); var body = ''; for (var i in libs) { if (i == 'open'){ continue; } var checked = ''; if (libs[i].open){ checked = 'checked'; } body += '' + '' + libs[i].name + '' + '' + libs[i].ps + '' + '\
\ \ \
\ '+ '配置' + ''; } var con = '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + body + '' + '
名称描述状态操作
' + '
' + ''; $('.soft-man-con').html(con); $('#system_safe_list .service_switch').click(function(){ var val = $(this).prev().attr('id'); val = val.replace('sys_service_',''); setSafeStatus(this,val); }); $('.set_safe_config').click(function(){ var name = $(this).attr('id'); // console.log(name); name = name.replace('conf_sys_service_',''); setSafeConfig(name, libs[name]); }); }); } function ssOpLogList(p){ ssPost('op_log',{p:p},function(rdata){ var rdata = $.parseJSON(rdata.data); var plist = rdata.data.data; var body = ''; for (var i = 0; i < plist.length; i++) { body += "\ " + plist[i].addtime + "\ " + plist[i].log + "\ "; } $("#system_safe_log_list tbody").html(body); $("#system_safe_log_page").html(rdata.data.page); }); } function ssOpLog(){ var con = '
\ \ \ \
时间详情
\
\
'; $('.soft-man-con').html(con); ssOpLogList(1); } function ssLogAuditList(){ ssPost('get_sys_logfiles',{},function(rdata){ var rdata = $.parseJSON(rdata.data); var plist = rdata.data; var option = ''; // console.log(plist); for (var i = 0; i < plist.length; i++) { option += ''; } $("#system_safe_log_audit").html(option); var log_name = $('#system_safe_log_audit option:first').val(); ssLogAuditFile(log_name); $('#system_safe_log_audit').change(function(){ var log_name = $('#system_safe_log_audit option:selected').val(); ssLogAuditFile(log_name); }); }); } function ssLogAuditFileRenderString(data){ var tbody = ''; $("#system_safe_log_audit_list").html(tbody); var ob = document.getElementById('system_safe_log_audit_str'); ob.scrollTop = ob.scrollHeight; $("#system_safe_log_audit_str").html(data); } function ssLogAuditFileRenderObject(plist){ var pre_html = '\ \ \
时间角色事件
'; $("#system_safe_log_audit_list").html(pre_html); if (plist.length>0){ var tmp = plist[0]; // console.log(tmp); var thead = ''; tbody += '' for (var i in tmp) { tbody+=''+ i + ''; } tbody += ''; $("#system_safe_log_audit_list thead").html(tbody); } var tbody = ''; for (var i = 0; i < plist.length; i++) { tbody += ''; for (var vv in plist[i]) { tbody+= ''+ plist[i][vv] + '' } tbody += ''; } $("#system_safe_log_audit_list tbody").html(tbody); } function ssLogAuditFile(log_name){ // ssPost('get_sys_log',{log_name:log_name},function(rdata){ // try{ // var rdata = $.parseJSON(rdata.data); // if (typeof(rdata.data) == 'object'){ // if (!rdata.status){ // layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); // return; // } // var plist = rdata.data; // ssLogAuditFileRenderObject(plist); // } // }catch(e){ // if (typeof(rdata.data) == 'string'){ // ssLogAuditFileRenderString(rdata.data); // } // } // }); ssPostCallbak('get_sys_log',{log_name:log_name},function(rdata){ try{ var rdata = $.parseJSON(rdata.data); if (typeof(rdata.data) == 'object'){ if (!rdata.status){ layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } var plist = rdata.data; ssLogAuditFileRenderObject(plist); } }catch(e){ if (typeof(rdata.data) == 'string'){ ssLogAuditFileRenderString(rdata.data); } } }); } function ssLogAudit(){ var con = '\
'; $('.soft-man-con').html(con); ssLogAuditList(); } function ssLockAddressList(){ ssPost('get_ssh_limit_info',{},function(rdata){ var rdata = $.parseJSON(rdata.data); var libs = rdata.data; var tbody = ''; for (var i in libs) { var end_time = libs[i].end; var time_title = '手动解封'; if (end_time != '0'){ time_title = '自动解封时间:'+end_time; } tbody += '' + '' + libs[i].address + '' + ''+time_title+'' + '立即解封' + ''; } $('#system_lock_address tbody').html(tbody); $('#system_lock_address .remove_ssh_limit').click(function(){ var address = $(this).attr('ip'); ssPost('remove_ssh_limit', {ip:address}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ ssLockAddressList(); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); }); } function ssLockAddress(){ var con = '
\ \ \
\
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
IP解封时间操作
' + '
' + ''; $('.soft-man-con').html(con); $('.add_lock_address').click(function(){ var address = $('input[name="s_address"]').val(); ssPost('add_ssh_limit', {ip:address}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg, function(){ ssLockAddressList(); },{icon:rdata.status?1:2,shade: [0.3, '#000']},2000); }); }); ssLockAddressList(); }