diff --git a/plugins/webstats/conf/config.json b/plugins/webstats/conf/config.json index 49b663802..159694eff 100644 --- a/plugins/webstats/conf/config.json +++ b/plugins/webstats/conf/config.json @@ -47,6 +47,5 @@ "record_get_403_args": false, "push_report": false, "data_dir": "/www/server/webstats/logs" - }, - "default_site": "unset" + } } \ No newline at end of file diff --git a/plugins/webstats/index.html b/plugins/webstats/index.html index e6d230f27..0321675c8 100755 --- a/plugins/webstats/index.html +++ b/plugins/webstats/index.html @@ -206,6 +206,6 @@ $.getScript( "/plugins/file?name=webstats&f=js/stats.js", function(){ }); $.getScript( "/plugins/file?name=webstats&f=js/setting.js", function(){ - console.log("webstats setting load done"); + console.log("webstats setting load done"); }); \ No newline at end of file diff --git a/plugins/webstats/index.py b/plugins/webstats/index.py index c1ee3d0ba..8816c5e73 100755 --- a/plugins/webstats/index.py +++ b/plugins/webstats/index.py @@ -299,6 +299,99 @@ def setGlobalConf(): return mw.returnJson(True, '设置成功') +def getSiteConf(): + args = getArgs() + + check = checkArgs(args, ['site']) + if not check[0]: + return check[1] + + domain = args['site'] + conf = getConf() + content = mw.readFile(conf) + content = json.loads(content) + + site_conf = {} + if domain in content: + site_conf = content[domain] + else: + site_conf["cdn_headers"] = content['global']['cdn_headers'] + site_conf["exclude_extension"] = content['global']['exclude_extension'] + site_conf["exclude_status"] = content['global']['exclude_status'] + site_conf["exclude_ip"] = content['global']['exclude_ip'] + site_conf["exclude_url"] = content['global']['exclude_url'] + site_conf["record_post_args"] = content['global']['record_post_args'] + site_conf["record_get_403_args"] = content[ + 'global']['record_get_403_args'] + + return mw.returnJson(True, 'ok', site_conf) + + +def setSiteConf(): + args = getArgs() + check = checkArgs(args, ['site']) + if not check[0]: + return check[1] + + domain = args['site'] + conf = getConf() + content = mw.readFile(conf) + content = json.loads(content) + + site_conf = {} + if domain in content: + site_conf = content[domain] + else: + site_conf["cdn_headers"] = content['global']['cdn_headers'] + site_conf["exclude_extension"] = content['global']['exclude_extension'] + site_conf["exclude_status"] = content['global']['exclude_status'] + site_conf["exclude_ip"] = content['global']['exclude_ip'] + site_conf["exclude_url"] = content['global']['exclude_url'] + site_conf["record_post_args"] = content['global']['record_post_args'] + site_conf["record_get_403_args"] = content[ + 'global']['record_get_403_args'] + + for v in ['record_post_args', 'record_get_403_args']: + data = checkArgs(args, [v]) + if data[0]: + rval = False + if args[v] == "true": + rval = True + site_conf[v] = rval + + for v in ['ip_top_num', 'uri_top_num', 'save_day']: + data = checkArgs(args, [v]) + if data[0]: + site_conf[v] = int(args[v]) + + for v in ['cdn_headers', 'exclude_extension', 'exclude_status', 'exclude_ip']: + data = checkArgs(args, [v]) + if data[0]: + site_conf[v] = args[v].split("\\n") + + data = checkArgs(args, ['exclude_url']) + if data[0]: + exclude_url = args['exclude_url'].strip(";") + exclude_url_val = [] + if exclude_url != "": + exclude_url_list = exclude_url.split(";") + for i in exclude_url_list: + t = i.split("|") + val = {} + val['mode'] = t[0] + val['url'] = t[1] + exclude_url_val.append(val) + site_conf['exclude_url'] = exclude_url_val + + content[domain] = site_conf + + mw.writeFile(conf, json.dumps(content)) + conf_lua = getServerDir() + "/lua/config.lua" + listToLuaFile(conf_lua, content) + mw.restartWeb() + return mw.returnJson(True, '设置成功') + + def getSiteListData(): lua_dir = getServerDir() + "/lua" path = lua_dir + "/default.json" @@ -892,6 +985,10 @@ if __name__ == "__main__": print(getGlobalConf()) elif func == 'set_global_conf': print(setGlobalConf()) + elif func == 'get_site_conf': + print(getSiteConf()) + elif func == 'set_site_conf': + print(setSiteConf()) elif func == 'get_default_site': print(getDefaultSite()) elif func == 'get_overview_list': diff --git a/plugins/webstats/js/setting.js b/plugins/webstats/js/setting.js index 13b795a6d..f003e692c 100644 --- a/plugins/webstats/js/setting.js +++ b/plugins/webstats/js/setting.js @@ -192,15 +192,15 @@ wsPost('get_global_conf', '' ,{}, function(rdata){ if ( [0,1,2,4].indexOf(select_pos)>-1 ){ var setting_cdn = $('textarea[name="setting-cdn"]').val(); - var list = setting_cdn.split('\n') + // var list = setting_cdn.split('\n') var args = {} if ( select_pos == 0 ){ - args['cdn_headers'] = list; + args['cdn_headers'] = setting_cdn; } else if ( select_pos == 1 ){ - args['exclude_extension'] = list; + args['exclude_extension'] = setting_cdn; } else if ( select_pos == 2 ){ - args['exclude_status'] = list; + args['exclude_status'] = setting_cdn; } else if ( select_pos == 4 ){ args['exclude_ip'] = setting_cdn; } diff --git a/plugins/webstats/js/stats.js b/plugins/webstats/js/stats.js index 3adb2267d..3b5b5a98d 100644 --- a/plugins/webstats/js/stats.js +++ b/plugins/webstats/js/stats.js @@ -692,7 +692,7 @@ function wsSitesListRequest(page){ list += '' + tmp_ip +''; list += '' + tmp_req +''; list += '' + toSize(tmp_length) +''; - list += '设置'; + list += '设置'; list += ''; } } else{ @@ -721,6 +721,197 @@ function wsSitesListRequest(page){ \
'; $('#ws_table').html(table); + + + $(".tablescroll .web_set").click(function(){ + var index = $(this).attr('data-id'); + + var domain = data[index]["site"]; + wsPost('get_site_conf', '' ,{"site":domain}, function(rdata){ + var rdata = $.parseJSON(rdata.data); + var rdata = rdata.data; + console.log(rdata); + layer.open({ + type: 1, + title: "【"+domain + "】监控配置", + btn: ['保存','取消'], + area: ['600px',"380px"], + closeBtn: 1, + shadeClose: false, + content: '
\ +
\ +
\ + CDN headers\ + 排除扩展\ + 排除响应状态\ + 排除路径\ + 排除IP\ + 记录请求原文\ +
\ +
\ + * 准确识别CDN网络IP地址,请注意大小写,如需多个请换行填写\ + \ +
\ +
\ +
', + success:function(){ + var common_tpl_tips = '* 准确识别CDN网络IP地址,请注意大小写,如需多个请换行填写'; + var common_tpl_area = ''; + + + $('#site_conf .tab-con textarea').text(rdata['cdn_headers'].join('\n')); + $('#site_conf .tab-nav span').click(function(e){ + $('#site_conf .tab-nav span').removeClass('on'); + $(this).addClass('on'); + $('#site_conf .tab-con').html(''); + + var typename = $(this).attr('data-type'); + if (typename == 'cdn_headers'){ + var content = $(common_tpl_tips).html('* 准确识别CDN网络IP地址,请注意大小写,如需多个请换行填写').prop('outerHTML'); + var area = $(common_tpl_area).html(rdata['cdn_headers'].join('\n')).prop('outerHTML'); + + content += area; + $('#site_conf .tab-con').html(content); + } else if (typename == 'exclude_extension'){ + + var content = $(common_tpl_tips).html('* 排除的请求不写入网站日志,不统计PV、UV、IP,只累计总请求、总流量数,如需多个请换行填写').prop('outerHTML'); + var area = $(common_tpl_area).html(rdata['exclude_extension'].join('\n')).prop('outerHTML'); + content += area; + $('#site_conf .tab-con').html(content); + } else if (typename == 'exclude_status'){ + var content = $(common_tpl_tips).html('* 排除的请求不写入网站日志,不统计PV、UV、IP,只累计总请求、总流量数,如需多个请换行填写').prop('outerHTML'); + var area = $(common_tpl_area).html(rdata['exclude_status'].join('\n')).prop('outerHTML'); + content += area; + $('#site_conf .tab-con').html(content); + } else if (typename == 'exclude_ip'){ + var txt = '
* 排除的IP不写入网站日志,不统计PV、UV、IP,只累计总请求、总流量数,如需多个请换行填写
\ +
* 支持 192.168.1.1-192.168.1.10格式排除区间IP
' + var content = $(common_tpl_tips).html(txt).prop('outerHTML'); + var area = $(common_tpl_area).html(rdata['exclude_ip'].join('\n')).prop('outerHTML'); + content += area; + $('#site_conf .tab-con').html(content); + } else if (typename == 'record_post_args'){ + var txt = '
记录请求原文说明:HTTP请求原文包括客户端请求详细参数,有助于分析或排查异常请求;
\ +
考虑到HTTP请求原文会占用额外存储空间,默认仅记录500错误请求原文。
' + var content = $(common_tpl_tips).html(txt).prop('outerHTML'); + + var record_post_args = ''; + if (rdata['record_post_args']){ + record_post_args = 'checked'; + } + var record_get_403_args = ''; + if (rdata['record_get_403_args']){ + record_get_403_args = 'checked'; + } + + + var check = '
\ + \ + \ +
'; + content+=check; + + $('#site_conf .tab-con').html(content); + } else if ( typename == 'exclude_url'){ + var txt = '* 排除的请求不写入网站日志,不统计PV、UV、IP,只累计总请求、总流量数' + var content = $(common_tpl_tips).html(txt).prop('outerHTML'); + + var _text = ''; + var _tmp = rdata['exclude_url']; + for(var i = 0; i<10; i++){ + if(typeof _tmp[i] == 'undefined'){ + _tmp[i] = {mode:'regular',url:''} + } + + _text += '\ + \ + \ + \ + \ + '; + } + + var list = '
\ + \ + \ + \ + \ + '+_text+'\ +
排除方式排除路径
\ +
'; + + content += list; + $('#site_conf .tab-con').html(content); + } + }); + }, + yes:function(){ + var select = $('#webstats .tab-nav span'); + var select_pos = 0; + $('#webstats .tab-nav span').each(function(i){ + if ($(this).hasClass('on')){select_pos = i;} + }); + var args = {"site":domain}; + if ( [0,1,2,4].indexOf(select_pos)>-1 ){ + var setting_cdn = $('textarea[name="setting-cdn"]').val(); + // var list = setting_cdn.split('\n') + + if ( select_pos == 0 ){ + args['cdn_headers'] = setting_cdn; + } else if ( select_pos == 1 ){ + args['exclude_extension'] = setting_cdn; + } else if ( select_pos == 2 ){ + args['exclude_status'] = setting_cdn; + } else if ( select_pos == 4 ){ + args['exclude_ip'] = setting_cdn; + } + + wsPost('set_site_conf','', args, function(rdata){ + var rdata = $.parseJSON(rdata.data); + layer.msg(rdata.msg,{icon:rdata.status?1:2}); + }); + } + + if (select_pos == 3 ){ + + var list = ""; + for (var i = 0; i<10; i++) { + var tmp = ""; + var url_type = $('select[name="url_type_'+i+'"]').val(); + var url_val = $('input[name="url_val_'+i+'"]').val(); + + if (url_val != ""){ + list += url_type +'|' + url_val +';'; + } + } + args['exclude_url'] = list; + wsPost('set_site_conf','', args, function(rdata){ + var rdata = $.parseJSON(rdata.data); + layer.msg(rdata.msg,{icon:rdata.status?1:2}); + }); + } + + if (select_pos == 5){ + var record_post_args = $('input[name="record_post_args"]').prop('checked'); + var record_get_403_args = $('input[name="record_get_403_args"]').prop('checked'); + args["record_post_args"] = record_post_args; + args['record_get_403_args'] = record_get_403_args; + wsPost('set_site_conf','', args, function(rdata){ + var rdata = $.parseJSON(rdata.data); + layer.msg(rdata.msg,{icon:rdata.status?1:2}); + }); + } + }, + }); + }); + }); }); } @@ -1146,8 +1337,6 @@ wsPost('get_default_site','',{},function(rdata){ } - - function wsClientStatLogRequest(page){ var args = {}; diff --git a/route/static/app/files.js b/route/static/app/files.js index ef7080b16..e6e06fdb6 100755 --- a/route/static/app/files.js +++ b/route/static/app/files.js @@ -968,11 +968,10 @@ function downloadFile(action){ \ ' }); - fly("dlok"); $("#mUrl").keyup(function(){ - durl = $(this).val() - tmp = durl.split('/') - $("#dfilename").val(tmp[tmp.length-1]) + durl = $(this).val(); + tmp = durl.split('/'); + $("#dfilename").val(tmp[tmp.length-1]); }); } diff --git a/route/static/js/jquery.contextify.min.js.map b/route/static/js/jquery.contextify.min.js.map new file mode 100755 index 000000000..b669dedeb --- /dev/null +++ b/route/static/js/jquery.contextify.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jquery.contextify.js"],"names":["factory","define","amd","jQuery","window","$","Plugin","element","options","this","extend","defaults","_defaults","_name","pluginName","init","items","action","menuId","menuClass","headerClass","dividerClass","before","contextifyId","$window","prototype","data","id","attr","on","e","preventDefault","menu","i","l","length","item","el","divider","addClass","header","html","append","a","find","href","onclick","css","text","currentMenu","replaceWith","windowWidth","width","windowHeight","height","menuWidth","outerWidth","menuHeight","outerHeight","x","clientX","y","clientY","show","parents","hide","destroy","removeAttr","off","remove","fn","each","Object","toString","call"],"mappings":"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","file":"jquery.contextify.min.js"} \ No newline at end of file