【LEDE】树莓派上玩LEDE终极指南-86-OpenWrt增加踢人功能

欢迎您!
返回首页 最后修改于:2018-03-27 20:03:12 修改

原理

 
   
  1. ubus call hostapd.wlan1 del_client "{'addr':'AC:0D:1B:D0:60:29', 'reason':5, 'deauth':false, 'ban_time':0}"

步骤

  1. 修改/usr/lib/lua/luci/view/admin_status/index.htm

     
         
    1. @line 809
    2. <fieldset class="cbi-section">
    3. <legend><%:Associated Stations%></legend>
    4. <table class="cbi-section-table valign-middle" id="wifi_assoc_table">
    5. <tr class="cbi-section-table-titles">
    6. <th class="cbi-section-table-cell">&#160;</th>
    7. <th class="cbi-section-table-cell"><%:Network%></th>
    8. <th class="cbi-section-table-cell"><%:MAC-Address%></th>
    9. <th class="cbi-section-table-cell"><%:Host%></th>
    10. <th class="cbi-section-table-cell"><%:Signal%> / <%:Noise%></th>
    11. <th class="cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></th>
    12. :point_right:<th class="cbi-section-table-cell">Kick</th>:point_left:
    13. </tr>
    14. <tr class="cbi-section-table-row">
    15. <td colspan="6"><em><br /><%:Collecting data...%></em></td>
    16. </tr>
    17. </table>
    18. </fieldset>
     
         
    1. @file end
    2. <script type="text/javascript">//<![CDATA[
    3. function kick_client(iface, mac) {
    4. (new XHR()).post('<%=url('admin/status/overview/kick')%>/', { token: '<%=token%>',
    5. iface: iface,
    6. mac: mac },
    7. function(x)
    8. {
    9. }
    10. );
    11. }
    12. //]]></script>
     
         
    1. @line 602
    2. tr.insertCell(-1).innerHTML = String.format(
    3. '<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>',
    4. assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise,
    5. icon,
    6. assoclist[i].signal, assoclist[i].noise
    7. );
    8. tr.insertCell(-1).innerHTML = wifirate(assoclist[i], true).nobr() + '<br />' + wifirate(assoclist[i], false).nobr();
    9. :point_right:tr.insertCell(-1).innerHTML = String.format("<input class='cbi-button cbi-input-remove' type='button' value='Kick' onclick='kick_client(\"%s\", \"%s\")' />", assoclist[i].ifname, assoclist[i].bssid):point_left:
  2. 修改/usr/lib/lua/luci/controller/admin/status.lua

     
         
    1. function index()
    2. entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true
    3. entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)
    4. :point_right:entry({"admin", "status", "overview", "kick"}, post("act_kick")).leaf = true:point_left:
    5. .....
    6. end
    7.  
    8. -- 不要忘记增加这个方法,这个方法是踢人的!
    9. function act_kick()
    10. local iface = luci.http.formvalue("iface")
    11. local mac = luci.http.formvalue("mac")
    12. if iface and mac then
    13. local cmd = string.format("ubus call hostapd.%s del_client \"{'addr':'%s', 'reason':5, 'deauth':false, 'ban_time':0}\"", iface, mac)
    14. luci.sys.call(cmd)
    15. end
    16. luci.http.status(200, "OK")
    17. end
  3. 重启OpenWrt
    踢人效果图

    效果图

猜你喜欢

转载自blog.csdn.net/wang805447391/article/details/80928820