|
@@ -1,6 +1,6 @@
|
|
|
#!/bin/bash
|
|
|
|
|
|
-base_fw_name="gluon-ffpb-0.5.1-"
|
|
|
+source ./config
|
|
|
|
|
|
function quit() {
|
|
|
if [ x"${BASH_SOURCE[0]}" == x"$0" ]; then
|
|
@@ -10,17 +10,27 @@ function quit() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
+function curl_admin() {
|
|
|
+ curl -fsS --basic -u admin:admin $@
|
|
|
+}
|
|
|
+
|
|
|
# download missing firmware images
|
|
|
-for model in tp-link-tl-wr841n-nd-v8 tp-link-tl-wr841n-nd-v9; do
|
|
|
- if [ ! -r "images/${base_fw_name}${model}.bin" ]; then
|
|
|
+models="tp-link-tl-wr841n-nd-v8 tp-link-tl-wr841n-nd-v9"
|
|
|
+models="${models} tp-link-tl-wdr3500-v1"
|
|
|
+models="${models} tp-link-tl-wdr3600-v1"
|
|
|
+models="${models} tp-link-tl-wdr4300-v1"
|
|
|
+for model in models; do
|
|
|
+ filename="${base_fw_name}-${model}.bin"
|
|
|
+ imagefile="images/${filename}"
|
|
|
+ if [ ! -r $imagefile ]; then
|
|
|
echo -en "Downloading image for '$model' ... "
|
|
|
- wget -q "http://firmware.paderborn.freifunk.net/stable/${base_fw_name}${model}.bin" -O "images/${base_fw_name}${model}.bin"
|
|
|
+ wget -q "${base_fw_url}${filename}" -O "$imagefile"
|
|
|
if [ $? -eq 0 ]; then
|
|
|
echo "OK"
|
|
|
else
|
|
|
echo "ERROR"
|
|
|
- rm "images/${base_fw_name}${model}.bin" 2>/dev/null
|
|
|
- echo "Failed to download firmware. Please ensure the firmware for '${base_fw_name}${model}' is present in images/ directory."
|
|
|
+ rm -f "$imagefile"
|
|
|
+ echo "Failed to download firmware. Please ensure the firmware for '${base_fw_name}-${model}' is present in images/ directory."
|
|
|
quit 3
|
|
|
fi
|
|
|
fi
|
|
@@ -32,19 +42,28 @@ if [ $? -ne 0 ]; then
|
|
|
quit 1
|
|
|
fi
|
|
|
|
|
|
-model=$(curl --basic -su admin:admin http://192.168.0.1/ | grep -oE "WR[0-9]+N")
|
|
|
+mac=$(arp -i eth0 -a 192.168.0.1 |grep -oE " [0-9a-f:]+ " |tr -d ' ')
|
|
|
+echo "mac address: $mac"
|
|
|
+
|
|
|
+model=$(curl_admin http://192.168.0.1/ | grep -oE "WD?R[0-9]+N?")
|
|
|
echo "found model: $model"
|
|
|
|
|
|
hwver_page="http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm"
|
|
|
-hwver=$(curl --basic -su admin:admin -e http://192.168.0.1/userRpm/MenuRpm.htm $hwver_page | grep -oE "$model v[0-9]+")
|
|
|
-echo "hw version: $hwver"
|
|
|
+hwver=$(curl_admin -e http://192.168.0.1/userRpm/MenuRpm.htm $hwver_page | grep -oE "$model v[0-9]+")
|
|
|
+echo "hw version: $hwver"
|
|
|
|
|
|
uploadurl="http://192.168.0.1/incoming/Firmware.htm"
|
|
|
image=""
|
|
|
if [ "$hwver" = "WR841N v9" ]; then
|
|
|
- image="${base_fw_name}tp-link-tl-wr841n-nd-v9.bin"
|
|
|
+ image="${base_fw_name}-tp-link-tl-wr841n-nd-v9.bin"
|
|
|
elif [ "$hwver" = "WR841N v8" ]; then
|
|
|
- image="${base_fw_name}tp-link-tl-wr841n-nd-v8.bin"
|
|
|
+ image="${base_fw_name}-tp-link-tl-wr841n-nd-v8.bin"
|
|
|
+elif [ "$hwver" = "WDR3500 v1" ]; then
|
|
|
+ image="${base_fw_name}-tp-link-tl-wdr3500-v1.bin"
|
|
|
+elif [ "$hwver" = "WDR3600 v1" ]; then
|
|
|
+ image="${base_fw_name}-tp-link-tl-wdr3600-v1.bin"
|
|
|
+elif [ "$hwver" = "WDR4300 v1" ]; then
|
|
|
+ image="${base_fw_name}-tp-link-tl-wdr4300-v1.bin"
|
|
|
else
|
|
|
echo "UNKNOWN MODEL ($hwver), SORRY :("
|
|
|
quit 2
|
|
@@ -54,16 +73,27 @@ fi
|
|
|
image="images/$image"
|
|
|
|
|
|
echo -en "flashing image: $image ... "
|
|
|
-curl --basic -su admin:admin -e $hwver_page -F Filename=@$image $uploadurl > /dev/null
|
|
|
-curl --basic -su admin:admin -e $uploadurl http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm > /dev/null
|
|
|
+curl_admin -e $hwver_page -F Filename=@$image $uploadurl > /dev/null
|
|
|
+curl_admin -e $uploadurl http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm > /dev/null
|
|
|
echo "done :)"
|
|
|
|
|
|
echo -en "waiting for router to come up again "
|
|
|
-
|
|
|
while ! ping -n -c 1 -W 2 192.168.1.1 > /dev/null; do
|
|
|
echo -en "."
|
|
|
sleep 1
|
|
|
done
|
|
|
-
|
|
|
echo " \o/"
|
|
|
+
|
|
|
+# upload authorized keys if present
|
|
|
+if [ -e authorized_keys ]; then
|
|
|
+ echo -en "uploading authorized_keys ... "
|
|
|
+ keys=`cat authorized_keys`
|
|
|
+ curl -fsS -F cbi.submit=1 -F "cbid.system._keys._data=$keys" http://192.168.1.1/cgi-bin/luci/admin/index > /dev/null
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ echo "OK"
|
|
|
+ else
|
|
|
+ quit 4
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
echo
|