#!/bin/sh find_base(){ HDD_MOUNT=`/sbin/getcfg Public path -f /etc/config/smb.conf` local log_tool="/sbin/log_tool -t2 -uSystem -p127.0.0.1 -mlocalhost -a" if [ -e "$HDD_MOUNT" ]; then if [ -z "$QINSTALL_PATH" ]; then BASE_GROUP="/share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/HDE_DATA /share/HDF_DATA /share/HDG_DATA /share/HDH_DATA /share/HDI_DATA /share/HDJ_DATA /share/HDK_DATA /share/HDL_DATA /share/MD0_DATA /share/MD1_DATA /share/MD2_DATA /share/MD3_DATA" publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf` if [ ! -z $publicdir ] && [ -d $publicdir ];then publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2` publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3` publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4` if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then [ -d "/${publicdirp1}/${publicdirp2}/Public" ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" fi fi # Determine BASE installation location by checking where the Public folder is. if [ -z $QPKG_BASE ]; then for datadirtest in $BASE_GROUP; do [ -d $datadirtest/Public ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" done fi if [ -z $QPKG_BASE ] ; then echo "The Public share not found." return 1 fi QPKG_INSTALL_PATH="${QPKG_BASE}/.qpkg" QPKG_DIR="${QPKG_INSTALL_PATH}/${QPKG_NAME}" else if [ -e "$QINSTALL_PATH" ]; then QPKG_INSTALL_PATH="${QINSTALL_PATH}" QPKG_DIR="${QINSTALL_PATH}/${QPKG_NAME}" else if [ -x "/usr/local/sbin/notify" ]; then /usr/local/sbin/notify send -A A039 -C C001 -M 50 -l error -t 3 "[{0}] {1} install failed due to QTS application install volume not found." "App Center" "Tailscale" echo -1 > /tmp/update_process && exit 1 else /sbin/log_tool -t2 -uSystem -p127.0.0.1 -mlocalhost -a "[App Center] Failed to install Tailscale. The selected installation volume is missing." fi echo -1 > /tmp/update_process && exit 1 fi fi return 0 else if [ 0 = 1 ] && [ -d "/mnt/HDA_ROOT/update_pkg" ]; then QPKG_INSTALL_PATH="/mnt/HDA_ROOT/update_pkg" QPKG_DIR="${QPKG_INSTALL_PATH}/Tailscale" _EXTRACT_DIR="/tmp/Tailscale" else if [ -x "/usr/local/sbin/notify" ]; then /usr/local/sbin/notify send -A A039 -C C001 -M 50 -l error -t 3 "[{0}] {1} install failed due to QTS application install volume not found." "App Center" "Tailscale" echo -1 > /tmp/update_process && exit 1 else /sbin/log_tool -t2 -uSystem -p127.0.0.1 -mlocalhost -a "[App Center] Failed to install Tailscale. The selected installation volume is missing." fi echo -1 > /tmp/update_process && exit 1 fi fi } wrong_arch(){ if [ -x "/usr/local/sbin/notify" ]; then /usr/local/sbin/notify send -A A039 -C C001 -M 51 -l error -t 3 "[{0}] {1} {2} install failed due to the platform is incompatible. Please use correct package for installation." "App Center" "Tailscale" "1.102.1-1" echo -1 > /tmp/update_process && exit 1 else local wrong_arch_msg="[App Center] Failed to install Tailscale 1.102.1-1. Installation package is incompatible. Use the correct package." echo "Installation Abort." && echo "$wrong_arch_msg" /sbin/log_tool -t2 -uSystem -p127.0.0.1 -mlocalhost -a "[App Center] Failed to install Tailscale 1.102.1-1. Installation package is incompatible. Use the correct package." echo -1 > /tmp/update_process && exit 1 fi } arch_ok(){ local cpu_arch=$(/bin/uname -m) local reject_platform=$(/sbin/getcfg "" Platform -f /etc/platform.conf) if [ $(/usr/bin/expr match "$reject_platform" "ARM_MS") == 0 ]; then [ $(/usr/bin/expr match "$cpu_arch" "armv7l") -ne 0 ] || return 1 else return 1 fi } /bin/echo "Install QNAP package on TS-NAS..." /bin/grep "/mnt/HDA_ROOT" /proc/mounts >/dev/null 2>&1 || exit 1 arch_ok || wrong_arch find_base _EXTRACT_DIR="$QPKG_INSTALL_PATH/.tmp-Tailscale" /bin/mkdir -p $_EXTRACT_DIR || exit 1 script_len=4335 /bin/dd if="${0}" bs=$script_len skip=1 | /bin/tar -xO | /bin/tar -xzv -C $_EXTRACT_DIR || exit 1 offset=$(/usr/bin/expr $script_len + 20480) /bin/dd if="${0}" bs=$offset skip=1 | /bin/cat | /bin/dd bs=1024 count=33426 of=$_EXTRACT_DIR/data.tar.gz || exit 1 [ -f /usr/local/bin/python ] && /usr/local/bin/python -c "with open('$_EXTRACT_DIR/data.tar.gz', 'rw+') as f: f.seek(34227916); f.truncate()" offset=$(/usr/bin/expr $offset + 34227916) ( cd $_EXTRACT_DIR && /bin/sh qinstall.sh || echo "Installation Abort." ) /bin/rm -fr $_EXTRACT_DIR && exit 10 exit 1 control.tar.gz0000644000000000000000000003217715233156056012403 0ustar rootrootٳ!< =S(^N-;-g>4˗3cr`3Rz*kL)v˙Z~~Pl90l_~Y?()CS.w/K)#~2C"y/A)|^<)AV%97D:{$ #oo%煝n5Tɭg G٬lҫmU"oJh~@69B peҰ#ڤzx8 vaM% ݑ哉=cL 6<ܺS7Q4 EkZ[l:&H0$'=6{:3lҞ^Vԭ>u| 6DMryNPMH@N\P =rE=ռAq7;A-eb4ȝhF@wm6d K.jݳVK{rt:J5#z唬Ķ03 S9 Vuߣ'nS4roNVՕi:햦( [[|chl=l+ fS 2Hf5ٮ3d#X5 lk' ykvlOdRP%mS' ɱP)A-˻m6 L7 % 4r(bq)˚*JW4@45Zհqs$ln]4fm"zũXUhQިAHh|@x'fU Nn|lҠ?6Zg-T#cpжquw[zvz6mT^C=:oNɴao8lq|jM.|IZ]4Ԇt%',oVB[J(,㢩ի?`5EtBTA{9$n}_x[l)ߺՙsks+:*I픷Až !5k] Lޥ׭,J {;Pn E^YǍml) …'7|:52)ě:y,Pю#w [@W `܄Mס]muTw^m$tGqlS"cEceg!P2cS\H]QڍʲaĨ=c&P8Pwcb\*N'7ezs*xlLԣaM2-_:TSӕNE 14%4󽈏gHqV!PY؄zK&Vѫ㬮֔$.wJS5O$.$6,A`Q64lߨh4*fJ[*66LTXa]+܌7A l_eLZhHiW V < 3!ٜ8 ϒ?_s88dVL k;vL}g7a3k|vRR0bwꘅlZt0OrbXh mG"̈.<דhʖ.҆XO17<@EM*0hQn 7&kHr#L=>7A1kz #@5qWVJ̧lneraaʇ|Fx+oG \-QIid(TsP(e3L:ͬAq ̔!IlTֆ-ִ_shHjH:yE)ߞHAVߧ S1άQl%}O@bawH4q6)<@ \rmm8!#5@ "R_&sK.a]-撁=ϮE8fR@ 7B*q5 $(df2# Rt0DUamR2A|s$+R*Vdwm.~+I pE-hDdJt85j^L@X?}פف`StpD u" xT^KMY9|Dn趩_{Bцm]m3S(*x%0#K36:Xĸ~Ea |O܎]Cn2hP͌*Kv~+Lm \0KK(d 4dsVYwcZL|en8\a'Ĉ X& <=`/=y`6||{m&g3>0( m X ޲Y甎ޛ3;df.' sa_\_t^\vpݡĽ]WWYw7+sXi I|W?.|&msuωxYPVW\SYbd'Nx8]!%m\>*V.w8MXB/_3snoɖۭQEm#YCgJY"6&읫;3YF/S!L$sHjNVzrL1z03wj*w1›oB^7 dH:oJ<{eYDI_z~ ͯ1 A~oxA܉H@nIg:"QߣK/tZkiӸ+n mZr7~M6KY0vr͌i8s.{N+FHk0!"1d^xnXV$t-avb&WEFS19y(k3TJVK)<,V5EڠQ롔yom4}O?9@Rؕ—+}B'momeu:unz|]/}W\m}ZisлV S9gb7,[Epkpw2^@uC{%@X> -KC6ip& CA)U^Ae -EH/?9ڑ0 Q 3rq{ -S`^En]%L?pUG+T%Km&hݣfG%h :SQ2Hufb(NvDGn` RNϑ~U堊Pt%`p.2 ch;«IЊatLf="{34D2oQmP Vuސ><R7zeQcr^k 7DMiY oT4od>:/Ej`)~VNNv(iZ ۙ1%@pņs8R—Y-tdf`\s JѕOfA'elLoΎ#2.jA'Fi,oVcmq(ס䚱I> W3{RL5r0#FY{cTvCAāUx1C2ŰÖ탑5b}cl_5A|iPZn %eχ6ST"Gp@e"H=tɟaue 573^ 㛝oAIAӦGF`]EZJ͈E}6cȄ LdȔ&20ͭ tDY1l0#uϊB\FbH]`˳6/P3v&|3P/1X"aTvCL 4q+CZ2llöYqVrn47.4=woHPtq >+"[Do>f#Ђf/\hY`LQqXS` :SclbPx 4)|:)An i %`Lȧ޿)5@ptꘑg%Zv zhA(N fF';m4sRsp̤hSFgRel,efGJϟ W?465աq2U@Eĥ \穤ТӖR'txHi:ƢOӀN!&@CbOan\#XZ+\f؅NsC)Θ&c7sPs7~CS"U ץ\Vz&-so7MZnW>Z6Q"9{쭾w+  $a  {ɹgޛ^M|yJc%RX&N_n ȩS27sϐ)*o m(SZhшSj_X %ò\3Qv-;*p&FjP%U<#Yѳ=p;,= .:{l_#tX #pϠz22) l`wFvtިoG'rCVo@2>~ͣ۶3!,cjAK*{a? aa 2wt]prDD ̋JX,7"/A9bɊ5wU/\v@.à)׎j,:%sJ7yƳA̗32sOeWY+௉h +ZWv@]lRR:Y>(@p‡嬴$AZVrVMDPw{<%JFǣRN?0ޛHpIXPz۠MmGgC,8b_>NS*=-hS\䐣B 0wc ݼ2e.Kdᰦ["lC w ۵_tI^$"AHe@@){ۣI;s}ˆb|Jq60 ?yL04Z]Ll_Rj9@XEw~}w m/m{+grL }k\3tT]V5єeϺ5[N D4'鐦O*TܚaT#*+2(ѭn"oShE^^\тXNO|jJJ溂5+@W|WTDDQZ`C o#rXr~4MS+AlRY(vL/]dpӎ@kDVَJi1kxi7FE͹AXD _@|a'ª[0Y`L}C20ò8,Kze]wL|.Ozz[A]a1Q ;m[ [$xb(7js(7NQ- ~RnMcM™!T7!?ĄC~b)YIP2SlpXE:!0H74PEGrqɠZSъ‹ۺQ?uQUMU09d 2+jPo,6úVްQ.nWU}>aD' ĠY\G&^b 5z?h(M˼ywI>[ Ѱ݃9GR;v:fi`.G˶-arA :l뽡N_ls *s$Ye ؍r\sQX[tq3OރW3wT*js*2,;lT ' q5EYuI\wh/ʇooyf{ֽguih|:v6r T0m%6T.%+;7e f7wy;؂Ff ߽s! huv:65un,N|Q#i.Snt`.a"`Sӭ_=$uKUWd :f8{zN~p87=LiUVu^bgmlӛ9! xknLgd u*7yb $dU);q1z,5 ϛ[Rx s[AޣYvOin\# A z1,O0R  ZSR\"CE{=8l>v|5ܮ$I ˥[Sh$=♁b` !;ef ":{ q&2fe$N5\J"LT<|+XNt>܋w_[7^ie?=~5a՚ʣf`tBe~| A޴6:&$Q/^9:Dź nHV됢l0W5zUIbF* =rKABvu ʝʙW_b먕#H#U.q ]A{,4KI4l іN0H x3ӳzxaVI4n-of]LtbWvE.:ޟ{<9JyvEÉ(gg#[XѮgG,m?:bgPVFr '@` of5I1 Sf\9PaeqLAmv rx FW_m{ ܐݭc&Dwo>!ouv0.kq8H> G {vZetHd 63M2F+v2djS(FEK.iJqy%F)=G73sAU52aurƞh#N ϳtczjewh(^}j5!}Q,.-H!ǔNOʈPPt%J4 LU=aNHNQn3 (gїi&qNd!.[0nAWd պ*Ω:yOFСfm"kOp)gpVb8zXYT Jfńcnm9/y|'Vh,lF#(6ٙjߤ,rIA =ҿXժ^ߡDƸ<7fZp3CQ78^ce 3CQ4|X1í&$Z颞ԝ3fp08@}*h cm힑+Kn]H4Ĺxa1p8rwX{ ,QN۟!(ʬM}/3`Ud1AdܨkBPxvknA*~4BNn[ct2*!b) K~؋NGw)ƅ%/ts\>$v2h?݃a̷UgrKρ4pj 1ث>mA0~_ )K\)¢6qɌ% *R@2\Q\ΈSZug:Dl2#vYd (@'] H$JLb]aH$ :*3Uf&TRCeЦɎ9v_)?c TC2|B=ky ߍ |/,6(molֶK_֟o3%y_.F1ZG=y,&qh8T-eQIR>be]So ۑD, sǗ}nr&5Cm6wG}8'e_9PG *iKȷpזoS}rZM lO\WBQ+ I`aۏm'#M_ZbGVzQ?8&jXl{avݭ*=ʩTP?ͩ?7qA7[SMK^B'#.6Q8PpkȷgZ;ކFK'R_P*4ǃ`XoanꃫH~8?9,#ĵ*,:'}h %%Wђ(]WQ2MFfvbk87CYq'+X^GwAa%/>n00 (5OA bK~d4^2W,6kX)>~yYs%i;8]`h]ȷ+R]!nSmNJ3qk'a+K'WwH=8&N* HVwQvB7q2'vzyG쟴R FM)m^>lEѧ%6֠? 9fjF%RP~ñn[H"HY֫WX8p}Ze#xQV ї}?QУUٌW70q(DX^(- FYί9U{z\eQtA9U;l# 3q쥆%D& Aץb4F}dBHp.(m%^glĆSY4"GSHFց?'tV,Ok:ʯ# Q"!M܁~2`PX+Ku8krWD?TzB9xkLy Ee@pm0/M|_V} Ԩ)NH\ C?%$B)_ts^ DUUWEՍ }w ɛ?A¨VNAIBOy܆VEt;qUtG%n֠Α٥`E3e,YS,59xɤ#Ճa+*! /lLvc&'9bdn=pE׋b?-B?1ܕ~++1y2P}Y2TďHZtX/y<%oTn VNkRk5@P݊:j(²r+]f[:vRpd6AsSxH n|d2bV z Rtqkm Af&" b0Գ;Uth kX}tDN+J\ʝ5hKRJlOhUUUv.ꟋYD,Va0_({TPZ+zBKeP>p#XzNH3Nct-]Q޲'۵o׀p#AGh? F&^w { ƅN8j*$}bR'2S#Ky`.b],Vd5@ %{j8 z'|VhI/sr ML4Qg&=Jﰎ݃#jnId6B0-]I6&:V+h_)=_[KkhK<;HwQ^5\ k5Mn&V}jeUq;H6M.QI4&/@K߬/B\=q]\ qb46smI"`  \'q l 0+4D:yTuUUQ SAA3%n󤱾VE(b#@xLKDh){$hRh14fWn4#UJ8v*UX݃Hq_Z !ԉXJc=wb>oJq}黲/ eQJQ6ǓhVLvt@>/@6(77\|!@'Dz3U@d'w>J64Gb3Y6ƙ/n|h5l\npqNy`I 7oY2mkn `CTέYx`YX M&iU,p >첉# 4FW[0OF ^v?}L VFtݗųxY1桫 ug-<t3bmWީ;7h{{C{=>iSv;[{ܧKy<ؼZ/Ĩ/Y60؞T?uR0-Ercv9zN=Sϩs9|Ųsd:})c_1i-Y Z_[*&\vҲ3gX"z…Z VGU]zU74~ꯗN|_-K^vkM7-o̎_q%{]7/Eُ?5ܙn8ƀ1RYuXmַ1.7wuQ7PXȸdtlh2BuMI)/Ҹ]ai$w+v9oDybTʃ{oU4Av><լc$cGٙ( F(h)f5Z\|7?jUR{xo.z^g%o |Z-;voh,Új1aRaԇM8%].VrTC1^oY@U蔐:m:^'҇z^[C>,,A]}'oclxi !я8 3nR:O4,a's/F~:R:G[u#d}}v.;5N݄= ۢ25.ǟujMbO`z0@*D[H.@8mOS8e4f0fxmJz;` 6]eWd&,ha+\Kԕ ~-\/GbiH,vXJtXk;+7*݌P5 ujۼ\^=`o[֬r[Tb k 3CYW%`+Fqe?aL+lzBtzQ[<%~E[%ʕ2Х E_xqbEz 29rѿdoܨۑO6APJs2xATH6J(Hb>cF<ߝF6Q;lhMoyUF+C"ܘ2.UjŤG5ڇ]st9B,N>̓9;w?Wn `' X\HJ|%u7ux» xW?B=$v|O+K+|p<DH}'4-=VywUW+eE6ž6^륍mU]qJkJ>`_>c1 <ƑT? m 7b_]oپo6^ XF[ቝ=AGУIwƉt*W@-"Z'!>{..ǗvaM:-o^>|כ-Z)Vߡ2w0gpNw<֧\a.x;G ;.%Mø8<,i6&Y ED=C[a'1k-@[65+ (&e9?rC:vIs9r~R*vuIx:)-9-o^̛,#-m3{M({3KE.J\%c!KOO05oW g0՝kHFzϐUr !,GVe)f z\dbھby6K늯h ߪ7-E&_HϢiv,A1 EY:׋8)a/>̧!yR|7Q(ߢ+{}.ߐo&Y:?Bё {JCb?}W ^%u&G]9|'Ӧ%]<6?l % ? A%VA3"!]E`݈h3%1w>iDžY jHq-&a8-'7ƤpwWXղ#/B4Fr=[)eÜT~-ʋ|ـM{5%m*}%6Ee5hBk"ɘc_%,jRE({^]rgBv?m׃Rj^W͐mcOgblvUf;7$g\(-5znMօ`=.F4] u:]NJ݋(\ţ$] ~J1K 3}u4ošjusᇭ,ȃ\6/=ijQ;SVz#|΍B`W/X&.kjf~{Sƕb_ZL4߱.Qj5DݝDm