mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-27 00:01:22 +08:00
sync
This commit is contained in:
parent
4140b8f037
commit
95ac96413e
9
.github/diy/convert_translation.sh
vendored
Normal file
9
.github/diy/convert_translation.sh
vendored
Normal file
@ -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
|
||||
114
.github/diy/create_acl_for_luci.sh
vendored
Normal file
114
.github/diy/create_acl_for_luci.sh
vendored
Normal file
@ -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 <path-to-acl>) -l <luci-name> -n <conf-name>|-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 <path-to-acl> -l <luci-name> -n <conf-name>|-c]"
|
||||
exit 2
|
||||
fi
|
||||
53
.github/diy/generate_ucitrack.sh
vendored
Normal file
53
.github/diy/generate_ucitrack.sh
vendored
Normal file
@ -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
|
||||
8
.github/diy/packages/base-files/files/etc/banner
vendored
Executable file
8
.github/diy/packages/base-files/files/etc/banner
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
__
|
||||
___ ___ ___ ___ _ ______/ /_
|
||||
/ _ \/ _ \/ -_) _ \ |/|/ / __/ __/
|
||||
\___/ .__/\__/_//_/__,__/_/ \__/
|
||||
/_/
|
||||
--------------------------------
|
||||
%D %V, %C
|
||||
--------------------------------
|
||||
38
.github/diy/patches/quickstart.patch
vendored
Normal file
38
.github/diy/patches/quickstart.patch
vendored
Normal file
@ -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
|
||||
13
.github/diy/patches/samba4.patch
vendored
Normal file
13
.github/diy/patches/samba4.patch
vendored
Normal file
@ -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;
|
||||
233
.github/diy/patches/ssr-plus.patch
vendored
Normal file
233
.github/diy/patches/ssr-plus.patch
vendored
Normal file
@ -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 @@
|
||||
+<style>
|
||||
+.pure-img {
|
||||
+ max-height: 100%;
|
||||
+ width: auto;
|
||||
+}
|
||||
+.flag .pure-img {
|
||||
+ max-height: none;
|
||||
+ margin-top: -0.34rem;
|
||||
+}
|
||||
+.status-bar {
|
||||
+ position: fixed;
|
||||
+ bottom: 0;
|
||||
+ right: 0;
|
||||
+ box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .3);
|
||||
+ color: #525f7f;
|
||||
+ background: #fff;
|
||||
+ z-index: 5;
|
||||
+ box-sizing: border-box;
|
||||
+}
|
||||
+
|
||||
+.status-bar .inner {
|
||||
+ margin: 0.5em;
|
||||
+}
|
||||
+
|
||||
+.status-bar .inner .flag {
|
||||
+ height: 2.6em;
|
||||
+ display: block;
|
||||
+ float: left;
|
||||
+ margin-right: 1em;
|
||||
+}
|
||||
+
|
||||
+.status-bar .inner .status-info {
|
||||
+ font-weight: bold;
|
||||
+}
|
||||
+
|
||||
+.status-bar .icon-con {
|
||||
+ height: 2.6em;
|
||||
+ text-align: right;
|
||||
+}
|
||||
+
|
||||
+#cbi-passwall+.cbi-page-actions.control-group.fixed {
|
||||
+ bottom: 3.3rem;
|
||||
+}
|
||||
+
|
||||
+footer{
|
||||
+display:block !important;
|
||||
+}
|
||||
+
|
||||
+@media screen and (max-width: 700px) {
|
||||
+.status-bar .icon-con {
|
||||
+ height: 2.5em;
|
||||
+}
|
||||
+}
|
||||
+</style>
|
||||
+<div class="status-bar">
|
||||
+ <div class="inner">
|
||||
+ <div class="pure-g">
|
||||
+ <div class="pure-u-1-2">
|
||||
+ <span class="flag"><img src="/luci-static/passwall/flags/loading.svg" class="pure-img"></span> <span
|
||||
+ class="status-info">获取中...</span>
|
||||
+ </div>
|
||||
+ <div class="pure-u-1-2">
|
||||
+ <div class="icon-con">
|
||||
+ <img src="/luci-static/passwall/img/site_icon1_01.png" class="pure-img i1">
|
||||
+ <img src="/luci-static/passwall/img/site_icon1_02.png" class="pure-img i2">
|
||||
+ <img src="/luci-static/passwall/img/site_icon1_03.png" class="pure-img i3">
|
||||
+ <img src="/luci-static/passwall/img/site_icon1_04.png" class="pure-img i4">
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+</div>
|
||||
+
|
||||
+<script>
|
||||
+const _ASSETS = '/luci-static/passwall/';
|
||||
+const CHECK_IP_URL = '<%=url([[admin]], [[services]], [[passwall]], [[ip]])%>';
|
||||
+
|
||||
+let wW = window.innerWidth;
|
||||
+
|
||||
+function resize() {
|
||||
+ wW = window.innerWidth;
|
||||
+ let lw = document.querySelector(".main-left").offsetWidth;
|
||||
+ let statusBar = document.querySelector(".status-bar");
|
||||
+ statusBar.style.width = (wW - lw) + 'px';
|
||||
+ let flagElement = statusBar.querySelector(".flag");
|
||||
+ flagElement.style.width = (flagElement.offsetHeight / 3 * 4) + 'px';
|
||||
+
|
||||
+ document.querySelectorAll(".flag-icon").forEach(function(el) {
|
||||
+ if (el.offsetHeight < 60) {
|
||||
+ el.parentElement.style.height = '60px';
|
||||
+ el.style.width = '60px';
|
||||
+ } else {
|
||||
+ el.style.width = el.offsetHeight + 'px';
|
||||
+ }
|
||||
+ });
|
||||
+}
|
||||
+
|
||||
+function write_status(data) {
|
||||
+ document.querySelector(".flag img").src = _ASSETS + "flags/" + data.flag + ".svg";
|
||||
+ document.querySelector(".status-info").innerHTML = data.ip + "<br>" + data.country + " " + data.isp;
|
||||
+ document.querySelector(".i1").src = data.baidu ? _ASSETS + "img/site_icon_01.png" : _ASSETS + "img/site_icon1_01.png";
|
||||
+ document.querySelector(".i2").src = data.taobao ? _ASSETS + "img/site_icon_02.png" : _ASSETS + "img/site_icon1_02.png";
|
||||
+ document.querySelector(".i3").src = data.google ? _ASSETS + "img/site_icon_03.png" : _ASSETS + "img/site_icon1_03.png";
|
||||
+ document.querySelector(".i4").src = data.youtube ? _ASSETS + "img/site_icon_04.png" : _ASSETS + "img/site_icon1_04.png";
|
||||
+ setTimeout(function() {
|
||||
+ let event = new Event('iploaded');
|
||||
+ document.body.dispatchEvent(event);
|
||||
+ }, 200);
|
||||
+}
|
||||
+
|
||||
+XHR.poll(5, CHECK_IP_URL, null,
|
||||
+ function (x, data) {
|
||||
+ write_status(data);
|
||||
+ }
|
||||
+ );
|
||||
+
|
||||
+document.addEventListener('DOMContentLoaded', function() {
|
||||
+ setTimeout("resize()",100)
|
||||
+ fetch(CHECK_IP_URL)
|
||||
+ .then(response => response.json())
|
||||
+ .then(data => {
|
||||
+ write_status(data);
|
||||
+ })
|
||||
+ .catch(error => console.error('Error:', error));
|
||||
+});
|
||||
+
|
||||
+window.addEventListener('resize', resize);
|
||||
+</script>
|
||||
|
||||
--- 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
|
||||
271
.github/workflows/jell.yml
vendored
Normal file
271
.github/workflows/jell.yml
vendored
Normal file
@ -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
|
||||
41
.gitignore
vendored
Normal file
41
.gitignore
vendored
Normal file
@ -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
|
||||
31
README.md
31
README.md
@ -1 +1,30 @@
|
||||
# small-packages
|
||||
<div align="center">
|
||||
<h1 align="center">openwrt主流软件包合集</h1>
|
||||
<img src="https://img.shields.io/github/issues/kenzok8/jell?color=green">
|
||||
<img src="https://img.shields.io/github/stars/kenzok8/jell?color=yellow">
|
||||
<img src="https://img.shields.io/github/forks/kenzok8/jell?color=orange">
|
||||
<img src="https://img.shields.io/github/license/kenzok8/jell?color=ff69b4">
|
||||
<img src="https://img.shields.io/github/languages/code-size/kenzok8/jell?color=blueviolet">
|
||||
</div>
|
||||
|
||||
<a href="https://t.me/joinchat/JjxmyRZZXJWb74I-sCrryA" target="_blank">Telegram</a>
|
||||
|
||||
#### 源码来源:
|
||||
[](https://github.com/garypang13/openwrt-packages)
|
||||
[](https://github.com/xiaorouji/openwrt-passwall)
|
||||
[](https://github.com/immortalwrt/immortalwrt)
|
||||
[](https://github.com/coolsnowwolf/lede)
|
||||
|
||||
|
||||
##### 插件下载:
|
||||
[](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
|
||||
```
|
||||
|
||||
Loading…
Reference in New Issue
Block a user