Merge pull request #10 from ttimochan/main

feat: soft channel
This commit is contained in:
喵二
2024-07-15 22:49:34 +08:00
committed by GitHub

View File

@@ -14,7 +14,7 @@ if [ $(id -u) != "0" ]; then
fi fi
openwrt_release=$(cat /etc/openwrt_release) openwrt_release=$(cat /etc/openwrt_release)
if ! grep -q "OpenWrt" <<< "$openwrt_release"; then if ! grep -q "OpenWrt" <<<"$openwrt_release"; then
echo "Your system is not supported!" echo "Your system is not supported!"
exit 1 exit 1
fi fi
@@ -98,7 +98,10 @@ while [[ "$#" -gt 0 ]]; do
-help) help ;; -help) help ;;
-u) skip_update=true ;; -u) skip_update=true ;;
-update) skip_update=true ;; -update) skip_update=true ;;
*) echo "Unknown parameter passed: $1"; exit 1 ;; *)
echo "Unknown parameter passed: $1"
exit 1
;;
esac esac
shift shift
done done
@@ -108,7 +111,7 @@ if [ "$skip_update" = false ]; then
fi fi
# Setup # Setup
setip(){ setip() {
DEFAULT_IP="192.168.1.4" DEFAULT_IP="192.168.1.4"
while true; do while true; do
read -p "Please enter the IP Addr and press Enter /// 请输入 IP (默认为 $DEFAULT_IP): " input_ip read -p "Please enter the IP Addr and press Enter /// 请输入 IP (默认为 $DEFAULT_IP): " input_ip
@@ -116,7 +119,7 @@ setip(){
input_ip=$DEFAULT_IP input_ip=$DEFAULT_IP
fi fi
if echo "$input_ip" | grep -Eo '^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' > /dev/null; then if echo "$input_ip" | grep -Eo '^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' >/dev/null; then
break break
else else
echo "Invalid IP address format /// 非法的 IP 地址格式,请重新输入" echo "Invalid IP address format /// 非法的 IP 地址格式,请重新输入"
@@ -269,7 +272,6 @@ network_wizard() {
uci set network.lan._orig_ifname="$bridge_ports" uci set network.lan._orig_ifname="$bridge_ports"
uci set network.lan._orig_bridge='true' uci set network.lan._orig_bridge='true'
echo "Network interfaces configured: WAN (eth0), LAN ($bridge_ports) /// 网口已配置: WAN (eth0), LAN ($bridge_ports)" echo "Network interfaces configured: WAN (eth0), LAN ($bridge_ports) /// 网口已配置: WAN (eth0), LAN ($bridge_ports)"
fi fi
else else
@@ -386,76 +388,76 @@ debug() {
rm /www/logs.txt rm /www/logs.txt
fi fi
cat /etc/banner >> /www/logs.txt cat /etc/banner >>/www/logs.txt
date >> /www/logs.txt date >>/www/logs.txt
echo "## RELEASE" >> /www/logs.txt echo "## RELEASE" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
cat /etc/catwrt_release >> /www/logs.txt cat /etc/catwrt_release >>/www/logs.txt
echo "" echo ""
echo "## STATUS" >> /www/logs.txt echo "## STATUS" >>/www/logs.txt
echo "=================" >> /www/logs.txt echo "=================" >>/www/logs.txt
eval $UPTIME >> /www/logs.txt eval $UPTIME >>/www/logs.txt
echo "" echo ""
echo "## Memory Usage" >> /www/logs.txt echo "## Memory Usage" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
free -h >> /www/logs.txt free -h >>/www/logs.txt
echo "" echo ""
echo "## Disk Usage" >> /www/logs.txt echo "## Disk Usage" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
df -h >> /www/logs.txt df -h >>/www/logs.txt
echo "" echo ""
echo "## Application" >> /www/logs.txt echo "## Application" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
opkg list_installed >> /www/logs.txt opkg list_installed >>/www/logs.txt
echo "## SYSLOG" >> /www/logs.txt echo "## SYSLOG" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
logread >> /www/logs.txt logread >>/www/logs.txt
echo "" echo ""
echo "## DMESG" >> /www/logs.txt echo "## DMESG" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
dmesg >> /www/logs.txt dmesg >>/www/logs.txt
echo "" echo ""
echo "## Plugins" >> /www/logs.txt echo "## Plugins" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
cat /tmp/openclash.log >> /www/logs.txt cat /tmp/openclash.log >>/www/logs.txt
cat /tmp/log/ssrplus.log >> /www/logs.txt cat /tmp/log/ssrplus.log >>/www/logs.txt
cat /tmp/log/passwall.log >> /www/logs.txt cat /tmp/log/passwall.log >>/www/logs.txt
cat /tmp/log/passwall2.log >> /www/logs.txt cat /tmp/log/passwall2.log >>/www/logs.txt
echo "" echo ""
echo "## Task" >> /www/logs.txt echo "## Task" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
top -b -n 1 >> /www/logs.txt top -b -n 1 >>/www/logs.txt
echo "" echo ""
echo "## Network Configuration" >> /www/logs.txt echo "## Network Configuration" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
ifconfig -a >> /www/logs.txt ifconfig -a >>/www/logs.txt
echo "" echo ""
echo "## UCI Network" >> /www/logs.txt echo "## UCI Network" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
uci show network >> /www/logs.txt uci show network >>/www/logs.txt
echo "" echo ""
echo "## Firewall" >> /www/logs.txt echo "## Firewall" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
iptables -L -v -n >> /www/logs.txt iptables -L -v -n >>/www/logs.txt
ip6tables -L -v -n >> /www/logs.txt ip6tables -L -v -n >>/www/logs.txt
echo "" echo ""
echo "## Routing Table" >> /www/logs.txt echo "## Routing Table" >>/www/logs.txt
echo "==========" >> /www/logs.txt echo "==========" >>/www/logs.txt
ip route >> /www/logs.txt ip route >>/www/logs.txt
ip -6 route >> /www/logs.txt ip -6 route >>/www/logs.txt
echo "" echo ""
lan_ip=$(uci get network.lan.ipaddr) lan_ip=$(uci get network.lan.ipaddr)
@@ -486,6 +488,7 @@ catwrt_update() {
arch_self=$1 arch_self=$1
version_remote=$(curl -s "$API_URL" | jq -r ".$arch_self.version") version_remote=$(curl -s "$API_URL" | jq -r ".$arch_self.version")
hash_remote=$(curl -s "$API_URL" | jq -r ".$arch_self.hash") hash_remote=$(curl -s "$API_URL" | jq -r ".$arch_self.hash")
channel_remote=$(curl -s "$API_URL" | jq -r ".$arch_self.channel")
if [ $? -ne 0 ] || [ -z "$version_remote" ] || [ -z "$hash_remote" ]; then if [ $? -ne 0 ] || [ -z "$version_remote" ] || [ -z "$hash_remote" ]; then
remote_error "version or hash" remote_error "version or hash"
@@ -506,7 +509,7 @@ catwrt_update() {
contrast_version() { contrast_version() {
if [ "$version_remote" == "$version_local" ] && [ "$hash_remote" == "$hash_local" ]; then if [ "$version_remote" == "$version_local" ] && [ "$hash_remote" == "$hash_local" ]; then
echo "=======================================================" echo "======================================================="
echo " Your CatWrt is up to date!" echo "Your CatWrt is up to date! Also, you are using $channel_remote channel."
echo "=======================================================" echo "======================================================="
else else
echo "=======================================================" echo "======================================================="
@@ -518,10 +521,12 @@ catwrt_update() {
} }
print_version() { print_version() {
echo "Local Version : $version_local"
echo "Remote Version : $version_remote"
echo "Local Hash : $hash_local"
echo "Remote Hash : $hash_remote" echo "Remote Hash : $hash_remote"
echo "Remote Version : $version_remote"
echo "Remote Current Channel : $channel_remote"
echo "Local Version : $version_local"
echo "Local Hash : $hash_local"
echo "=======================================================" echo "======================================================="
echo "" echo ""
} }
@@ -533,7 +538,7 @@ catwrt_update() {
print_version print_version
} }
main main
} }
# Repo # Repo
apply_repo() { apply_repo() {
@@ -570,7 +575,7 @@ apply_repo() {
;; ;;
esac esac
else else
echo "`/etc/catwrt_release` or `/etc/openwrt_release` Files do not exist /// 文件不存在或者系统损坏!" echo "$(/etc/catwrt_release) or $(/etc/openwrt_release) Files do not exist /// 文件不存在或者系统损坏!"
exit 1 exit 1
fi fi
fi fi
@@ -644,12 +649,12 @@ apply_repo() {
choice=${choice:-5} choice=${choice:-5}
case $choice in case $choice in
1) conf_file="distfeeds.conf";; 1) conf_file="distfeeds.conf" ;;
2) conf_file="cfnetlify.conf";; 2) conf_file="cfnetlify.conf" ;;
3) conf_file="netlify.conf";; 3) conf_file="netlify.conf" ;;
4) conf_file="cfvercel.conf";; 4) conf_file="cfvercel.conf" ;;
5) conf_file="vercel.conf";; 5) conf_file="vercel.conf" ;;
*) conf_file="vercel.conf";; *) conf_file="vercel.conf" ;;
esac esac
CONF_PATH="$REPO_URL/$conf_file" CONF_PATH="$REPO_URL/$conf_file"
@@ -673,17 +678,17 @@ apply_repo() {
} }
# catnd # catnd
catnd(){ catnd() {
echo "$(date) - Starting CatWrt Network Diagnostics" echo "$(date) - Starting CatWrt Network Diagnostics"
echo " " echo " "
# Ping & PPPoE # Ping & PPPoE
ping -c 3 223.5.5.5 > /dev/null ping -c 3 223.5.5.5 >/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "[Ping] Network connection succeeded!" echo "[Ping] Network connection succeeded!"
echo " " echo " "
else else
ping -c 3 119.29.29.99 > /dev/null ping -c 3 119.29.29.99 >/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "[Ping] Network connection succeeded,But there may be problems!" echo "[Ping] Network connection succeeded,But there may be problems!"
echo " " echo " "
@@ -722,9 +727,9 @@ catnd(){
fi fi
# nslookup # nslookup
nslookup bilibili.com > /dev/null nslookup bilibili.com >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
nslookup www.miaoer.xyz > /dev/null nslookup www.miaoer.xyz >/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "[DNS] DNS resolution succeeded" echo "[DNS] DNS resolution succeeded"
echo " " echo " "
@@ -736,10 +741,10 @@ catnd(){
fi fi
# Public IP # Public IP
echo CatWrt IPv4 Addr: $(curl --silent --connect-timeout 5 4.ipw.cn ) echo CatWrt IPv4 Addr: $(curl --silent --connect-timeout 5 4.ipw.cn)
echo " " echo " "
curl 6.ipw.cn --connect-timeout 5 > /dev/null 2>&1 curl 6.ipw.cn --connect-timeout 5 >/dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "[IPv6] IPv6 network connection timed out" echo "[IPv6] IPv6 network connection timed out"
echo " " echo " "
@@ -792,13 +797,13 @@ catnd(){
fi fi
# IPv6 WAN6 # IPv6 WAN6
grep 'config interface' /etc/config/network | grep 'wan6' > /dev/null grep 'config interface' /etc/config/network | grep 'wan6' >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "[wan6] Your IPv6 network may have issues" echo "[wan6] Your IPv6 network may have issues"
echo " " echo " "
fi fi
grep 'dhcpv6' /etc/config/network > /dev/null grep 'dhcpv6' /etc/config/network >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "[wan6] Your IPv6 network may have issues" echo "[wan6] Your IPv6 network may have issues"
echo " " echo " "
@@ -826,7 +831,7 @@ catnd(){
} }
# Sysupgrade # Sysupgrade
sysupgrade(){ sysupgrade() {
if [ "$(uname -m)" != "x86_64" ]; then if [ "$(uname -m)" != "x86_64" ]; then
echo "仅有 x86_64 可以使用脚本进行系统升级。" echo "仅有 x86_64 可以使用脚本进行系统升级。"
exit 1 exit 1
@@ -835,7 +840,7 @@ sysupgrade(){
echo "" echo ""
disk_size=$(fdisk -l /dev/sda | grep "Disk /dev/sda:" | awk '{print $3}') disk_size=$(fdisk -l /dev/sda | grep "Disk /dev/sda:" | awk '{print $3}')
if (( $(echo "$disk_size != 800.28" | bc -l) )); then if (($(echo "$disk_size != 800.28" | bc -l))); then
echo "磁盘空间未修改或不匹配,无法继续升级。" echo "磁盘空间未修改或不匹配,无法继续升级。"
exit 1 exit 1
fi fi
@@ -851,6 +856,13 @@ sysupgrade(){
firmware_url=$AMD64_BIOS_SYSUP firmware_url=$AMD64_BIOS_SYSUP
fi fi
if [ -f /etc/catwrt_opkg_list_installed ]; then
rm /etc/catwrt_opkg_list_installed
fi
catwrt_opkg_list_installed
echo "已经生成备份软件包列表,方便你后续更新后恢复部分消失的插件和软件"
echo "" echo ""
echo "Warning:" echo "Warning:"
echo "=========================================================================" echo "========================================================================="
@@ -1223,7 +1235,7 @@ configure_luci_mihomo() {
echo "操作完成" echo "操作完成"
} }
configure_tailscale(){ configure_tailscale() {
if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then
echo "[ERROR] 请先配置软件源" echo "[ERROR] 请先配置软件源"
menu menu
@@ -1256,7 +1268,7 @@ configure_tailscale(){
for rule in "${rules[@]}"; do for rule in "${rules[@]}"; do
if ! grep -q "^$rule$" $firewall_file; then if ! grep -q "^$rule$" $firewall_file; then
echo $rule >> $firewall_file echo $rule >>$firewall_file
fi fi
done done
@@ -1288,7 +1300,7 @@ configure_tailscale(){
} }
# TTYD (NOT SAFETY) # TTYD (NOT SAFETY)
configure_ttyd(){ configure_ttyd() {
if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then
echo "[ERROR]未安装 luci-app-ttyd 或 ttyd 软件包,请先配置软件源并安装这些软件包" echo "[ERROR]未安装 luci-app-ttyd 或 ttyd 软件包,请先配置软件源并安装这些软件包"
menu menu
@@ -1351,9 +1363,9 @@ manual_deploy_uhttpd_ssl_cert() {
return return
fi fi
if ! grep -q "list listen_http '0.0.0.0:80'" /etc/config/uhttpd || \ if ! grep -q "list listen_http '0.0.0.0:80'" /etc/config/uhttpd ||
! grep -q "list listen_http '\[::\]:80'" /etc/config/uhttpd || \ ! grep -q "list listen_http '\[::\]:80'" /etc/config/uhttpd ||
! grep -q "list listen_https '0.0.0.0:443'" /etc/config/uhttpd || \ ! grep -q "list listen_https '0.0.0.0:443'" /etc/config/uhttpd ||
! grep -q "list listen_https '\[::\]:443'" /etc/config/uhttpd; then ! grep -q "list listen_https '\[::\]:443'" /etc/config/uhttpd; then
echo "[ERROR] uhttpd 配置文件中的监听端口配置已被修改,请检查!" echo "[ERROR] uhttpd 配置文件中的监听端口配置已被修改,请检查!"
fi fi