Witam! VipeRsan - oględnie rzecz ujmując - wręcz szoqjąco pomocny z Ciebie gość
Zaproponowany pomysł z naprawą AutoPIN'a jest zdecydowanie bardzo rozsądny.
Zwłaszcza dla nieszczęśników z SIM'ami Orange gdzie nie ma możliwości zdjęcia PIN'u.
Skądinąd szokujące jest że Huawei zkiepścił tak prosty temat jak zapamiętywanie PIN'u w interfejsie...
Nawiązując do zachęty testów na priwa - niestety nie będę tutaj pomocny gdyż jak wcześniej pisałem mam firmowego, niebrandowanego E3372 z PL dystrybucji - działa stabilnie i od tej strony czuje silną presję aby fw w nim nie ruszać.
Na szczęście używam E3372 wyłącznie z MR3040 z OpenWrt BB - dlatego tego sztukowania AutoPIN nie muszę dokonywać bezpośrednio na poziomie systemu samego E3372 lecz równie skutecznie mogę to wykonać poprzez curl'a/nc/wget z wykorzystaniem API z poziomu OpenWrt.
W przypadku wszelkich niejasności polecam Wireshark'iem podejrzeć ruch pomiędzy webGUI a urządzeniem - na stronie opisującej API w sekcji Moduł PIN dopisz ewentualnie że PIN wysyła się POST'em z OperateType 0.
W OpenWrt trzeba niestety sprawdzić więcej rzeczy, niż gdyby robić AutoPIN'a z poziomu E3372.
Oczekuję na podniesienie interfejsu WAN na właściwym porcie:
/etc/hotplug.d/iface
Kod: Zaznacz cały
#!/bin/sh
[ "$ACTION" = 'ifup' -a "$DEVICE" = 'eth1' -a "$INTERFACE" = 'wan' ] && {
/root/pin.sh
}
Następnie sprawdzam czy default gw ustawiony jest na 192.168.8.1 (interfejs jest dhcp) i czy modem to 12di 14dc:
Kod: Zaznacz cały
MODEM=$(cat /sys/kernel/debug/usb/devices | grep -i 12d1 | cut -d'=' -f3 | cut -d' ' -f1)
NEXTHOP=$(ifstatus wan | grep -i nexthop | cut -d\" -f4)
[ "$MODEM" = "$modem" -a "$NEXTHOP" = "$nexthop" ] || Exit
token:
Kod: Zaznacz cały
TOKEN='__RequestVerificationToken: '$( echo -e "GET /api/webserver/token HTTP/1.1\nHost: 192.168.8.1\n\n" | nc 192.168.8.1 80 | grep token | cut -c 8- | cut -d'<' -f1)
status PIN'u:
Kod: Zaznacz cały
PINSTATUS=$(echo -e "GET /api/monitoring/converged-status HTTP/1.1\nHost: 192.168.8.1\n\n" | nc 192.168.8.1 80 | grep SimState | cut -c 11- | cut -d'<' -f1
Requesta wysyłam nc chociaż wget'em było by ,,poprawniej":
Kod: Zaznacz cały
REQUEST="<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><OperateType>0</OperateType><CurrentPin>$PIN</CurrentPin><NewPin></NewPin><PukCode></PukCode></request>"
REQUEST="POST /api/pin/operate HTTP/1.1\nUser-Agent: curl/7.37.1\nHost: 192.168.8.1\nAccept: */*\n$TOKEN\nX-Requested-With: XMLHttpRequest\nContent-Type: text/xml\nContent-Length: 146\n\n"$REQUEST
echo -e $REQUEST | nc 192.168.8.1 80
...no i tyle.
Generalnie - nie siląc się na optymalizację - działa bezbłędnie.
Dzięki i pozdrawiam.
