#!/bin/sh

# Created by jiaqiang.ye@lnxall.com
# 20250729

if [ -d '/opt/lnxall_app/bin' ] ; then
	export PATH=/opt/lnxall_app/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
else
	export PATH=/lib/dyiot/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
fi

BO_GWSN="$1"
THIS_SCRIPT="$(readlink -f $0)"
[ -z "${THIS_SCRIPT}" ] && THIS_SCRIPT="$0"

check_gwsn() {
	local GWSN="$(factory get 2>/dev/null | awk -F= '/SN=/{print $2}')"
	if [ -n "${GWSN}" ] ; then
		BO_GWSN="${GWSN}"
	fi
	return 0
}

check_md5sum() {
	if [ ! -f "$1" ] ; then
		echo "Warning, file not found: $1"
		return 1
	fi
	local md5=$(md5sum "$1" | awk '{print $1}')
	if [ "${md5}" != "$2" ] ; then
		echo "Warning, invalid MD5 for '$1', expected: $2, got ${md5}"
		return 2
	fi
	return 0
}

extract_to_tmp() {
	local tdir="$1"
	[ -z "${tdir}" ] && tdir=/tmp

	local line_no=$(cat -n "${THIS_SCRIPT}" | grep -a -E -e '#\s+RAW_DATA_BEGIN' | awk '{print $1}')
	if [ -z "${line_no}" ] ; then
		echo "Error, failed to get raw data line NO. => ${BO_GWSN}"
		return 1
	fi
	line_no=$((line_no + 1))

	tail -n "+${line_no}" "${THIS_SCRIPT}" | bzip2 -d -c | tar -x -f - -C "${tdir}"
	[ $? -eq 0 ] && return 0

	echo "Error, failed to extract file '${THIS_SCRIPT}' to ${tdir}"
	return 2
}

actual_work() {
	if [ ! -f /opt/lnxall_app/bin/deb4gnet.lua ] ; then
		echo "No need to upgrade: ${BO_GWSN} ===> no deb4gnet.lua found"
		exit 0
	fi
	if [ -z "$(grep -e /etc/resolv.conf /opt/lnxall_app/bin/deb4gnet.lua)" ] ; then
		echo "no need to upgrade: ${BO_GWSN} ===> using new deb4gnet.lua"
		exit 0
	fi
	check_md5sum /opt/lnxall_app/share/lua/modem4g.lua a275e2c7dd36d7971b72171710e0e317
	if [ $? -eq 0 ] ; then
		echo "no need to upgrade: ${BO_GWSN} ===> Already the latest old deb4gnet"
		exit 0
	fi
	rm -rf /tmp/old_deb4gnet_files
	extract_to_tmp
	if [ $? -eq 0 ] ; then
		cd /tmp/old_deb4gnet_files
		chmod +x deb4gnet.lua
		mv -v -f modem4g.lua  /opt/lnxall_app/share/lua/
		mv -v -f deb4gnet.lua /opt/lnxall_app/bin/
		./check_4gnet.lua "${BO_GWSN}" && /lib/dyiot/init.d/deb4gnet restart
	fi
	cd /tmp && rm -rf old_deb4gnet_files
	echo "no need to upgrade: ${BO_GWSN} ===> just upgraded"
}

if [ ! -f "${THIS_SCRIPT}" ] ; then
	echo "Error, THIS SCRIPT not found: ${BO_GWSN}"
	exit 1
fi

check_gwsn
actual_work
exit 0
#  RAW_DATA_BEGIN #####################
BZh91AY&SY1
 FDzN @ 	 `7N  DZw`Tmhhidټ\l);{_sG OW|rN3 Vza'[{9콩#}A׻$OmK_{4 &1 jcDLʟyOЧ4   %4Ai2djz&#44@=Ai   Bhz!i=! CF4h  OU(Lhh     I$i24ښ3Iiɠz"H@C@#Fz5OiSfyA=OP@  h [oZ )ӋpTM:5v눡-I
mRTR 4 0iRIJh(h&MM*RkHhM0F4fQՊ0TdU*AFI4)Y2cYI5Y,ۍj(ie2#$B($ʚiCe3`)dm"UfYLM$K i"f!&HPD` RIXf`Ԥjkf͆RblCxOާoz&}M?ޮ3kD%Rԥ'ܷRB:tgL
];&4,P": 㨌_xF8@]L<<Rm(fqkqB)#(I$lvNCl'gQ[EM/Ϛ;(/r]-vD:	7桃ɏ\427jzU'@8]޶0ƈ0Db
iI$,m#efqǨt*/WL\|RKzZ\v!*f(csadf4FĬPdaדsl3sXь\<ӽzyCD6qaADAɪ}1_$3tI$f`"ASPcm6셊-|>wnaHǓɄa8TpOk?hQ_yY`HmS8fHP]]эP]Λ{;_Dݸ +1T@3iڍjR%R16^Sgw~*tg[$YD@'2NFŵΓ}(ܹF J۟>Sny{)ڄ8 VӚE`zpdJ Qî
|u8!nޯuv(qgw)]9UX4XH e+<(Dh5`("C"OՈ\0;DȋڞĹxG92$`<)`aj$,1= E:[J72`vt4#Jg??DݰC[ ~~Tz	={# uaII&#RRDL"iEz~؉y`r7Y8VSvN1c[ʱPnUk8:b̓rq3wb&,`tk$E#罙	-]2EhO=P$|+ERt1ID{tQYiq6bzgCVYhs*8C_9ޯkW7ޯe^u׻t-;mngCb}zm2[EEXo^iەgn#a(vL]0i*D{bԛc;2-2:vz;LtL݋8uEzMQ:&@$M3iس;Bd&Zl0[>﷽/.CzS>#LNqqitRUYd uk>6Tp+aؑk=#śtiF,l{Řn>SzvVfNAY6fFدxkBNxK̨< Lu<sǂzbaj̉|Zx@=#CNb3&бע>nW	ג2S:o,sAyRp7ɘ|(oǌW V HA8*p	$DٟvC17~VpMC-4Z\)Z#tc՞Γi(2to۞M]BBY*&ƖM*ٗQZ|3|顂CO`T,ｱWO3NZ?4
'4RUFt#NqjAvۆh8Ssۇ+/|_U28N^41NR2F2bl 'Uc9MKn428k]p ||	G{fۓ>J5nEhVժeQm-%O 50Z4.32G:ݬ{kX)w^"!Г
y]ggleR+Nygk;5 ĨI;[^Wn>mo5| `Bn)CŞw;dl"HSצ>Gq$T$`:MtsTOn$c}n8R$"eܓ-t˶/Q,lFJ,prZ/~,78ⱖl^mNWj[&gQ0k7M|U冘t>#U؜ѺM;'Y aC] 0 zd@1GT1#It:B*;4V}OűCnNa?ׁpԒ_'2ㆎt{\@6)qA#$:!͏nW]uFmV2A<ɊFaIH1(HIkD-9h'd9P=/.O)n&B_$Xt/Xn#e_ٜzd:L1_싉ȭ5]cxw{u͢0͢f?mJm'+;hoX`:*=LĤ'd}Oo"!!){?7oo!orQZ#Ts-tDyp>!G8$	TFO;PB@,*dЛfW$BsMr`pJn@;խ*NsۼiԕF?OKz;Dw5x8>f(
MQ:biu"HSWI[|zשR}b G_x6\^@*#E(C)D!lPkLf	HH0#}<~p^𴱡6SC؀Z%U/kNLsEjeVg`GC67MVvhgL3טO}k	o9kj9Mdhs%\!,2+ie9@C-r1Қ1AmeHPa%3+ֱ>t9&5 A17<a!CbXRxmbX/tqykE^1%ۡ_<(b)1ҏ1$Y.$N1ޑ3U_ICՉ=Wߖ:EhXt|"P~[$68q>[/Sp,n$Fjx4pQ_xa]"KV	NY1K^̳aQ@M!ݯںDǡiNgXmm.ưd1jA]1e+c۫ʶzcPp@xPay5h\Fk#qT?fT]Vb
Q˶oq|c<ǲFEȍ^
mF<)Gz@.>*1^£<ڭG`u@2u\lIۀS8vdJRgk=v2'Lo0MUK;>B>ꠎ}.$Aۊyd$$$$LiDWfCJ'	OKTJE=In)p&\J!ttԿOqƗq@JGwA02~W[(u_\-,m6*s0@C#Ȫ# sH 9&7Ϗݚ(F%GQ'f󫅫+Xjd4mc_][|!,S nx5ĤLⵖEbuwԹ
Sę4k`q@&ACH9'$q,EnJ%F\J~lVftĤNg&A&9ϊ'֣ӳ̋ߠ	V̸|Kc00w]].Mg@#&Φ&N	zQ-4x-RBB x#yBAu0(Do1
uo1rN?\XG$#Zi\ХMK4ZT׏
Ǉ-W`9I$\1BC%rp}k $LIGi}laHˍ1 ]&>av@[	x /t@`ZeN':Β3aL {>H114ܱQ& Jhw*庿N5V'UL506^2
YZr
DD[ͼ0qѦr9hpA:IA/#3n$IڣU.Fn27W##7x$Z,]UGDN@vHLf;a҈p奓%Tq8debʩj4é3TԼmzrpWw&D-.]plЌ3V3ùڰBiaaGx^[Xr9a./7,K=,]xD.$<%DBQ}hUN!1>].=PRrE(UԹxx3W߸xڕ'E&*LM:6.̪Qb!O+IjǪv6,Kkd]\;'@{i~Zn]V<a%x!Z=)G3x0A$(ypT0-BJ醲Z"i!OPOkPdW66Y1Rn\m-*qQ}ۥtix#01K%!-FA}#Aϻk@>P%`1{wlDaq\yxyFi :	F,4qhf)j͕֘ns4tN% !q	E\N렠EQ=YAɘ#V4@cXC7RLZ~𔡃-PTx~ i@4UQ& _X]HHӘ31 ;!Dxф,9@N5EU׍)r$V[>\-z֢x'/)pV!1:ǼtCZ03(g	 ' f`6l"aAΉ0M~zQ:+uW@Wc]OxoJ۸BI$Iw
f	׵Wf1@<)!7,)X)iozN`PpJ,Wt0W36\:[bddLapH 52>'Tކ0='~;~/ fIO-YÆr/MLO9_r3!nץ[Nrxޔ~k!v{PLC;:]p]Jځ!vE=iid>SqP>@8yr p)R}`T`~GˈhJbf#fff9#E	䞘{iѷXCCL4(*!{}Y00WhH7r~+e|w>	b&us8KA-jcXQǿ|E2DCriOָ;s0=ٙǑR3.xHl!"=^O\)oXN̪'&8`'/Xؠ7&sz~ǎ	T,.128&H;^-99LwDC KPHbSV`HinYZny(q-ku@>Xwdo&vz{Q|L\S`VxcZTʀah#o%gH$CpyJx{Cx`}oH;n@b4B=,M%!b@%@8h}R"fPu"=$_*UNKUI
-yel/d|	 <!d@b(Fpgv$QS݈0mظPqQC22AkR`X4ةo+w|,ӂ3؇*PA^tKi
E#*eQXl` lqiУ0qXX0! 꼂)Y֏i]6(5a<fe5bdޜ$DJ	M$@1h_rB-b$sZlh;ܔ7lqMz=aPbD"˪\h,JF
(xuԢ(a
an[>eYʶ,Ι+cCm2Hq$I&' g4ɮ[d:I3i{W'X{x&A7#Pv[1plW,a	FbOP8YC:FWPCS0m!4Q(Pgki.&)&bZa^1 XC6/^4ERvV"@*^-_	@C70(FQtx^1F}Smj\0}<^d	J\J{>6HUD e3K% j[ddLL5,5JLS*HJLPdo) wx0n9K{_^UDP/oh)dLCTQ*{HsL̝3>z#W'ǈgHF
p %>M
\"D#hI,IBGN	d]Ç#v0`@I"D1
!T8
@كaxB+.w"PQJHC'?.Fy"h{:$?=eSPn2)ЊvҮns[LRDwRV\5PAnM~~G%,c6PP={`H"brXuT-\J)$87$Kn|"M5Vd<@DQQ!J
uDƈ`@c%3<kGB^[(<-X"HY[0ރs%)]~F&Myh<"Tb1`&6	*&`2%y&PbDHfwv;̕.G̼ec7%}YB\&4	J C4Da=Qj/B1\gXb]0uz7	iMi$sgtgBW:9'p-3e,j[wW|&--k$Ǻ]8;l  PBUjWZٷ4)*VlP?2	qˁW9"Me"
>iꄣr!/톦|7qgRHA=m-tҺ湛W#erɹvu̕@D%GEpܘpޕ	ϻdOfQy EA1-<*v$yHI$iZ`7CpZQTRH3TBD$aAHg<̊щ3l[BeD|AFPRE/,^-#
\.]Ĥ'hQߚ 07nǾTD)`4h,Α4S0BT`N%'SxX=@68N'˚C=DBLa[-u]5QKA<LUڬc!x?i%=}b-""'6z%	$0*`M*s<yxm%дcchX05BF$B>r#t.a"̗NHl:H'?<6!4hbQԴ- >˛]Ꭰ B;Nt5 </0=J!1  jEDvBĵQF%*- Da13Q@1[*B)ԔRk27Oep%}J:v*"-;IwEzĀa[۫l[j6eV"S# vmO>@;:vAh,ń?0BÈ"g)+`r(Y-@
Q
#đ"_[@Cs}_q3
!DVd@XK1<Pp8OQLȱ"Բ0wk
"ekGd`5@B  e(!炤QّW0P-#!	,b]#nI#
2v{
 DL[/}|tA)p9 deUsp=sN	D[Y`O	ABd
P(P7#?gb693Cr çrY=oȒ0|2XB B,p#:Z'XDh'0TѼM=Mؕ"[! `b?A4q7&*$'"&WM_.g͉+9h?>(34~m[iһQ8O3ߑښ8046vZ\MQM&i.rʱ!ѡّV2ʨXĽHǸ4fF	GCF̄.Ai
I4!KD)d@xpɨHKo\ A۷Z?yWލooHc"732})!DfX yk`>~02>a3!LoUE00D0=ı%iiZЙ
 D>KCPeY%驘p
a^Rp\FkJ^OO'(nFѲP}cd	
pH00cB{A{;Pq@cL6Tr-*T=2d&6}9M,$!qEm~m.,"@Vbd{rNI׾T#aI^w!)R|ðdA,: F,Ou{;SVvT2$ <A7 {sQ7x>oG+dDM<ъ4d/pt!R]p(M׶+DC0xv:taD-Cn[vyDm0,Ic*~vPXZ];68j9̟	y-fFHCbt|;lȰN7w#v7kI['2a7)ȈTSR*BF r)آ&)ž&	bӎhd`ecVf(9aWrtViCxh RB_ O8LJ]
c@aۇQ@TҺ$	*6G6ʩ?ܐ14uH#m˖H@BH8ČM湕$H-S
x0SYdC(K7XMbfBr߶%ЭP*HDR0\=w&)uAP6 C
9xouJ;n\#^A BEI	(&jFKŰȿ9G  9A-qge}te69Ce7:6 ;\PUaI؆}x',֝M⣧)ƽ=! HHN(?r#6_NԵ,e^96$q߸ὭKD5]dD#A+5'WP0 02%yo*}b0BƋGxsldT$nh7Pa xz'/~+0k*,O#hI#qL1 A׊L:V AWPH
U)4M7E_HVQ#'XGBǁv$w$S	@