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