├── .github ├── diy │ ├── Modify.sh │ ├── convert_translation.sh │ ├── create_acl_for_luci.sh │ ├── homeproxy.patch │ ├── litte.sh │ ├── luci-app-eqos.patch │ ├── master.sh │ └── small.sh └── workflows │ ├── litte.yml │ ├── openwrt-packages.yml │ └── small.yml ├── README.md └── README_en.md /.github/diy/Modify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # -------------------------------------------------------- 3 | # Script for creating ACL file for each LuCI APP 4 | 5 | rm -rf ./*/.git & rm -rf ./*/.gitattributes 6 | rm -rf ./*/.svn & rm -rf ./*/.github & rm -rf ./*/.gitignore 7 | 8 | rm -rf create_acl_for_luci.err & rm -rf create_acl_for_luci.ok 9 | rm -rf create_acl_for_luci.warn 10 | 11 | exit 0 12 | -------------------------------------------------------------------------------- /.github/diy/convert_translation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for e in $(ls -d luci-*/po); do 4 | if [[ -d $e/zh-cn && ! -d $e/zh_Hans ]]; then 5 | ln -s zh-cn $e/zh_Hans 2>/dev/null 6 | elif [[ -d $e/zh_Hans && ! -d $e/zh-cn ]]; then 7 | ln -s zh_Hans $e/zh-cn 2>/dev/null 8 | fi 9 | done 10 | -------------------------------------------------------------------------------- /.github/diy/create_acl_for_luci.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # [CTCGFW]Project-OpenWrt 3 | # Use it under GPLv3, please. 4 | # -------------------------------------------------------- 5 | # Script for creating ACL file for each LuCI APP 6 | 7 | error_font="\033[31m[Error]$\033[0m " 8 | success_font="\033[32m[Success]\033[0m " 9 | info_font="\033[36m[Info]\033[0m " 10 | 11 | function echo_green_bg(){ 12 | echo -e "\033[42;37m$1\033[0m" 13 | } 14 | 15 | function echo_yellow_bg(){ 16 | echo -e "\033[43;37m$1\033[0m" 17 | } 18 | 19 | function echo_red_bg(){ 20 | echo -e "\033[41;37m$1\033[0m" 21 | } 22 | 23 | function clean_outdated_files(){ 24 | rm -f "create_acl_for_luci.err" "create_acl_for_luci.warn" "create_acl_for_luci.ok" 25 | } 26 | 27 | function check_if_acl_exist(){ 28 | ls "$1"/root/usr/share/rpcd/acl.d/*.json >/dev/null 2>&1 && return 0 || return 1 29 | } 30 | 31 | function check_config_files(){ 32 | [ "$(ls "$1"/root/etc/config/* 2>/dev/null | wc -l)" -ne "1" ] && return 0 || return 1 33 | } 34 | 35 | function get_config_name(){ 36 | ls "$1"/root/etc/config/* 2>/dev/null | awk -F '/' '{print $NF}' 37 | } 38 | 39 | function create_acl_file(){ 40 | mkdir -p "$1" 41 | echo -e "{ 42 | \"$2\": { 43 | \"description\": \"Grant UCI access for $2\", 44 | \"read\": { 45 | \"uci\": [ \"$3\" ] 46 | }, 47 | \"write\": { 48 | \"uci\": [ \"$3\" ] 49 | } 50 | } 51 | }" > "$1/$2.json" 52 | } 53 | 54 | function auto_create_acl(){ 55 | luci_app_list="$(find ./ -maxdepth 2 | grep -Eo ".*luci-app-[a-zA-Z0-9_-]+" | sort -s)" 56 | 57 | [ "$(echo -e "${luci_app_list}" | wc -l)" -gt "0" ] && for i in ${luci_app_list} 58 | do 59 | if check_if_acl_exist "$i"; then 60 | echo_yellow_bg "$i: has ACL file already, skipping..." | tee -a create_acl_for_luci.warn 61 | elif check_config_files "$i"; then 62 | echo_red_bg "$i: has no/multi config file(s), skipping..." | tee -a create_acl_for_luci.err 63 | else 64 | create_acl_file "$i/root/usr/share/rpcd/acl.d" "${i##*/}" "$(get_config_name "$i")" 65 | echo_green_bg "$i: ACL file has been generated." | tee -a create_acl_for_luci.ok 66 | fi 67 | done 68 | } 69 | 70 | while getopts "achml:n:p:" input_arg 71 | do 72 | case $input_arg in 73 | a) 74 | auto_create_acl 75 | exit 76 | ;; 77 | m) 78 | manual_mode=1 79 | ;; 80 | p) 81 | acl_path="$OPTARG" 82 | ;; 83 | l) 84 | luci_name="$OPTARG" 85 | ;; 86 | n) 87 | conf_name="$OPTARG" 88 | ;; 89 | c) 90 | clean_outdated_files 91 | exit 92 | ;; 93 | h|?|*) 94 | echo -e "${info_font}Usage: $0 [-a|-m (-p ) -l -n |-c]" 95 | exit 2 96 | ;; 97 | esac 98 | done 99 | 100 | if [ "*${manual_mode}*" == "*1*" ] && [ -n "${luci_name}" ] && [ -n "${conf_name}" ]; then 101 | acl_path="${acl_path:-root/usr/share/rpcd/acl.d}" 102 | if create_acl_file "${acl_path}" "${luci_name}" "${conf_name}"; then 103 | echo -e "${success_font}Output file: $(ls "${acl_path}/${luci_name}.json")" 104 | echo_green_bg "$(cat "${acl_path}/${luci_name}.json")" 105 | echo_green_bg "${luci_name}: ACL file has been generated." >> "create_acl_for_luci.ok" 106 | [ -e "create_acl_for_luci.err" ] && sed -i "/${luci_name}/d" "create_acl_for_luci.err" 107 | else 108 | echo -e "${error_font}Failed to create file ${acl_path}/${luci_name}.json" 109 | echo_red_bg "${luci_name}: Failed to create ACL file." >> "create_acl_for_luci.err" 110 | fi 111 | else 112 | echo -e "${info_font}Usage: $0 [-a|-m -p -l -n |-c]" 113 | exit 2 114 | fi 115 | -------------------------------------------------------------------------------- /.github/diy/homeproxy.patch: -------------------------------------------------------------------------------- 1 | diff --git a/luci-app-homeproxy/po/templates/homeproxy.pot b/luci-app-homeproxy1/po/templates/homeproxy.pot 2 | index dcaccd4..e4c1497 100644 3 | --- a/luci-app-homeproxy/po/templates/homeproxy.pot 4 | +++ b/luci-app-homeproxy1/po/templates/homeproxy.pot 5 | @@ -2845,3 +2845,8 @@ msgstr "" 6 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1097 7 | msgid "yacd-meta" 8 | msgstr "" 9 | + 10 | +#: htdocs/luci-static/resources/view/homeproxy/client.js:313 11 | +#: htdocs/luci-static/resources/view/homeproxy/server.js:782 12 | +msgid "UDP NAT expiration time" 13 | +msgstr "" 14 | diff --git a/luci-app-homeproxy/po/zh_Hans/homeproxy.po b/luci-app-homeproxy1/po/zh_Hans/homeproxy.po 15 | index 1af8fc5..6909a58 100644 16 | --- a/luci-app-homeproxy/po/zh_Hans/homeproxy.po 17 | +++ b/luci-app-homeproxy1/po/zh_Hans/homeproxy.po 18 | @@ -217,11 +217,11 @@ msgstr "自动配置防火墙" 19 | 20 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1121 21 | msgid "Auto set backend" 22 | -msgstr "" 23 | +msgstr "自动设置后端" 24 | 25 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1122 26 | msgid "Auto set backend address for dashboard." 27 | -msgstr "" 28 | +msgstr "自动设置面板后端地址" 29 | 30 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1398 31 | msgid "Auto update" 32 | @@ -233,7 +233,7 @@ msgstr "自动更新订阅。" 33 | 34 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1130 35 | msgid "Automatically generated if empty" 36 | -msgstr "" 37 | +msgstr "如果为空则自动生成" 38 | 39 | #: htdocs/luci-static/resources/view/homeproxy/node.js:634 40 | msgid "BBR" 41 | @@ -361,17 +361,17 @@ msgstr "思科公共 DNS(208.67.222.222)" 42 | 43 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1060 44 | msgid "Clash API settings" 45 | -msgstr "" 46 | +msgstr "Clash API 设置" 47 | 48 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1090 49 | #: htdocs/luci-static/resources/view/homeproxy/status.js:205 50 | msgid "Clash dashboard version" 51 | -msgstr "" 52 | +msgstr "Clash 面板版本" 53 | 54 | #: htdocs/luci-static/resources/view/homeproxy/client.js:619 55 | #: htdocs/luci-static/resources/view/homeproxy/client.js:964 56 | msgid "Clash mode" 57 | -msgstr "" 58 | +msgstr "Clash 模式" 59 | 60 | #: htdocs/luci-static/resources/view/homeproxy/status.js:165 61 | msgid "Clean log" 62 | @@ -401,7 +401,7 @@ msgstr "收集数据中..." 63 | 64 | #: htdocs/luci-static/resources/view/homeproxy/client.js:109 65 | msgid "Command failed" 66 | -msgstr "" 67 | +msgstr "命令执行失败" 68 | 69 | #: htdocs/luci-static/resources/view/homeproxy/client.js:294 70 | msgid "Common ports only (bypass P2P traffic)" 71 | @@ -418,7 +418,7 @@ msgstr "连接检查" 72 | 73 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1403 74 | msgid "Cron expression" 75 | -msgstr "" 76 | +msgstr "Cron 表达式" 77 | 78 | #: htdocs/luci-static/resources/view/homeproxy/client.js:282 79 | msgid "Custom routing" 80 | @@ -483,7 +483,7 @@ msgstr "默认 DNS 解析策略" 81 | 82 | #: htdocs/luci-static/resources/view/homeproxy/node.js:728 83 | msgid "Default Outbound" 84 | -msgstr "" 85 | +msgstr "默认出站" 86 | 87 | #: htdocs/luci-static/resources/view/homeproxy/client.js:799 88 | msgid "Default domain strategy for resolving the domain names." 89 | @@ -641,7 +641,7 @@ msgstr "" 90 | 91 | #: htdocs/luci-static/resources/view/homeproxy/node.js:740 92 | msgid "Drop/keep specific nodes from outbounds." 93 | -msgstr "" 94 | +msgstr "从出站规则中删除/保留 指定节点" 95 | 96 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1435 97 | msgid "Drop/keep specific nodes from subscriptions." 98 | @@ -696,7 +696,7 @@ msgstr "修改节点" 99 | 100 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:82 101 | msgid "Edit ruleset" 102 | -msgstr "" 103 | +msgstr "编辑规则集" 104 | 105 | #: htdocs/luci-static/resources/view/homeproxy/server.js:535 106 | msgid "Email" 107 | @@ -733,7 +733,7 @@ msgstr "启用 ACME" 108 | 109 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1065 110 | msgid "Enable Clash API" 111 | -msgstr "" 112 | +msgstr "启用 clash API" 113 | 114 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1117 115 | msgid "Enable ECH" 116 | @@ -830,7 +830,7 @@ msgstr "外部账户密钥标识符" 117 | 118 | #: htdocs/luci-static/resources/view/homeproxy/client.js:113 119 | msgid "Failed to execute \"/etc/init.d/%s %s\" action: %s" 120 | -msgstr "" 121 | +msgstr "执行“/etc/init.d/%s %s”操作失败:%s" 122 | 123 | #: htdocs/luci-static/resources/homeproxy.js:274 124 | msgid "Failed to upload %s, error: %s." 125 | @@ -1047,7 +1047,7 @@ msgstr "空闲超时" 126 | 127 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1017 128 | msgid "If Any is selected, uncheck others" 129 | -msgstr "" 130 | +msgstr "如果选择了 '任意',取消勾选其他选项" 131 | 132 | #: htdocs/luci-static/resources/view/homeproxy/node.js:837 133 | msgid "" 134 | @@ -1069,7 +1069,7 @@ msgstr "" 135 | 136 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1089 137 | msgid "If the selected dashboard is " 138 | -msgstr "" 139 | +msgstr "如果选定的仪表板是 " 140 | 141 | #: htdocs/luci-static/resources/view/homeproxy/node.js:822 142 | #: htdocs/luci-static/resources/view/homeproxy/server.js:345 143 | @@ -1099,7 +1099,7 @@ msgstr "导入" 144 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:173 145 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:175 146 | msgid "Import rule-set links" 147 | -msgstr "" 148 | +msgstr "导入规则集链接" 149 | 150 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1262 151 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1364 152 | @@ -1113,7 +1113,7 @@ msgstr "独立缓存" 153 | 154 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1104 155 | msgid "Installed" 156 | -msgstr "" 157 | +msgstr "已安装" 158 | 159 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1143 160 | msgid "Interface Control" 161 | @@ -1121,15 +1121,15 @@ msgstr "接口控制" 162 | 163 | #: htdocs/luci-static/resources/view/homeproxy/node.js:782 164 | msgid "Interrupt existing connections" 165 | -msgstr "" 166 | +msgstr "中断现有连接"" 167 | 168 | #: htdocs/luci-static/resources/view/homeproxy/node.js:783 169 | msgid "Interrupt existing connections when the selected outbound has changed." 170 | -msgstr "" 171 | +msgstr "当选定的出站规则更改时,中断现有连接" 172 | 173 | #: htdocs/luci-static/resources/view/homeproxy/node.js:763 174 | msgid "Interval" 175 | -msgstr "" 176 | +msgstr "间隔" 177 | 178 | #: htdocs/luci-static/resources/view/homeproxy/node.js:662 179 | #: htdocs/luci-static/resources/view/homeproxy/server.js:297 180 | @@ -1194,11 +1194,11 @@ msgstr "分配给接口的 IP(v4 或 v6)地址前缀列表。" 181 | 182 | #: htdocs/luci-static/resources/view/homeproxy/node.js:720 183 | msgid "List of outbound tags." 184 | -msgstr "" 185 | +msgstr "出站标签列表" 186 | 187 | #: htdocs/luci-static/resources/view/homeproxy/node.js:709 188 | msgid "List of subscription groups." 189 | -msgstr "" 190 | +msgstr "订阅组列表" 191 | 192 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1058 193 | #: htdocs/luci-static/resources/view/homeproxy/server.js:488 194 | @@ -1239,11 +1239,11 @@ msgstr "日志为空。" 195 | 196 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1078 197 | msgid "Log level" 198 | -msgstr "" 199 | +msgstr "日志级别" 200 | 201 | #: htdocs/luci-static/resources/homeproxy.js:237 202 | msgid "Lowercase only" 203 | -msgstr "" 204 | +msgstr "仅小写" 205 | 206 | #: htdocs/luci-static/resources/view/homeproxy/node.js:955 207 | msgid "MTU" 208 | @@ -1290,7 +1290,7 @@ msgstr "匹配 IP CIDR。" 209 | #: htdocs/luci-static/resources/view/homeproxy/client.js:620 210 | #: htdocs/luci-static/resources/view/homeproxy/client.js:965 211 | msgid "Match clash mode." 212 | -msgstr "" 213 | +msgstr "匹配 Clash 模式" 214 | 215 | #: htdocs/luci-static/resources/view/homeproxy/client.js:556 216 | #: htdocs/luci-static/resources/view/homeproxy/client.js:901 217 | @@ -1499,7 +1499,7 @@ msgstr "New Reno" 218 | 219 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1068 220 | msgid "Nginx Support" 221 | -msgstr "" 222 | +msgstr "Nginx 支持" 223 | 224 | #: htdocs/luci-static/resources/view/homeproxy/node.js:792 225 | #: htdocs/luci-static/resources/view/homeproxy/node.js:809 226 | @@ -1523,7 +1523,7 @@ msgstr "无订阅节点" 227 | 228 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:130 229 | msgid "No valid rule-set link found." 230 | -msgstr "" 231 | +msgstr "未找到有效的规则集链接" 232 | 233 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1301 234 | msgid "No valid share link found." 235 | @@ -1577,7 +1577,7 @@ msgstr "仅代理中国大陆" 236 | 237 | #: htdocs/luci-static/resources/view/homeproxy/client.js:97 238 | msgid "Open Clash Dashboard" 239 | -msgstr "" 240 | +msgstr " Clash 面板" 241 | 242 | #: htdocs/luci-static/resources/view/homeproxy/client.js:502 243 | #: htdocs/luci-static/resources/view/homeproxy/client.js:843 244 | @@ -1598,7 +1598,7 @@ msgstr "出站节点" 245 | 246 | #: htdocs/luci-static/resources/view/homeproxy/node.js:719 247 | msgid "Outbounds" 248 | -msgstr "" 249 | +msgstr "出站" 250 | 251 | #: htdocs/luci-static/resources/view/homeproxy/node.js:464 252 | msgid "Override address" 253 | @@ -1817,7 +1817,7 @@ msgstr "请求类型" 254 | 255 | #: htdocs/luci-static/resources/view/homeproxy/client.js:400 256 | msgid "Quick Reload" 257 | -msgstr "" 258 | +msgstr "快速加载" 259 | 260 | #: htdocs/luci-static/resources/view/homeproxy/client.js:724 261 | msgid "RDRC timeout" 262 | @@ -1880,7 +1880,7 @@ msgstr "区域 ID" 263 | 264 | #: htdocs/luci-static/resources/view/homeproxy/client.js:401 265 | msgid "Reload" 266 | -msgstr "" 267 | +msgstr "加载" 268 | 269 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:196 270 | msgid "Remote" 271 | @@ -1945,7 +1945,7 @@ msgstr "路由规则" 272 | #: htdocs/luci-static/resources/view/homeproxy/client.js:623 273 | #: htdocs/luci-static/resources/view/homeproxy/client.js:968 274 | msgid "Rule" 275 | -msgstr "" 276 | +msgstr "规则" 277 | 278 | #: htdocs/luci-static/resources/view/homeproxy/client.js:627 279 | #: htdocs/luci-static/resources/view/homeproxy/client.js:972 280 | @@ -1963,7 +1963,7 @@ msgstr "规则集 URL" 281 | 282 | #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:30 283 | msgid "Ruleset Settings" 284 | -msgstr "" 285 | +msgstr "规则集设置" 286 | 287 | #: htdocs/luci-static/resources/view/homeproxy/client.js:505 288 | #: htdocs/luci-static/resources/view/homeproxy/client.js:846 289 | @@ -2007,15 +2007,15 @@ msgstr "保存订阅设置" 290 | 291 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1130 292 | msgid "Secret" 293 | -msgstr "" 294 | +msgstr "密钥" 295 | 296 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1088 297 | msgid "Select Clash Dashboard" 298 | -msgstr "" 299 | +msgstr "选择 Clash 面板" 300 | 301 | #: htdocs/luci-static/resources/view/homeproxy/node.js:412 302 | msgid "Selector" 303 | -msgstr "" 304 | +msgstr "选择项" 305 | 306 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1023 307 | #: htdocs/luci-static/resources/view/homeproxy/server.js:89 308 | @@ -2182,7 +2182,7 @@ msgstr "成功导入 %s 个节点,共 %s 个。" 309 | 310 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:132 311 | msgid "Successfully imported %s rule-set of total %s." 312 | -msgstr "" 313 | +msgstr "成功导入 %s 个规则集,共 %s 个。" 314 | 315 | #: htdocs/luci-static/resources/view/homeproxy/status.js:85 316 | msgid "Successfully updated." 317 | @@ -2290,7 +2290,7 @@ msgstr "腾讯公共 DNS(119.29.29.29)" 318 | 319 | #: htdocs/luci-static/resources/view/homeproxy/node.js:756 320 | msgid "Test URL" 321 | -msgstr "" 322 | +msgstr "测试 URL" 323 | 324 | #: htdocs/luci-static/resources/view/homeproxy/server.js:551 325 | msgid "The ACME CA provider to use." 326 | @@ -2313,7 +2313,7 @@ msgstr "用于接收数据的 QUIC 流级流控制窗口。" 327 | #: htdocs/luci-static/resources/view/homeproxy/node.js:757 328 | msgid "" 329 | "The URL to test. https://www.gstatic.com/generate_204 will be used if empty." 330 | -msgstr "" 331 | +msgstr "用于测试的 URL。如果为空,将使用 https://www.gstatic.com/generate_204。" 332 | 333 | #: htdocs/luci-static/resources/view/homeproxy/client.js:757 334 | msgid "The address of the dns server. Support UDP, TCP, DoT, DoH and RCode." 335 | @@ -2337,15 +2337,15 @@ msgstr "" 336 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1113 337 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1116 338 | msgid "The current API URL is %s" 339 | -msgstr "" 340 | +msgstr "当前的 API URL 是 `%s`" 341 | 342 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1133 343 | msgid "The current Secret is " 344 | -msgstr "" 345 | +msgstr "当前的密钥是 " 346 | 347 | #: htdocs/luci-static/resources/view/homeproxy/node.js:729 348 | msgid "The default outbound tag. The first outbound will be used if empty." 349 | -msgstr "" 350 | +msgstr "默认出站标签。如果为空,将使用第一个出站标签。" 351 | 352 | #: htdocs/luci-static/resources/view/homeproxy/client.js:519 353 | msgid "" 354 | @@ -2381,7 +2381,7 @@ msgstr "" 355 | 356 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1404 357 | msgid "The default value is 2:00 every day" 358 | -msgstr "" 359 | +msgstr "默认值是每天 2:00" 360 | 361 | #: htdocs/luci-static/resources/view/homeproxy/client.js:793 362 | msgid "" 363 | @@ -2404,7 +2404,7 @@ msgstr "创建或选择现有 ACME 服务器帐户时使用的电子邮件地址 364 | 365 | #: htdocs/luci-static/resources/view/homeproxy/node.js:777 366 | msgid "The idle timeout. 30m will be used if empty." 367 | -msgstr "" 368 | +msgstr "空闲超时。如果为空,将使用 30m" 369 | 370 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1080 371 | #: htdocs/luci-static/resources/view/homeproxy/server.js:501 372 | @@ -2459,11 +2459,11 @@ msgstr "上游出站的标签。
启用时,其他拨号字段将被忽略 373 | 374 | #: htdocs/luci-static/resources/view/homeproxy/node.js:764 375 | msgid "The test interval. 3m will be used if empty." 376 | -msgstr "" 377 | +msgstr "测试间隔时间。如果为空,将使用 `3m`。" 378 | 379 | #: htdocs/luci-static/resources/view/homeproxy/node.js:771 380 | msgid "The test tolerance in milliseconds. 50 will be used if empty." 381 | -msgstr "" 382 | +msgstr "测试灵敏度(毫秒)。如果为空,将使用 50。`。" 383 | 384 | #: htdocs/luci-static/resources/view/homeproxy/node.js:825 385 | #: htdocs/luci-static/resources/view/homeproxy/server.js:385 386 | @@ -2514,11 +2514,12 @@ msgstr "" 387 | msgid "" 388 | "To enable this feature you need install luci-nginx and luci-ssl-" 389 | "nginx
first" 390 | -msgstr "" 391 | +msgstr "要启用此功能,您需要安装luci-nginx and luci-ssl-" 392 | +"nginx
" 393 | 394 | #: htdocs/luci-static/resources/view/homeproxy/node.js:770 395 | msgid "Tolerance" 396 | -msgstr "" 397 | +msgstr "灵敏度" 398 | 399 | #: htdocs/luci-static/resources/view/homeproxy/node.js:791 400 | #: htdocs/luci-static/resources/view/homeproxy/server.js:319 401 | @@ -2560,6 +2561,11 @@ msgstr "UDP 分片" 402 | msgid "UDP over TCP" 403 | msgstr "UDP over TCP" 404 | 405 | +#: htdocs/luci-static/resources/view/homeproxy/client.js:313 406 | +#: htdocs/luci-static/resources/view/homeproxy/server.js:782 407 | +msgid "UDP NAT expiration time" 408 | +msgstr "UDP NAT 过期时间" 409 | + 410 | #: htdocs/luci-static/resources/view/homeproxy/node.js:648 411 | msgid "UDP over stream" 412 | msgstr "UDP over stream" 413 | @@ -2574,7 +2580,7 @@ msgstr "UDP 中继模式" 414 | 415 | #: htdocs/luci-static/resources/view/homeproxy/node.js:413 416 | msgid "URLTest" 417 | -msgstr "" 418 | +msgstr "URL测试" 419 | 420 | #: htdocs/luci-static/resources/view/homeproxy/node.js:623 421 | #: htdocs/luci-static/resources/view/homeproxy/server.js:266 422 | @@ -2652,7 +2658,7 @@ msgstr "使用 ACME TLS 证书颁发机构。" 423 | 424 | #: htdocs/luci-static/resources/view/homeproxy/client.js:1101 425 | msgid "Use Online Dashboard" 426 | -msgstr "" 427 | +msgstr "使用在线面板" 428 | 429 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1053 430 | #: htdocs/luci-static/resources/view/homeproxy/server.js:483 431 | @@ -2778,7 +2784,7 @@ msgstr "" 432 | 433 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1335 434 | msgid "node" 435 | -msgstr "" 436 | +msgstr "节点" 437 | 438 | #: htdocs/luci-static/resources/homeproxy.js:292 439 | #: htdocs/luci-static/resources/homeproxy.js:310 440 | @@ -2823,7 +2829,7 @@ msgstr "sing-box 服务端" 441 | 442 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1336 443 | msgid "sub" 444 | -msgstr "" 445 | +msgstr "订阅" 446 | 447 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1139 448 | msgid "uTLS fingerprint" 449 | @@ -2850,7 +2856,7 @@ msgstr "独立 UCI 标识" 450 | #: htdocs/luci-static/resources/view/homeproxy/node.js:1353 451 | #: htdocs/luci-static/resources/view/homeproxy/ruleset.js:164 452 | msgid "unique label" 453 | -msgstr "" 454 | +msgstr "唯一标签" 455 | 456 | #: htdocs/luci-static/resources/homeproxy.js:301 457 | msgid "unique value" 458 | -------------------------------------------------------------------------------- /.github/diy/litte.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | function git_sparse_clone() { 3 | branch="$1" rurl="$2" localdir="$3" && shift 3 4 | git clone -b $branch --depth 1 --filter=blob:none --sparse $rurl $localdir 5 | cd $localdir 6 | git sparse-checkout init --cone 7 | git sparse-checkout set $@ 8 | mv -n $@ ../ 9 | cd .. 10 | rm -rf $localdir 11 | } 12 | 13 | function mvdir() { 14 | mv -n `find $1/* -maxdepth 0 -type d` ./ 15 | rm -rf $1 16 | } 17 | git clone --depth 1 https://github.com/sirpdboy/luci-app-lucky 18 | git clone --depth 1 https://github.com/kiddin9/luci-app-dnsfilter 19 | git clone --depth 1 https://github.com/yaof2/luci-app-ikoolproxy 20 | git clone --depth 1 https://github.com/ntlf9t/luci-app-easymesh 21 | git clone --depth 1 -b openwrt-18.06 https://github.com/tty228/luci-app-wechatpush 22 | #git clone --depth 1 -b 18.06 https://github.com/jerrykuku/luci-theme-argon 23 | git clone --depth 1 https://github.com/jerrykuku/luci-theme-argon 24 | git clone --depth 1 https://github.com/jerrykuku/luci-app-argon-config 25 | git clone --depth 1 https://github.com/sirpdboy/luci-app-advanced 26 | git clone --depth 1 https://github.com/sirpdboy/luci-theme-opentopd 27 | #git clone --depth 1 https://github.com/jefferymvp/luci-app-koolproxyR 28 | git clone --depth 1 https://github.com/hubbylei/luci-app-clash 29 | git clone --depth 1 https://github.com/derisamedia/luci-theme-alpha 30 | #git clone --depth 1 https://github.com/QiuSimons/openwrt-mos && mv -n openwrt-mos/*mosdns ./ ; rm -rf openwrt-mos 31 | git clone --depth 1 -b v5-lua https://github.com/sbwml/luci-app-mosdns openwrt-mos && mv -n openwrt-mos/luci-app-mosdns ./; rm -rf openwrt-mos 32 | git clone --depth 1 https://github.com/sbwml/luci-app-mosdns openwrt-mos1 && mv -n openwrt-mos1/{mosdns,v2dat} ./; rm -rf openwrt-mos1 33 | git clone --depth 1 https://github.com/sbwml/luci-app-daed daed1 && mv -n daed1/*daed ./; rm -rf daed1 34 | git clone --depth 1 https://github.com/kenzok8/luci-theme-ifit ifit && mv -n ifit/luci-theme-ifit ./;rm -rf ifit 35 | git clone --depth 1 https://github.com/kenzok78/luci-theme-argone 36 | git clone --depth 1 https://github.com/kenzok78/luci-app-argone-config 37 | git clone --depth 1 https://github.com/kenzok78/luci-app-adguardhome 38 | git clone --depth 1 https://github.com/kenzok78/luci-app-fileassistant 39 | #git clone --depth 1 https://github.com/kenzok78/luci-app-filebrowser 40 | git clone --depth 1 https://github.com/kenzok78/luci-theme-design 41 | #git clone --depth 1 https://github.com/kenzok78/luci-app-design-config 42 | git clone --depth 1 https://github.com/kenzok78/luci-app-guest-wifi 43 | git clone --depth 1 -b lede https://github.com/pymumu/luci-app-smartdns 44 | git clone --depth 1 https://github.com/Huangjoe123/luci-app-eqos 45 | git clone --depth 1 https://github.com/sirpdboy/luci-app-partexp 46 | git clone --depth 1 -b master https://github.com/UnblockNeteaseMusic/luci-app-unblockneteasemusic 47 | git clone --depth 1 https://github.com/ophub/luci-app-amlogic amlogic && mv -n amlogic/luci-app-amlogic ./;rm -rf amlogic 48 | git clone --depth 1 https://github.com/linkease/istore && mv -n istore/luci/* ./; rm -rf istore 49 | git clone --depth 1 https://github.com/linkease/nas-packages && mv -n nas-packages/network/services/{ddnsto,quickstart} ./; rm -rf nas-packages 50 | git clone --depth 1 https://github.com/linkease/nas-packages-luci && mv -n nas-packages-luci/luci/{luci-app-ddnsto,luci-app-istorex,luci-app-quickstart} ./; rm -rf nas-packages-luci 51 | git clone --depth 1 https://github.com/messense/aliyundrive-webdav aliyundrive && mv -n aliyundrive/openwrt/* ./ ; rm -rf aliyundrive 52 | git clone --depth 1 https://github.com/honwen/luci-app-aliddns 53 | git clone --depth 1 https://github.com/sbwml/luci-app-alist openwrt-alist && mv -n openwrt-alist/alist ./ ; rm -rf openwrt-alist 54 | git clone --depth 1 -b lua https://github.com/sbwml/luci-app-alist openwrt-alist1 && mv -n openwrt-alist1/luci-app-alist ./ ; rm -rf openwrt-alist1 55 | git clone --depth 1 https://github.com/lisaac/luci-app-dockerman dockerman && mv -n dockerman/applications/* ./; rm -rf dockerman 56 | git clone --depth 1 https://github.com/vernesong/OpenClash && mv -n OpenClash/luci-app-openclash ./; rm -rf OpenClash 57 | git clone --depth 1 https://github.com/kenzok8/litte && mv -n litte/luci-theme-atmaterial_new litte/luci-theme-tomato ./ ; rm -rf litte 58 | #git clone --depth 1 https://github.com/kenzok8/wall && mv -n wall/UnblockNeteaseMusic wall/ddns-go wall/gost wall/smartdns wall/adguardhome wall/filebrowser ./ ; rm -rf wall 59 | git clone --depth 1 https://github.com/kenzok8/wall && mv -n wall/* ./ ; rm -rf wall 60 | git clone --depth 1 https://github.com/QiuSimons/luci-app-daed-next daed1 && mvdir daed1 61 | git clone --depth 1 https://github.com/sirpdboy/luci-app-ddns-go ddnsgo && mv -n ddnsgo/luci-app-ddns-go ./; rm -rf ddnsgo 62 | git clone --depth 1 -b main https://github.com/xiaorouji/openwrt-passwall passwall1 && mv -n passwall1/luci-app-passwall ./; rm -rf passwall1 63 | git clone --depth 1 https://github.com/xiaorouji/openwrt-passwall2 passwall2 && mv -n passwall2/luci-app-passwall2 ./;rm -rf passwall2 64 | git clone --depth 1 https://github.com/fw876/helloworld && mv -n helloworld/{luci-app-ssr-plus,tuic-client,shadow-tls} ./ ; rm -rf helloworld 65 | git clone --depth 1 https://github.com/kiddin9/kwrt-packages && mv -n kwrt-packages/luci-app-bypass ./ ; rm -rf kwrt-packages 66 | #git clone --depth 1 https://github.com/muink/luci-app-homeproxy 67 | git clone --depth 1 https://github.com/immortalwrt/packages && mv -n packages/net/cdnspeedtest ./ ; rm -rf packages 68 | git clone --depth 1 https://github.com/immortalwrt/packages && mv -n packages/lang/lua-maxminddb ./ ; rm -rf packages 69 | git clone --depth 1 -b openwrt-18.06 https://github.com/immortalwrt/luci && mv -n luci/applications/{luci-app-gost,luci-app-filebrowser} ./ && rm -rf luci 70 | #git clone --depth 1 https://github.com/morytyann/OpenWrt-mihomo OpenWrt-mihomo && mv -n OpenWrt-mihomo/*mihomo ./ ; rm -rf OpenWrt-mihomo 71 | git clone --depth 1 https://github.com/nikkinikki-org/OpenWrt-nikki OpenWrt-nikki && mv -n OpenWrt-nikki/*nikki ./ ; rm -rf OpenWrt-nikki 72 | git clone --depth 1 https://github.com/muink/openwrt-fchomo openwrt-fchomo && mv -n openwrt-fchomo/*homo ./ ; rm -rf openwrt-fchomo 73 | #git clone --depth 1 https://github.com/jerrykuku/luci-app-vssr 74 | git clone --depth 1 https://github.com/immortalwrt/homeproxy luci-app-homeproxy 75 | #git clone --depth 1 https://github.com/jerrykuku/lua-maxminddb 76 | #svn export https://github.com/coolsnowwolf/luci/trunk/libs/luci-lib-ipkg 77 | 78 | sed -i \ 79 | -e 's?include \.\./\.\./\(lang\|devel\)?include $(TOPDIR)/feeds/packages/\1?' \ 80 | -e 's?2. Clash For OpenWRT?3. Applications?' \ 81 | -e 's?\.\./\.\./luci.mk?$(TOPDIR)/feeds/luci/luci.mk?' \ 82 | -e 's/ca-certificates/ca-bundle/' \ 83 | */Makefile 84 | 85 | sed -i 's/luci-lib-ipkg/luci-base/g' luci-app-store/Makefile 86 | sed -i 's/+dockerd/+dockerd +cgroupfs-mount/' luci-app-docker*/Makefile 87 | sed -i '$i /etc/init.d/dockerd restart &' luci-app-docker*/root/etc/uci-defaults/* 88 | sed -i 's/+libcap /+libcap +libcap-bin /' luci-app-openclash/Makefile 89 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-argon/' luci-app-argon-config/Makefile 90 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-design/' luci-theme-design-config/Makefile 91 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-argone/' luci-app-argone-config/Makefile 92 | #sed -i -e 's/nas/services/g' -e 's/NAS/Services/g' $(grep -rl 'nas\|NAS' luci-app-fileassistant) 93 | #sed -i '65,73d' adguardhome/Makefile 94 | #sed -i '/^\t\$(call Build\/Prepare\/Default)/a \\tif [ -d "$(BUILD_DIR)\/AdGuardHome-$(PKG_VERSION)" ]; then \\\n\t\tmv "$(BUILD_DIR)\/AdGuardHome-$(PKG_VERSION)\/"* "$(BUILD_DIR)\/adguardhome-$(PKG_VERSION)\/"; \\\n\tfi' adguardhome/Makefile 95 | #sed -i '/gzip -dc $(DL_DIR)\/$(FRONTEND_FILE) | $(HOST_TAR) -C $(PKG_BUILD_DIR)\/ $(TAR_OPTIONS)/a \\t( cd "$(BUILD_DIR)\/adguardhome-$(PKG_VERSION)"; go mod tidy )' adguardhome/Makefile 96 | rm -rf ./*/.git ./*/.gitattributes ./*/.svn ./*/.github ./*/.gitignore create_acl_for_luci.err create_acl_for_luci.ok create_acl_for_luci.warn 97 | sed -i '/entry({"admin", "nas"}, firstchild(), "NAS", 45).dependent = false/d; s/entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS"))/entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS"), 121).dependent = true/' luci-app-eqos/luasrc/controller/eqos.lua 98 | sed -i \ 99 | -e 's?include \.\./\.\./\(lang\|devel\)?include $(TOPDIR)/feeds/packages/\1?' \ 100 | -e 's?\.\./\.\./luci.mk?$(TOPDIR)/feeds/luci/luci.mk?' \ 101 | */Makefile 102 | 103 | rm -rf ./*/.git ./*/.gitattributes ./*/.svn ./*/.github ./*/.gitignore 104 | #rm -rf adguardhome/patches 105 | #find . -type f -name Makefile -exec sed -i 's/PKG_BUILD_FLAGS:=no-mips16/PKG_USE_MIPS16:=0/g' {} + 106 | #sed -i '59s/.*/local port=luci.sys.exec("awk \x27\/^dns:\/ {found_dns=1} found_dns \x26\x26 \/\^ port:\/ {print $2; exit}\x27 "..configpath.." 2>nul")/' luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua 107 | exit 0 108 | 109 | -------------------------------------------------------------------------------- /.github/diy/luci-app-eqos.patch: -------------------------------------------------------------------------------- 1 | diff --git a/luci-app-eqos/luasrc/controller/eqos.lua b/luci-app-eqos1/luasrc/controller/eqos.lua 2 | index a8aea86..d24a36f 100755 3 | --- a/luci-app-eqos/luasrc/controller/eqos.lua 4 | +++ b/luci-app-eqos/luasrc/controller/eqos.lua 5 | @@ -6,6 +6,5 @@ function index() 6 | end 7 | 8 | local page 9 | - entry({"admin", "nas"}, firstchild(), "NAS", 45).dependent = false 10 | - entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS")) 11 | + entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS"), 121).dependent = true 12 | end 13 | -------------------------------------------------------------------------------- /.github/diy/master.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | function git_sparse_clone() { 3 | branch="$1" rurl="$2" localdir="$3" && shift 3 4 | git clone -b $branch --depth 1 --filter=blob:none --sparse $rurl $localdir 5 | cd $localdir 6 | git sparse-checkout init --cone 7 | git sparse-checkout set $@ 8 | mv -n $@ ../ 9 | cd .. 10 | rm -rf $localdir 11 | } 12 | 13 | function mvdir() { 14 | mv -n `find $1/* -maxdepth 0 -type d` ./ 15 | rm -rf $1 16 | } 17 | git clone --depth 1 https://github.com/sirpdboy/luci-app-lucky 18 | git clone --depth 1 https://github.com/kiddin9/luci-app-dnsfilter 19 | git clone --depth 1 https://github.com/yaof2/luci-app-ikoolproxy 20 | git clone --depth 1 https://github.com/ntlf9t/luci-app-easymesh 21 | git clone --depth 1 -b openwrt-18.06 https://github.com/tty228/luci-app-wechatpush 22 | #git clone --depth 1 -b 18.06 https://github.com/jerrykuku/luci-theme-argon 23 | git clone --depth 1 https://github.com/jerrykuku/luci-theme-argon 24 | git clone --depth 1 https://github.com/jerrykuku/luci-app-argon-config 25 | git clone --depth 1 https://github.com/sirpdboy/luci-app-advanced 26 | git clone --depth 1 https://github.com/sirpdboy/luci-theme-opentopd 27 | #git clone --depth 1 https://github.com/jefferymvp/luci-app-koolproxyR 28 | git clone --depth 1 https://github.com/hubbylei/luci-app-clash 29 | git clone --depth 1 https://github.com/derisamedia/luci-theme-alpha 30 | #git clone --depth 1 https://github.com/QiuSimons/openwrt-mos && mv -n openwrt-mos/*mosdns ./ ; rm -rf openwrt-mos 31 | #git clone --depth 1 https://github.com/sbwml/luci-app-mosdns openwrt-mos && mv -n openwrt-mos/{*mosdns,v2dat} ./; rm -rf openwrt-mos 32 | git clone --depth 1 https://github.com/kenzok8/luci-theme-ifit ifit && mv -n ifit/luci-theme-ifit ./;rm -rf ifit 33 | git clone --depth 1 https://github.com/kenzok78/luci-theme-argone 34 | git clone --depth 1 https://github.com/kenzok78/luci-app-argone-config 35 | git clone --depth 1 https://github.com/kenzok78/luci-app-adguardhome 36 | git clone --depth 1 https://github.com/kenzok78/luci-app-fileassistant 37 | #git clone --depth 1 https://github.com/kenzok78/luci-app-filebrowser 38 | git clone --depth 1 https://github.com/kenzok78/luci-theme-design 39 | git clone --depth 1 https://github.com/kenzok78/luci-app-design-config 40 | git clone --depth 1 -b lede https://github.com/pymumu/luci-app-smartdns 41 | git clone --depth 1 https://github.com/Huangjoe123/luci-app-eqos 42 | #git clone --depth 1 https://github.com/jerrykuku/lua-maxminddb 43 | git clone --depth 1 https://github.com/sirpdboy/luci-app-partexp 44 | git clone --depth 1 -b master https://github.com/UnblockNeteaseMusic/luci-app-unblockneteasemusic 45 | git clone --depth 1 https://github.com/ophub/luci-app-amlogic amlogic && mv -n amlogic/luci-app-amlogic ./;rm -rf amlogic 46 | git clone --depth 1 https://github.com/linkease/istore && mv -n istore/luci/* ./; rm -rf istore 47 | git clone --depth 1 https://github.com/linkease/nas-packages && mv -n nas-packages/network/services/{ddnsto,quickstart} ./; rm -rf nas-packages 48 | git clone --depth 1 https://github.com/linkease/nas-packages-luci && mv -n nas-packages-luci/luci/{luci-app-ddnsto,luci-app-istorex,luci-app-quickstart} ./; rm -rf nas-packages-luci 49 | git clone --depth 1 https://github.com/messense/aliyundrive-webdav aliyundrive && mv -n aliyundrive/openwrt/* ./ ; rm -rf aliyundrive 50 | git clone --depth 1 https://github.com/honwen/luci-app-aliddns 51 | git clone --depth 1 https://github.com/sbwml/luci-app-alist openwrt-alist && mv -n openwrt-alist/alist ./ ; rm -rf openwrt-alist 52 | git clone --depth 1 -b lua https://github.com/sbwml/luci-app-alist openwrt-alist1 && mv -n openwrt-alist1/luci-app-alist ./ ; rm -rf openwrt-alist1 53 | git clone --depth 1 https://github.com/lisaac/luci-app-dockerman dockerman && mv -n dockerman/applications/* ./; rm -rf dockerman 54 | #git clone --depth 1 https://github.com/vernesong/OpenClash && mv -n OpenClash/luci-app-openclash ./; rm -rf OpenClash 55 | git clone --depth 1 https://github.com/kenzok8/litte && mv -n litte/luci-theme-atmaterial_new litte/luci-theme-tomato ./ ; rm -rf litte 56 | git clone --depth 1 https://github.com/sirpdboy/luci-app-ddns-go ddnsgo && mv -n ddnsgo/luci-app-ddns-go ./; rm -rf ddnsgo 57 | git clone --depth 1 https://github.com/kenzok8/wall && mv -n wall/UnblockNeteaseMusic wall/ddns-go wall/gost wall/smartdns wall/adguardhome wall/filebrowser ./ ; rm -rf wall 58 | git clone --depth 1 -b openwrt-18.06 https://github.com/immortalwrt/luci && mv -n luci/applications/{luci-app-gost,luci-app-filebrowser} ./ && rm -rf luci 59 | git clone --depth 1 https://github.com/immortalwrt/packages && mv -n packages/lang/lua-maxminddb ./ ; rm -rf packages 60 | #git clone --depth 1 https://github.com/immortalwrt/homeproxy luci-app-homeproxy 61 | 62 | sed -i \ 63 | -e 's?include \.\./\.\./\(lang\|devel\)?include $(TOPDIR)/feeds/packages/\1?' \ 64 | -e 's?2. Clash For OpenWRT?3. Applications?' \ 65 | -e 's?\.\./\.\./luci.mk?$(TOPDIR)/feeds/luci/luci.mk?' \ 66 | -e 's/ca-certificates/ca-bundle/' \ 67 | */Makefile 68 | 69 | sed -i 's/luci-lib-ipkg/luci-base/g' luci-app-store/Makefile 70 | sed -i 's/+dockerd/+dockerd +cgroupfs-mount/' luci-app-docker*/Makefile 71 | sed -i '$i /etc/init.d/dockerd restart &' luci-app-docker*/root/etc/uci-defaults/* 72 | #sed -i 's/+libcap /+libcap +libcap-bin /' luci-app-openclash/Makefile 73 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-argon/' luci-app-argon-config/Makefile 74 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-design/' luci-theme-design-config/Makefile 75 | sed -i 's/\(+luci-compat\)/\1 +luci-theme-argone/' luci-app-argone-config/Makefile 76 | #sed -i -e 's/nas/services/g' -e 's/NAS/Services/g' $(grep -rl 'nas\|NAS' luci-app-fileassistant) 77 | #sed -i '65,73d' adguardhome/Makefile 78 | sed -i '/entry({"admin", "nas"}, firstchild(), "NAS", 45).dependent = false/d; s/entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS"))/entry({"admin", "network", "eqos"}, cbi("eqos"), _("EQoS"), 121).dependent = true/' luci-app-eqos/luasrc/controller/eqos.lua 79 | #sed -i '/^\t\$(call Build\/Prepare\/Default)/a \\tif [ -d "$(BUILD_DIR)\/AdGuardHome-$(PKG_VERSION)" ]; then \\\n\t\tmv "$(BUILD_DIR)\/AdGuardHome-$(PKG_VERSION)\/"* "$(BUILD_DIR)\/adguardhome-$(PKG_VERSION)\/"; \\\n\tfi' adguardhome/Makefile 80 | #sed -i '/gzip -dc $(DL_DIR)\/$(FRONTEND_FILE) | $(HOST_TAR) -C $(PKG_BUILD_DIR)\/ $(TAR_OPTIONS)/a \\t( cd "$(BUILD_DIR)\/adguardhome-$(PKG_VERSION)"; go mod tidy )' adguardhome/Makefile 81 | rm -rf ./*/.git ./*/.gitattributes ./*/.svn ./*/.github ./*/.gitignore create_acl_for_luci.err create_acl_for_luci.ok create_acl_for_luci.warn 82 | rm -rf adguardhome/patches 83 | #sed -i '59s/.*/local port=luci.sys.exec("awk \x27\/^dns:\/ {found_dns=1} found_dns \x26\x26 \/\^ port:\/ {print $2; exit}\x27 "..configpath.." 2>nul")/' luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua 84 | exit 0 85 | 86 | -------------------------------------------------------------------------------- /.github/diy/small.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | function git_sparse_clone() { 3 | branch="$1" rurl="$2" localdir="$3" && shift 3 4 | git clone -b $branch --depth 1 --filter=blob:none --sparse $rurl $localdir 5 | cd $localdir 6 | git sparse-checkout init --cone 7 | git sparse-checkout set $@ 8 | mv -n $@ ../ 9 | cd .. 10 | rm -rf $localdir 11 | } 12 | 13 | function mvdir() { 14 | mv -n `find $1/* -maxdepth 0 -type d` ./ 15 | rm -rf $1 16 | } 17 | git clone --depth 1 https://github.com/kenzok8/wall && mv -n wall/* ./ ; rm -rf {UnblockNeteaseMusic,adguardhome,alist,ddns-go,docker,dockerd,filebrowser,gost,lucky,mosdns,sagernet-core,smartdns,ucl,upx-static,upx} && rm -rf wall 18 | git clone --depth 1 -b v5-lua https://github.com/sbwml/luci-app-mosdns openwrt-mos && mv -n openwrt-mos/luci-app-mosdns ./; rm -rf openwrt-mos 19 | git clone --depth 1 https://github.com/sbwml/luci-app-mosdns openwrt-mos1 && mv -n openwrt-mos1/{mosdns,v2dat} ./; rm -rf openwrt-mos1 20 | git clone --depth 1 https://github.com/vernesong/OpenClash && mv -n OpenClash/luci-app-openclash ./; rm -rf OpenClash 21 | git clone --depth 1 -b main https://github.com/xiaorouji/openwrt-passwall passwall1 && mv -n passwall1/luci-app-passwall ./; rm -rf passwall1 22 | git clone --depth 1 https://github.com/xiaorouji/openwrt-passwall2 passwall2 && mv -n passwall2/luci-app-passwall2 ./;rm -rf passwall2 23 | git clone --depth 1 https://github.com/fw876/helloworld && mv -n helloworld/{luci-app-ssr-plus,tuic-client,shadow-tls} ./ ; rm -rf helloworld 24 | git clone --depth 1 https://github.com/kiddin9/kwrt-packages && mv -n kwrt-packages/luci-app-bypass ./ ; rm -rf kwrt-packages 25 | #git clone --depth 1 https://github.com/morytyann/OpenWrt-mihomo OpenWrt-mihomo && mv -n OpenWrt-mihomo/*mihomo ./ ; rm -rf OpenWrt-mihomo 26 | git clone --depth 1 https://github.com/nikkinikki-org/OpenWrt-nikki OpenWrt-nikki && mv -n OpenWrt-nikki/*nikki ./ ; rm -rf OpenWrt-nikki 27 | #git clone --depth 1 https://github.com/muink/luci-app-homeproxy 28 | git clone --depth 1 https://github.com/muink/openwrt-fchomo openwrt-fchomo && mv -n openwrt-fchomo/*homo ./ ; rm -rf openwrt-fchomo 29 | 30 | #git clone --depth 1 https://github.com/xiaorouji/openwrt-passwall-packages passwall-packages && mv -n passwall-packages/{sing-box,shadowsocks-rust} ./; rm -rf passwall-packages 31 | #git clone --depth 1 https://github.com/jerrykuku/luci-app-vssr 32 | git clone --depth 1 https://github.com/immortalwrt/homeproxy luci-app-homeproxy 33 | #svn export https://github.com/immortalwrt/packages/trunk/devel/gn 34 | 35 | sed -i \ 36 | -e 's?include \.\./\.\./\(lang\|devel\)?include $(TOPDIR)/feeds/packages/\1?' \ 37 | -e 's?\.\./\.\./luci.mk?$(TOPDIR)/feeds/luci/luci.mk?' \ 38 | */Makefile 39 | sed -i 's/+libcap /+libcap +libcap-bin /' luci-app-openclash/Makefile 40 | 41 | rm -rf ./*/.git ./*/.gitattributes ./*/.svn ./*/.github ./*/.gitignore 42 | #find . -type f -name Makefile -exec sed -i 's/PKG_BUILD_FLAGS:=no-mips16/PKG_USE_MIPS16:=0/g' {} + 43 | exit 0 44 | -------------------------------------------------------------------------------- /.github/workflows/litte.yml: -------------------------------------------------------------------------------- 1 | name: litte 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/workflows/litte.yml' 7 | - 'commit/**' 8 | schedule: 9 | - cron: 0 */4 * * * 10 | repository_dispatch: 11 | workflow_dispatch: 12 | inputs: 13 | packages: 14 | description: 'packages' 15 | required: false 16 | default: 'false' 17 | 18 | jobs: 19 | job_litte: 20 | if: github.event.repository.owner.id == github.event.sender.id || ! github.event.sender.id 21 | runs-on: ubuntu-latest 22 | 23 | name: Update litte 24 | strategy: 25 | fail-fast: false 26 | matrix: 27 | target: [master] 28 | 29 | steps: 30 | - name: Checkout 31 | uses: actions/checkout@main 32 | with: 33 | fetch-depth: 0 34 | 35 | - name: Initialization environment 36 | run : | 37 | git config --global user.email "actions@github.com" 38 | git config --global user.name "action" 39 | sudo timedatectl set-timezone "Asia/Shanghai" 40 | 41 | - name: Clone packages 42 | run: | 43 | cd $GITHUB_WORKSPACE 44 | chmod +x .github/diy/${{matrix.target}}.sh 45 | git clone -b master https://github.com/kenzok8/litte.git ${{matrix.target}} 46 | cd ${{matrix.target}} 47 | git rm -r --cache * >/dev/null 2>&1 & 48 | rm -rf `find ./* -maxdepth 0 -type d ! -name "commit"` >/dev/null 2>&1 49 | $GITHUB_WORKSPACE/.github/diy/litte.sh 50 | #patch -p1 < $GITHUB_WORKSPACE/.github/diy/homeproxy.patch 51 | bash /$GITHUB_WORKSPACE/.github/diy/convert_translation.sh 52 | bash /$GITHUB_WORKSPACE/.github/diy/create_acl_for_luci.sh -a 53 | bash /$GITHUB_WORKSPACE/.github/diy/Modify.sh 54 | 55 | - name: Upload 56 | env: 57 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 58 | run: | 59 | cd $GITHUB_WORKSPACE/${{matrix.target}} 60 | if git status --porcelain | grep .; then 61 | Emoji=("🌸" "🐌" "🌿" "⛅" "🍂" "💦" "💤" "💭" "🍭" "🎉" "🎁" "🎈" "🐾" "🎨" "💋" "🍓" "🍕" "🍉" "🙈" "🤡" "🍡") 62 | git add . 63 | git commit -am "${Emoji[$[$RANDOM % ${#Emoji[@]}]]} update $(date +%Y-%m-%d" "%H:%M:%S)" 64 | git push --quiet "https://${{ secrets.ACCESS_TOKEN }}@github.com/kenzok8/litte.git" HEAD:master 65 | else 66 | echo "nothing to commit" 67 | exit 0 68 | fi || exit 0 69 | 70 | - name: Delete workflow runs 71 | uses: Mattraks/delete-workflow-runs@main 72 | with: 73 | retain_days: 1 74 | keep_minimum_runs: 1 75 | -------------------------------------------------------------------------------- /.github/workflows/openwrt-packages.yml: -------------------------------------------------------------------------------- 1 | name: openwrt-packages 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/workflows/openwrt-packages.yml' 7 | - 'master.sh' 8 | schedule: 9 | - cron: 0 */6 * * * 10 | repository_dispatch: 11 | workflow_dispatch: 12 | inputs: 13 | packages: 14 | description: 'packages' 15 | required: false 16 | default: 'false' 17 | 18 | jobs: 19 | job_openwrt-packages: 20 | if: github.event.repository.owner.id == github.event.sender.id || ! github.event.sender.id 21 | runs-on: ubuntu-latest 22 | 23 | name: Update openwrt-packages 24 | strategy: 25 | fail-fast: false 26 | matrix: 27 | target: [master] 28 | 29 | steps: 30 | - name: Checkout 31 | uses: actions/checkout@main 32 | with: 33 | fetch-depth: 0 34 | 35 | - name: Initialization environment 36 | run : | 37 | git config --global user.email "kenzok8@users.noreply.github.com" 38 | git config --global user.name "actions-user" 39 | sudo timedatectl set-timezone "Asia/Shanghai" 40 | 41 | - name: Clone packages 42 | run: | 43 | cd $GITHUB_WORKSPACE 44 | chmod +x .github/diy/${{matrix.target}}.sh 45 | git clone -b master https://github.com/kenzok8/openwrt-packages.git ${{matrix.target}} 46 | cd ${{matrix.target}} 47 | git rm -r --cache * >/dev/null 2>&1 & 48 | rm -rf `find ./* -maxdepth 0 -type d ! -name "diy"` >/dev/null 2>&1 49 | $GITHUB_WORKSPACE/.github/diy/${{matrix.target}}.sh 50 | bash /$GITHUB_WORKSPACE/.github/diy/convert_translation.sh 51 | bash /$GITHUB_WORKSPACE/.github/diy/create_acl_for_luci.sh -a 52 | bash /$GITHUB_WORKSPACE/.github/diy/Modify.sh 53 | 54 | - name: Upload 55 | env: 56 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 57 | run: | 58 | if [ -e $GITHUB_WORKSPACE/LICENSE ]; then 59 | cp $GITHUB_WORKSPACE/LICENSE $GITHUB_WORKSPACE/${{matrix.target}} 60 | fi 61 | if [ -e $GITHUB_WORKSPACE/README.md ]; then 62 | cp $GITHUB_WORKSPACE/README.md $GITHUB_WORKSPACE/${{matrix.target}} 63 | fi 64 | cd $GITHUB_WORKSPACE/${{matrix.target}} 65 | if git status --porcelain | grep .; then 66 | git add . 67 | git commit -am "update $(date '+%Y-%m-%d %H:%M:%S')" 68 | git push --quiet "https://${{ secrets.ACCESS_TOKEN }}@github.com/kenzok8/openwrt-packages.git" HEAD:${{matrix.target}} 69 | else 70 | echo "nothing to commit" 71 | exit 0 72 | fi || exit 0 73 | 74 | - name: Delete workflow runs 75 | uses: Mattraks/delete-workflow-runs@main 76 | with: 77 | token: ${{ secrets.ACCESS_TOKEN }} 78 | repository: kenzok8/openwrt-packages 79 | retain_days: 1 80 | keep_minimum_runs: 1 81 | -------------------------------------------------------------------------------- /.github/workflows/small.yml: -------------------------------------------------------------------------------- 1 | name: small 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/workflows/small.yml' 7 | - 'small.sh' 8 | schedule: 9 | - cron: 0 */4 * * * 10 | repository_dispatch: 11 | workflow_dispatch: 12 | inputs: 13 | packages: 14 | description: 'packages' 15 | required: false 16 | default: 'false' 17 | 18 | jobs: 19 | job_small: 20 | if: github.event.repository.owner.id == github.event.sender.id || ! github.event.sender.id 21 | runs-on: ubuntu-latest 22 | 23 | name: Update small 24 | strategy: 25 | fail-fast: false 26 | matrix: 27 | target: [master] 28 | 29 | steps: 30 | - name: Checkout 31 | uses: actions/checkout@main 32 | with: 33 | fetch-depth: 0 34 | 35 | - name: Initialization environment 36 | run : | 37 | git config --global user.email "kenzok8@users.noreply.github.com" 38 | git config --global user.name "actions-user" 39 | sudo timedatectl set-timezone "Asia/Shanghai" 40 | 41 | - name: Clone packages 42 | run: | 43 | cd $GITHUB_WORKSPACE 44 | chmod +x .github/diy/small.sh 45 | git clone -b master https://github.com/kenzok8/small.git ${{matrix.target}} 46 | cd ${{matrix.target}} 47 | git rm -r --cache * >/dev/null 2>&1 & 48 | rm -rf `find ./* -maxdepth 0 -type d ! -name "commit"` >/dev/null 2>&1 49 | $GITHUB_WORKSPACE/.github/diy/small.sh 50 | #patch -p1 < $GITHUB_WORKSPACE/.github/diy/homeproxy.patch 51 | bash /$GITHUB_WORKSPACE/.github/diy/convert_translation.sh 52 | bash /$GITHUB_WORKSPACE/.github/diy/create_acl_for_luci.sh -a 53 | bash /$GITHUB_WORKSPACE/.github/diy/Modify.sh 54 | 55 | - name: Upload 56 | env: 57 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 58 | run: | 59 | cd $GITHUB_WORKSPACE/${{matrix.target}} 60 | if git status --porcelain | grep .; then 61 | git add . 62 | git commit -am "update $(date '+%Y-%m-%d %H:%M:%S')" 63 | git push --quiet "https://${{ secrets.ACCESS_TOKEN }}@github.com/kenzok8/small.git" HEAD:master 64 | else 65 | echo "nothing to commit" 66 | exit 0 67 | fi || exit 0 68 | 69 | - name: Delete workflow runs 70 | uses: Mattraks/delete-workflow-runs@main 71 | with: 72 | retain_days: 1 73 | keep_minimum_runs: 1 74 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Anurag's GitHub stats](https://github-readme-stats.vercel.app/api?username=kenzok8&show_icons=true&theme=radical) 2 |
3 |

4 | 5 | 6 | 7 | 8 |

9 | 10 | 11 | 12 | #### 说明 13 | 14 |
中文 | [English](README_en.md) 15 | 16 | * 仓库里luci-theme-argon 适配23.05 不适配18.06,切记! 17 | 18 | * 把openwrt-packages与small仓库重新归类,ssr、passwall、homeproxy、mihomo以及依赖合并small 19 | 20 | * 喜欢追新的可以去下载small-package,该仓库每天自动同步更新 21 | 22 | * [small-package仓库地址](https://github.com/kenzok8/small-package) 23 | 24 | * 软件不定期同步大神库更新,适合一键下载用于openwrt编译 25 | 26 | 27 | ##### 插件每日更新下载: 28 | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/kenzok8/compile-package?style=for-the-badge&label=插件更新下载)](https://github.com/kenzok8/compile-package/releases/latest) 29 | 30 | + [ssr+passwall依赖仓库](https://github.com/kenzok8/small) 31 | 32 | + [openwrt固件与插件下载](https://op.dllkids.xyz/) 33 | 34 | #### 使用 35 | 一键命令 36 | ```yaml 37 | sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default 38 | sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default 39 | git pull 40 | ./scripts/feeds update -a 41 | ./scripts/feeds install -a 42 | make menuconfig 43 | ``` 44 | 45 | - openwrt 固件编译自定义主题与软件 46 | 47 | | 软件名 | 说明 | 中文说明 | 48 | | -----------------------------|------------------------| ------------| 49 | | luci-app-alist | file list program | 支持多存储的文件列表程序 | 50 | | luci-app-advanced | System advanced settings | 系统高级设置 | 51 | | luci-app-adguardhome | Block adg | AdG去广告 | 52 | | luci-theme-atmaterial_new | atmaterial theme (adapted to luci-18.06) | Atmaterial 三合一主题 | 53 | | luci-theme-argone | argone theme | 修改老竭力主题名 | 54 | | luci-app-argone-config | argone theme settings | argone主题设置 | 55 | | luci-app-aliddns | aliyunddns | 阿里云ddns插件 | 56 | | luci-app-aliyundrive-webdav | Aliyun Disk WebDAV Service | 阿里云盘 WebDAV 服务 | 57 | | luci-app-dnsfilter | dns ad filtering | 基于DNS的广告过滤 | 58 | | luci-theme-design | design theme | design 主题 | 59 | | luci-app-amlogic | Amlogic Service | 晶晨宝盒 | 60 | | luci-app-eqos | Speed ​​limit by IP address | 依IP地址限速 | 61 | | luci-app-gost | https proxy | 隐蔽的https代理 | 62 | | luci-app-openclash | openclash proxy | clash的图形代理软件 | 63 | | luci-app-passwall | passwall proxy | passwall代理软件 | 64 | | luci-app-wechatpush | WeChat/DingTalk Pushed plugins | 微信/钉钉推送 | 65 | | luci-theme-tomato | Modify topic name | tomato主题 | 66 | | luci-app-smartdns | smartdns dns pollution prevention | smartdns DNS防污染 | 67 | | luci-app-ssr-plus | ssr-plus proxy | ssr-plus 代理软件 | 68 | | luci-app-store | store software repository | 应用商店 | 69 | | luci-theme-mcat | Modify topic name | mcat主题 | 70 | | luci-app-mosdns | mosdns dns offload |DNS 国内外分流解析与广告过滤 | 71 | | luci-app-unblockneteasemusic | Unlock NetEase Cloud Music | 解锁网易云音乐 | 72 | 73 | ![暗黄主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-9.jpg) 74 | ![暗黄主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-10.jpg) 75 | ![暗黄主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-11.jpg) 76 | ![暗黑红主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-5.jpg) 77 | ![暗黑红主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-6.jpg) 78 | ![暗黑红主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-7.jpg) 79 | ![暗黑红主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-8.jpg) 80 | ![抹茶绿主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-12.jpg) 81 | ![抹茶绿主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-13.jpg) 82 | ![抹茶绿主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-14.jpg) 83 | ![argon主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-1.png) 84 | ![argon主题](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-2.png) 85 | -------------------------------------------------------------------------------- /README_en.md: -------------------------------------------------------------------------------- 1 | ![Anurag's GitHub stats](https://github-readme-stats.vercel.app/api?username=kenzok8&show_icons=true&theme=radical) 2 |
3 |

4 | 5 | 6 | 7 | 8 | 9 |

10 | 11 | 12 | 13 |
English | [简体中文](README.md) 14 | 15 | ##### illustrate 16 | 17 | * If you like to follow new ones, you can download small-package, the warehouse is automatically updated every day 18 | 19 | * [small-package warehouse address](https://github.com/kenzok8/small-package) 20 | 21 | * The software syn the updates from to time, suitable for one-click download for openwrt compilation 22 | 23 | 24 | ##### Plugin update download: 25 | 26 | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/kenzok8/compile-package?style=for-the-badge&label=插件更新下载)](https://github.com/kenzok8/compile-package/releases/latest) 27 | 28 | + [ssr+passwall](https://github.com/kenzok8/small) 29 | 30 | + [firmware+plugin](https://op.dllkids.xyz/) 31 | 32 | #### Instructions 33 | add command 34 | ```yaml 35 | sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default 36 | sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default 37 | git pull 38 | ./scripts/feeds update -a 39 | ./scripts/feeds install -a 40 | make menuconfig 41 | ``` 42 | 43 | - openwrt firmware to compile custom themes and software 44 | - 45 | | software name | illustrate | Chinese description | 46 | | -----------------------------|------------------------| ------------| 47 | | luci-app-alist | file list program | 支持多存储的文件列表程序 | 48 | | luci-app-advanced | System advanced settings | 系统高级设置 | 49 | | luci-app-adguardhome | Block adg | AdG去广告 | 50 | | luci-theme-atmaterial_new | atmaterial theme (adapted to luci-18.06) | Atmaterial 三合一主题 | 51 | | luci-theme-argone | argone theme | 修改老竭力主题名 | 52 | | luci-app-argone-config | argone theme settings | argone主题设置 | 53 | | luci-app-aliddns | aliyunddns | 阿里云ddns插件 | 54 | | luci-app-aliyundrive-webdav | Aliyun Disk WebDAV Service | 阿里云盘 WebDAV 服务 | 55 | | luci-app-dnsfilter | dns ad filtering | 基于DNS的广告过滤 | 56 | | luci-theme-design | design theme | design 主题 | 57 | | luci-app-amlogic | Amlogic Service | 晶晨宝盒 | 58 | | luci-app-eqos | Speed ​​limit by IP address | 依IP地址限速 | 59 | | luci-app-gost | https proxy | 隐蔽的https代理 | 60 | | luci-app-openclash | openclash proxy | clash的图形代理软件 | 61 | | luci-app-passwall | passwall proxy | passwall代理软件 | 62 | | luci-app-wechatpush | WeChat/DingTalk Pushed plugins | 微信/钉钉推送 | 63 | | luci-theme-tomato | Modify topic name | tomato主题 | 64 | | luci-app-smartdns | smartdns dns pollution prevention | smartdns DNS防污染 | 65 | | luci-app-ssr-plus | ssr-plus proxy | ssr-plus 代理软件 | 66 | | luci-app-store | store software repository | 应用商店 | 67 | | luci-theme-mcat | Modify topic name | mcat主题 | 68 | | luci-app-mosdns | mosdns dns offload |DNS 国内外分流解析与广告过滤 | 69 | | luci-app-unblockneteasemusic | Unlock NetEase Cloud Music | 解锁网易云音乐 | 70 | | luci-app-homeproxy | homeproxy proxy | homeproxy 代理 | 71 | 72 | * Modify argon to argonne, including argonne-config, to prevent argon with the same name from affecting compilation 73 | 74 | ![atmaterial_Brown theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-9.jpg) 75 | ![atmaterial_Brown theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-10.jpg) 76 | ![atmaterial_Brown theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-11.jpg) 77 | ![atmaterial_red theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-5.jpg) 78 | ![atmaterial_red theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-6.jpg) 79 | ![atmaterial_red theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-7.jpg) 80 | ![atmaterial_red theme](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-8.jpg) 81 | ![atmaterial](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-12.jpg) 82 | ![atmaterial](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-13.jpg) 83 | ![atmaterial](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-14.jpg) 84 | ![argone](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-1.png) 85 | ![argone](https://raw.githubusercontent.com/kenzok8/kenzok8/main/screenshot/sshot-2.png) 86 | --------------------------------------------------------------------------------