1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-12 18:41:51 +00:00

Add more info for qmi, modemmanger and huawei modems

This commit is contained in:
Ycarus (Yannick Chabanois) 2020-04-25 13:12:15 +02:00
parent 81789e00ac
commit 9910e61efc
6 changed files with 77 additions and 21 deletions

View file

@ -293,6 +293,12 @@ Thanks :)*/
font-weight: 700;
color: #333333;
}
.network-node .info .title i {
font-weight: lighter;
font-size: 5px;
}
.network-node .info .status-message {
display: block;
}

View file

@ -382,6 +382,7 @@
var operator = mArray.wans[i].operator;
var phonenumber = mArray.wans[i].phonenumber;
var donglestate = mArray.wans[i].donglestate;
var networktype = mArray.wans[i].networktype;
var gateway = mArray.wans[i].gateway;
if (anonymize == "true" && testPrivateIP(gateway) == false)
{
@ -429,7 +430,7 @@
{
content += String.format('%s %s<br />',_('mtu:'), mtu);
}
if (operator !== '' && anonymize !== 'true')
if (operator !== '')
{
content += String.format('%s %s<br />',_('operator:'), operator);
}
@ -437,7 +438,7 @@
{
content += String.format('%s %s<br />',_('phone number:'), phonenumber);
}
if (donglestate !== '' && anonymize !== 'true')
if (donglestate !== '')
{
content += String.format('%s %s<br />',_('state:'), donglestate);
}
@ -455,6 +456,10 @@
else
title += ' <img src="/luci-static/resources/icons/signal-75-100.png" />';
}
if (networktype !== '')
{
title += String.format(' <i>%s</i>',networktype);
}
if(ipaddr == '')
{
statusMessage += _('No IP defined') + '<br />';

View file

@ -1,14 +1,47 @@
#!/bin/sh
MODEM_IP=`echo $1 | grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'`
[ -z "$MODEM_IP" ] && return
INFO=$2
SESTOK=$(curl -s -m 1 -X GET "http://$MODEM_IP/api/webserver/SesTokInfo")
[ -z "$SESTOK" ] && return
COOKIE=$(echo $SESTOK | sed -ne '/SesInfo/{s/.*<SesInfo>\(.*\)<\/SesInfo>.*/\1/p;q;}')
COOKIE=$(echo $COOKIE | sed 's:SessionID=::')
TOKEN=$(echo $SESTOK | sed -ne '/TokInfo/{s/.*<TokInfo>\(.*\)<\/TokInfo>.*/\1/p;q;}')
curl -s -m 1 -X GET "http://$MODEM_IP/api/monitoring/status" -H "Cookie: SessionID=$COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: text/xml" > /tmp/huawei-$1-status
SIGNAL_ICON=$(cat /tmp/huawei-$1-status | grep SignalIcon | sed -e 's/<[^>]*>//g')
MAX_SIGNAL=$(cat /tmp/huawei-$1-status | grep maxsignal | sed -e 's/<[^>]*>//g')
if [ -n "$SIGNAL_ICON" ] && [ -n "$MAX_SIGNAL" ]; then
echo $((100 * ${SIGNAL_ICON} / ${MAX_SIGNAL}))
fi
tmpfile=$(mktemp)
curl -s -m 1 -X GET "http://$MODEM_IP/api/monitoring/status" -H "Cookie: SessionID=$COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: text/xml" > ${tmpfile}
SIGNAL_STRENGTH=$(cat ${tmpfile} | grep SignalStrength | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g')
if [ "$SIGNAL_STRENGTH" = "" ]; then
SIGNAL_ICON=$(cat ${tmpfile} | grep SignalIcon | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g')
MAX_SIGNAL=$(cat ${tmpfile} | grep maxsignal | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g')
if [ -n "$SIGNAL_ICON" ] && [ -n "$MAX_SIGNAL" ]; then
PERCENT=$((100 * ${SIGNAL_ICON} / ${MAX_SIGNAL}))
fi
else
echo "signal"
PERCENT=$SIGNAL_STRENGTH
fi
STATE=""
CONNECTSTATE=$(cat ${tmpfile} | grep ConnectionStatus | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g')
[ "$CONNECTSTATE" = "201" ] && STATE="connection failed, bandwidth exceeded"
[ "$CONNECTSTATE" = "900" ] && STATE="connecting"
[ "$CONNECTSTATE" = "901" ] && STATE="connected"
[ "$CONNECTSTATE" = "902" ] && STATE="disconnected"
[ "$CONNECTSTATE" = "903" ] && STATE="disconnecting"
[ "$CONNECTSTATE" = "904" ] && STATE="connection failed or disabled"
TYPE=""
NETWORKTYPE=$(cat ${tmpfile} | grep CurrentNetworkType\> | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g' | tr -d "\n")
[ "$NETWORKTYPE" = "2" ] || [ "$NETWORKTYPE" = "3" ] && TYPE="2g"
[ "$NETWORKTYPE" = "4" ] || [ "$NETWORKTYPE" = "5" ] || [ "$NETWORKTYPE" = "6" ] || [ "$NETWORKTYPE" = "7" ] || [ "$NETWORKTYPE" = "8" ] || [ "$NETWORKTYPE" = "9" ] || [ "$NETWORKTYPE" = "17" ] || [ "$NETWORKTYPE" = "18" ] || [ "$NETWORKTYPE" = "41" ] || [ "$NETWORKTYPE" = "44" ] || [ "$NETWORKTYPE" = "45" ] || [ "$NETWORKTYPE" = "46" ] || [ "$NETWORKTYPE" = "64" ] || [ "$NETWORKTYPE" = "65" ] && TYPE="3g"
[ "$NETWORKTYPE" = "19" ] || [ "$NETWORKTYPE" = "101" ] && TYPE="lte"
rm -f ${tmpfile}
OPERATOR=""
if [ "$CONNECTSTATE" = "901" ]; then
tmpfile=$(mktemp)
curl -s -m 1 -X GET "http://$MODEM_IP/api/net/current-plmn" -H "Cookie: SessionID=$COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: text/xml" > ${tmpfile}
OPERATOR=$(cat ${tmpfile} | grep FullName | sed -e 's/<[^>]*>//g' | sed 's/[^\x00-\x7F]//g')
rm -f ${tmpfile}
fi
NUMBER=""
[ -z "$INFO" ] && echo "$PERCENT"
[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$STATE;$TYPE"

View file

@ -10,8 +10,9 @@ timeout 1 mmcli -L | while read MODEM; do
OPERATOR=$(echo "$MODEM_INFO" | grep 'modem.3gpp.operator-name' | awk -F": " '{print $2}')
NUMBER=$(echo "$MODEM_INFO" | grep 'modem.generic.own-numbders.value[1]' | awk -F": " '{print $2}')
STATE=$(echo "$MODEM_INFO" | grep 'modem.generic.state' | awk -F": " '{print $2}')
TYPE=$(echo "$MODEM_INFO" | grep 'modem.generic.access-technologies.values[1]' | awk -F": " '{print $2}')
[ -z "$INFO" ] && echo $PERCENT
[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$STATE"
[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$STATE;$TYPE"
exit
fi
done

View file

@ -26,4 +26,4 @@ fi
OPERATOR=$(timeout 1 uqmi -d $MODEM_INTF --get-serving-system | jsonfilter -e '@.plmn_description' | tr -d '\n')
NUMBER=$(timeout 1 uqmi -d $MODEM_INTF --msisdn | jsonfilter -e '@' | tr -d '\n')
STATE=$(timeout 1 uqmi -d $MODEM_INTF --get-data-status | jsonfilter -e '@' | tr -d '\n')
[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$TATE"
[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$TATE;$TYPE"

View file

@ -1040,6 +1040,7 @@ function interfaces_status()
local operator = ""
local phonenumber = ""
local donglestate = ""
local networktype = ""
if gateway ~= "" then
if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then
local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'"))
@ -1051,7 +1052,14 @@ function interfaces_status()
end
end
if uci:get("openmptcprouter", interface, "manufacturer") == "huawei" then
signal = sys.exec("omr-huawei " .. gateway .. " | tr -d '\n'")
intfdata = ut.trim(sys.exec("omr-huawei " .. gateway .. " all"))
if intfdata ~= "" then
signal = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $1}'"))
operator = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $2}'"))
phonenumber = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $3}'"))
donglestate = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $4}'"))
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
end
end
elseif gateway == "" then
gw_ping = "DOWN"
@ -1062,24 +1070,26 @@ function interfaces_status()
local proto = section['proto']
if proto == "qmi" then
local device = section['device']
intfdata = sys.exec("omr-qmi " .. device .. " | tr -d '\n'")
intfdata = ut.trim(sys.exec("omr-qmi " .. device .. " all"))
if intfdata ~= "" then
signal = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $1}' | tr -d '\n'")
operator = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $2}' | tr -d '\n'")
phonenumber = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $3}' | tr -d '\n'")
donglestate = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $4}' | tr -d '\n'")
signal = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $1}'"))
operator = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $2}'"))
phonenumber = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $3}'"))
donglestate = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $4}'"))
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
end
elseif proto == "3g" then
local device = section['device']
signal = sys.exec("omr-3g " .. device .. " | tr -d '\n'")
elseif proto == "modemmanager" then
local device = section['device']
intfdata = sys.exec("omr-modemmanager " .. device .. " | tr -d '\n'")
intfdata = ut.trim(sys.exec("omr-modemmanager " .. device .. " all"))
if intfdata ~= "" then
signal = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $1}' | tr -d '\n'")
operator = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $2}' | tr -d '\n'")
phonenumber = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $3}' | tr -d '\n'")
donglestate = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $4}' | tr -d '\n'")
signal = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $1}'"))
operator = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $2}'"))
phonenumber = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $3}'"))
donglestate = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $4}'"))
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
end
end
end
@ -1224,6 +1234,7 @@ function interfaces_status()
operator = operator,
phonenumber = phonenumber,
donglestate = donglestate,
networktype = networktype,
}
if ifname ~= nil and ifname:match("^tun.*") then
table.insert(mArray.tunnels, data);