mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 23:32:51 +08:00
💐 Sync 2026-09-21 23:46:31
This commit is contained in:
1 parent
9dc0dfd5bb
commit
3f0bfdec09
2 files changed
+50
-52
No files matched your search
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=my-default-settings
|
||||
PKG_VERSION:=2
|
||||
PKG_RELEASE:=19
|
||||
PKG_RELEASE:=20
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -7,49 +7,35 @@
|
||||
show_help() {
|
||||
cat << 'EOF_HELP'
|
||||
用法:
|
||||
mywifi [选项] [WiFi名称] [WiFi密码]
|
||||
|
||||
参数:
|
||||
WiFi名称 基础SSID名称(缺省时自动使用系统 hostname)
|
||||
WiFi密码 无线密码(缺省或未指定时默认无密码,指定时需 8-63 位)
|
||||
mywifi [选项]
|
||||
|
||||
选项:
|
||||
-s, --ssid <名称> 指定基础WiFi名称
|
||||
-p, --password <密码> 指定WiFi密码
|
||||
-f, --force 强制重新执行(忽略 wifi=1 已配置检查)
|
||||
-s, --ssid <名称> 指定基础WiFi名称(未指定时默认使用系统 hostname)
|
||||
-p, --password <密码> 指定WiFi密码(未指定时默认无密码/开放网络,需 8-63 位)
|
||||
-f, --force 强制重新执行配置(忽略 wifi=1 已配置检查)
|
||||
-h, --help 查看帮助信息
|
||||
|
||||
并发与等待机制:
|
||||
- 无参/热插拔调用时:若已有 mywifi 在执行,直接终止退出;
|
||||
- 带 -f 或用户传参调用时:若已有 mywifi 在执行,自动排队等待其执行完成后再继续执行。
|
||||
|
||||
WiFi命名规范:
|
||||
2.4 GHz -> <WiFi名>_2.4G
|
||||
5 GHz -> <WiFi名>_5G
|
||||
6 GHz -> <WiFi名>_6G
|
||||
说明:
|
||||
- 必须通过 -s 和 -p 传递 WiFi 名称与密码,不接收位置参数。
|
||||
- 命名规范: <WiFi名>_2.4G / <WiFi名>_5G / <WiFi名>_6G
|
||||
|
||||
使用示例:
|
||||
mywifi # 默认执行(使用 hostname,若已配置或正在执行则自动终止)
|
||||
mywifi # 默认执行(使用 hostname,无密码)
|
||||
mywifi -f # 强制重新按 hostname 恢复默认配置
|
||||
mywifi "HomeWiFi" "12345678" # 设置指定 WiFi 名及密码
|
||||
mywifi -f "HomeWiFi" "12345678" # 强制覆盖设置
|
||||
mywifi -s "HomeWiFi" # 仅指定 WiFi 名称,默认无密码
|
||||
mywifi -s "HomeWiFi" -p "12345678" # 指定 WiFi 名称和密码
|
||||
mywifi -f -s "HomeWiFi" -p "12345678" # 强制覆盖配置
|
||||
EOF_HELP
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# 1. 命令行参数解析(过滤 OpenWrt Hotplug 热插拔系统事件传参)
|
||||
# 1. 严格参数解析(仅允许 -s, -p, -f, -h,彻底忽略所有裸位置参数)
|
||||
# -------------------------------------------------------------
|
||||
CUSTOM_SSID=""
|
||||
CUSTOM_PASSWD=""
|
||||
HAS_PASSWD=0
|
||||
FORCE=0
|
||||
|
||||
# 判断是否是由系统 Hotplug 热插拔机制触发调用
|
||||
is_hotplug=0
|
||||
if [ -n "$HOTPLUG_TYPE" ] || [ -n "$ACTION" ] || [ -n "$DEVICENAME" ]; then
|
||||
is_hotplug=1
|
||||
fi
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
@@ -60,41 +46,41 @@ while [ $# -gt 0 ]; do
|
||||
FORCE=1
|
||||
;;
|
||||
-s|--ssid)
|
||||
shift
|
||||
CUSTOM_SSID="$1"
|
||||
# 仅当后一个参数存在且不是以 '-' 开头的其他选项时,才提取为 SSID
|
||||
if [ $# -ge 2 ] && [ "${2#-}" = "$2" ]; then
|
||||
shift
|
||||
CUSTOM_SSID="$1"
|
||||
else
|
||||
CUSTOM_SSID=""
|
||||
fi
|
||||
;;
|
||||
-p|--password)
|
||||
shift
|
||||
CUSTOM_PASSWD="$1"
|
||||
HAS_PASSWD=1
|
||||
;;
|
||||
ieee80211|net|button|platform|usb|add|remove|bind|unbind)
|
||||
# 过滤热插拔事件传参,避免将热插拔子系统名称(如 ieee80211)误当作 WiFi SSID
|
||||
is_hotplug=1
|
||||
# 仅当后一个参数存在且不是以 '-' 开头的其他选项时,才提取为密码
|
||||
if [ $# -ge 2 ] && [ "${2#-}" = "$2" ]; then
|
||||
shift
|
||||
CUSTOM_PASSWD="$1"
|
||||
HAS_PASSWD=1
|
||||
else
|
||||
# 若 -p 后面未跟密码值,安全处理为“无密码开放网络”
|
||||
CUSTOM_PASSWD=""
|
||||
HAS_PASSWD=0
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# 仅在非系统热插拔事件传参时才接收位置参数
|
||||
if [ $is_hotplug -eq 0 ]; then
|
||||
if [ -z "$CUSTOM_SSID" ]; then
|
||||
CUSTOM_SSID="$1"
|
||||
elif [ $HAS_PASSWD -eq 0 ]; then
|
||||
CUSTOM_PASSWD="$1"
|
||||
HAS_PASSWD=1
|
||||
fi
|
||||
fi
|
||||
# 忽略所有非选项参数
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# 判断是否需要等待锁(带 -f 或传了有效自定义参数时排队等待,无参/热插拔直接退出)
|
||||
# 判断是否需要等待锁(带 -f 或传了 -s / -p 则排队等待,无参直接退出)
|
||||
WAIT_LOCK=0
|
||||
if [ $FORCE -eq 1 ] || [ -n "$CUSTOM_SSID" ] || [ $HAS_PASSWD -eq 1 ]; then
|
||||
WAIT_LOCK=1
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# 2. 检查 base_config 状态标记(无参且已配置过 wifi=1 时,直接终止)
|
||||
# 2. 检查 base_config 状态标记(无参且已配置过 wifi=1 时直接退出)
|
||||
# -------------------------------------------------------------
|
||||
if [ $FORCE -eq 0 ]; then
|
||||
if [ "$(uci -q get base_config.@status[0].wifi 2>/dev/null)" = "1" ]; then
|
||||
@@ -172,7 +158,7 @@ acquire_lock() {
|
||||
acquire_lock
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# 4. 密码长度合法性校验(若指定了密码)
|
||||
# 4. 密码长度合法性校验(若通过 -p 指定了密码)
|
||||
# -------------------------------------------------------------
|
||||
if [ $HAS_PASSWD -eq 1 ] && [ -n "$CUSTOM_PASSWD" ]; then
|
||||
pwd_len=${#CUSTOM_PASSWD}
|
||||
@@ -281,16 +267,28 @@ detect_band() {
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# 7. 配置 SSID 与各频段接口
|
||||
# 7. 严格解析真实 Hostname 并确定基础 SSID
|
||||
# -------------------------------------------------------------
|
||||
[ -f /etc/openwrt_release ] && . /etc/openwrt_release
|
||||
|
||||
get_real_hostname() {
|
||||
local h=""
|
||||
|
||||
# 1. 优先从 UCI system 配置中提取
|
||||
h="$(uci -q get system.@system[0].hostname 2>/dev/null)"
|
||||
|
||||
# 2. 回退:固件默认名称 (Kwrt)
|
||||
if [ -z "$h" ] || [ "$h" = "ieee80211" ] || [ "$h" = "(none)" ] || [ "$h" = "OpenWrt" ]; then
|
||||
h="Kwrt"
|
||||
fi
|
||||
|
||||
echo "$h"
|
||||
}
|
||||
|
||||
if [ -n "$CUSTOM_SSID" ]; then
|
||||
SSID="$CUSTOM_SSID"
|
||||
else
|
||||
SSID="$(uci -q get system.@system[0].hostname 2>/dev/null)"
|
||||
[ -z "$SSID" ] && [ -r /proc/sys/kernel/hostname ] && SSID="$(cat /proc/sys/kernel/hostname)"
|
||||
[ -z "$SSID" ] && SSID="Kwrt"
|
||||
SSID="$(get_real_hostname)"
|
||||
fi
|
||||
|
||||
sed -i '/option disabled/d' /etc/config/wireless 2>/dev/null
|
||||
|
||||
Reference in new issue
Block a user