Skip to content

Commit

Permalink
1.Support i18n 2.add English feature file,support filtering youtube,f…
Browse files Browse the repository at this point in the history
…acebook,etc.
  • Loading branch information
derry committed Aug 31, 2021
1 parent d073dd9 commit 04b7013
Show file tree
Hide file tree
Showing 16 changed files with 288 additions and 121 deletions.
7 changes: 1 addition & 6 deletions luci-app-oaf/luasrc/controller/appfilter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ function index()
end

local page
--hide save button
page = entry({"admin", "network", "appfilter"}, arcombine(cbi("appfilter/appfilter"), cbi("appfilter/dev_status", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true})), _("appfilter"), 100)
page = entry({"admin", "network", "appfilter"}, arcombine(cbi("appfilter/appfilter"), cbi("appfilter/dev_status", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true})), _("App Filter"), 100)

page.leaf = true
page.subindex = true

--page.dependent = true

page = entry({"admin", "network", "user_status"}, call("user_status"), nil)
page.leaf = true

Expand Down Expand Up @@ -114,8 +111,6 @@ function user_status()
hostname=get_hostname_by_mac(user_array[i].mac),
appid=visit_array[j].appid,
appname=get_app_name_by_id(visit_array[j].appid),
--total_num=visit_array[j].total_num,
--drop_num=visit_array[j].drop_num,
total_num=0,
drop_num=0,
latest_action=visit_array[j].latest_action,
Expand Down
73 changes: 30 additions & 43 deletions luci-app-oaf/luasrc/model/cbi/appfilter/appfilter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,56 +14,43 @@ local SYS = require "luci.sys"
local m, s

m = Map("appfilter",
translate("appfilter"),
translate("App Filter"),
translate(""))

s = m:section(TypedSection, "global", translate("Basic Settings"))
s:option(Flag, "enable", translate("Enable App Filter"),translate(""))
um = s:option(DummyValue, "")
um.template="cbi/oaf_dvalue"
local fullcone=SYS.exec("uci get firewall.@defaults[0].fullcone");
local bbr=SYS.exec("uci get flowoffload.@flow[0].bbr");
local flow_offloading=SYS.exec("uci get flowoffload.@flow[0].flow_offloading");
if string.match(fullcone, "1") or string.match(bbr, "1") or string.match(flow_offloading, "1") then
um.value="运行环境检测失败,请先关闭ACC加速模块!"
end
s.anonymous = true

local rule_count=0
local version=""
if nixio.fs.access("/etc/appfilter/feature.cfg") then
rule_count=tonumber(SYS.exec("cat /etc/appfilter/feature.cfg | wc -l"))
version=SYS.exec("cat /etc/appfilter/feature.cfg |grep \"#version\" | awk '{print $2}'")
if nixio.fs.access("/tmp/feature.cfg") then
rule_count=tonumber(SYS.exec("cat /tmp/feature.cfg | wc -l"))
version=SYS.exec("cat /tmp/feature.cfg |grep \"#version\" | awk '{print $2}'")
end
local display_str="<strong>当前版本: </strong>"..version.."<br><strong>特征码个数:</strong> "..rule_count.."<br><strong> 下载地址:</strong><a href=\"https://destan19.github.io\">https://destan19.github.io</a>"
s = m:section(TypedSection, "feature", translate("特征库更新"), display_str )


local display_str="<strong>"..translate("Current Version")..": </strong>"..version.."<br><strong>"..translate("App Feature Num")..":</strong> "..rule_count
s = m:section(TypedSection, "feature", translate("Update feature"), display_str )

fu = s:option(FileUpload, "")
fu.template = "cbi/oaf_upload"
s.anonymous = true

um = s:option(DummyValue, "rule_data")
um.template="cbi/oaf_dvalue"

s=m:section(TypedSection,"time",translate("时间控制")) s.anonymous = true
hv = s:option(Value, "start_time", translate("开始时间")) hv.default="00:00"
s=m:section(TypedSection,"time",translate("Time Setting")) s.anonymous = true
hv = s:option(Value, "start_time", translate("Start Time")) hv.default="00:00"
hv.optional=false
hv = s:option(Value, "end_time", translate("结束时间")) hv.default="23:59"
hv = s:option(Value, "end_time", translate("End Time")) hv.default="23:59"
hv.optional=false days = s:option(MultiValue, "days", "", translate(""))
days.widget="checkbox" days.size=10
days:value("0", "周日");
days:value("1", "周一");
days:value("2", "周二");
days:value("3", "周三");
days:value("4", "周四");
days:value("5", "周五");
days:value("6", "周六");

--um.value =rule_count .. " " .. translate("Records").. " "..version




days:value("0", translate("Sun"));
days:value("1", translate("Mon"));
days:value("2", translate("Tue"));
days:value("3", translate("Wed"));
days:value("4", translate("Thur"));
days:value("5", translate("Fri"));
days:value("6", translate("Sat"));

s = m:section(TypedSection, "appfilter", translate("App Filter Rules"))
s.anonymous = true
Expand All @@ -80,13 +67,9 @@ if class_fd then
end

class = path:match("([^/]+)%.class$")
-- add a tab
s:tab(class, translate(class))
-- multi value option
apps = s:taboption(class, MultiValue, class.."apps", translate(""))
apps.rmempty=true
--apps.delimiter=";"
-- select
apps.widget="checkbox"
apps.size=10

Expand Down Expand Up @@ -121,9 +104,6 @@ if class_fd then
class_fd:close()
end




function get_hostname_by_mac(dst_mac)
leasefile="/tmp/dhcp.leases"
local fd = io.open(leasefile, "r")
Expand All @@ -143,6 +123,7 @@ function get_hostname_by_mac(dst_mac)
fd:close()
return nil
end

function get_cmd_result(command)
local fd
local result
Expand Down Expand Up @@ -213,14 +194,22 @@ http.setfilehandler(
local line=fd2:read("*l");
fd2:close()
local ret=string.match(line, "#version")
local lang=m.uci:get_all("luci.main.lang")
local feature_file=""
if "" == lang or "auto" == lang then
feature_file="/etc/appfilter/feature.cfg"
else
feature_file="/etc/appfilter/feature_"..lang..".cfg"
end
if ret ~= nil then
local cmd="cp /tmp/upload/"..meta.file.." /etc/appfilter/feature.cfg";
local cmd="cp /tmp/upload/"..meta.file.." "..feature_file;
os.execute(cmd);
os.execute("chmod 666 "..feature_file);
os.execute("rm /tmp/appfilter -fr");
luci.sys.exec("/etc/init.d/appfilter restart &");
um.value = translate("更新成功,请刷新页面!")
um.value = translate("Update the feature file successfully, please refresh the page")
else
um.value = translate("更新失败,格式错误!")
um.value = translate("Failed to update feature file, format error")
end
os.execute("rm /tmp/upload/* -fr");
end
Expand All @@ -236,6 +225,4 @@ if luci.http.formvalue("upload") then
elseif luci.http.formvalue("download") then
Download()
end


return m
2 changes: 1 addition & 1 deletion luci-app-oaf/luasrc/model/cbi/appfilter/dev_status.lua
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ local jsc = require "luci.jsonc"
local m, s
arg[1] = arg[1] or ""
m = Map("appfilter",
translate("上网统计("..arg[1]..")"),
translate("Data Statistics").."("..arg[1]..")",
translate(""))

local v
Expand Down
50 changes: 24 additions & 26 deletions luci-app-oaf/luasrc/view/admin_network/dev_status.htm
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@
var total_time_str;

if (hour > 0)
total_time_str=hour + "小时" + min + ""
total_time_str=hour + "<%:h%>" + min + "<%:m%>"
else{
if (min == 0 && seconds2 != 0)
min = 1;
total_time_str=min + ""
total_time_str=min + "<%:m%>"
}
return total_time_str;
}
Expand All @@ -82,7 +82,7 @@
option = {
title: [
{
text: 'APP时间统计',
text: "<%:App Time Statistics%>",
textStyle: {
fontSize: 16,
color: "black"
Expand Down Expand Up @@ -110,8 +110,8 @@
var total_time = get_display_time(parms.data.value);
var str= parms.seriesName+"</br>"+
parms.marker+""+parms.data.legendname+"</br>"+
"时间:"+ total_time+"</br>"+
"占比:"+ parms.percent+"%";
"<%:Visit Time%>: "+ total_time+"</br>"+
"<%:Percentage%>: "+ parms.percent+"%";
return str ;
}
},
Expand All @@ -128,11 +128,11 @@
},
series: [
{
name: "访问时间",
name: "<%:Visit Time%>",
type:'pie',
center: ['35%', '50%'],
radius: ['40%', '65%'],
clockwise: false, //饼图的扇区是否是顺时针排布
clockwise: false,
avoidLabelOverlap: false,
label: {
normal: {
Expand Down Expand Up @@ -164,8 +164,6 @@
var m2R2Data=new Array()
var total_time=0
for(var i = 0; i < data.length; i++){
console.log("begin display222.");

var dev_obj = data[i];
if (dev_obj.visit_time == 0)
continue;
Expand All @@ -186,7 +184,7 @@
option = {
title: [
{
text: 'APP分类时间统计',
text: "<%:App classification time statistics%>",
textStyle: {
fontSize: 16,
color: "black"
Expand All @@ -213,9 +211,8 @@
formatter:function (parms){
var total_time = get_display_time(parms.data.value);
var str= parms.seriesName+"</br>"+
parms.marker+""+parms.data.legendname+"</br>"+
"时间:"+ total_time +"</br>"+
"占比:"+ parms.percent+"%";
parms.marker+""+parms.data.legendname+"</br>"+"<%:Visit Time%>: "+ total_time +"</br>" +
"<%:Percentage%>: "+ parms.percent+"%";
return str ;
}
},
Expand All @@ -232,11 +229,11 @@
},
series: [
{
name:'访问时间',
name:"<%:Visit Time%>",
type:'pie',
center: ['35%', '50%'],
radius: ['40%', '65%'],
clockwise: false, //饼图的扇区是否是顺时针排布
clockwise: false,
avoidLabelOverlap: false,
label: {
normal: {
Expand Down Expand Up @@ -289,12 +286,12 @@
{
var action_status=""
if(st[i].latest_action == 1)
action_status="已过滤"
action_status="<%:Filtered%>"
else
action_status="未过滤"
action_status="<%:Unfiltered%>"
var hostname=""
if(st[i].hostname == "" || st[i].hostname == "*"){
hostname="?";
hostname="--";
}
else{
hostname=st[i].hostname;
Expand All @@ -313,11 +310,11 @@
total_time_str="-"
else {
if (hour > 0)
total_time_str=hour + "小时" + min + ""
total_time_str=hour + "<%:h%>" + min + "<%:m%>"
else{
if (min == 0)
min = 1;
total_time_str=min + ""
total_time_str=min + "<%:m%>"
}
}

Expand All @@ -331,19 +328,20 @@

//]]></script>


<fieldset class="cbi-section">
<div id="display">
<div id="main" style="width: 500px;height:300px;"></div>
<div id="main2" style="width: 400px;height:300px;"></div>
</div>
<table class="imagetable" id="user_status_table">
<tr>
<th ><%:App%></th>
<th ><%:主机名%></th>
<th ><%:mac地址%></th>
<th><%:开始时间%></th>
<th><%:访问时长%></th>
<th><%:过滤状态%></th>
<th ><%:App Name%></th>
<th ><%:Hostname%></th>
<th ><%:Mac%></th>
<th><%:Start Time%></th>
<th><%:Visit Time%></th>
<th><%:Filter Status%></th>
</tr>
<tr>
<td colspan="8"><em><br /><%:Collecting data...%></em></td>
Expand Down
20 changes: 10 additions & 10 deletions luci-app-oaf/luasrc/view/admin_network/user_status.htm
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
{
var hostname=""
if(devlist[i].hostname == "" || devlist[i].hostname == "*"){
hostname="?";
hostname="--";
}
else{
hostname=devlist[i].hostname;
Expand All @@ -65,9 +65,9 @@
}
tr.insertCell(-1).innerHTML = app_list_str;
if (devlist[i].online == 1)
tr.insertCell(-1).innerHTML = "在线";
tr.insertCell(-1).innerHTML = "<%:Online%>";
else
tr.insertCell(-1).innerHTML = "离线";
tr.insertCell(-1).innerHTML = "<%:Offline%>";
}
}
}
Expand All @@ -77,15 +77,15 @@


<fieldset class="cbi-section">
<legend><%:终端列表%></legend>
<legend><%:Client List%></legend>
<table class="imagetable" id="user_status_table">
<tr>
<th ><%:编号%></th>
<th ><%:主机名%></th>
<th ><%:mac地址%></th>
<th ><%:ip地址%></th>
<th><%:常用APP(TOP5)%></th>
<th><%:在线状态%></th>
<th ><%:Id%></th>
<th ><%:Hostname%></th>
<th ><%:Mac%></th>
<th ><%:Ip%></th>
<th><%:Common App(TOP5)%></th>
<th><%:Online Status%></th>
</tr>
<tr>
<td colspan="8"><em><br /><%:Collecting data...%></em></td>
Expand Down
2 changes: 1 addition & 1 deletion luci-app-oaf/luasrc/view/cbi/oaf_upload.htm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%+cbi/valueheader%>
<label class="cbi-value" style="display:inline-block; width: 130px" for="ulfile"><%:选择本地特征库文件:%></label>
<label class="cbi-value" style="display:inline-block; width: 130px" for="ulfile"><%:Select feature file:%></label>
<input class="cbi-input-file" style="width: 500px" type="file" id="ulfile" name="ulfile" />
<input type="submit" class="cbi-button cbi-input-apply" name="upload" value="<%:Upload%>" />
<%+cbi/valuefooter%>
Loading

0 comments on commit 04b7013

Please sign in to comment.