diff --git a/luci-app-eqosplus b/luci-app-eqosplus new file mode 160000 index 00000000..c7ea61c9 --- /dev/null +++ b/luci-app-eqosplus @@ -0,0 +1 @@ +Subproject commit c7ea61c971f123b59282131ea5b3438e39118dae diff --git a/luci-app-eqosplus/.github/workflows/main.yml b/luci-app-eqosplus/.github/workflows/main.yml deleted file mode 100644 index 3258ec29..00000000 --- a/luci-app-eqosplus/.github/workflows/main.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Build - -on: - push: - tags: - - v* - -jobs: - build: - name: Build ${{ matrix.arch }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - arch: - - aarch64_generic - - i386_pentium-mmx - - loongarch64_generic - - mips_mips32 - - mipsel_24kc - - mipsel_mips32 - - x86_64 - steps: - - uses: actions/checkout@main - with: - fetch-depth: 0 - - name: Building packages - uses: sbwml/openwrt-gh-action-sdk@go1.24 - env: - ARCH: ${{ matrix.arch }}-openwrt-24.10 - FEEDNAME: packages_ci - PACKAGES: luci-app-eqosplus - NO_REFRESH_CHECK: true - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.arch }} - path: bin/packages/${{ matrix.arch }}/packages_ci/*.ipk - - - name: Upload packages - uses: ncipollo/release-action@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - allowUpdates: true - replacesArtifacts: true - artifacts: "bin/packages/${{ matrix.arch }}/packages_ci/*.ipk" diff --git a/luci-app-eqosplus/LICENSE b/luci-app-eqosplus/LICENSE deleted file mode 100644 index 574c7ac3..00000000 --- a/luci-app-eqosplus/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 sirpdboy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/luci-app-eqosplus/Makefile b/luci-app-eqosplus/Makefile deleted file mode 100644 index 91e501b7..00000000 --- a/luci-app-eqosplus/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2006-2017 OpenWrt.org# -# Copyright (C) 2022-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -THEME_NAME:=eqosplus -PKG_NAME:=luci-app-$(THEME_NAME) - -PKG_LICENSE:=Apache-2.0 - -LUCI_TITLE:=LuCI support for eqosplus. -LUCI_DESCRIPTION:=LuCI support for Easy eqosplus(Support speed limit based on IP address). -LUCI_DEPENDS:=+ip-full +tc +nftables +bc +kmod-ifb -LUCI_PKGARCH:=all - -PKG_VERSION:=1.3.0 -PKG_RELEASE:=20251128 -PKG_MAINTAINER:=sirpdboy - -define Build/Compile -endef - -define Package/$(PKG_NAME)/postinst -#!/bin/sh -rm -f /tmp/luci-* -endef - -define Package/$(PKG_NAME)/conffiles -/etc/config/eqosplus -endef - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/luci-app-eqosplus/README.md b/luci-app-eqosplus/README.md deleted file mode 100644 index d2707f57..00000000 --- a/luci-app-eqosplus/README.md +++ /dev/null @@ -1,91 +0,0 @@ -![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - -

-
luci-app-eqosplus
-

- -

-OpenWrt -Chrome -Safari -Firefox - GitHub release -Downloads -

- -[中文] | [English](README.md) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg) - -Please read this page carefully, which includes precautions and instructions on how to use it. - -## Enhanced version of EQOS with timed speed limit and added features such as timed limit. - -### Method for downloading source code: - - ```Brach - # downloading - git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus - make menuconfig - ``` -### Configuration Menu - ```Brach - make menuconfig - # find LuCI -> Applications, select luci-app-eqosplus, save and exit - ``` -### compile - - ```Brach - # compile - make package/luci-app-eqosplus/compile V=s - ``` - - -## describe - -- luci-app-eqosplus : https://github.com/sirpdboy/luci-app-eqosplus - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明2.jpg) - - -## interface - -![screenshots](./doc/eqosplus0.png) - -![screenshots](./doc/eqosplus1.png) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus.png) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus2.png) - - -# My other project - -- Watch Dog : https://github.com/sirpdboy/luci-app-watchdog -- Net Speedtest : https://github.com/sirpdboy/luci-app-netspeedtest -- Task Plan : https://github.com/sirpdboy/luci-app-taskplan -- Power Off Device : https://github.com/sirpdboy/luci-app-poweroffdevice -- OpentoPD Theme : https://github.com/sirpdboy/luci-theme-opentopd -- KuCat Theme : https://github.com/sirpdboy/luci-theme-kucat -- KuCat Theme Config : https://github.com/sirpdboy/luci-app-kucat-config -- NFT Time Control : https://github.com/sirpdboy/luci-app-timecontrol -- Parent Control: https://github.com/sirpdboy/luci-theme-parentcontrol -- Eqos Plus: https://github.com/sirpdboy/luci-app-eqosplus -- Advanced : https://github.com/sirpdboy/luci-app-advanced -- ddns-go : https://github.com/sirpdboy/luci-app-ddns-go -- Advanced Plus): https://github.com/sirpdboy/luci-app-advancedplus -- Net Wizard: https://github.com/sirpdboy/luci-app-netwizard -- Part Exp: https://github.com/sirpdboy/luci-app-partexp -- Lukcy: https://github.com/sirpdboy/luci-app-lukcy - -## HELP - -| 图飞了 | 图飞了 | -| :-----------------: | :-------------: | -|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) | - - - no - - -![hello](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TGGroup-ClickJoin-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) diff --git a/luci-app-eqosplus/README_CN.md b/luci-app-eqosplus/README_CN.md deleted file mode 100644 index 8da16627..00000000 --- a/luci-app-eqosplus/README_CN.md +++ /dev/null @@ -1,109 +0,0 @@ -![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - -

-
luci-app-eqosplus
-

- -

- - - - -

- -[中文] | [English](README.md) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg) - -请 **认真阅读完毕** 本页面,本页面包含注意事项和如何使用。 - -## 功能说明: - -### 定时限速1.2.2版 -#### 2023.7.19 定时限速1.2.2:增加更多日期:工作日和休息日,自定义日期1,2,3中间用逗号分隔;加入MAC地址限速,从此不用担心IPV6和IPV4的限速问题。 - -### 定时限速1.0版 -#### 2022.12.24 定时限速在eqos的加强版,加入定时限制等功能。 - -## 编译使用方法 [![](https://img.shields.io/badge/-编译使用方法-F5F5F5.svg)](#编译使用方法-) - -将luci-app-eqosplus添加至 LEDE/OpenWRT 源码的方法。 - -### 下载源码方法一: -编辑源码文件夹根目录feeds.conf.default并加入如下内容: - -```Brach - # feeds获取源码: - src-git eqosplus https://github.com/sirpdboy/luci-app-eqosplus - ``` - ```Brach - # 更新feeds,并安装主题: - scripts/feeds update eqosplus - scripts/feeds install luci-app-eqosplus - ``` - -### 下载源码方法: - ```Brach - # 下载源码 - git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus - make menuconfig - ``` -### 配置菜单 - ```Brach - make menuconfig - # 找到 LuCI -> Applications, 选择 luci-app-eqosplus, 保存后退出。 - ``` -### 编译 - ```Brach - # 编译固件 - make package/luci-app-eqosplus/compile V=s - ``` - -## 说明 [![](https://img.shields.io/badge/-说明-F5F5F5.svg)](#说明-) - -源码来源:https://github.com/sirpdboy/luci-app-eqosplus - - -- 你可以随意使用其中的源码,但请注明出处。 - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明2.jpg) - -## 界面 - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus.png) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus2.png) - -# My other project - -- 路由安全看门狗 :https://github.com/sirpdboy/luci-app-watchdog -- 网络速度测试 :https://github.com/sirpdboy/luci-app-netspeedtest -- 计划任务插件(原定时设置) : https://github.com/sirpdboy/luci-app-taskplan -- 关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice -- opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd -- kucat酷猫主题: https://github.com/sirpdboy/luci-theme-kucat -- kucat酷猫主题设置工具: https://github.com/sirpdboy/luci-app-kucat-config -- NFT版上网时间控制插件: https://github.com/sirpdboy/luci-app-timecontrol -- 家长控制: https://github.com/sirpdboy/luci-theme-parentcontrol -- 定时限速: https://github.com/sirpdboy/luci-app-eqosplus -- 系统高级设置 : https://github.com/sirpdboy/luci-app-advanced -- ddns-go动态域名: https://github.com/sirpdboy/luci-app-ddns-go -- 进阶设置(系统高级设置+主题设置kucat/agron/opentopd): https://github.com/sirpdboy/luci-app-advancedplus -- 网络设置向导: https://github.com/sirpdboy/luci-app-netwizard -- 一键分区扩容: https://github.com/sirpdboy/luci-app-partexp -- lukcy大吉: https://github.com/sirpdboy/luci-app-lukcy - -## 捐助 - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明3.jpg) - -| 图飞了 | 图飞了 | -| :-----------------: | :-------------: | -|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) | - - - 图飞了 - - -![](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - diff --git a/luci-app-eqosplus/doc/eqosplus0.png b/luci-app-eqosplus/doc/eqosplus0.png deleted file mode 100644 index 978f4abd..00000000 Binary files a/luci-app-eqosplus/doc/eqosplus0.png and /dev/null differ diff --git a/luci-app-eqosplus/doc/eqosplus1.png b/luci-app-eqosplus/doc/eqosplus1.png deleted file mode 100644 index c603fcda..00000000 Binary files a/luci-app-eqosplus/doc/eqosplus1.png and /dev/null differ diff --git a/luci-app-eqosplus/luasrc/controller/eqosplus.lua b/luci-app-eqosplus/luasrc/controller/eqosplus.lua deleted file mode 100644 index cbe01b70..00000000 --- a/luci-app-eqosplus/luasrc/controller/eqosplus.lua +++ /dev/null @@ -1,19 +0,0 @@ -module("luci.controller.eqosplus", package.seeall) --- Copyright 2022-2023 sirpdboy -function index() - if not nixio.fs.access("/etc/config/eqosplus") then return end - entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false - - local e = entry({"admin", "control", "eqosplus"}, cbi("eqosplus"), _("Eqosplus"), 10) - e.dependent=false - e.acl_depends = { "luci-app-eqosplus" } - entry({"admin", "control", "eqosplus", "status"}, call("act_status")).leaf = true -end - -function act_status() - local sys = require "luci.sys" - local e = {} - e.status = sys.call(" busybox ps -w | grep eqosplus | grep -v grep >/dev/null ") == 0 - luci.http.prepare_content("application/json") - luci.http.write_json(e) -end diff --git a/luci-app-eqosplus/luasrc/model/cbi/eqosplus.lua b/luci-app-eqosplus/luasrc/model/cbi/eqosplus.lua deleted file mode 100644 index 32c3433c..00000000 --- a/luci-app-eqosplus/luasrc/model/cbi/eqosplus.lua +++ /dev/null @@ -1,190 +0,0 @@ --- Copyright 2022-2023 sirpdboy --- Licensed to the public under the Apache License 2.0. -local sys = require "luci.sys" -local ifaces = sys.net:devices() -local WADM = require "luci.tools.webadmin" -local ipc = require "luci.ip" -local a, t, e - -a = Map("eqosplus", translate("Network speed limit")) -a.description = translate("Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second.") -a.template = "eqosplus/index" - -t = a:section(TypedSection, "eqosplus") -t.anonymous = true - -e = t:option(DummyValue, "eqosplus_status", translate("Status")) -e.template = "eqosplus/eqosplus" -e.value = translate("Collecting data...") - - -ipi = t:option(ListValue, "ifname", translate("Interface"), translate("Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode")) -ipi.default = "1" -ipi:value(1,translate("Automatic settings")) -ipi:value("br-lan", translate("br-lan (LAN Bridge)")) -local function get_wan_interfaces() - local result = {} - local ubus = require "ubus" - - local conn = ubus.connect() - if not conn then - return result - end - - local network_status = conn:call("network.interface", "dump", {}) - for _, iface in ipairs(network_status.interface) do - if iface.interface:match("^wan") or iface.interface:match("^pppoe") or iface.proto == "pppoe" then - local dev = iface.l3_device or iface.device - if dev then - table.insert(result, { - name = dev, - proto = iface.proto, - logical_name = iface.interface - }) - end - end - end - - conn:close() - return result -end - -local wan_ifaces = get_wan_interfaces() -for _, iface in ipairs(wan_ifaces) do - ipi:value(iface.name, translate(iface.name) .. (iface.proto == "pppoe" and " (PPPoE)" or " (WAN)")) -end - -t = a:section(TypedSection, "device") -t.template = "cbi/tblsection" -t.anonymous = true -t.addremove = true - -comment = t:option(Value, "comment", translate("Comment")) -comment.size = 8 - -e = t:option(Flag, "enable", translate("Enabled")) -e.rmempty = false -e.size = 4 - -ip = t:option(Value, "mac", translate("IP/MAC")) -ip.size = 8 - -local function get_devices() - local devices = {} - local seen_ips = {} - local ubus = require "ubus" - local conn = ubus.connect() - - local function get_hostname(ip) - local f = io.popen("nslookup "..ip.." 2>/dev/null | grep 'name =' | cut -d'=' -f2 | sed 's/\\.$//'") - if f then - local name = f:read("*l") - f:close() - if name and name ~= "" then - return name:match("^%s*(.-)%s*$") - end - end - local leases_file = io.open("/tmp/dhcp.leases", "r") - if leases_file then - for line in leases_file:lines() do - local mac, ip_lease, _, hostname = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+(%S+)") - if ip_lease == ip and hostname ~= "*" then - leases_file:close() - return hostname - end - end - leases_file:close() - end - return "unknown" - end - if conn then - local leases = conn:call("dhcp", "ipv4leases", {}) or {} - for _, lease in ipairs(leases) do - if lease.ipaddr and lease.mac then - local hostname = lease.hostname or get_hostname(lease.ipaddr) - devices[#devices+1] = { - ip = lease.ipaddr, - mac = lease.mac:upper(), - hostname = hostname, - display = string.format("%s (%s) - %s", lease.ipaddr, lease.mac:upper(), hostname) - } - seen_ips[lease.ipaddr] = true - end - end - conn:close() - end - local arp_cmd = io.popen("ip -4 neigh show dev br-lan 2>/dev/null") - if arp_cmd then - for line in arp_cmd:lines() do - local ip_addr, mac = line:match("^(%S+)%s+.+%s+(%S+)%s+") - if ip_addr and mac and mac ~= "00:00:00:00:00:00" and not seen_ips[ip_addr] then - mac = mac:upper() - local hostname = get_hostname(ip_addr) - devices[#devices+1] = { - ip = ip_addr, - mac = mac, - hostname = hostname, - display = string.format("%s (%s) - %s", ip_addr, mac, hostname) - } - seen_ips[ip_addr] = true - end - end - arp_cmd:close() - end - table.sort(devices, function(a, b) return a.ip < b.ip end) - return devices -end - -local devices = get_devices() -for _, dev in ipairs(devices) do - ip:value(dev.ip, dev.display) -end -dl = t:option(Value, "download", translate("Downloads")) -dl.default = '0.1' -dl.size = 4 - -ul = t:option(Value, "upload", translate("Uploads")) -ul.default = '0.1' -ul.size = 4 -function validate_time(self, value, section) - local hh, mm, ss - hh, mm, ss = string.match (value, "^(%d?%d):(%d%d)$") - hh = tonumber (hh) - mm = tonumber (mm) - if hh and mm and hh <= 23 and mm <= 59 then - return value - else - return nil, "Time HH:MM or space" - end -end - -e = t:option(Value, "timestart", translate("Start control time")) -e.placeholder = '00:00' -e.default = '00:00' -e.validate = validate_time -e.rmempty = true -e.size = 4 - -e = t:option(Value, "timeend", translate("Stop control time")) -e.placeholder = '00:00' -e.default = '00:00' -e.validate = validate_time -e.rmempty = true -e.size = 4 - -week=t:option(Value,"week",translate("Week Day(1~7)")) -week.rmempty = true -week:value('0',translate("Everyday")) -week:value(1,translate("Monday")) -week:value(2,translate("Tuesday")) -week:value(3,translate("Wednesday")) -week:value(4,translate("Thursday")) -week:value(5,translate("Friday")) -week:value(6,translate("Saturday")) -week:value(7,translate("Sunday")) -week:value('1,2,3,4,5',translate("Workday")) -week:value('6,7',translate("Rest Day")) -week.default='0' -week.size = 6 - -return a diff --git a/luci-app-eqosplus/luasrc/view/eqosplus/eqosplus.htm b/luci-app-eqosplus/luasrc/view/eqosplus/eqosplus.htm deleted file mode 100644 index 4445143f..00000000 --- a/luci-app-eqosplus/luasrc/view/eqosplus/eqosplus.htm +++ /dev/null @@ -1,3 +0,0 @@ -<%+cbi/valueheader%> -<%=pcdata(self:cfgvalue(section) or self.default or "")%> -<%+cbi/valuefooter%> \ No newline at end of file diff --git a/luci-app-eqosplus/luasrc/view/eqosplus/index.htm b/luci-app-eqosplus/luasrc/view/eqosplus/index.htm deleted file mode 100644 index c4b8a072..00000000 --- a/luci-app-eqosplus/luasrc/view/eqosplus/index.htm +++ /dev/null @@ -1,12 +0,0 @@ -<% include("cbi/map") %> - \ No newline at end of file diff --git a/luci-app-eqosplus/po/templates/eqosplus.pot b/luci-app-eqosplus/po/templates/eqosplus.pot deleted file mode 100644 index 151cee8d..00000000 --- a/luci-app-eqosplus/po/templates/eqosplus.pot +++ /dev/null @@ -1,61 +0,0 @@ - -msgid "Eqosplus" -msgstr "" - -msgid "Network speed limit" -msgstr "" - -msgid "Running state" -msgstr "" - -msgid "Not running" -msgstr "" - -msgid "Running" -msgstr "" - -msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second." -msgstr "" - -msgid "MAC/IP" -msgstr "" - -msgid "Downloads" -msgstr "" - -msgid "Uploads" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Upload bandwidth(Mbit/s)" -msgstr "" - -msgid "Download bandwidth(Mbit/s)" -msgstr "" - -msgid "Start control time" -msgstr "" - -msgid "Stop control time" -msgstr "" - -msgid "Week Day(1~7)" -msgstr "" - -msgid "Suggested feedback:" -msgstr "" - -msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" -msgstr "" - -msgid "Rest Day" -msgstr "" - -msgid "Workday" -msgstr "" - -msgid "Automatic settings" -msgstr "" - diff --git a/luci-app-eqosplus/po/zh-cn/eqosplus.po b/luci-app-eqosplus/po/zh-cn/eqosplus.po deleted file mode 100644 index 0fa56393..00000000 --- a/luci-app-eqosplus/po/zh-cn/eqosplus.po +++ /dev/null @@ -1,61 +0,0 @@ - -msgid "Eqosplus" -msgstr "定时限速" - -msgid "Network speed limit" -msgstr "定时网速限制" - -msgid "Running state" -msgstr "运行状态" - -msgid "Not running" -msgstr "未运行" - -msgid "Running" -msgstr "已运行" - -msgid "Users can limit the network speed for uploading/downloading through MAC, IP.The speed unit is MB/second." -msgstr "可以通过MAC,IP限制用户上传/下载的网速。速度单位为 MB/秒 。" - -msgid "MAC/IP" -msgstr "MAC/IP" - -msgid "Downloads" -msgstr "下载速度" - -msgid "Uploads" -msgstr "上传速度" - -msgid "Comment" -msgstr "备注" - -msgid "Upload bandwidth(Mbit/s)" -msgstr "上传总带宽(Mbit/s)" - -msgid "Download bandwidth(Mbit/s)" -msgstr "下载总带宽(Mbit/s)" - -msgid "Start control time" -msgstr "起控时间" - -msgid "Stop control time" -msgstr "停控时间" - -msgid "Week Day(1~7)" -msgstr "星期(1~7)" - -msgid "Suggested feedback:" -msgstr "建议反馈:" - -msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" -msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口" - -msgid "Rest Day" -msgstr "休息日" - -msgid "Workday" -msgstr "工作日" - -msgid "Automatic settings" -msgstr "自动设置" - diff --git a/luci-app-eqosplus/po/zh_Hans/eqosplus.po b/luci-app-eqosplus/po/zh_Hans/eqosplus.po deleted file mode 100644 index 840559fc..00000000 --- a/luci-app-eqosplus/po/zh_Hans/eqosplus.po +++ /dev/null @@ -1,61 +0,0 @@ - -msgid "Eqosplus" -msgstr "定时限速" - -msgid "Network speed limit" -msgstr "定时网速限制" - -msgid "Running state" -msgstr "运行状态" - -msgid "Not running" -msgstr "未运行" - -msgid "Running" -msgstr "已运行" - -msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second." -msgstr "用户可以通过MAC、IP、IP段(192.168.10.100-192.168.10.200),限制上传/下载的网络速度。速度单位为MB/秒。。" - -msgid "MAC/IP" -msgstr "MAC/IP" - -msgid "Downloads" -msgstr "下载速度" - -msgid "Uploads" -msgstr "上传速度" - -msgid "Comment" -msgstr "备注" - -msgid "Upload bandwidth(Mbit/s)" -msgstr "上传总带宽(Mbit/s)" - -msgid "Download bandwidth(Mbit/s)" -msgstr "下载总带宽(Mbit/s)" - -msgid "Start control time" -msgstr "起控时间" - -msgid "Stop control time" -msgstr "停控时间" - -msgid "Week Day(1~7)" -msgstr "星期(1~7)" - -msgid "Suggested feedback:" -msgstr "建议反馈:" - -msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" -msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口" - -msgid "Rest Day" -msgstr "休息日" - -msgid "Workday" -msgstr "工作日" - -msgid "Automatic settings" -msgstr "自动设置" - diff --git a/luci-app-eqosplus/root/etc/config/eqosplus b/luci-app-eqosplus/root/etc/config/eqosplus deleted file mode 100644 index 722434ae..00000000 --- a/luci-app-eqosplus/root/etc/config/eqosplus +++ /dev/null @@ -1,25 +0,0 @@ - -config eqosplus - option enabled '0' - option download '1000' - option upload '30' - option ifname '1' - -config device - option timestart '00:00' - option week '0' - option download '1' - option timeend '23:55' - option upload '1' - option mac '192.168.10.10' - option enable '0' - -config device - option mac '192.168.10.10-192.168.10.200' - option timestart '00:00' - option timeend '00:00' - option week '0' - option download '0.1' - option upload '0.1' - option enable '0' - diff --git a/luci-app-eqosplus/root/etc/hotplug.d/iface/10-eqosplus b/luci-app-eqosplus/root/etc/hotplug.d/iface/10-eqosplus deleted file mode 100644 index 91059ec8..00000000 --- a/luci-app-eqosplus/root/etc/hotplug.d/iface/10-eqosplus +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -[ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "wan" ] && { - sleep 5 - /etc/init.d/eqosplus restart -} \ No newline at end of file diff --git a/luci-app-eqosplus/root/etc/init.d/eqosplus b/luci-app-eqosplus/root/etc/init.d/eqosplus deleted file mode 100644 index f74b5fdd..00000000 --- a/luci-app-eqosplus/root/etc/init.d/eqosplus +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh /etc/rc.common -# -# Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus -# - -START=99 -USE_PROCD=1 - -NAME=eqosplus -LOCK="/var/lock/$NAME.lock" -CR=/etc/crontabs/root - -start_instance() { - procd_open_instance - procd_set_param command /usr/bin/eqosplusctrl - procd_set_param respawn - procd_set_param stderr 1 - procd_close_instance -} - -_eqosplus_start() { - if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then - if [ x$(uci -q get turboacc.config.sw_flow) = 'x1' ] || [ x$(uci -q get turboacc.config.sfe_flow) = 'x1' ] ;then - uci -q set turboacc.config.sw_flow='0' - uci -q set turboacc.config.sfe_flow='0' - uci -q set turboacc.config.hw_flow='0' - uci commit turboacc - /etc/init.d/turboacc restart - fi - touch $LOCK - eqosplus start - start_instance - (crontab -l ; echo "00 1 * * * /etc/init.d/eqosplus start") | sort - | uniq - | crontab - - fi -} - -start_service(){ - [ -f $LOCK ] && exit - stop_service - _eqosplus_start - rm -f $LOCK -} - -service_triggers() { - procd_add_reload_trigger 'eqosplus' -} - -stop_service(){ - kill -9 $(busybox ps -w | grep 'eqosplusctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1 - sed -i '/eqosplus/d' $CR >/dev/null 2>&1 - rm -f $LOCK 2>/dev/null - eqosplus stop -} - diff --git a/luci-app-eqosplus/root/etc/uci-defaults/luci-eqosplus b/luci-app-eqosplus/root/etc/uci-defaults/luci-eqosplus deleted file mode 100644 index f22cd0c6..00000000 --- a/luci-app-eqosplus/root/etc/uci-defaults/luci-eqosplus +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -chmod +x /etc/init.d/eqosplus /usr/bin/eqosplus* -uci -q batch <<-EOF >/dev/null - delete ucitrack.@eqosplus[-1] - add ucitrack eqosplus - set ucitrack.@eqosplus[-1].init=eqosplus - commit ucitrack -EOF - -[ -s /etc/config/eqosplus ] || echo "config eqosplus" > /etc/config/eqosplus - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/luci-app-eqosplus/root/usr/bin/eqosplus b/luci-app-eqosplus/root/usr/bin/eqosplus deleted file mode 100644 index 721fafa0..00000000 --- a/luci-app-eqosplus/root/usr/bin/eqosplus +++ /dev/null @@ -1,379 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2006 OpenWrt.org -# Copyright 2022-2025 sirpdboy - -crrun=$1 -crid=$2 -NAME=eqosplus -IDLIST="/var/$NAME.idlist" -LOCK="/var/lock/$NAME.lock" -TMPID="/var/$NAME.tmpid" -LOG="/var/$NAME_log.log" -# idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' ` - - -if [ x$(uci get $NAME.@$NAME[0].ifname 2>/dev/null) = 'x1' ]; then - ifname=$(uci -q get network.lan.ifname) - [ "x$ifname" = "x" ] && ifname="device" || ifname="ifname" - dev=$(uci -q get network.wan.$ifname) - [ ! "$dev" ] && dev=br-lan -else - dev=$(uci -q get $NAME.@$NAME[0].ifname 2>/dev/null) - [ ! "$dev" ] && dev=br-lan -fi - -bin_nft=$(which nft) -bin_tc=$(which tc) -bin_ip=$(which ip) -DEBUG=1 - -nft_type() { - if command -v nft >/dev/null; then - nftables_ver="true" - fi -} - -# Debug functions -dbg_nft() { - [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: nft $*" - $bin_nft "$@" -} - -dbg_tc() { - [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: tc $*" - $bin_tc "$@" -} - -dbg_ip() { - [ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: ip $*" - $bin_ip "$@" -} - -is_macaddr() { - ret=1 - if echo "$1" | grep -qE '^([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2}$'; then - ret=0 - fi - return $ret -} - -# 数值比较函数 -is_gt_zero() { - local value=$1 - # 使用bc进行浮点数比较 - echo "$value > 0" | bc -l 2>/dev/null | grep -q 1 -} - -# 转换为kbit -to_kbit() { - local mb=$1 - # MB/s 转 kbit/s: 1 MB/s = 8192 kbit/s - echo "scale=0; $mb * 8192 / 1" | bc 2>/dev/null || echo "0" -} - -# Default commands -tc="dbg_tc" -ip="dbg_ip" -nft="dbg_nft" - -nft_type - -stop_qos() { - for face in $(tc qdisc show 2>/dev/null | grep htb | awk '{print $5}'); do - $tc qdisc del dev $face root 2>/dev/null - done - - $tc qdisc del dev ${dev} root 2>/dev/null - $tc qdisc del dev ${dev}_ifb root 2>/dev/null - $tc qdisc del dev ${dev} ingress 2>/dev/null - $ip link del dev ${dev}_ifb 2>/dev/null 2>&1 - - if [ -n "$nftables_ver" ]; then - $nft delete table inet ${NAME} 2>/dev/null - $nft delete table bridge ${NAME} 2>/dev/null - fi - - echo "" > "$IDLIST" 2>/dev/null -} - -init_qosplus() { - - insmod sch_htb 2>/dev/null - insmod act_mirred 2>/dev/null - insmod ifb 2>/dev/null - - $ip link del dev ${dev}_ifb 2>/dev/null - $ip link add dev ${dev}_ifb name ${dev}_ifb type ifb - $ip link set dev ${dev}_ifb up - - $tc qdisc del dev ${dev} root 2>/dev/null - $tc qdisc add dev ${dev} root handle 1:0 htb default 1 - $tc class add dev ${dev} parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit - - $tc qdisc del dev ${dev}_ifb root 2>/dev/null - $tc qdisc add dev ${dev}_ifb root handle 1:0 htb default 1 - $tc class add dev ${dev}_ifb parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit - lanipaddr=$(uci -q get network.lan.ipaddr 2>/dev/null | awk -F '.' '{print $1"."$2"."$3".0/24"}') - if [ -n "$lanipaddr" ]; then - $tc filter add dev $dev parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1 - $tc filter add dev ${dev}_ifb parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1 - fi - $tc qdisc del dev ${dev} ingress 2>/dev/null - $tc qdisc add dev ${dev} ingress - $tc filter add dev ${dev} parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ${dev}_ifb - - if [ -n "$nftables_ver" ]; then - $nft delete table inet ${NAME} 2>/dev/null - $nft delete table bridge ${NAME} 2>/dev/null - - $nft add table inet ${NAME} - - $nft add chain inet ${NAME} mark_forward { type filter hook forward priority -200\; policy accept\; } - $nft add chain inet ${NAME} mark_output { type filter hook output priority -200\; policy accept\; } - $nft add chain inet ${NAME} mark_postrouting { type filter hook postrouting priority -200\; policy accept\; } - fi - - return 0 -} - - -del_id() { - local list_id=$1 - id=$((list_id * 10 + 1000)) - [ "${DEBUG:-0}" -eq 0 ] || echo "D: del_id $@ --$id --$mac" - $tc filter del dev ${dev} parent 1: handle 800::$(printf "%x" $id) 2>/dev/null - $tc class del dev ${dev} parent 1:1 classid 1:$id 2>/dev/null - $tc filter del dev ${dev}_ifb parent 1: handle 800::$(printf "%x" $id) 2>/dev/null - $tc class del dev ${dev}_ifb parent 1:1 classid 1:$id 2>/dev/null - mac=$(uci -q get $NAME.@device[$list_id].mac 2>/dev/null) - if [ -n "$nftables_ver" ] && [ -n "$mac" ]; then - if is_macaddr "$mac"; then - $nft delete rule inet ${NAME} mark_forward ether saddr $mac counter 2>/dev/null - $nft delete rule inet ${NAME} mark_output ether saddr $mac counter 2>/dev/null - $nft delete rule inet ${NAME} mark_postrouting ether saddr $mac counter 2>/dev/null - else - Z=$(echo $mac | awk -F '[/]' '{print $2}') - [ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32 - $nft delete rule inet ${NAME} mark_forward ip saddr $mac/$Z counter 2>/dev/null - $nft delete rule inet ${NAME} mark_output ip saddr $mac/$Z counter 2>/dev/null - $nft delete rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter 2>/dev/null - fi - fi -} - -add_mac() { - local list_id=$1 - id=$((list_id * 10 + 1000)) - M0=$(echo $mac | cut -d : -f 1)$(echo $mac | cut -d : -f 2) - M1=$(echo $mac | cut -d : -f 3)$(echo $mac | cut -d : -f 4) - M2=$(echo $mac | cut -d : -f 5)$(echo $mac | cut -d : -f 6) - [ "${DEBUG:-0}" -eq 0 ] || echo "D: add_mac $@ --id:$id --mac:$mac M012--$M0-$M1-$M2" - - if is_gt_zero "$UL"; then - if [ -n "$nftables_ver" ]; then - $nft add rule inet ${NAME} mark_forward ether saddr $mac counter meta mark set $id - $nft add rule inet ${NAME} mark_output ether saddr $mac counter meta mark set $id - $nft add rule inet ${NAME} mark_postrouting ether saddr $mac counter meta mark set $id - fi - $tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k - $tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10 - - $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id - - $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $((id + 100)) u32 \ - match u16 0x0800 0xFFFF at -2 \ - match u16 0x${M2} 0xFFFF at -4 \ - match u32 0x${M0}${M1} 0xFFFFFFFF at -8 \ - flowid 1:$id - fi - if is_gt_zero "$DL"; then - $tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k - $tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10 - - $tc filter add dev ${dev} parent 1: protocol ip prio $id u32 \ - match u16 0x0800 0xFFFF at -2 \ - match u32 0x${M1}${M2} 0xFFFFFFFF at -12 \ - match u16 0x${M0} 0xFFFF at -14 \ - flowid 1:$id - fi -} - -add_ip() { - local list_id=$1 - id=$((list_id * 10 + 1000)) - [ "${DEBUG:-0}" -eq 0 ] || echo "D: add_ip $@ --$id --$mac" - - Z=$(echo $mac | awk -F '[/]' '{print $2}') - [ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32 - if is_gt_zero "$UL"; then - if [ -n "$nftables_ver" ]; then - $nft add rule inet ${NAME} mark_forward ip saddr $mac/$Z counter meta mark set $id - $nft add rule inet ${NAME} mark_output ip saddr $mac/$Z counter meta mark set $id - $nft add rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter meta mark set $id - fi - $tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k - $tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10 - $tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id - $tc filter add dev ${dev}_ifb parent 1:0 prio $((id + 100)) protocol ip u32 \ - match ip src "$mac"/"$Z" \ - flowid 1:$id - fi - if is_gt_zero "$DL"; then - $tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k - $tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10 - $tc filter add dev ${dev} parent 1:0 prio $id protocol ip u32 \ - match ip dst "$mac"/"$Z" \ - flowid 1:$id - fi -} - -check_time() { - local start=$1 - local end=$2 - local current=$(date +%H%M) - local start_min=$((10#${start:0:2}*60 + 10#${start:3:2})) - local end_min=$((10#${end:0:2}*60 + 10#${end:3:2})) - local current_min=$((10#${current:0:2}*60 + 10#${current:2:2})) - - if [[ $start_min -lt $end_min ]]; then - [[ $current_min -ge $start_min && $current_min -lt $end_min ]] - else - [[ $current_min -ge $start_min || $current_min -lt $end_min ]] - fi -} - -check_list() { - local i=$1 - local start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null) - local end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null) - local wweek=$(uci -q get $NAME.@device[$i].week 2>/dev/null) - local current_weekday=$(date +%u) - [ -z "$start_time" ] && [ -z "$end_time" ] && [ -z "$wweek" ] && return 0 - - if [ -n "$wweek" ] && [ "$wweek" != "0" ]; then - local day_match=0 - for day in $(echo $wweek | tr ',' ' '); do - [ "$day" -eq "$current_weekday" ] && day_match=1 && break - done - [ "$day_match" -eq 0 ] && return 1 - fi - - if [ -n "$start_time" ] && [ -n "$end_time" ]; then - check_time "$start_time" "$end_time" || return 1 - fi - - return 0 -} - -case "$crrun" in - "stop") - stop_qos - ;; - "start") - stop_qos > /dev/null 2>&1 - sleep 2 - init_qosplus - idlist=$(uci show $NAME 2>/dev/null | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' | sort -nu | sed -e 's/^/!/g' -e 's/$/!/g' > $IDLIST; cat $IDLIST 2>/dev/null | sed -e 's/!//g') - - if [ ! -s "$IDLIST" ]; then - return 1 - fi - - device_count=0 - for list in $(echo $idlist | sed -e 's/!//g'); do - if check_list $list; then - mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) - download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null) - upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null) - comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) - - # 转换为kbit - DL=$(to_kbit "$download_mb") - UL=$(to_kbit "$upload_mb") - - if [ -n "$mac" ]; then - if is_macaddr "$mac"; then - add_mac $list >>$LOG - echo "✅ MAC限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG - else - add_ip $list >>$LOG - echo "✅ IP限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG - fi - device_count=$((device_count + 1)) - fi - else - [ -f "$IDLIST" ] && [ $(grep "!${list}!" "$IDLIST" 2>/dev/null | wc -l) -gt 0 ] && { - del_id $list >>$LOG - sed -i "/!$list!/d" "$IDLIST" >/dev/null 2>&1 - comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) - } - fi - done - echo "EQOSPLUS限速服务启动完成,共配置 $device_count 个设备" >>$LOG - echo "" - echo "当前限速状态:" >>$LOG - tc -s class show dev $dev | grep "rate" | head -5 >>$LOG - tc -s class show dev ${dev}_ifb | grep "rate" | head -5 >>$LOG - - ;; - "add") - echo "➕ 添加限速规则..." - for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do - mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) - download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null) - upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null) - comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) - DL=$(to_kbit "$download_mb") - UL=$(to_kbit "$upload_mb") - - if is_macaddr $mac; then - add_mac $list - echo "✅ 添加MAC限速: $comment ($mac)" >>$LOG - else - add_ip $list - echo "✅ 添加IP限速: $comment ($mac)" >>$LOG - fi - done - ;; - "del") - for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do - comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null) - mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null) - del_id $list - done - ;; - "status") - echo "EQOSPLUS限速服务状态" - echo "### 网络接口: $dev ###" - echo "# 下载队列统计 #" - tc -s qdisc show dev $dev 2>/dev/null || echo "无下载队列" - echo "# 下载类统计 #" - tc -s class show dev $dev 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无下载类" - echo "# 下载过滤器 #" - tc -s filter show dev $dev parent 1: 2>/dev/null | head -10 || echo "无下载过滤器" - - echo "### 虚拟接口: ${dev}_ifb ###" - echo "# 上传队列统计 #" - tc -s qdisc show dev ${dev}_ifb 2>/dev/null || echo "无上传队列" - echo "# 上传类统计 #" - tc -s class show dev ${dev}_ifb 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无上传类" - echo "# 上传过滤器 #" - tc -s filter show dev ${dev}_ifb parent 1: 2>/dev/null | head -10 || echo "无上传过滤器" - - if [ -n "$nftables_ver" ]; then - echo "### NFTables规则 ###" - nft list table inet ${NAME} 2>/dev/null || echo "没有NFTables规则" - else - echo "NFTables不可用" - fi - - # 显示流量统计 - echo "### 流量统计 ###" - echo "下载流量:" - tc -s class show dev $dev 2>/dev/null | grep "Sent" | head -5 - echo "上传流量:" - tc -s class show dev ${dev}_ifb 2>/dev/null | grep "Sent" | head -5 - ;; - -esac \ No newline at end of file diff --git a/luci-app-eqosplus/root/usr/bin/eqosplusctrl b/luci-app-eqosplus/root/usr/bin/eqosplusctrl deleted file mode 100644 index 9b5721d6..00000000 --- a/luci-app-eqosplus/root/usr/bin/eqosplusctrl +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006 OpenWrt.org -# Copyright 2022-2025 sirpdboy -NAME=eqosplus -IDLIST="/var/$NAME.idlist" -TMPID="/var/$NAME.tmpid" - -idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' ` - -check_list() { - i=$1 - checki='0' - start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null) - end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null) - wweek=`uci -q get $NAME.@device[$i].week ` - current_time=$(date +%H:%M) - current_weekday=$(date +%u) - for ww in `echo $wweek | sed 's/,/ /g' `; do - if [ $current_weekday = $ww ] || [ 'x0' = x$ww ] ;then - [ "$start_time" = "$end_time" ] && checki='1' || { - if [ "$start_time" \< "$end_time" ]; then - if [ "$current_time" \> "$start_time" ] && [ "$current_time" \< "$end_time" ] ; then - checki='1' - fi - else - if [ "$start_time" \> "$end_time" ] ; then - if [ "$current_time" \< "$start_time" ] && [ "$current_time" \> "$end_time" ] ; then - checki='1' - fi - fi - fi - } - fi - done - return -} - -idlistusr(){ - checki='0' - [ -s $IDLIST ] || touch $IDLIST - for list in $idlist ;do - check_list $list - if [ $checki == '1' ] ; then - [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] || { - eqosplus add $list - echo "!${list}!" >> $IDLIST ; cat $IDLIST | sort | uniq > $TMPID ;cat $TMPID >$IDLIST ;rm -rf $TMPID - } - else - [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] && { - eqosplus del $list - sed -i "/!$list!/d" $IDLIST >/dev/null 2>&1 - } - fi - done -} - - -while :;do - sleep 30 - idlistusr - sleep 30 -done \ No newline at end of file diff --git a/luci-app-eqosplus/root/usr/share/rpcd/acl.d/luci-app-eqosplus.json b/luci-app-eqosplus/root/usr/share/rpcd/acl.d/luci-app-eqosplus.json deleted file mode 100644 index b879f4de..00000000 --- a/luci-app-eqosplus/root/usr/share/rpcd/acl.d/luci-app-eqosplus.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-eqosplus": { - "description": "Grant UCI access for luci-app-eqosplus", - "read": { - "uci": [ "eqosplus" ] - }, - "write": { - "uci": [ "eqosplus" ] - } - } -} diff --git a/luci-app-eqosplus/界面.png b/luci-app-eqosplus/界面.png deleted file mode 100644 index d346c698..00000000 Binary files a/luci-app-eqosplus/界面.png and /dev/null differ diff --git a/oxidns/Makefile b/oxidns/Makefile index 71497d5b..9749256d 100644 --- a/oxidns/Makefile +++ b/oxidns/Makefile @@ -28,28 +28,35 @@ define Package/oxidns CATEGORY:=Network SUBMENU:=DNS TITLE:=OxiDNS - High-performance DNS Engine - DESCRIPTION:=A high-performance, programmable DNS engine in Rust with flexible pipeline-based routing DEPENDS:= URL:=https://github.com/svenshi/oxidns endef +define Package/oxidns/description + A high-performance, programmable DNS engine in Rust with flexible + pipeline-based routing. +endef + define Package/oxidns-webui $(call Package/oxidns/Default) SECTION:=net CATEGORY:=Network SUBMENU:=DNS - TITLE+= oxidns webui - DESCRIPTION:=A webui for oxidns server. + TITLE+= webui DEPENDS:=+oxidns endef +define Package/oxidns-webui/description + A web UI for the OxiDNS server. +endef + define Package/oxidns/conffiles /etc/oxidns/config.yaml endef define Build/Prepare $(call Build/Prepare/Default) - + ifneq ($(CONFIG_PACKAGE_oxidns-webui),) (cd $(PKG_BUILD_DIR)/webui && \ npx -y pnpm install --ignore-scripts && \ @@ -64,13 +71,13 @@ endef define Package/oxidns/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/target/$(RUSTC_TARGET_ARCH)/release/oxidns $(1)/usr/bin/ - + $(INSTALL_DIR) $(1)/etc/oxidns $(INSTALL_CONF) ./files/config.yaml $(1)/etc/oxidns/config.yaml - + $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/oxidns.init $(1)/etc/init.d/oxidns - + $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) ./files/oxidns.uci $(1)/etc/config/oxidns endef @@ -81,4 +88,4 @@ define Package/oxidns-webui/install endef $(eval $(call BuildPackage,oxidns)) -$(eval $(call BuildPackage,oxidns-webui)) +$(eval $(call BuildPackage,oxidns-webui)) \ No newline at end of file