🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
#
# Copyright 2023-2025 sirpdboy team <herboy2008@gmail.com>
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
NAME:=advancedplus
PKG_NAME:=luci-app-$(NAME)
LUCI_TITLE:=LuCI support for Kucat theme setting by sirpdboy
LUCI_DEPENDS:=+luci-compat +curl
LUCI_PKGARCH:=all
PKG_VERSION:=1.8.9
PKG_RELEASE:=1
define Package/$(PKG_NAME)/conffiles
/etc/config/advancedplus
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
+101
View File
@@ -0,0 +1,101 @@
## 访问数:![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg)[![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
<p align="center">
<a href="https://openwrt.org"><img alt="OpenWrt" src="https://img.shields.io/badge/OpenWrt-%E2%89%A519.07-ff0000?logo=openwrt&logoColor=white"></a>
<a href="https://www.google.com/chrome/"><img alt="Chrome" src="https://img.shields.io/badge/Chrome-%E2%89%A5111-4285F3?logo=googlechrome&logoColor=white"></a>
<a href="https://www.apple.com/safari/"><img alt="Safari" src="https://img.shields.io/badge/Safari-%E2%89%A516.4-000000?logo=safari&logoColor=white"></a>
<a href="https://www.mozilla.org/firefox/"><img alt="Firefox" src="https://img.shields.io/badge/Firefox-%E2%89%A5128-FF7138?logo=firefoxbrowser&logoColor=white"></a>
<a target="_blank" href="https://github.com/sirpdboy/luci-app-advancedplus/releases"> <img alt="GitHub release" src="https://img.shields.io/github/v/release/sirpdboy/luci-app-advancedplus"></a>
<a href="https://github.com/sirpdboy/luci-app-advancedplus/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-advancedplus/total"></a>
</p>
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg)
#【说在前面的话】此次酷猫主题研发借鉴:Opentopd主题、Jerryk大神argon主题、以及thinktip大神的neobird主题的部分灵感及参考借用部分代码,在这里表示感谢,感谢有你们珠玉在前!
# 特殊说明
- 当系统中 有进阶设置又有 KUCAT主题设置工具时, 以进阶设置中的设置为准。
- 如果设置上有问题,可以在SSH登陆后,用4号功能恢复设置。
- 如果是进阶设置,恢复默认设置,可以用:/etc/init.d/advancedplus reset
-
# 为什么叫酷猫 ?
## 二个原因:
- 一是这主题就是为酷而生,一切只为酷与简单!从此让你的主题不再单调!让主题活起来!按钮动起来!全面掌控主题颜色设置!
- 二是因为这主题是在九个方案版本中测试研究后决定出来(正合猫有9条命),另外是本人(年后到现在)在无数个夜班熬呀熬,熬出来的,都熬成夜猫子了,所以定名:【英文名:KuCat】,【中文名:酷猫】。
另外要说明一下就是本人弄固件不只是编译与搬运,是开发,是创新,更是爱好!请不要将本人与一些搬运工编译的固件来比较!那样会只会显得你很无知。
当然在OPENWRT的世界里比本人更优秀更专业的人士大有人在,本人能做的就是尽自己微薄浅湿的力量,尽量让固件更好用和更少的BUG。
不管是本人还是别人开发的插件,这里面的每一行代码,都凝聚着开发者在后面无数辛勤汗水和智慧的付出,请大家珍重他们的劳动成果与心血付出!
也许某些功能某些要求还达不到你的预期要求,有道是一人难满百人意,有些可能是本身实现不了,有些可能是能力不足的原因实现不了.
不管如何,如果有问题或者BUG请多给理解与支持【当然有能力的请给这些开发者们更多的物资支持】!
在此要特别感谢VIP群里以及不在群里的所有为爱发电的好朋友们!是你们给本人无尽的力量!!谢谢!!
- 开发时间:2021年12月
- 发布时间:2023年2月
- 开源时间:2024年1月
## 功能介绍
- 原高级设置升级版本,可以编译保存系统、网络、防火墙、DHCP、家长控制、网络唤醒、端口转发、DDNS-GO、SMARTDNS、BYPASS、OPENCLASH、NGINX、DNSMASQ、DDNS等10多个常用功能的配置文件。
- 进阶设置-高级设置中 可以设置:SSH后台菜单、设置向导、QOS自动优化等功能 开启与否.
- KUCAT主题设置,可以设置 KUCAT主题壁纸和桌面背景来源,是否展开导航栏,清爽模式、每日一言、导航中快捷键设置、关怀模式和主题颜色和方案包括:背景色,透明度,主题亮色暗色,模糊半径等。并且预置7种方案可自行定义更多颜色方案。
## 界面
![screenshots](./doc/advancedplus1.png)
![screenshots](./doc/advancedplus2.png)
![screenshots](./doc/advancedplus3.png)
![screenshots](./doc/advancedplus4.png)
![screenshots](./doc/advancedplus5.png)
![screenshots](./doc/advancedplus6.png)
![screenshots](./doc/advancedplus7.png)
![screenshots](./doc/kucatz1.png)
![screenshots](./doc/kucatz2.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)
| <img src="https://img.shields.io/badge/-支付宝-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了😂"/> | <img src="https://img.shields.io/badge/-微信-F5F5F5.svg" height="25" alt="图飞了😂" href="#赞助支持本项目-"/> |
| :-----------------: | :-------------: |
|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) |
<a href="#readme">
<img src="https://img.shields.io/badge/-返回顶部-orange.svg" alt="图飞了😂" title="返回顶部" align="right"/>
</a>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1024 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 KiB

@@ -0,0 +1,47 @@
--[[
LuCI - Lua Configuration Advancedplus
Copyright (C) 2022-2024 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-advancedplus
]]--
local fs = require "nixio.fs"
local http = require "luci.http"
local uci = require"luci.model.uci".cursor()
local name = 'advancedplus'
module("luci.controller.advancedplus", package.seeall)
function index()
if not nixio.fs.access("/etc/config/advancedplus") then
return
end
local page
page = entry({"admin","system","advancedplus"},alias("admin","system","advancedplus","advancededit"),_("Advanced plus"),61)
page.dependent = true
page.acl_depends = { "luci-app-advancedplus" }
entry({"admin","system","advancedplus","advancededit"},cbi("advancedplus/advancededit"),_("Advanced Edit"),10).leaf = true
entry({"admin", "system", "advancedplus", "advancedrun"}, call("advanced_run"))
entry({"admin", "system", "advancedplus", "check"}, call("act_check"))
end
function act_check()
http.prepare_content("text/plain; charset=utf-8")
local f=io.open("/tmp/advancedplus.log", "r+")
local fdp=fs.readfile("/tmp/advancedpos") or 0
f:seek("set",fdp)
local a=f:read(2048000) or ""
fdp=f:seek()
fs.writefile("/tmp/advancedpos",tostring(fdp))
f:close()
http.write(a)
end
function advanced_run()
local selectipk = luci.http.formvalue('select_ipk')
uci:set(name, 'advancedplus', 'select_ipk', selectipk)
uci:commit(name)
fs.writefile("/tmp/advancedpos","0")
http.prepare_content("application/json")
http.write('')
luci.sys.exec(string.format("bash /usr/bin/advancedplusipk " ..selectipk.. " > /tmp/advancedplus.log 2>&1 &" ))
end
@@ -0,0 +1,407 @@
local e=require"nixio.fs"
local t=require"luci.sys"
local t=luci.model.uci.cursor()
m=Map("advancedplus",translate("Advanced Edit"),translate("<font color=\"Red\"><strong>Configuration documents are directly edited unless you know what you are doing, please do not easily modify these configuration documents. Incorrect configuration may result in errors such as inability to power on</strong></font><br/>"))
m.apply_on_parse=true
s=m:section(TypedSection,"basic")
s.anonymous=true
if nixio.fs.access("/etc/dnsmasq.conf")then
s:tab("dnsmasqconf",translate("dnsmasq"),translate("This page is about configuration")..translate("/etc/dnsmasq.conf")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("dnsmasqconf",Value,"dnsmasqconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/dnsmasq.conf")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/dnsmasq.conf",t)
if(luci.sys.call("cmp -s /tmp/dnsmasq.conf /etc/dnsmasq.conf")==1)then
e.writefile("/etc/dnsmasq.conf",t)
luci.sys.call("/etc/init.d/dnsmasq restart >/dev/null")
end
e.remove("/tmp/dnsmasq.conf")
end
end
end
if nixio.fs.access("/etc/config/network")then
s:tab("netwrokconf",translate("network"),translate("This page is about configuration")..translate("/etc/config/network")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("netwrokconf",Value,"netwrokconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/network")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/network",t)
if(luci.sys.call("cmp -s /tmp/network /etc/config/network")==1)then
e.writefile("/etc/config/network",t)
luci.sys.call("/etc/init.d/network restart >/dev/null")
end
e.remove("/tmp/network")
end
end
end
if nixio.fs.access("/etc/config/wireless")then
s:tab("wirelessconf",translate("wireless"), translate("This page is about configuration")..translate("/etc/config/wireless")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("wirelessconf",Value,"wirelessconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/wireless")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/etc/config/wireless.tmp",t)
if(luci.sys.call("cmp -s /etc/config/wireless.tmp /etc/config/wireless")==1)then
e.writefile("/etc/config/wireless",t)
luci.sys.call("wifi reload >/dev/null &")
end
e.remove("/tmp//tmp/wireless.tmp")
end
end
end
if nixio.fs.access("/etc/hosts")then
s:tab("hostsconf",translate("hosts"), translate("This page is about configuration")..translate("/etc/hosts")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("hostsconf",Value,"hostsconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/hosts")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/hosts.tmp",t)
if(luci.sys.call("cmp -s /tmp/hosts.tmp /etc/hosts")==1)then
e.writefile("/etc/hosts",t)
luci.sys.call("/etc/init.d/dnsmasq restart >/dev/null")
end
e.remove("/tmp/hosts.tmp")
end
end
end
if nixio.fs.access("/etc/config/arpbind")then
s:tab("arpbindconf",translate("arpbind"),translate("This page is about configuration")..translate("/etc/config/arpbind")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("arpbindconf",Value,"arpbindconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/arpbind")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/arpbind",t)
if(luci.sys.call("cmp -s /tmp/arpbind /etc/config/arpbind")==1)then
e.writefile("/etc/config/arpbind",t)
luci.sys.call("/etc/init.d/arpbind restart >/dev/null")
end
e.remove("/tmp/arpbind")
end
end
end
if nixio.fs.access("/etc/config/firewall")then
s:tab("firewallconf",translate("firewall"),translate("This page is about configuration")..translate("/etc/config/firewall")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("firewallconf",Value,"firewallconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/firewall")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/firewall",t)
if(luci.sys.call("cmp -s /tmp/firewall /etc/config/firewall")==1)then
e.writefile("/etc/config/firewall",t)
luci.sys.call("/etc/init.d/firewall restart >/dev/null")
end
e.remove("/tmp/firewall")
end
end
end
if nixio.fs.access("/etc/config/mwan3")then
s:tab("mwan3conf",translate("mwan3"),translate("This page is about configuration")..translate("/etc/config/mwan3")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("mwan3conf",Value,"mwan3conf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/mwan3")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/mwan3",t)
if(luci.sys.call("cmp -s /tmp/mwan3 /etc/config/mwan3")==1)then
e.writefile("/etc/config/mwan3",t)
luci.sys.call("/etc/init.d/mwan3 restart >/dev/null")
end
e.remove("/tmp/mwan3")
end
end
end
if nixio.fs.access("/etc/config/dhcp")then
s:tab("dhcpconf",translate("DHCP"),translate("This page is about configuration")..translate("/etc/config/dhcp")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("dhcpconf",Value,"dhcpconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/dhcp")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/dhcp",t)
if(luci.sys.call("cmp -s /tmp/dhcp /etc/config/dhcp")==1)then
e.writefile("/etc/config/dhcp",t)
luci.sys.call("/etc/init.d/network restart >/dev/null")
end
e.remove("/tmp/dhcp")
end
end
end
if nixio.fs.access("/etc/config/ddns")then
s:tab("ddnsconf",translate("DDNS"),translate("This page is about configuration")..translate("/etc/config/ddns")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("ddnsconf",Value,"ddnsconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/ddns")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/ddns",t)
if(luci.sys.call("cmp -s /tmp/ddns /etc/config/ddns")==1)then
e.writefile("/etc/config/ddns",t)
luci.sys.call("/etc/init.d/ddns restart >/dev/null")
end
e.remove("/tmp/ddns")
end
end
end
if nixio.fs.access("/etc/config/parentcontrol")then
s:tab("parentcontrolconf",translate("parentcontrol"),translate("This page is about configuration")..translate("/etc/config/parentcontrol")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("parentcontrolconf",Value,"parentcontrolconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/parentcontrol")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/parentcontrol",t)
if(luci.sys.call("cmp -s /tmp/parentcontrol /etc/config/parentcontrol")==1)then
e.writefile("/etc/config/parentcontrol",t)
luci.sys.call("/etc/init.d/parentcontrol restart >/dev/null")
end
e.remove("/tmp/parentcontrol")
end
end
end
if nixio.fs.access("/etc/config/autotimeset")then
s:tab("autotimesetconf",translate("autotimeset"),translate("This page is about configuration")..translate("/etc/config/autotimeset")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("autotimesetconf",Value,"autotimesetconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/autotimeset")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/autotimeset",t)
if(luci.sys.call("cmp -s /tmp/autotimeset /etc/config/autotimeset")==1)then
e.writefile("/etc/config/autotimeset",t)
luci.sys.call("/etc/init.d/autotimeset restart >/dev/null")
end
e.remove("/tmp/autotimeset")
end
end
end
if nixio.fs.access("/etc/config/wolplus")then
s:tab("wolplusconf",translate("wolplus"),translate("This page is about configuration")..translate("/etc/config/wolplus")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("wolplusconf",Value,"wolplusconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/wolplus")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/wolplus",t)
if(luci.sys.call("cmp -s /tmp/wolplus /etc/config/wolplus")==1)then
e.writefile("/etc/config/wolplus",t)
luci.sys.call("/etc/init.d/wolplus restart >/dev/null")
end
e.remove("/tmp/wolplus")
end
end
end
if nixio.fs.access("/etc/config/socat")then
s:tab("socatconf",translate("socat"),translate("This page is about configuration")..translate("/etc/config/socat")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("socatconf",Value,"socatconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/socat")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/socat",t)
if(luci.sys.call("cmp -s /tmp/socat /etc/config/socat")==1)then
e.writefile("/etc/config/socat",t)
luci.sys.call("/etc/init.d/socat restart >/dev/null")
end
e.remove("/tmp/socat")
end
end
end
if nixio.fs.access("/etc/config/nginx")then
s:tab("nginxconf",translate("NGINX"),translate("This page is about configuration")..translate("/etc/config/nginx")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("nginxconf",Value,"nginxconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/nginx")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/nginx",t)
if(luci.sys.call("cmp -s /tmp/nginx /etc/config/nginx")==1)then
e.writefile("/etc/config/nginx",t)
luci.sys.call("/etc/init.d/nginx restart >/dev/null")
end
e.remove("/tmp/nginx")
end
end
end
if nixio.fs.access("/etc/ddns-go/ddns-go-config.yaml")then
s:tab("ddnsgoconf",translate("DDNS-GO"),translate("This page is about configuration")..translate("ddns-go-config.yaml")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("ddnsgoconf",Value,"ddnsgoconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/ddns-go/ddns-go-config.yaml")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/ddnsgo",t)
if(luci.sys.call("cmp -s /tmp/ddns-go /etc/ddns-go/ddns-go-config.yaml")==1)then
e.writefile("/etc/ddns-go/ddns-go-config.yaml",t)
luci.sys.call("/etc/init.d/ddns-go restart >/dev/null")
end
e.remove("/tmp/ddnsgo")
end
end
end
if nixio.fs.access("/etc/config/smartdns")then
s:tab("smartdnsconf",translate("SMARTDNS"),translate("This page is about configuration")..translate("/etc/config/smartdns")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("smartdnsconf",Value,"smartdnsconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/smartdns")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/smartdns",t)
if(luci.sys.call("cmp -s /tmp/smartdns /etc/config/smartdns")==1)then
e.writefile("/etc/config/smartdns",t)
luci.sys.call("/etc/init.d/smartdns restart >/dev/null")
end
e.remove("/tmp/smartdns")
end
end
end
if nixio.fs.access("/etc/config/bypass")then
s:tab("bypassconf",translate("BYPASS"),translate("This page is about configuration")..translate("/etc/config/bypass")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("bypassconf",Value,"bypassconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/bypass")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/bypass",t)
if(luci.sys.call("cmp -s /tmp/bypass /etc/config/bypass")==1)then
e.writefile("/etc/config/bypass",t)
luci.sys.call("/etc/init.d/bypass restart >/dev/null")
end
e.remove("/tmp/bypass")
end
end
end
if nixio.fs.access("/etc/config/openclash")then
s:tab("openclashconf",translate("openclash"),translate("This page is about configuration")..translate("/etc/config/openclash")..translate("Document content. Automatic restart takes effect after saving the application"))
conf=s:taboption("openclashconf",Value,"openclashconf",nil,translate("The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."))
conf.template="cbi/tvalue"
conf.rows=20
conf.wrap="off"
conf.cfgvalue=function(t,t)
return e.readfile("/etc/config/openclash")or""
end
conf.write=function(a,a,t)
if t then
t=t:gsub("\r\n?","\n")
e.writefile("/tmp/openclash",t)
if(luci.sys.call("cmp -s /tmp/openclash /etc/config/openclash")==1)then
e.writefile("/etc/config/openclash",t)
luci.sys.call("/etc/init.d/openclash restart >/dev/null")
end
e.remove("/tmp/openclash")
end
end
end
return m
@@ -0,0 +1,30 @@
--[[
LuCI - Lua Configuration Interface
Copyright (C) 2022-2024 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-advancedplus
]]--
luci.sys.exec("echo '-' >/tmp/advancedplus.log&&echo 1 > /tmp/advancedpos" )
local fs = require "nixio.fs"
local uci=luci.model.uci.cursor()
local m,s,e
m = Map("advancedplus")
m.title = translate("Loading plugins")
m.description = translate("Choose to load and install the app store, DOCKER, all drivers, etc")..
translate("</br>For specific usage, see:")..translate("<a href=\'https://github.com/sirpdboy/luci-app-advancedplus.git' target=\'_blank\'>GitHub @sirpdboy/luci-app-advancedplus </a>")
m.apply_on_parse=true
s=m:section(TypedSection, "basic", "")
s.anonymous=true
e=s:option(ListValue,'select_ipk', translate('Select the type of loading'))
e:value("istore", translate("Install iStore"))
e:value("docker", translate("Install Docker"))
e:value("drv", translate("Install All drives"))
e.default="istore"
e=s:option(Button, "restart", translate("Perform operation"))
e.inputtitle=translate("Click to execute")
e.template ='advancedplus/advanced'
return m
@@ -0,0 +1,47 @@
local fs = require "nixio.fs"
local uci=luci.model.uci.cursor()
local a, t, e
a = Map("advancedplus")
a.title = translate("Advanced Setting")
a.description = translate("The enhanced version of the original advanced settings can set some supporting services and functions of the firmware")..
translate("</br>For specific usage, see:")..translate("<a href=\'https://github.com/sirpdboy/luci-app-advancedplus.git' target=\'_blank\'>GitHub @advancedplus </a>")
t = a:section(TypedSection, "basic", translate("Settings"))
t.anonymous = true
e = t:option(Flag, "usshmenu",translate('No backend menu required'), translate('OPENWRT backend and SSH login do not display shortcut menus'))
e = t:option(Flag, "set_login",translate('Console account password login'))
e.default = "0"
e = t:option(Flag, "wizard",translate('Hide Wizard'), translate('Show or hide the setup wizard menu'))
e.default = "0"
e.rmempty = false
--e = t:option(Flag, "tsoset",translate('TSO optimization for network card interruption'), translate('Turn off the TSO parameters of the INTEL225 network card to improve network interruption'))
--e.default = "1"
--e.rmempty = false
e = t:option(Flag, "uhttpd",translate('Prevent uhttpd from exiting web services'))
e.default = "1"
e.rmempty = false
-- e = t:option(ListValue, "set_firewall_wan",translate('Set up firewall for external network access'))
-- e:value('ACCEPT', translate('accept'))
-- e:value('DROP', translate('drop'))
-- e:value('REJECT', translate('reject'))
-- e.default = 'ACCEPT'
e = t:option(Flag, "dhcp_domain",translate('Add Android host name mapping'), translate('Resolve the issue of Android native TV not being able to connect to WiFi for the first time'))
e.default = "0"
e.rmempty = false
a.apply_on_parse = true
a.on_after_apply = function(self,map)
luci.sys.exec("/etc/init.d/advancedplus start >/dev/null 2>&1")
luci.http.redirect(luci.dispatcher.build_url("admin","system","advancedplus","advancedset"))
end
return a
@@ -0,0 +1,89 @@
<%#
Copyright (C) 2022-2024 sirpdboy <herboy2008@gmail.com>
-%>
<%+cbi/valueheader%>
<%local fs=require"nixio.fs"%>
<input type="button" class="btn cbi-button cbi-button-apply" id="apply_run_button" value="<%:Click to execute%>" onclick=" return apply_run(this) "/>
<div id="logview" style="display:none">
<textarea id="cbid.logview.1.conf" class="cbi-input-textarea" style="width: 100%;display:block;" data-update="change" rows="30" cols="60" readonly="readonly" > </textarea>
</div>
<script type="text/javascript">//<![CDATA[
var checkbtn = document.getElementById('apply_run_button');
function apply_run(btn){
var sid='cfg018967'
var opt={
base:"cbid.advancedplus."+sid,
get:function(opt){
var id=this.base+'.'+opt;
var obj=document.getElementsByName(id)[0] || document.getElementsByClassName(id)[0] || document.getElementById(id)
if (obj){
return obj;
}else{
return null;
}
},
getlist:function(opt){
var id=this.base+'.'+opt;
var objs=document.getElementsByName(id) || document.getElementsByClassName(id);
var ret=[];
if (objs){
for (var i=0;i < objs.length;i++){
ret[i]=objs[i].value;
}
}else{
alert("<%:Fatal on get option,please help in debug%>:"+opt);
}
return ret;
},
query:function(param,src,tval="1",fval="0"){
var ret="&"+param+"=";
var obj=this.get(src);
if (obj){
if (obj.type=="checkbox"){
return ret+(obj.checked==true ? tval:fval);
}else{
return ret+encodeURIComponent(obj.value);
}
}
return ''
}
}
btn.value='<%:Waiting,(executing)...%>';
btn.disabled=true;
var select_ipk=opt.get("select_ipk").value;
console.log(select_ipk);
XHR.get('<%=url([[admin]], [[system]], [[advancedplus]], [[advancedrun]])%>',{
select_ipk: select_ipk
},function(x){});
poll_check();
return
}
function poll_check(){
var tag = document.getElementById('logview');
tag.style.display="block"
XHR.poll(3, '<%=url([[admin]], [[system]], [[advancedplus]], [[check]])%>', null,
function(x, data) {
var lv = document.getElementById('cbid.logview.1.conf');
if (x.responseText && lv) {
if (x.responseText=="\u0000"){
for(j = 0,len=this.XHR._q.length; j < len; j++) {
if (this.XHR._q[j].url == '<%=url([[admin]], [[system]], [[advancedplus]], [[check]])%>'){
this.XHR._q.splice(j,1);
checkbtn.disabled = false;
checkbtn.value = '<%:Click to execute%>';
break;
}
}
return
}
lv.innerHTML += x.responseText;
}
}
);}
//]]>
</script>
<%+cbi/valuefooter%>
@@ -0,0 +1,421 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
msgid "Advanced plus"
msgstr "进阶设置"
msgid "KuCat Theme Config"
msgstr "KuCat主题设置"
msgid "Argon Config"
msgstr "Argon主题设置"
msgid "Design Config"
msgstr "Design主题设置"
msgid "Advanced Setting"
msgstr "高级设置"
msgid "Here you can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended]"
msgstr "在这里你可以设置argon 主题的登录页面的模糊和透明度。[建议使用 Chrome]"
msgid "Here you can set the mode of the theme and change the proxy tool icon in the navigation bar. [Recommend Chrome]"
msgstr "这里可以设置主题的模式和更换导航栏的代理工具图标。[建议使用 Chrome]"
msgid "Advanced Edit"
msgstr "进阶参数编辑"
msgid "Built-in"
msgstr "内建"
msgid "The enhanced version of the original advanced settings allows for unified setting and management of background images for kucat/Agron/Opentopd themes, without the need to upload them separately. Color schemes for kucat/Agron/design themes can be set.<br>"
msgstr "原高级设置的加强版,可以统一设置管理 kucat/Agron/Opentopd三个主题登录壁纸图片,无须分开上传,可以设置kucat/Agron/design主题的颜色方案<br>"
msgid "At the same time, important plugin parameters can be compiled. At the same time, some system parameters can also be set, such as display and hide settings."
msgstr "同时可以编译重要的插件参数。同时还可以设置部分系统参数,如:显示隐藏设置设置等功能。"
msgid "Show or hide the setup wizard menu"
msgstr "显示或者隐藏设置向导菜单"
msgid "Hide Wizard"
msgstr "隐藏设置向导"
msgid "Wallpaper Source"
msgstr "壁纸来源"
msgid "Enable wallpaper"
msgstr "启用壁纸"
msgid "Wallpaper used as theme background"
msgstr "壁纸用作主题桌面壁纸"
msgid "Theme Background upload"
msgstr "主题壁纸文件管理"
msgid "Local wallpaper"
msgstr "本地壁纸库"
msgid "Online Bing wallpaper"
msgstr "Bing在线壁纸"
msgid "Bing Wallpapers"
msgstr "Bing 壁纸"
msgid "Auto download Bing wallpaper"
msgstr "自动下载Bing每日壁纸"
msgid "Auto download unsplash wallpaper"
msgstr "自动下载unsplash壁纸"
msgid "Auto download Iciba wallpaper"
msgstr "自动下载词霸每日壁纸"
msgid "Auto download Bird 4K wallpaper"
msgstr "自动下载360小鸟4K高清壁纸(每日4千张随机选)"
msgid "Local wallpapers need to be uploaded on their own, and only the first update downloaded on the same day will be automatically downloaded."
msgstr "本地壁纸库需自行上传,自动下载仅当天登录第一次才下载。彻底解决在线壁纸导致的卡顿和白屏等问题,如果还卡请清除浏览器缓存。"
msgid "Theme mode"
msgstr "主题模式"
msgid "Wallpaper blur radius"
msgstr "壁纸模糊半径"
msgid "Wallpaper transparency"
msgstr "壁纸透明度"
msgid "Follow System"
msgstr "跟随系统"
msgid "Inital Setup"
msgstr "设置向导"
msgid "Refreshing mode"
msgstr "清爽模式"
msgid "Enable Daily Word"
msgstr "启用每日一言"
msgid "Set font size"
msgstr "设置字体大小"
msgid "Small font"
msgstr "小字体"
msgid "Normal font"
msgstr "正常字体"
msgid "Large font"
msgstr "大字体"
msgid "Expand Toolbar"
msgstr "扩展工具栏"
msgid "Expand or shrink the toolbar"
msgstr "展开或者收缩导航栏"
msgid "Light"
msgstr "亮色"
msgid "Auto"
msgstr "自动"
msgid "Dark"
msgstr "暗色"
msgid "Force Light"
msgstr "强制亮色"
msgid "Force Dark"
msgstr "强制暗色"
msgid "Force desktop background"
msgstr "强制指定主题桌面壁纸"
msgid "Main Background color(RGB)"
msgstr "主背景色(RGB)"
msgid "Fence background transparency"
msgstr "隔栏背景透明度"
msgid "Fence background(RGB)"
msgstr "隔栏背景色(RGB)"
msgid "[Light mode] Primary Color"
msgstr "[亮色模式] 主色调"
msgid "[Dark mode] Primary Color"
msgstr "[暗色模式] 主色调"
msgid "A HEX Color ; ( Default: #5e72e4 )"
msgstr "十六进制颜色值 ( 预设为:#5e72e4 )"
msgid "A HEX Color ; ( Default: #483d8b )"
msgstr "十六进制颜色值 ( 预设为:#483d8b )"
msgid "[Light mode] Transparency"
msgstr "[亮色模式] 透明度"
msgid "[Dark mode] Transparency"
msgstr "[暗色模式] 透明度"
msgid "0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: 0.5 )"
msgstr "0最透明 - 1不透明 ; ( 建议: 透明 0 或 半透明预设 0.5 )"
msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )"
msgstr "0最透明 - 1不透明 ; ( 建议: 黑色半透明 0.5 )"
msgid "[Light mode] Frosted Glass Radius"
msgstr "[亮色模式] 毛玻璃模糊半径"
msgid "[Dark mode] Frosted Glass Radius"
msgstr "[暗色模式] 毛玻璃模糊半径"
msgid "Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )"
msgstr "值越大越模糊; ( 建议: 清透 1 或 模糊预设 10 )"
msgid "You can upload jpg, png, and gif files to create your favorite kucat desktop interface"
msgstr "你可以上传jpg、png、gif文件,以创建自己喜欢的kucat桌面界面"
msgid "You can upload files such as jpg,png,gif files, To change the login page background.Uploading Kucat, Agron, and Opentopd all three themes can be used once"
msgstr "你可以上传jpg、png、gif文件,以创建自己喜欢的登录界面,上传一次Kucat,Agron,Opentopd三种主题都可使用"
msgid "Save Changes"
msgstr "保存更改"
msgid "Choose local file:"
msgstr "选择本地文件:"
msgid "Couldn't open file:"
msgstr "无法打开文件:"
msgid "Create upload file error."
msgstr "创建上传文件失败。"
msgid "File name"
msgstr "文件名"
msgid "File saved to"
msgstr "文件保存到"
msgid "FileTransfer"
msgstr "文件传输"
msgid "Install"
msgstr "安装"
msgid "Attributes"
msgstr "属性"
msgid "Modify time"
msgstr "修改时间"
msgid "No specify upload file."
msgstr "未指定上传文件"
msgid "Path on Route:"
msgstr "路由根目录:"
msgid "Remove"
msgstr "移除"
msgid "Size"
msgstr "大小"
msgid "Upload (Free:"
msgstr "上传 (剩余空间:"
msgid "Background file list"
msgstr "壁纸文件列表"
msgid "Upload file to '/www/luci-static/resources/background/'"
msgstr "文件将上传到'/www/luci-static/resources/background/'"
msgid "Color scheme list"
msgstr "颜色配置方案列表"
msgid "List menu background color transparency"
msgstr "列表菜单背景色透明度"
msgid "HTML color picker"
msgstr "HTML 取色器"
msgid "There are 6 preset color schemes, and only the desktop background image can be set to display or not. The custom color values are RGB values such as 255,0,0 (representing red), and a blur radius of 0 indicates no lag in the image."
msgstr "预置6种颜色方案,只可设置桌面壁纸图显示与否。自定义的颜色值是RGB值如:255,0,0(表示红色),模糊半径为0则画面无卡顿。"
msgid "Set and manage features such as KuCat themed background wallpaper, main background color, partition background, transparency, blur, toolbar retraction and shortcut pointing.</br>"
msgstr "设置和管理酷猫主题登陆壁纸、桌面壁纸、主背景色、隔栏背景、透明度、模糊度、工具栏收放和快捷指向等功能。</br>"
msgid "</br>For specific usage, see:"
msgstr "</br>使用说明:"
msgid "Services Ssrkey settings"
msgstr "服务相关快捷键设置"
msgid "System Userkey settings"
msgstr "系统相关快捷键设置"
msgid "Status Homekey settings"
msgstr "状态相关快捷键设置"
msgid "Enable color matching"
msgstr "启用配色方案"
msgid "RGB Palette Tools"
msgstr "获取RGB颜色工具"
msgid "RGB color values"
msgstr "RGB颜色值"
msgid "RoyalBlue"
msgstr "皇家高端蓝"
msgid "MediumSeaGreen"
msgstr "中海清爽绿"
msgid "SandyBrown"
msgstr "桑迪布朗黄"
msgid "Black tea eye protection gray"
msgstr "黑茶护眼灰"
msgid "TomatoRed"
msgstr "番茄别样红"
msgid "Cool night time(gray and dark)"
msgstr "炫酷黑夜时空(灰度暗)"
msgid "White"
msgstr "纯静白色"
msgid "Cool Ocean Heart (transparent and bright)"
msgstr "炫酷海洋之心(透明亮)"
msgid "Login Background Upload"
msgstr "登录壁纸上传"
msgid "Desktop background upload"
msgstr "桌面壁纸上传"
msgid "Accessing using HTTPS"
msgstr "使用https访问"
msgid "Open the address in the background and use HTTPS for secure access"
msgstr "打开后台地址用https安全访问"
msgid "OPENWRT backend and SSH login do not display shortcut menus"
msgstr "OPENWRT后台和SSH登录不显示快捷菜单"
msgid "No backend menu required"
msgstr "不用后台菜单"
msgid "Wallpaper synchronization"
msgstr "壁纸同步"
msgid "Is the login wallpaper consistent with the desktop wallpaper? If not selected, it indicates that the desktop wallpaper and login wallpaper are set independently."
msgstr "登录壁纸与桌面壁纸是否一致,不选择表示桌面壁纸和登录壁纸独立设置。"
msgid "CPU scheduling mode"
msgstr "CPU调度模式"
msgid "Dynamic scheduling (default)"
msgstr "动态调度(默认)"
msgid "Highest performance"
msgstr "最高性能"
msgid "Energy saving mode"
msgstr "节能模式"
msgid "The higher the CPU tuning performance, the faster the speed, and the higher the energy consumption. The energy-saving mode has the lowest CPU frequency and saves the most power. Dynamic debugging adjusts CPU frequency and voltage based on CPU load to achieve optimal performance and energy efficiency balance"
msgstr "CPU调节性能越高速度越快能耗高。节能模式CPU频率最低也最省电。动态调试根据CPU负载情况来调整CPU频率和电压,以达到最佳的性能和能效平衡."
msgid "TTL value lock"
msgstr "TTL值锁定及安全性"
msgid "Extending the transmission distance of data packets in the network and improving network security"
msgstr "延长数据包在网络中的传输距离及提高网络安全性"
msgid "Qos automatic optimization"
msgstr "Qos自动优化"
msgid "Enable QOS automatic optimization strategy (testing function)"
msgstr "开启QOS自动优化策略(测试功能)"
msgid "You can choose Theme color mode here"
msgstr "你可以选择喜欢的主题模式"
msgid "Navigation bar setting"
msgstr "导航栏设置"
msgid "Display navigation bar"
msgstr "显示导航栏"
msgid "Close navigation bar"
msgstr "关闭导航栏"
msgid "The navigation bar is display by default"
msgstr "默认显示导航栏"
msgid "Navigation bar proxy"
msgstr "导航栏代理"
msgid "OpenClash by default"
msgstr "默认 OpenClash"
msgid "The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."
msgstr "开头的数字符号(#)或分号的每一行(;)被视为注释;删除(;)启用指定选项。"
msgid "<font color=\"Red\"><strong>Configuration documents are directly edited unless you know what you are doing, please do not easily modify these configuration documents. Incorrect configuration may result in errors such as inability to power on</strong></font><br/>"
msgstr "<font color=\"Red\"><strong>配置文档是直接编辑的除非你知道自己在干什么,否则请不要轻易修改这些配置文档。配置不正确可能会导致不能开机等错误。</strong></font><br/>"
msgid "This page is about configuration"
msgstr "本页是配置"
msgid "Document content. Automatic restart takes effect after saving the application"
msgstr "文档内容。应用保存后自动重启生效"
msgid "TSO optimization for network card interruption"
msgstr "网卡断流TSO优化"
msgid "Turn off the TSO parameters of the INTEL225 network card to improve network interruption"
msgstr "关闭INTEL225网卡TSO参数,改善网络断流"
msgid "Loading plugins"
msgstr "加载插件"
msgid "Choose to load and install the app store, DOCKER, all drivers, etc"
msgstr "选择加载安装应用商店、DOCKER、所有驱动等"
msgid "Select the type of loading"
msgstr "选择加载的类型"
msgid "Install iStore"
msgstr "安装iStore"
msgid "Install Docker"
msgstr "安装Docker仓库"
msgid "Install All drives"
msgstr "安装全部驱动"
msgid "Perform operation"
msgstr "执行操作"
msgid "Click to execute"
msgstr "点击执行"
msgid "Console account password login"
msgstr "控制台帐号密码登录"
msgid "Set up firewall for external network access"
msgstr "设置防火墙外网访问"
msgid "Add Android host name mapping"
msgstr "添加安卓主机名映射"
msgid "Resolve the issue of Android native TV not being able to connect to WiFi for the first time"
msgstr "解决安卓原生TV首次连不上wifi的问题"
@@ -0,0 +1,111 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
msgid "Advanced plus"
msgstr "进阶设置"
msgid "Advanced Setting"
msgstr "高级设置"
msgid "Advanced Edit"
msgstr "进阶参数编辑"
msgid "The enhanced version of the original advanced settings can set some supporting services and functions of the firmware"
msgstr "原高级设置的加强版,可以设置固件的一些配套服务与功能"
msgid "At the same time, important plugin parameters can be compiled. At the same time, some system parameters can also be set, such as display and hide settings."
msgstr "同时可以编译重要的插件参数。同时还可以设置部分系统参数,如:显示隐藏设置设置等功能。"
msgid "Show or hide the setup wizard menu"
msgstr "显示或者隐藏设置向导菜单"
msgid "Hide Wizard"
msgstr "隐藏设置向导"
msgid "</br>For specific usage, see:"
msgstr "</br>使用说明:"
msgid "Accessing using HTTPS"
msgstr "使用https访问"
msgid "Open the address in the background and use HTTPS for secure access"
msgstr "打开后台地址用https安全访问"
msgid "OPENWRT backend and SSH login do not display shortcut menus"
msgstr "OPENWRT后台和SSH登录不显示快捷菜单"
msgid "No backend menu required"
msgstr "不用后台菜单"
msgid "Qos automatic optimization"
msgstr "Qos自动优化"
msgid "Enable QOS automatic optimization strategy (testing function)"
msgstr "开启QOS自动优化策略(测试功能)"
msgid "Prevent uhttpd from exiting web services"
msgstr "防uhttpd退出WEB服务"
msgid "Waiting,(executing)..."
msgstr "稍等 ,努力加载中"
msgid "The starting number symbol (#) or each line of the semicolon (;) is considered a comment; Remove (;) and enable the specified option."
msgstr "开头的数字符号(#)或分号的每一行(;)被视为注释;删除(;)启用指定选项。"
msgid "<font color=\"Red\"><strong>Configuration documents are directly edited unless you know what you are doing, please do not easily modify these configuration documents. Incorrect configuration may result in errors such as inability to power on</strong></font><br/>"
msgstr "<font color=\"Red\"><strong>配置文档是直接编辑的除非你知道自己在干什么,否则请不要轻易修改这些配置文档。配置不正确可能会导致不能开机等错误。</strong></font><br/>"
msgid "This page is about configuration"
msgstr "本页是配置"
msgid "Document content. Automatic restart takes effect after saving the application"
msgstr "文档内容。应用保存后自动重启生效"
msgid "TSO optimization for network card interruption"
msgstr "网卡断流TSO优化"
msgid "Turn off the TSO parameters of the INTEL225 network card to improve network interruption"
msgstr "关闭INTEL225网卡TSO参数,改善网络断流"
msgid "Loading plugins"
msgstr "加载插件"
msgid "Choose to load and install the app store, DOCKER, all drivers, etc"
msgstr "选择加载安装应用商店、DOCKER、所有驱动等"
msgid "Select the type of loading"
msgstr "选择加载的类型"
msgid "Install iStore"
msgstr "安装iStore"
msgid "Install Docker"
msgstr "安装Docker仓库"
msgid "Install All drives"
msgstr "安装全部驱动"
msgid "Perform operation"
msgstr "执行操作"
msgid "Click to execute"
msgstr "点击执行"
msgid "Console account password login"
msgstr "控制台帐号密码登录"
msgid "Set up firewall for external network access"
msgstr "设置防火墙外网访问"
msgid "Add Android host name mapping"
msgstr "添加安卓主机名映射"
msgid "Resolve the issue of Android native TV not being able to connect to WiFi for the first time"
msgstr "解决安卓原生TV首次连不上wifi的问题"
@@ -0,0 +1,3 @@
config basic
+158
View File
@@ -0,0 +1,158 @@
#!/bin/sh /etc/rc.common
# Copyright 2023-2024 sirpdboy team <herboy2008@gmail.com>
START=99
STOP=10
USE_PROCD=1
PROG="/usr/bin/uhttpd-watchdog"
NAME="uhttpd-watchdog"
LOCK=/var/lock/advancedplus-boot.lock
cpumodeset()
{
for i in 0 1 2 3 ;do
echo $1 > /sys/devices/system/cpu/cpufreq/policy$i/scaling_governor
done
}
tsoset() {
tautocore=/etc/init.d/autocore
[ -f $tautocore ] || return
if [ "x$(uci -q get advancedplus.@basic[0].tsoset)" = "x1" ] ;then
sed -i 's/tso on/tso off/g' $tautocore
$tautocore restart
else
sed -i 's/tso off/tso on/g' $tautocore
$tautocore restart
fi
}
setnetwizard(){
if [ "x$(uci -q get advancedplus.@basic[0].wizard)" == "x1" ] ; then
[ `grep -e '-netwizard' /usr/share/luci/menu.d/luci-app-netwizard.json | wc -l` == 1 ] && {
sed -i 's|-netwizard|-znetwizard|' /usr/share/luci/menu.d/luci-app-netwizard.json
/etc/init.d/rpcd restart
}
uci -q set netwizard.default.showhide="1"
uci commit netwizard
else
uci -q set netwizard.default.showhide="0"
uci commit netwizard
[ `grep -e '-znetwizard' /usr/share/luci/menu.d/luci-app-netwizard.json | wc -l` == 1 ] && {
sed -i 's|-znetwizard|-netwizard|' /usr/share/luci/menu.d/luci-app-netwizard.json
/etc/init.d/rpcd restart
}
fi
}
set_login() {
if [ "x$(uci -q get advancedplus.@basic[0].set_login)" == "x1" ] ; then
sed -i '$ s|exec /bin/sh -l$|exec /bin/login|' /usr/libexec/login.sh
else
sed -i '$ s|exec /bin/login$|exec /bin/sh -l|' /usr/libexec/login.sh
fi
}
dhcp_domain() {
if [ "x$(uci -q get advancedplus.@basic[0].dhcp_domain)" = "x1" ] ; then
local domain_name="time.android.com"
local domain_ip="203.107.6.88"
existing_records=$(uci show dhcp | grep "dhcp.@domain\[[0-9]\+\].name='$domain_name'")
if [ -z "$existing_records" ]; then
uci add dhcp domain
uci -q set "dhcp.@domain[-1].name=$domain_name"
uci -q set "dhcp.@domain[-1].ip=$domain_ip"
uci commit dhcp
fi
else
existing_records=$(uci show dhcp | grep "dhcp.@domain\[[0-9]\+\].name='$domain_name'")
if [ -z "$existing_records" ]; then
uci delete dhcp.@domain[-1].name
uci delete dhcp.@domain[-1].ip
uci commit dhcp
fi
fi
}
advancedset(){
dev=`ifconfig | grep "Point-to-Point" | cut -d " " -f1`
[ ! $dev ] && dev=` uci -q get network.wan.device ` || dev=` uci -q get network.wan.device `
[ ! $dev ] && dev=br-lan
setnetwizard
set_login
# tsoset
sed -i "\/bin\/zsh/d" /etc/profile
[ "x$(uci -q get advancedplus.@basic[0].usshmenu)" = "x1" ] || echo '/usr/bin/zsh' >> /etc/profile
}
start_service() {
[ -f $LOCK ] && exit
[ "x$(uci -q get advancedplus.@basic[0].uhttpd)" = "x1" ] && uhttpd_service
touch $LOCK
rm -rf /tmp/luci-*
rm -f $LOCK 2>/dev/null
}
validate_service_file() {
if [ ! -x "/usr/sbin/uhttpd" ]; then
echo "错误:/usr/sbin/uhttpd 不存在或不可执行" >&2
return 1
fi
return 0
}
uhttpd_service() {
validate_service_file || return 1
echo "uhttpd 服务启用检测!"
if ! /etc/init.d/uhttpd enabled; then
echo "uhttpd 服务未启用,监控服务不启动" >&2
return 0
fi
procd_open_instance
procd_set_param command "$PROG" start
procd_set_param respawn
procd_set_param respawn_retry 5
procd_set_param respawn_threshold 3600
procd_set_param respawn_timeout 10
procd_set_param stderr 1
procd_set_param stdout 1
# procd_set_param file "$PROG"
# procd_set_param pidfile "/var/run/${NAME}.pid"
# procd_append_param env CHECK_INTERVAL=30
# procd_append_param env MAX_FAILURES=3
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger 'advancedplus'
}
stop_service() {
rm -f $LOCK 2>/dev/null
$PROG stop 2>/dev/null
rm -f "/var/run/${NAME}.pid"
}
restart() {
stop
sleep 2
start
}
reload() {
restart
}
reload_service() {
restart
}
@@ -0,0 +1,6 @@
#!/bin/sh
chmod +x /etc/init.d/advancedplus /usr/bin/advancedplusipk /usr/bin/uhttpd-watchdog
rm -f /tmp/luci-indexcache
exit 0
+95
View File
@@ -0,0 +1,95 @@
#!/bin/bash
skin="Kucat"
is_x86_64() {
DISTRIB_ARCH=$(cat /etc/openwrt_release | grep "DISTRIB_ARCH" | cut -d "'" -f 2)
if [ "$DISTRIB_ARCH" = "x86_64" ]; then
return 0
else
return 1
fi
}
remove_check_signature() {
local opkg_conf="/etc/opkg.conf"
sed -i '/option check_signature/d' "$opkg_conf"
}
is_iStore() {
[ -s "/www/luci-static/istore/index.js" ] && return 0 || return 1
}
is_vip() {
local ezver
ezver=$(grep -o "EZVER=\S*" /etc/ezopenwrt_version 2>/dev/null | cut -d'-' -f3)
[[ "${ezver^^}" =~ VIP ]]
}
istore_install(){
if is_iStore; then
echo "已存在有iStore应用商店,无须再安装!"
else
echo "正在安装iStore应用商店...."
remove_check_signature
opkg update
opkg remove git-lfs
setup_software_source 1
ISTORE_REPO=https://istore.linkease.com/repo/all/store
FCURL="curl --fail --show-error"
IPK=$($FCURL "$ISTORE_REPO/Packages.gz" | zcat | grep -m1 '^Filename: luci-app-store.*\.ipk$' | sed -n -e 's/^Filename: \(.\+\)$/\1/p')
[ -n "$IPK" ] || exit 1
$FCURL "$ISTORE_REPO/$IPK" | tar -xzO ./data.tar.gz | tar -xzO ./bin/is-opkg >/tmp/is-opkg
chmod 755 /tmp/is-opkg
/tmp/is-opkg update
/tmp/is-opkg install taskd
/tmp/is-opkg opkg install --force-reinstall luci-lib-taskd luci-lib-xterm
/tmp/is-opkg opkg install --force-reinstall luci-app-store || exit $?
[ -s "/etc/init.d/tasks" ] || /tmp/is-opkg opkg install --force-reinstall taskd
[ -s "/usr/lib/lua/luci/cbi.lua" ] || /tmp/is-opkg opkg install luci-compat >/dev/null 2>&1
sed -i 's/istore.linkease.com/istore.istoreos.com/g' /bin/is-opkg
sed -i 's/istore.linkease.com/istore.istoreos.com/g' /etc/opkg/compatfeeds.conf
sed -i 's/istore.linkease.com/istore.istoreos.com/g' /www/luci-static/istore/index.js
uci -q set luci.main.mediaurlbase='/luci-static/kucat'
uci commit
rm -rf /tmp/is-opkg /tmp/luci*
echo "iStore应用商店安装完成!"
fi
exit
}
drv_install(){
if is_vip; then
bash /etc/kmodreg drv
else
echo "目前此功能仅限VIP版本提供!"
fi
exit
}
docker_install(){
if is_vip; then
bash /etc/kmodreg docker
else
echo "目前此功能仅限VIP版本提供!"
fi
exit
}
case "$1" in
"istore")
istore_install
;;
"drv")
drv_install
;;
"docker")
docker_install
;;
esac
+109
View File
@@ -0,0 +1,109 @@
#!/bin/sh
# uhttpd 进程监控守护进程 2025-2026 by sirpdboy
PROG="uhttpd-watchdog"
UHTTPD_BIN="/usr/sbin/uhttpd"
UHTTPD_SERVICE="uhttpd"
CHECK_INTERVAL=30 # 检查间隔(秒)
MAX_FAILURES=3 # 最大连续失败次数
LOG_IDENT="$PROG"
log() {
logger -t "$LOG_IDENT" "$1"
}
check_binary() {
if [ ! -x "$UHTTPD_BIN" ]; then
log "错误:$UHTTPD_BIN 不存在或不可执行,监控停止"
return 1
fi
return 0
}
check_process() {
if pgrep -f "/usr/sbin/uhttpd" >/dev/null 2>&1 || \
pgrep -x uhttpd >/dev/null 2>&1; then
return 0
fi
return 1
}
restart_service() {
log "尝试重启 $UHTTPD_SERVICE 服务..."
if /etc/init.d/$UHTTPD_SERVICE restart >/dev/null 2>&1; then
sleep 3 # 等待服务启动
if check_process; then
log "$UHTTPD_SERVICE 重启成功"
return 0
else
log "$UHTTPD_SERVICE 重启后进程仍不存在"
return 1
fi
else
log "执行 service $UHTTPD_SERVICE restart 失败"
return 1
fi
}
monitor_loop() {
local failures=0
log "启动 $UHTTPD_SERVICE 监控守护进程"
while true; do
# 检查二进制文件
if ! check_binary; then
sleep 60
continue
fi
# 检查进程状态
if ! check_process; then
failures=$((failures + 1))
log "检测到 $UHTTPD_SERVICE 进程停止 (失败次数: $failures/$MAX_FAILURES)"
if [ $failures -ge $MAX_FAILURES ]; then
log "达到最大失败次数,尝试重启服务..."
if restart_service; then
failures=0
else
sleep 60
fi
fi
else
# 进程正常,重置失败计数器
if [ $failures -gt 0 ]; then
log "$UHTTPD_SERVICE 恢复正常运行"
failures=0
fi
fi
sleep $CHECK_INTERVAL
done
}
start() {
if pgrep -f "$PROG" | grep -v $$ >/dev/null 2>&1; then
log "警告:$PROG 已经在运行"
exit 1
fi
monitor_loop
}
stop() {
pkill -f "$PROG" 2>/dev/null
log "监控服务已停止"
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "用法: $0 {start|stop}"
exit 1
;;
esac
@@ -0,0 +1,12 @@
{
"luci-app-advancedplus": {
"description": "Grant UCI access for luci-app-advancedplus",
"read": {
"uci": [ "advancedplus" ]
},
"write": {
"uci": [ "advancedplus" ]
}
}
}