mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
add wlan
This commit is contained in:
parent
3971f9609f
commit
1a792b7ea6
@ -160,17 +160,17 @@ if [ "${DIRECT}" = "true" ]; then
|
||||
reboot
|
||||
exit 0
|
||||
else
|
||||
ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
|
||||
echo "$(printf "$(TEXT "Detected %s network cards.")" "${#ETHX[@]}")"
|
||||
ETHX=$(ls /sys/class/net/ | grep -v lo)
|
||||
echo "$(printf "$(TEXT "Detected %s network cards.")" "$(echo ${ETHX} | wc -w)")"
|
||||
echo "$(TEXT "Checking Connect.")"
|
||||
COUNT=0
|
||||
BOOTIPWAIT="$(readConfigKey "bootipwait" "${USER_CONFIG_FILE}")"
|
||||
[ -z "${BOOTIPWAIT}" ] && BOOTIPWAIT=10
|
||||
while [ ${COUNT} -lt $((${BOOTIPWAIT} + 32)) ]; do
|
||||
hasConnect="false"
|
||||
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
|
||||
if ethtool ${ETHX[${N}]} | grep 'Link detected' | grep -q 'yes'; then
|
||||
echo -en "${ETHX[${N}]} "
|
||||
for N in ${ETHX}; do
|
||||
if ethtool ${N} | grep 'Link detected' | grep -q 'yes'; then
|
||||
echo -en "${N} "
|
||||
hasConnect="true"
|
||||
fi
|
||||
done
|
||||
@ -183,27 +183,27 @@ else
|
||||
sleep 1
|
||||
done
|
||||
echo "$(TEXT "Waiting IP.(For reference only)")"
|
||||
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
|
||||
for N in ${ETHX}; do
|
||||
COUNT=0
|
||||
DRIVER=$(ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
|
||||
echo -en "${ETHX[${N}]}(${DRIVER}): "
|
||||
DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
|
||||
echo -en "${N}(${DRIVER}): "
|
||||
while true; do
|
||||
if ! ip link show ${ETHX[${N}]} | grep -q 'UP'; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n"
|
||||
if ! ip link show ${N} | grep -q 'UP'; then
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "DOWN")\n"
|
||||
break
|
||||
fi
|
||||
if ethtool ${ETHX[${N}]} | grep 'Link detected' | grep -q 'no'; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "NOT CONNECTED")\n"
|
||||
if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "NOT CONNECTED")\n"
|
||||
break
|
||||
fi
|
||||
if [ ${COUNT} -eq ${BOOTIPWAIT} ]; then # Under normal circumstances, no errors should occur here.
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "TIMEOUT (Please check the IP on the router.)")\n"
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "TIMEOUT (Please check the IP on the router.)")\n"
|
||||
break
|
||||
fi
|
||||
COUNT=$((${COUNT} + 1))
|
||||
IP="$(getIP ${ETHX[${N}]})"
|
||||
IP="$(getIP ${N})"
|
||||
if [ -n "${IP}" ]; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:5000\033[0m to connect the DSM via web.")" "${IP}")\n"
|
||||
echo -en "\r${N}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:5000\033[0m to connect the DSM via web.")" "${IP}")\n"
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
[ -z "${WORK_PATH}" -o ! -d "${WORK_PATH}/include" ] && WORK_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/../" >/dev/null 2>&1 && pwd)"
|
||||
|
||||
. ${WORK_PATH}/include/consts.sh
|
||||
@ -346,3 +345,21 @@ function rebootTo() {
|
||||
grub-editenv ${ENVFILE} set next_entry="${1}"
|
||||
reboot
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# connect wlanif
|
||||
# 1 netif name
|
||||
function connectwlanif() {
|
||||
[ ! -d "/sys/class/net/${1}" ] && return 1
|
||||
|
||||
CONF=""
|
||||
[ -z "${CONF}" -a -f "${PART1_PATH}/wpa_supplicant.conf.${1}" ] && CONF="${PART1_PATH}/wpa_supplicant.conf.${1}"
|
||||
[ -z "${CONF}" -a -f "${PART1_PATH}/wpa_supplicant.conf" ] && CONF="${PART1_PATH}/wpa_supplicant.conf"
|
||||
[ -z "${CONF}" ] && return 2
|
||||
|
||||
if [ -f "/var/run/wpa_supplicant.pid.${1}" ]; then
|
||||
kill -9 $(cat /var/run/wpa_supplicant.pid.${1})
|
||||
rm -f /var/run/wpa_supplicant.pid.${1}
|
||||
fi
|
||||
wpa_supplicant -i ${1} -c "${CONF}" -B -P "/var/run/wpa_supplicant.pid.${1}" >/dev/null 2>&1
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
|
||||
printf "\033[1;44m%*s\033[0m\n" ${COLUMNS} ""
|
||||
|
||||
# Get first MAC address
|
||||
ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
|
||||
ETHX=$(ls /sys/class/net/ | grep -v lo)
|
||||
# No network devices
|
||||
[ ${#ETHX[@]} -le 0 ] && die "$(TEXT "Network devices not found!")"
|
||||
[ $(echo ${ETHX} | wc -w) -le 0 ] && die "$(TEXT "Network devices not found!")"
|
||||
|
||||
# If user config file not exists, initialize it
|
||||
if [ ! -f "${USER_CONFIG_FILE}" ]; then
|
||||
@ -60,7 +60,8 @@ initConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
||||
|
||||
# _sort_netif "$(readConfigKey "addons.sortnetif" "${USER_CONFIG_FILE}")"
|
||||
|
||||
for ETH in ${ETHX[@]}; do
|
||||
for ETH in ${ETHX}; do
|
||||
[ "${ETH::4}" = "wlan" ] && connectwlanif "${ETH}" && sleep 1
|
||||
MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')"
|
||||
IPR="$(readConfigKey "network.${MACR}" "${USER_CONFIG_FILE}")"
|
||||
if [ -n "${IPR}" ]; then
|
||||
@ -115,14 +116,14 @@ if [ ${BOOT} -eq 1 ]; then
|
||||
fi
|
||||
|
||||
# Wait for an IP
|
||||
echo "$(printf "$(TEXT "Detected %s network cards.")" "${#ETHX[@]}")"
|
||||
echo "$(printf "$(TEXT "Detected %s network cards.")" "$(echo ${ETHX} | wc -w)")"
|
||||
echo "$(TEXT "Checking Connect.")"
|
||||
COUNT=0
|
||||
while [ ${COUNT} -lt 30 ]; do
|
||||
hasConnect="false"
|
||||
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
|
||||
if ethtool ${ETHX[${N}]} | grep 'Link detected' | grep -q 'yes'; then
|
||||
echo -en "${ETHX[${N}]} "
|
||||
for N in ${ETHX}; do
|
||||
if ethtool ${N} | grep 'Link detected' | grep -q 'yes'; then
|
||||
echo -en "${N} "
|
||||
hasConnect="true"
|
||||
fi
|
||||
done
|
||||
@ -135,27 +136,27 @@ while [ ${COUNT} -lt 30 ]; do
|
||||
sleep 1
|
||||
done
|
||||
echo "$(TEXT "Waiting IP.")"
|
||||
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
|
||||
for N in ${ETHX}; do
|
||||
COUNT=0
|
||||
DRIVER=$(ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
|
||||
echo -en "${ETHX[${N}]}(${DRIVER}): "
|
||||
DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
|
||||
echo -en "${N}(${DRIVER}): "
|
||||
while true; do
|
||||
if ! ip link show ${ETHX[${N}]} | grep -q 'UP'; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n"
|
||||
if ! ip link show ${N} | grep -q 'UP'; then
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "DOWN")\n"
|
||||
break
|
||||
fi
|
||||
if ethtool ${ETHX[${N}]} | grep 'Link detected' | grep -q 'no'; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "NOT CONNECTED")\n"
|
||||
if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "NOT CONNECTED")\n"
|
||||
break
|
||||
fi
|
||||
if [ ${COUNT} -eq 15 ]; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "TIMEOUT (Please check the IP on the router.)")\n"
|
||||
echo -en "\r${N}(${DRIVER}): $(TEXT "TIMEOUT (Please check the IP on the router.)")\n"
|
||||
break
|
||||
fi
|
||||
COUNT=$((${COUNT} + 1))
|
||||
IP="$(getIP ${ETHX[${N}]})"
|
||||
IP="$(getIP ${N})"
|
||||
if [ -n "${IP}" ]; then
|
||||
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:7681\033[0m to configure the loader via web terminal.")" "${IP}")\n"
|
||||
echo -en "\r${N}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:7681\033[0m to configure the loader via web terminal.")" "${IP}")\n"
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1045,6 +1045,7 @@ function advancedMenu() {
|
||||
echo "n \"$(TEXT "Reboot on kernel panic:") \Z4${KERNELPANIC}\Zn\"" >>"${TMP_PATH}/menu"
|
||||
fi
|
||||
echo "m \"$(TEXT "Set static IP")\"" >>"${TMP_PATH}/menu"
|
||||
echo "y \"$(TEXT "Set wireless account")\"" >>"${TMP_PATH}/menu"
|
||||
echo "u \"$(TEXT "Edit user config file manually")\"" >>"${TMP_PATH}/menu"
|
||||
echo "h \"$(TEXT "Edit grub.cfg file manually")\"" >>"${TMP_PATH}/menu"
|
||||
echo "t \"$(TEXT "Try to recovery a DSM installed system")\"" >>"${TMP_PATH}/menu"
|
||||
@ -1138,8 +1139,8 @@ function advancedMenu() {
|
||||
MSG="$(TEXT "Temporary IP: (UI will not refresh)")"
|
||||
ITEMS=""
|
||||
IDX=0
|
||||
ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
|
||||
for ETH in ${ETHX[@]}; do
|
||||
ETHX=$(ls /sys/class/net/ | grep -v lo)
|
||||
for ETH in ${ETHX}; do
|
||||
[ ${IDX} -gt 7 ] && break # Currently, only up to 8 are supported. (<==> boot.sh L96, <==> lkm: MAX_NET_IFACES)
|
||||
IDX=$((${IDX} + 1))
|
||||
MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')"
|
||||
@ -1153,7 +1154,7 @@ function advancedMenu() {
|
||||
[ $? -ne 0 ] && continue
|
||||
(
|
||||
IDX=1
|
||||
for ETH in ${ETHX[@]}; do
|
||||
for ETH in ${ETHX}; do
|
||||
MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')"
|
||||
IPR="$(readConfigKey "network.${MACR}" "${USER_CONFIG_FILE}")"
|
||||
IPC="$(cat "${TMP_PATH}/resp" | sed -n "${IDX}p")"
|
||||
@ -1175,6 +1176,63 @@ function advancedMenu() {
|
||||
--progressbox "$(TEXT "Setting IP ...")" 20 100
|
||||
NEXT="e"
|
||||
;;
|
||||
y)
|
||||
DIALOG --title "$(TEXT "Advanced")" \
|
||||
--infobox "$(TEXT "Scanning ...")" 0 0
|
||||
ITEM=$(iw wlan0 scan | grep SSID: | awk '{print $2}')
|
||||
MSG=""
|
||||
MSG+="$(TEXT "Scanned SSIDs:\n")"
|
||||
for I in $(iw wlan0 scan | grep SSID: | awk '{print $2}'); do MSG+="${I}\n"; done
|
||||
LINENUM=$(($(echo -e "${MSG}" | wc -l) + 8))
|
||||
while true; do
|
||||
SSID=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i SSID | cut -d'=' -f2)
|
||||
PSK=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i PSK | cut -d'=' -f2)
|
||||
SSID="${SSID//\"/}"
|
||||
PSK="${PSK//\"/}"
|
||||
DIALOG --title "$(TEXT "Advanced")" \
|
||||
--form "${MSG}" ${LINENUM:-16} 62 2 "SSID" 1 1 "${SSID}" 1 7 50 0 " PSK" 2 1 "${PSK}" 2 7 50 0 \
|
||||
2>"${TMP_PATH}/resp"
|
||||
RET=$?
|
||||
case ${RET} in
|
||||
0) # ok-button
|
||||
SSID="$(cat "${TMP_PATH}/resp" | sed -n '1p')"
|
||||
PSK="$(cat "${TMP_PATH}/resp" | sed -n '2p')"
|
||||
if [ -z "${SSID}" -o -z "${PSK}" ]; then
|
||||
DIALOG --title "$(TEXT "Advanced")" \
|
||||
--yesno "$(TEXT "Invalid SSID/PSK, retry?")" 0 0
|
||||
[ $? -eq 0 ] && break
|
||||
fi
|
||||
(
|
||||
rm -f ${PART1_PATH}/wpa_supplicant.conf
|
||||
echo "ctrl_interface=/var/run/wpa_supplicant" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
echo "update_config=1" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
echo "network={" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
echo " ssid=\"${SSID}\"" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
echo " psk=\"${PSK}\"" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
echo "}" >>${PART1_PATH}/wpa_supplicant.conf
|
||||
|
||||
for ETH in $(ls /sys/class/net/ | grep wlan); do
|
||||
connectwlanif "${ETH}" && sleep 1
|
||||
MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')"
|
||||
IPR="$(readConfigKey "network.${MACR}" "${USER_CONFIG_FILE}")"
|
||||
if [ -n "${IPR}" ]; then
|
||||
ip addr add ${IPC}/24 dev ${ETH}
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
) 2>&1 | DIALOG --title "$(TEXT "Advanced")" \
|
||||
--progressbox "$(TEXT "Setting ...")" 20 100
|
||||
break
|
||||
;;
|
||||
1) # cancel-button
|
||||
break
|
||||
;;
|
||||
255) # ESC
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
u)
|
||||
editUserConfig
|
||||
NEXT="e"
|
||||
|
Loading…
x
Reference in New Issue
Block a user