mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	Add more info for qmi, modemmanger and huawei modems
This commit is contained in:
		
							parent
							
								
									81789e00ac
								
							
						
					
					
						commit
						9910e61efc
					
				
					 6 changed files with 77 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 />';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue