From 95ac96413e749a7858671e0151b676cccbe8807a Mon Sep 17 00:00:00 2001 From: caiwx86 Date: Sun, 10 May 2026 09:47:52 +0800 Subject: [PATCH] sync --- .github/diy/convert_translation.sh | 9 + .github/diy/create_acl_for_luci.sh | 114 ++++++++ .github/diy/generate_ucitrack.sh | 53 ++++ .../diy/packages/base-files/files/etc/banner | 8 + .github/diy/patches/quickstart.patch | 38 +++ .github/diy/patches/samba4.patch | 13 + .github/diy/patches/ssr-plus.patch | 233 +++++++++++++++ .github/workflows/jell.yml | 271 ++++++++++++++++++ .gitignore | 41 +++ README.md | 31 +- 10 files changed, 810 insertions(+), 1 deletion(-) create mode 100644 .github/diy/convert_translation.sh create mode 100644 .github/diy/create_acl_for_luci.sh create mode 100644 .github/diy/generate_ucitrack.sh create mode 100755 .github/diy/packages/base-files/files/etc/banner create mode 100644 .github/diy/patches/quickstart.patch create mode 100644 .github/diy/patches/samba4.patch create mode 100644 .github/diy/patches/ssr-plus.patch create mode 100644 .github/workflows/jell.yml create mode 100644 .gitignore diff --git a/.github/diy/convert_translation.sh b/.github/diy/convert_translation.sh new file mode 100644 index 00000000..9a3f6374 --- /dev/null +++ b/.github/diy/convert_translation.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +for e in $(ls -d luci-*/po); do + if [[ -d $e/zh-cn && ! -d $e/zh_Hans ]]; then + ln -s zh-cn $e/zh_Hans 2>/dev/null + elif [[ -d $e/zh_Hans && ! -d $e/zh-cn ]]; then + ln -s zh_Hans $e/zh-cn 2>/dev/null + fi +done diff --git a/.github/diy/create_acl_for_luci.sh b/.github/diy/create_acl_for_luci.sh new file mode 100644 index 00000000..97bc8c58 --- /dev/null +++ b/.github/diy/create_acl_for_luci.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# [CTCGFW]Project-OpenWrt +# Use it under GPLv3, please. +# -------------------------------------------------------- +# Script for creating ACL file for each LuCI APP + +error_font="\033[31m[Error]$\033[0m " +success_font="\033[32m[Success]\033[0m " +info_font="\033[36m[Info]\033[0m " + +function echo_green_bg(){ + echo -e "\033[42;37m$1\033[0m" +} + +function echo_yellow_bg(){ + echo -e "\033[43;37m$1\033[0m" +} + +function echo_red_bg(){ + echo -e "\033[41;37m$1\033[0m" +} + +function clean_outdated_files(){ + rm -f "create_acl_for_luci.err" "create_acl_for_luci.warn" "create_acl_for_luci.ok" +} + +function check_if_acl_exist(){ + ls "$1"/root/usr/share/rpcd/acl.d/*.json >/dev/null 2>&1 && return 0 || return 1 +} + +function check_config_files(){ + [ "$(ls "$1"/root/etc/config/* 2>/dev/null | wc -l)" -ne "1" ] && return 0 || return 1 +} + +function get_config_name(){ + ls "$1"/root/etc/config/* 2>/dev/null | awk -F '/' '{print $NF}' +} + +function create_acl_file(){ + mkdir -p "$1" + echo -e "{ + \"$2\": { + \"description\": \"Grant UCI access for $2\", + \"read\": { + \"uci\": [ \"$3\" ] + }, + \"write\": { + \"uci\": [ \"$3\" ] + } + } +}" > "$1/$2.json" +} + +function auto_create_acl(){ + luci_app_list="$(find ./ -maxdepth 2 | grep -Eo ".*luci-app-[a-zA-Z0-9_-]+" | sort -s)" + + [ "$(echo -e "${luci_app_list}" | wc -l)" -gt "0" ] && for i in ${luci_app_list} + do + if check_if_acl_exist "$i"; then + echo_yellow_bg "$i: has ACL file already, skipping..." | tee -a create_acl_for_luci.warn + elif check_config_files "$i"; then + echo_red_bg "$i: has no/multi config file(s), skipping..." | tee -a create_acl_for_luci.err + else + create_acl_file "$i/root/usr/share/rpcd/acl.d" "${i##*/}" "$(get_config_name "$i")" + echo_green_bg "$i: ACL file has been generated." | tee -a create_acl_for_luci.ok + fi + done +} + +while getopts "achml:n:p:" input_arg +do + case $input_arg in + a) + auto_create_acl + exit + ;; + m) + manual_mode=1 + ;; + p) + acl_path="$OPTARG" + ;; + l) + luci_name="$OPTARG" + ;; + n) + conf_name="$OPTARG" + ;; + c) + clean_outdated_files + exit + ;; + h|?|*) + echo -e "${info_font}Usage: $0 [-a|-m (-p ) -l -n |-c]" + exit 2 + ;; + esac +done + +if [ "*${manual_mode}*" == "*1*" ] && [ -n "${luci_name}" ] && [ -n "${conf_name}" ]; then + acl_path="${acl_path:-root/usr/share/rpcd/acl.d}" + if create_acl_file "${acl_path}" "${luci_name}" "${conf_name}"; then + echo -e "${success_font}Output file: $(ls "${acl_path}/${luci_name}.json")" + echo_green_bg "$(cat "${acl_path}/${luci_name}.json")" + echo_green_bg "${luci_name}: ACL file has been generated." >> "create_acl_for_luci.ok" + [ -e "create_acl_for_luci.err" ] && sed -i "/${luci_name}/d" "create_acl_for_luci.err" + else + echo -e "${error_font}Failed to create file ${acl_path}/${luci_name}.json" + echo_red_bg "${luci_name}: Failed to create ACL file." >> "create_acl_for_luci.err" + fi +else + echo -e "${info_font}Usage: $0 [-a|-m -p -l -n |-c]" + exit 2 +fi diff --git a/.github/diy/generate_ucitrack.sh b/.github/diy/generate_ucitrack.sh new file mode 100644 index 00000000..ef874c94 --- /dev/null +++ b/.github/diy/generate_ucitrack.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# 遍历所有的luci-app-*目录 +for app_dir in luci-app-*; do + # 检查是否是目录 + if [ -d "$app_dir" ]; then + # 首先检查ucitrack目录是否存在 + if [ ! -d "$app_dir/root/usr/share/ucitrack" ]; then + # 初始化变量 + config_file="" + init_file="" + + # 查找init文件 + if [ -d "$app_dir/root/etc/init.d" ]; then + # 获取init.d目录下的第一个文件名 + init_file=$(ls "$app_dir/root/etc/init.d" 2>/dev/null | head -n 1) + + # 如果找到init文件,检查USE_PROCD + if [ ! -z "$init_file" ]; then + init_path="$app_dir/root/etc/init.d/$init_file" + # 如果文件包含USE_PROCD=,则跳过这个目录 + if grep -sqE 'USE_PROCD=.' "$init_path"; then + echo "Skipping $app_dir - contains USE_PROCD" + continue + fi + fi + fi + + # 查找config文件 + if [ -d "$app_dir/root/etc/config" ]; then + # 获取config目录下的第一个文件名 + config_file=$(ls "$app_dir/root/etc/config" 2>/dev/null | head -n 1) + fi + + # 如果找到了任意一个文件 + if [ ! -z "$config_file" ] || [ ! -z "$init_file" ]; then + # 创建ucitrack目录 + mkdir -p "$app_dir/root/usr/share/ucitrack" + + # 创建json文件 + cat > "$app_dir/root/usr/share/ucitrack/$app_dir.json" << EOF +{ + "config": "$config_file", + "init": "$init_file" +} +EOF + echo "Created ucitrack for $app_dir" + fi + else + echo "Skipping $app_dir - ucitrack directory already exists" + fi + fi +done diff --git a/.github/diy/packages/base-files/files/etc/banner b/.github/diy/packages/base-files/files/etc/banner new file mode 100755 index 00000000..cf7b6703 --- /dev/null +++ b/.github/diy/packages/base-files/files/etc/banner @@ -0,0 +1,8 @@ + __ + ___ ___ ___ ___ _ ______/ /_ + / _ \/ _ \/ -_) _ \ |/|/ / __/ __/ + \___/ .__/\__/_//_/__,__/_/ \__/ + /_/ + -------------------------------- + %D %V, %C + -------------------------------- diff --git a/.github/diy/patches/quickstart.patch b/.github/diy/patches/quickstart.patch new file mode 100644 index 00000000..f9954e75 --- /dev/null +++ b/.github/diy/patches/quickstart.patch @@ -0,0 +1,38 @@ +--- a/luci-app-quickstart/Makefile ++++ b/luci-app-quickstart/Makefile +@@ -6,7 +6,7 @@ + include $(TOPDIR)/rules.mk + + LUCI_TITLE:=LuCI support for quickstart +-LUCI_DEPENDS:=+quickstart +luci-app-store ++LUCI_DEPENDS:=+quickstart +luci-app-ttyd + LUCI_PKGARCH:=all + + # PKG_RELEASE MUST be empty for luci.mk + +--- a/luci-app-quickstart/luasrc/controller/quickstart.lua ++++ b/luci-app-quickstart/luasrc/controller/quickstart.lua +@@ -5,7 +5,7 @@ module("luci.controller.quickstart", package.seeall) + function index() + entry({"admin", "nas"}, firstchild(), _("NAS") , 45).dependent = false + if luci.sys.call("pgrep quickstart >/dev/null") == 0 then +- entry({"admin", "quickstart"}, template("quickstart/home"), _("QuickStart"), 1).leaf = true ++ entry({"admin", "quickstart"}, template("quickstart/home")).leaf = true + entry({"admin", "network_guide"}, call("networkguide_index"), _("NetworkGuide"), 2) + entry({"admin", "network_guide", "pages"}, call("quickstart_index", {index={"admin", "network_guide", "pages"}})).leaf = true + if nixio.fs.access("/usr/lib/lua/luci/view/quickstart/main_dev.htm") then + +--- a/luci-app-quickstart/root/usr/share/luci/menu.d/luci-app-quickstart.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "admin/quickstart/*": { +- "title": "QuickStart", +- "order": 1, +- "action": { +- "type": "template", +- "path": "quickstart/home" +- } +- } +-} +\ No newline at end of file diff --git a/.github/diy/patches/samba4.patch b/.github/diy/patches/samba4.patch new file mode 100644 index 00000000..443a885e --- /dev/null +++ b/.github/diy/patches/samba4.patch @@ -0,0 +1,13 @@ +--- a/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js ++++ b/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js +@@ -113,6 +113,10 @@ return view.extend({ + o.rmempty = false; + + s.option(form.Flag, 'force_root', _('Force Root')); ++ o.enabled = 'yes'; ++ o.disabled = 'no'; ++ o.default = 'yes'; ++ o.rmempty = false; + + o = s.option(form.Value, 'users', _('Allowed users')); + o.rmempty = true; diff --git a/.github/diy/patches/ssr-plus.patch b/.github/diy/patches/ssr-plus.patch new file mode 100644 index 00000000..3318579a --- /dev/null +++ b/.github/diy/patches/ssr-plus.patch @@ -0,0 +1,233 @@ +--- a/luci-app-ssr-plus/Makefile ++++ b/luci-app-ssr-plus/Makefile +@@ -118,7 +118,7 @@ endchoice + + choice + prompt "V2ray-core Selection" +- default PACKAGE_$(PKG_NAME)_INCLUDE_Xray if aarch64||arm||i386||x86_64 ++ default PACKAGE_$(PKG_NAME)_INCLUDE_Xray + default PACKAGE_$(PKG_NAME)_INCLUDE_NONE_V2RAY + + config PACKAGE_$(PKG_NAME)_INCLUDE_NONE_V2RAY + +--- a/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua ++++ b/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua +@@ -26,6 +26,62 @@ function index() + entry({"admin", "services", "shadowsocksr", "reset"}, call("act_reset")) + entry({"admin", "services", "shadowsocksr", "restart"}, call("act_restart")) + entry({"admin", "services", "shadowsocksr", "delete"}, call("act_delete")) ++ entry({'admin', 'services', "shadowsocksr", 'ip'}, call('check_ip')) -- 获取ip情况 ++end ++ ++function check_site(host, port) ++ local nixio = require "nixio" ++ local socket = nixio.socket("inet", "stream") ++ socket:setopt("socket", "rcvtimeo", 2) ++ socket:setopt("socket", "sndtimeo", 2) ++ local ret = socket:connect(host, port) ++ socket:close() ++ return ret ++end ++ ++function get_ip_geo_info() ++ local result = luci.sys.exec('curl --retry 3 -m 10 -LfsA "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" http://ip-api.com/json/') ++ local json = require "luci.jsonc" ++ local info = json.parse(result) ++ ++ return { ++ flag = string.lower(info.countryCode) or "un", ++ country = get_country_name(info.countryCode) or "Unknown", ++ ip = info.query, ++ isp = info.isp ++ } ++end ++ ++function get_country_name(countryCode) ++ local country_names = { ++ US = "美国", CN = "中国", JP = "日本", GB = "英国", DE = "德国", ++ FR = "法国", BR = "巴西", IT = "意大利", RU = "俄罗斯", CA = "加拿大", ++ KR = "韩国", ES = "西班牙", AU = "澳大利亚", MX = "墨西哥", ID = "印度尼西亚", ++ NL = "荷兰", TR = "土耳其", CH = "瑞士", SA = "沙特阿拉伯", SE = "瑞典", ++ PL = "波兰", BE = "比利时", AR = "阿根廷", NO = "挪威", AT = "奥地利", ++ TW = "台湾", ZA = "南非", TH = "泰国", DK = "丹麦", MY = "马来西亚", ++ PH = "菲律宾", SG = "新加坡", IE = "爱尔兰", HK = "香港", FI = "芬兰", ++ CL = "智利", PT = "葡萄牙", GR = "希腊", IL = "以色列", NZ = "新西兰", ++ CZ = "捷克", RO = "罗马尼亚", VN = "越南", UA = "乌克兰", HU = "匈牙利", ++ AE = "阿联酋", CO = "哥伦比亚", IN = "印度", EG = "埃及", PE = "秘鲁", TW = "台湾" ++ } ++ return country_names[countryCode] ++end ++ ++function check_ip() ++ local e = {} ++ local port = 80 ++ local geo_info = get_ip_geo_info(ip) ++ e.ip = geo_info.ip ++ e.flag = geo_info.flag ++ e.country = geo_info.country ++ e.isp = geo_info.isp ++ e.baidu = check_site('www.baidu.com', port) ++ e.taobao = check_site('www.taobao.com', port) ++ e.google = check_site('www.google.com', port) ++ e.youtube = check_site('www.youtube.com', port) ++ luci.http.prepare_content('application/json') ++ luci.http.write_json(e) + end + + function subscribe() + +--- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua ++++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua +@@ -168,5 +168,6 @@ if is_finded("chinadns-ng") then + end + end + ++m:section(SimpleSection).template = "shadowsocksr/status_bottom" + return m + +diff --git a/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm b/luci-app-passwall/luasrc/view/shadowsocksr/status_bottom.htm +new file mode 100644 +index 000000000000..a00fff9c79b3 +--- /dev/null ++++ b/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm +@@ -0,0 +1,128 @@ ++ ++
++
++
++
++ 获取中... ++
++
++
++ ++ ++ ++ ++
++
++
++
++
++ ++ + +--- a/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus ++++ b/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus +@@ -43,5 +43,8 @@ if [ -s "/etc/uwsgi/vassals/luci-webui.ini" ];then + /etc/init.d/uwsgi restart + fi + ++grep -q ip-api.com /etc/ssrplus/black.list || ++ sed -i '$a ip-api.com' /etc/ssrplus/black.list ++ + rm -rf /tmp/luci-modulecache /tmp/luci-indexcache + exit 0 diff --git a/.github/workflows/jell.yml b/.github/workflows/jell.yml new file mode 100644 index 00000000..079c7ed5 --- /dev/null +++ b/.github/workflows/jell.yml @@ -0,0 +1,271 @@ +# +# This is free software, lisence use MIT. + +name: marry-jell +on: + push: + paths: + - '.github/workflows/jell.yml' + - '.gitignore' + - '.github/diy/**' + schedule: + - cron: 0 */4 * * * + repository_dispatch: + workflow_dispatch: + inputs: + ssh: + description: 'ssh' + required: false + default: 'true' + +jobs: + merge: + if: github.event.repository.owner.id == github.event.sender.id || ! github.event.sender.id + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@main + with: + fetch-depth: 0 + + - name: Set git identity + run : | + git config --global user.email "actions@github.com" + git config --global user.name "action" + sudo timedatectl set-timezone "Asia/Shanghai" + + - name: Syn jell + run : | + shopt -s extglob + set +e + git rm -r --cache * >/dev/null 2>&1 & + rm -rf `find ./* -maxdepth 0 -type d ! -name ".github/diy"` >/dev/null 2>&1 + + function git_clone() { + git clone --depth 1 $1 $2 + if [ "$?" != 0 ]; then + echo "error on $1" + exit 1 + fi + } + + function git_sparse_clone() { + trap 'rm -rf "$tmpdir"' EXIT + branch="$1" curl="$2" && shift 2 + rootdir="$PWD" + tmpdir="$(mktemp -d)" || exit 1 + + # Clone repo based on branch length + if [ ${#branch} -lt 10 ]; then + git clone -b "$branch" --depth 1 --filter=blob:none --sparse "$curl" "$tmpdir" + cd "$tmpdir" + else + git clone --filter=blob:none --sparse "$curl" "$tmpdir" + cd "$tmpdir" + git checkout $branch + fi + + if [ "$?" != 0 ]; then + echo "error on $curl" + exit 1 + fi + + git sparse-checkout init --cone + git sparse-checkout set "$@" + mv -n $@ $rootdir/ || true + cd $rootdir + } + + function mvdir() { + mv -n `find $1/* -maxdepth 0 -type d` ./ + rm -rf $1 + } + ( + # Clone repositories + git_clone https://github.com/kiddin9/my-packages my-packages && mvdir my-packages + git_clone https://github.com/kiddin9/luci-app-dnsfilter luci-app-dnsfilter + git_clone https://github.com/kiddin9/aria2 aria2 + git_clone https://github.com/kiddin9/autoshare && mvdir autoshare + git_clone https://github.com/kiddin9/luci-app-wizard + git_clone https://github.com/kiddin9/openwrt-adguardhome && mvdir openwrt-adguardhome + git_clone https://github.com/kiddin9/openwrt-clouddrive2 && mvdir openwrt-clouddrive2 + git_clone https://github.com/kiddin9/openwrt-filebrowser && mvdir openwrt-filebrowser + ) & + ( + git_clone https://github.com/Lienol/openwrt-package liep + git_clone https://github.com/rufengsuixing/luci-app-autoipsetadder + git_clone https://github.com/riverscn/openwrt-iptvhelper && mvdir openwrt-iptvhelper + git_clone https://github.com/kongfl888/luci-app-timedreboot + ) & + ( + git_clone https://github.com/sirpdboy/luci-app-advancedplus + git_clone https://github.com/sirpdboy/luci-app-autotimeset + git_clone https://github.com/sirpdboy/luci-app-lucky oplucky && mvdir oplucky + git_clone https://github.com/sirpdboy/luci-app-partexp partexp && mvdir partexp + git_clone https://github.com/sirpdboy/luci-app-ddns-go ddns-go1 && mvdir ddns-go1 + git_clone https://github.com/sirpdboy/luci-app-parentcontrol + git_clone https://github.com/sirpdboy/luci-app-poweroffdevice poweroffdevice && mvdir poweroffdevice + ) & + ( + git_clone https://github.com/destan19/OpenAppFilter && mvdir OpenAppFilter + git_clone https://github.com/lvqier/luci-app-dnsmasq-ipset + git_clone https://github.com/walkingsky/luci-wifidog luci-app-wifidog + git_clone https://github.com/peter-tank/luci-app-autorepeater + git_clone https://github.com/sirpdboy/luci-app-cupsd cupsd1 && mv -n cupsd1/{luci-app-cupsd,cups} ./ ; rm -rf cupsd1 + git_sparse_clone v5 https://github.com/sbwml/luci-app-mosdns \ + mosdns luci-app-mosdns v2dat + ) & + ( + git_clone https://github.com/esirplayground/LingTiGameAcc + git_clone https://github.com/esirplayground/luci-app-LingTiGameAcc + git_clone https://github.com/jerrykuku/luci-app-go-aliyundrive-webdav + git_clone https://github.com/doushang/luci-app-shortcutmenu luci-shortcutmenu && mv -n luci-shortcutmenu/luci-app-shortcutmenu ./ ; rm -rf luci-shortcutmenu + git_clone https://github.com/messense/aliyundrive-webdav aliyundrive && mv -n aliyundrive/openwrt/* ./ ; rm -rf aliyundrive + git_clone https://github.com/sbilly/netmaker-openwrt && mv -n netmaker-openwrt/netmaker ./; rm -rf netmaker-openwrt + git_clone https://github.com/lisaac/luci-app-dockerman dockerman && mv -n dockerman/applications/* ./; rm -rf dockerman + ) & + ( + git_clone https://github.com/ophub/luci-app-amlogic amlogic && mv -n amlogic/luci-app-amlogic ./;rm -rf amlogic + git_clone https://github.com/mingxiaoyu/luci-app-cloudflarespeedtest cloudflarespeedtest && mv -n cloudflarespeedtest/applications/* ./;rm -rf cloudflarespeedtest + git_clone https://github.com/linkease/nas-packages-luci && mv -n nas-packages-luci/luci/* ./; rm -rf nas-packages-luci + git_clone https://github.com/linkease/istore && mv -n istore/luci/* ./; rm -rf istore + git_clone https://github.com/kiddin9/openwrt-tailscale && mvdir openwrt-tailscale + ) & + ( + git_clone https://github.com/UnblockNeteaseMusic/luci-app-unblockneteasemusic + ) & + ( + git_clone https://github.com/tty228/luci-app-wechatpush + git_clone https://github.com/ZeaKyX/speedtest-web + git_clone https://github.com/ZeaKyX/luci-app-speedtest-web + ) & + ( + git_clone https://github.com/izilzty/luci-app-chinadns-ng + git_clone https://github.com/Diciya/luci-app-broadbandacc + git_clone https://github.com/brvphoenix/luci-app-wrtbwmon wrtbwmon1 && mvdir wrtbwmon1 + git_clone https://github.com/brvphoenix/wrtbwmon wrtbwmon2 && mvdir wrtbwmon2 + git_clone https://github.com/VIKINGYFY/homeproxy + ) & + ( + git_clone https://github.com/QiuSimons/vmlinux-btf + git_sparse_clone kix https://github.com/QiuSimons/luci-app-daed \ + luci-app-daed daed + git_sparse_clone kix https://github.com/QiuSimons/luci-app-dae \ + luci-app-dae dae + git_sparse_clone main https://github.com/djylb/nps-openwrt \ + npc luci-app-npc + git_clone https://github.com/sirpdboy/luci-app-chatgpt-web + git_clone https://github.com/sirpdboy/luci-app-eqosplus + git_sparse_clone master "https://github.com/coolsnowwolf/lede" package/wwan package/lean package/network/services/shellsync package/qca/shortcut-fe && cp -rf wwan/*/* ./ ; rm -Rf wwan + git_clone https://github.com/danchexiaoyang/luci-app-syncthing + ) & + ( + git_sparse_clone main https://github.com/sirpdboy/luci-app-watchdog \ + watchdog luci-app-watchdog + git_sparse_clone main https://github.com/sirpdboy/netspeedtest \ + luci-app-netspeedtest ookla-speedtest homebox + git_sparse_clone main https://github.com/sirpdboy/luci-app-taskplan \ + luci-app-taskplan + git_sparse_clone main https://github.com/sbwml/luci-app-openlist2 \ + openlist2 luci-app-openlist2 + git_sparse_clone master https://github.com/zfdx123/msd_lite \ + msd_lite luci-app-msd_lite + ) + ( + git_clone https://github.com/muink/luci-app-dnsproxy + ) & + ( + git_clone https://github.com/gSpotx2f/luci-app-temp-status + git_clone https://github.com/gSpotx2f/luci-app-cpu-perf + git_clone https://github.com/gSpotx2f/luci-app-log + git_clone https://github.com/gSpotx2f/luci-app-internet-detector idetector && mv idetector/*internet-detector* ./;rm -rf idetector + git_clone https://github.com/gSpotx2f/luci-app-disks-info + git_clone https://github.com/gSpotx2f/luci-app-interfaces-statistics + git_clone https://github.com/gSpotx2f/luci-app-cpu-status-mini + git_clone https://github.com/gSpotx2f/luci-app-cpu-status + ) & + ( + git_clone https://github.com/lwb1978/openwrt-gecoosac && mvdir openwrt-gecoosac + git_clone https://github.com/ilxp/luci-app-ikoolproxy + git_clone https://github.com/animegasan/luci-app-ipinfo + ) & + ( + git_clone https://github.com/EasyTier/luci-app-easytier + ) & + ( + git_clone https://github.com/kenzok78/luci-theme-argone + git_clone https://github.com/kenzok78/luci-app-argone-config + git_clone https://github.com/kenzok8/wall && mv -n wall/* ./ ; rm -rf wall + ) & + ( + git_clone https://github.com/caiwx86/luci-app-netdata + git_clone https://github.com/caiwx86/openwrt-netdata-ssl netdata-ssl + git_clone https://github.com/sirpdboy/luci-app-taskplan taskplan && mvdir taskplan + ) & + ( + #git_clone https://github.com/morytyann/OpenWrt-mihomo && mvdir OpenWrt-mihomo + git clone --depth 1 https://github.com/nikkinikki-org/OpenWrt-momo OpenWrt-momo && mv -n OpenWrt-momo/*momo ./ ; rm -rf OpenWrt-momo + git_clone https://github.com/nikkinikki-org/OpenWrt-nikki && mv -f OpenWrt-nikki/{luci-app-nikki,nikki} ./;rm -rf OpenWrt-nikki + git_clone https://github.com/pymumu/luci-app-smartdns + git_clone https://github.com/Openwrt-Passwall/openwrt-passwall2 passwall2 && mv -n passwall2/luci-app-passwall2 ./;rm -rf passwall2 + git_clone https://github.com/Openwrt-Passwall/openwrt-passwall passwall1 && mv -n passwall1/luci-app-passwall ./;rm -rf passwall1 + git_clone https://github.com/fw876/helloworld && mv -n helloworld/luci-app-ssr-plus ./ ; rm -rf helloworld + git_clone https://github.com/sbwml/luci-app-qbittorrent openwrt-qb && mv -n openwrt-qb/* ./ && rm -rf openwrt-qb + git_clone https://github.com/timsaya/luci-app-bandix bandix1 && mv -f bandix1/luci-app-bandix ./;rm -rf bandix1 + git_clone https://github.com/timsaya/openwrt-bandix bandix2 && mv -f bandix2/openwrt-bandix ./;rm -rf bandix2 + ) & + ( + git_sparse_clone master "https://github.com/coolsnowwolf/packages" multimedia/UnblockNeteaseMusic-Go \ + multimedia/aliyundrive-webdav net/gowebdav net/kismet net/mstpd \ + net/qBittorrent-static net/phtunnel net/headscale net/clouddrive2 net/baidupcs-go net/daemonlogger net/geth net/gnurl \ + net/uugamebooster net/pgyvpn net/ooniprobe net/polipo net/rosy-file-server net/qiyougamebooster \ + net/sqm-scripts-extra net/tor-fw-helper net/vncrepeater net/verysync \ + net/vpnbypass net/vpn-policy-routing utils/qfirehose + git_sparse_clone master "https://github.com/lunatickochiya/Matrix-Action-Openwrt" package/kochiya/brlaser package/kochiya/luci-app-banmac-ipt package/kochiya/luci-app-banmac-nft package/kochiya/luci-app-nvr package/kochiya/luci-app-openvpn-server package/kochiya/luci-app-openvpn-server-client + git_sparse_clone main https://github.com/sbwml/openwrt_pkgs luci-app-socat + ) & + git_sparse_clone openwrt-25.12 "https://github.com/immortalwrt/packages" net/frp + + - name: Delete duplicated packages + run: | + shopt -s extglob + rm -Rf */.git + for pkg in $(ls -d .github/diy/packages/*); do + mv -f $pkg/Makefile.k $pkg/Makefile >/dev/null 2>&1 || true + done + cp -rf .github/diy/packages/* ./ || true + for pkg in $(ls -d .github/diy/packages/*); do + mv -f $pkg/Makefile $pkg/Makefile.k >/dev/null 2>&1 || true + done + + - name: SSH connection to Actions + uses: caiwx86/debugger-action@master + if: github.event.inputs.ssh == 'true' + + - name: Apply patches + run: | + find ".github/diy/patches" -type f -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch" || true + +# - name: Modify +# run: | +# shopt -s extglob +# set +e + + - name: update jell + run: | + if git status --porcelain | grep .; then + git add . + git commit -m "update $(date +%Y-%m-%d" "%H:%M:%S)" + git push -f + else + echo "nothing to commit" + exit 0 + fi || exit 0 + + - name: Delete workflow runs + uses: Mattraks/delete-workflow-runs@main + continue-on-error: true + with: + retain_days: 1 + keep_minimum_runs: 3 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7371f72e --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +/create_acl_for_luci.ok +/create_acl_for_luci.warn +/create_acl_for_luci.err +/luci-app-godproxy/rulesupdate.log +/qt5 +/luci-app-advancedsetting +/luci-app-softether +/luci-app-cifs +/luci-app-cifsd +/luci-app-smstool +/luci-app-mosquitto +/luci-app-appfilter +/luci-app-babeld +/luci-app-siitwizard +/luci-app-ttyd +/luci-app-k3screenctrl +/ddns-scripts_aliyun +/ddns-scripts_dnspod +/mentohust +/subweb +/wget +/mt +/autosamba +/amule +/fcgiwrap +/ipv6-helper +/ChinaDNS +/luci-theme-netgear +/csstidy +/UnblockNeteaseMusicGo +/default-settings +/luci-proto-bonding +/rclone +/luci-lib-docker +/rclone-* +/mtk-eip93 +/ndpi-netfilter +/ntfs3-oot +/qtools +/libcups +/nat64 \ No newline at end of file diff --git a/README.md b/README.md index 91218308..e97513e8 100644 --- a/README.md +++ b/README.md @@ -1 +1,30 @@ -# small-packages \ No newline at end of file +
+

openwrt主流软件包合集

+ + + + + +
+ +Telegram + +#### 源码来源: +[![kiddin9](https://img.shields.io/badge/package-garypang13-red.svg?style=flat&logo=appveyor)](https://github.com/garypang13/openwrt-packages) + [![Lienol](https://img.shields.io/badge/passwall-xiaorouji-blueviolet.svg?style=flat&logo=appveyor)](https://github.com/xiaorouji/openwrt-passwall) +[![immortalwrt](https://img.shields.io/badge/packages-immortalwrt-orange.svg?style=flat&logo=appveyor)](https://github.com/immortalwrt/immortalwrt) +[![Lean](https://img.shields.io/badge/package-Lean-blueviolet.svg?style=flat&logo=appveyor)](https://github.com/coolsnowwolf/lede) + + +##### 插件下载: +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/kenzok78/compile-small?style=for-the-badge&label=插件下载)](https://github.com/kenzok78/compile-small/releases/latest) + +#### 特色: + ++ 自用仓库 + +##### 安装: + +```sh +sed -i '$a src-git jell https://github.com/caiwx86/small-packages' feeds.conf.default && ./scripts/feeds update -a && ./scripts/feeds install -a +```