├── Makefile ├── README.md └── files ├── etc ├── config │ └── qosv4 ├── init.d │ └── qosv4 └── uci-defaults │ └── luci-qosv4 └── usr ├── bin └── qosv4 └── lib └── lua └── luci ├── controller └── qosv4.lua ├── i18n └── qosv4.zh-cn.lmo └── model └── cbi └── qosv4.lua /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2010-2011 OpenWrt.org 3 | # 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | PKG_NAME:=luci-app-qosv4 11 | PKG_VERSION:=1.1f 12 | PKG_RELEASE:=1 13 | 14 | include $(INCLUDE_DIR)/package.mk 15 | 16 | define Package/luci-app-qosv4 17 | SECTION:=LuCI 18 | CATEGORY:=LuCI 19 | SUBMENU:=3. Applications 20 | TITLE:=LuCI Support for QoSv4. 21 | DEPENDS:=+tc +iptables-mod-conntrack +iptables-mod-conntrack-extra +iptables-mod-filter +iptables-mod-imq +iptables-mod-ipopt +iptables-mod-nat +iptables-utils +iptables-mod-imq +kmod-sched 22 | PKGARCH:=all 23 | MAINTAINER:=qq 3341249 24 | endef 25 | 26 | define Package/luci-app-qosv4/description 27 | An agent script that makes qosv4 configuration simple. 28 | endef 29 | 30 | define Build/Compile 31 | endef 32 | 33 | define Package/luci-app-qosv4/postinst 34 | #!/bin/sh 35 | 36 | [ -n "${IPKG_INSTROOT}" ] || { 37 | ( . /etc/uci-defaults/luci-qosv4 ) && rm -f /etc/uci-defaults/luci-qosv4 38 | chmod 755 /etc/init.d/qosv4 >/dev/null 2>&1 39 | /etc/init.d/qosv4 enable >/dev/null 2>&1 40 | sed -i -e '/qos_scheduler/d' /etc/crontabs/root >/dev/null 2>&1 41 | exit 0 42 | } 43 | endef 44 | 45 | define Package/luci-app-qosv4/install 46 | $(CP) ./files/* $(1) 47 | endef 48 | 49 | $(eval $(call BuildPackage,luci-app-qosv4)) 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | luci-app-qosv4 2 | ============== 3 | 4 | 这是应用于openwrt的qos程序,由qq 3341249开发完成,在此上传分享只为方便大家使用与学习 5 | -------------------------------------------------------------------------------- /files/etc/config/qosv4: -------------------------------------------------------------------------------- 1 | 2 | config 'qos_settings' 3 | option 'UP' '100' 4 | option 'DOWN' '500' 5 | option 'UPLOADR' '2' 6 | option 'DOWNLOADR' '2' 7 | option 'UPLOADR2' '1' 8 | option 'UPLOADC2' '5' 9 | option 'DOWNLOADR2' '1' 10 | option 'DOWNLOADC2' '2' 11 | option 'qos_scheduler' '1' 12 | option 'enable' '0' 13 | 14 | config 'qos_ip' 15 | option 'limit_ip' '192.168.1.5' 16 | option 'UPLOADC' '15' 17 | option 'DOWNLOADC' '15' 18 | option 'ip_prio' '5' 19 | option 'enable' '0' 20 | 21 | config 'qos_nolimit_ip' 22 | option 'nolimit_ip' '192.168.1.1' 23 | option 'nolimit_mac' '00:00:00:00:00' 24 | option 'enable' '0' 25 | 26 | config 'transmission_limit' 27 | option 'downlimit' '100' 28 | option 'uplimit' '100' 29 | option 'enable' '0' 30 | -------------------------------------------------------------------------------- /files/etc/init.d/qosv4: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | 3 | START=60 4 | 5 | start(){ 6 | /usr/bin/qosv4 start 7 | } 8 | 9 | stop(){ 10 | /usr/bin/qosv4 stop 11 | } 12 | restart(){ 13 | /usr/bin/qosv4 start 14 | } 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /files/etc/uci-defaults/luci-qosv4: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@qosv4[-1] 5 | add ucitrack qosv4 6 | set ucitrack.@qosv4[-1].init=qosv4 7 | commit ucitrack 8 | EOF 9 | rm -f /tmp/luci-indexcahe 10 | exit 0 11 | -------------------------------------------------------------------------------- /files/usr/bin/qosv4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KeaneWang/luci-app-qosv4/82025621d3d68c653878691e75543f97c9b32bea/files/usr/bin/qosv4 -------------------------------------------------------------------------------- /files/usr/lib/lua/luci/controller/qosv4.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.qosv4", package.seeall) 2 | 3 | function index() 4 | require("luci.i18n") 5 | luci.i18n.loadc("qosv4") 6 | local fs = luci.fs or nixio.fs 7 | if not fs.access("/etc/config/qosv4") then 8 | return 9 | end 10 | 11 | 12 | local page = entry({"admin", "network", "qosv4"}, cbi("qosv4"), "QOSv4") 13 | page.i18n = "qosv4" 14 | page.dependent = true 15 | 16 | 17 | end 18 | -------------------------------------------------------------------------------- /files/usr/lib/lua/luci/i18n/qosv4.zh-cn.lmo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KeaneWang/luci-app-qosv4/82025621d3d68c653878691e75543f97c9b32bea/files/usr/lib/lua/luci/i18n/qosv4.zh-cn.lmo -------------------------------------------------------------------------------- /files/usr/lib/lua/luci/model/cbi/qosv4.lua: -------------------------------------------------------------------------------- 1 | require("luci.tools.webadmin") 2 | 3 | --[[ 4 | config 'qos_settings' 5 | option 'enable' '0' 6 | option 'UP' '100' 7 | option 'DOWN' '500' 8 | option qos_scheduler 1 9 | 10 | config 'qos_ip' 11 | option 'enable' '0' 12 | option 'limit_ip' '192.168.1.5' 13 | option 'UPLOADR' '2' 14 | option 'DOWNLOADR' '2' 15 | option 'UPLOADC' '15' 16 | option 'DOWNLOADC' '15' 17 | option 'UPLOADR2' '1' 18 | option 'UPLOADC2' '5' 19 | option 'DOWNLOADR2' '1' 20 | option 'DOWNLOADC2' '2' 21 | 22 | config 'qos_nolimit_ip' 23 | option 'enable' '0' 24 | option 'limit_ip' '192.168.1.6' 25 | 26 | ]]-- 27 | 28 | local sys = require "luci.sys" 29 | 30 | m = Map("qosv4", translate("qosv4 title","QOSv4"), 31 | translate("qosv4 title desc","qosv4 title desc")) 32 | 33 | s = m:section(TypedSection, "qos_settings", translate("qos goble setting","qos goble setting")) 34 | s.anonymous = true 35 | s.addremove = false 36 | 37 | enable = s:option(Flag, "enable", translate("qos enable", "qos enable")) 38 | enable.default = false 39 | enable.optional = false 40 | enable.rmempty = false 41 | 42 | qos_scheduler = s:option(Flag, "qos_scheduler", translate("qos scheduler enable", "qos scheduler enable"), 43 | translate("qos scheduler desc","qos scheduler desc")) 44 | qos_scheduler.default = false 45 | qos_scheduler.optional = false 46 | qos_scheduler.rmempty = false 47 | 48 | 49 | DOWN = s:option(Value, "DOWN", translate("DOWN speed","DOWN speed"), 50 | translate("DOWN speed desc","DOWN speed desc")) 51 | DOWN.optional = false 52 | DOWN.rmempty = false 53 | 54 | UP = s:option(Value, "UP", translate("UP speed","UP speed"), 55 | translate("UP speed desc","UP speed desc")) 56 | UP.optional = false 57 | UP.rmempty = false 58 | 59 | DOWNLOADR = s:option(Value, "DOWNLOADR", translate("DOWNLOADR speed","DOWNLOADR speed")) 60 | DOWNLOADR.optional = false 61 | DOWNLOADR.rmempty = false 62 | 63 | UPLOADR = s:option(Value, "UPLOADR", translate("UPLOADR speed","UPLOADR speed")) 64 | UPLOADR.optional = false 65 | UPLOADR.rmempty = false 66 | 67 | DOWNLOADR2 = s:option(Value, "DOWNLOADR2", translate("DOWNLOADR2 speed","DOWNLOADR2 speed")) 68 | DOWNLOADR2.optional = false 69 | DOWNLOADR2.rmempty = false 70 | 71 | UPLOADR2 = s:option(Value, "UPLOADR2", translate("UPLOADR2 speed","UPLOADR2 speed")) 72 | UPLOADR2.optional = false 73 | UPLOADR2.rmempty = false 74 | 75 | DOWNLOADC2 = s:option(Value, "DOWNLOADC2", translate("DOWNLOADC2 speed","DOWNLOADC2 speed")) 76 | DOWNLOADC2.optional = false 77 | DOWNLOADC2.rmempty = false 78 | 79 | UPLOADC2 = s:option(Value, "UPLOADC2", translate("UPLOADC2 speed","UPLOADC2 speed")) 80 | UPLOADC2.optional = false 81 | UPLOADC2.rmempty = false 82 | 83 | 84 | 85 | 86 | 87 | s = m:section(TypedSection, "qos_ip", translate("qos black ip","qos black ip")) 88 | s.template = "cbi/tblsection" 89 | s.anonymous = true 90 | s.addremove = true 91 | 92 | enable = s:option(Flag, "enable", translate("enable", "enable")) 93 | enable.default = false 94 | enable.optional = false 95 | enable.rmempty = false 96 | 97 | 98 | 99 | limit_ip = s:option(Value, "limit_ip", translate("limit_ip","limit_ip")) 100 | limit_ip.rmempty = true 101 | luci.tools.webadmin.cbi_add_knownips(limit_ip) 102 | 103 | 104 | DOWNLOADC = s:option(Value, "DOWNLOADC", translate("DOWNLOADC speed","DOWNLOADC speed")) 105 | DOWNLOADC.optional = false 106 | DOWNLOADC.rmempty = false 107 | 108 | UPLOADC = s:option(Value, "UPLOADC", translate("UPLOADC speed","UPLOADC speed")) 109 | UPLOADC.optional = false 110 | UPLOADC.rmempty = false 111 | 112 | ip_prio = s:option(Value, "ip_prio", translate("ip prio","ip prio"), 113 | translate("ip prio desc"," default 5 ")) 114 | ip_prio.optional = false 115 | ip_prio.rmempty = false 116 | 117 | 118 | s = m:section(TypedSection, "transmission_limit", translate("transmission limit","transmission limit")) 119 | s.template = "cbi/tblsection" 120 | s.anonymous = true 121 | s.addremove = false 122 | 123 | enable = s:option(Flag, "enable", translate("enable", "enable")) 124 | enable.default = false 125 | enable.optional = false 126 | enable.rmempty = false 127 | 128 | downlimit= s:option(Value, "downlimit", translate("downlimit speed","downlimit speed")) 129 | downlimit.optional = false 130 | downlimit.rmempty = false 131 | 132 | uplimit= s:option(Value, "uplimit", translate("uplimit speed","uplimit speed")) 133 | uplimit.optional = false 134 | uplimit.rmempty = false 135 | 136 | 137 | s = m:section(TypedSection, "qos_nolimit_ip", translate("qos white","qos white")) 138 | s.template = "cbi/tblsection" 139 | s.anonymous = true 140 | s.addremove = true 141 | 142 | enable = s:option(Flag, "enable", translate("enable", "enable")) 143 | enable.default = false 144 | enable.optional = false 145 | enable.rmempty = false 146 | 147 | nolimit_mac= s:option(Value, "nolimit_mac", translate("white mac","white mac")) 148 | nolimit_mac.rmempty = true 149 | 150 | nolimit_ip= s:option(Value, "nolimit_ip", translate("white ip","white ip")) 151 | nolimit_ip.rmempty = true 152 | 153 | 154 | sys.net.arptable(function(entry) 155 | nolimit_ip:value(entry["IP address"]) 156 | nolimit_mac:value( 157 | entry["HW address"], 158 | entry["HW address"] .. " (" .. entry["IP address"] .. ")" 159 | ) 160 | end) 161 | 162 | return m 163 | 164 | --------------------------------------------------------------------------------