From 80387ca3ca8de37fd24b45f80cee40d1241dd459 Mon Sep 17 00:00:00 2001 From: Edi Septriyanto Date: Sat, 11 Jan 2020 01:21:09 +0700 Subject: [PATCH] securing lemper-cli --- bin/lemper-cli | Bin 0 -> 19288 bytes bin/lemper-cli.sh | 163 --------------------------------------- scripts/install_tools.sh | 3 +- 3 files changed, 2 insertions(+), 164 deletions(-) create mode 100755 bin/lemper-cli delete mode 100755 bin/lemper-cli.sh diff --git a/bin/lemper-cli b/bin/lemper-cli new file mode 100755 index 0000000000000000000000000000000000000000..10027c56f9e354d3e261aff3bddf4ab98df97ef5 GIT binary patch literal 19288 zcmeHvd00)|+y8EqN<~V9P8w)%Drur

u$YGUsS6jq0RAG}4jC5FrtnG9^mVJSZgP z2_=yf=ZGX}BE9$8XYZc#^n3bV-|Kh1f4qNKU1#6x{@la5*S*$WdswHl+uYiMmxl)< z3m>)!LtK{_2QelD$xDa|5MxXq8xKcWY#JsAJU@`P)Le&QL$}jxS~332G0IJbUz2iNJ`qR1UnSxe_JF7 zMLVLsvGSsi1_}yEiSA+=K3>kc^EG^2=lXd01&7WJ)z_V?JD(clPo0PN8~I1NOP4z! za}2p5Qi01S6Bv>oo@ub%XVQ!!E%i$Y%^pi{cHTYs8R;v*2l+t#(u7JeX3UGQ+3-Q7 zoGFlasrkHj`MnflgYI~8s&Is(j+cR-GzvrPjxq36&>jUTj4I~9|C=AHF>v28@cCol zj4|-P#=!X@&VP#s&5wV>-N(R>jDi0c1Aj9H?mtG}PL82(HwLaT22L5HziDIWPa6X- z7z2Mi2HrRZE;$CCGX^d)2EJ(w++qy8d<=Zo82Mi_hW^hn@DG5`g3sup3c$b3t0~Z~ zJS?6OW)$3nTnA;wz@-77_%Hf5!5ZObNBO~Ey>UUyi!K%v5a{K{aK{4N0t5X6F*@BV z$lt}lfF2a&;^gO!x%&rtV+=1}H;@D|oLs!=E}q_WcPB3&jP4fd#lSq=7y(|cn75aY z4;I7-bPW!`A%wX&`S|#|Ak@dr5A${N4RT|E8)(SSpAHfyhL=B%yZ8oR0l^G6zimj% zB_Is*<(PtV1O_o&!3c8;b#vJUnv6gv7dOm3B+!fDhJ`qJ;Q_e#_y@UR{sGXEJJBUN z-6hnC?(XI1}@7g@74n|*QZ$pPL-8{U47;b^~HfBEles1c1+Y zRUNJC=*SDJJcs^$L{~wQ6BwzH$lsRS2%11VUe z9>Gt><$RbC!3R(C8jqq{ikv_puk+-*>=NhTwZ!$D#4`z8NRxsqkT}UVXmD_79KWXF zN^of5!i7l?D2odx`+~$>TsQ>*MCs?k6-W>$d0wG=AM*N##N>H`@Hq$|N(+^O*T%t- zNCD2XxNwwxvUG9bg84WVaN%T5kxYgQhXETY6fPXC znPi#6g^Q9PP)#lzCdx?B=fcHCPz*EX!o|688W%p13%BLMx!1q7TsXQGkYzI$j_!5H z;>m?eks#0jE}Xm-MdDB{dSlan87<- zON%ZSDjU%l*7+n)!G@JS!% z`ICr8O9a!_0ABA`{<=GNAza8;nh{td~5b9(Nt&G;{1BVqbbfV#(6u$OCmlK=PePBrZoF3&YL10O=Wf>&M!bbn!@Y| zoS%nyG3T1?}4K&$)BkO7BIghNr}a4dfjM&Gn47#6HSi#E~& z1BeXb5v9c&EdY)+0Y;cbgTn)XhoHxU!ihkEeJ=x-&>y7k$aV(}RC^#$08wG$IRZIA z;{XfCyoiap>vPLvl^cLEk&%o8UN#L@Nv5>p&pndn%C z8lW-5SrlJjbUD zNBcxycpI}8*~FXo(|Bsdb0omk5b7rA{=mHmbm9b}m1@On-JCX_&qHm9^3q&hK=_rw zal$X+sB@GuaV48Rj_4eS@SdH(bp#Fri76J3HGZHcb4WA_&Il z_ES!`SCB3(I4&3Cgh<0Yymc}SO1OxVhN&FwNgQqH+Bm#MbZtw<0NR&=KVa;zHL05KF{Xr zbL3}Z$OVmAPzC3mD=nU13EhyOVb?0AB_!1XN{f$0LK^c0jakVuhE*=MI7~PfoD8!M zBISfwv?%5!LcI_^U|q?&GKd>C;D)iDAO|Kslr7pnT4Y8BCHA!-#hXf`xFoQt;}Z`1Ee(-y@$!VqAILnIH$c?}Ce za94)_N{A3GI=mlaXrL6);_+2Mfvg*tcLg_fOy;n*aIFFrCZ0yZ3eH{9D!7rHKarnp z;S$6w$cIoyrIO_}0G&yuF=HD*$kO=*T!K^99z+;3l|vA-WKuKCk!}Y##Wh#V4U=XbG`hIMKNc7GQwqhebt0Lx{l1nSNlI zu`DhFKpz6ijIBjrbODlK!D}J=9JdL`ZF~|gb$LchFq{~lggVWvqcKZi)m#S6aoQ?H z-Tu3+?}!EOkHI^xz&?Sxl90`bGoc!_mypzgNIV|WGFWjFbTIDt#lQ(OwjOk%3(%1_ z*bX{O*x&&glm;(`*#@${21t5>E$NNMQwnRg5tRbjz-Mzi=)}jOW;s1jDP`8e`q3ef z3xfbw|C~zYedJUkhdjDG0#?ho(W9+~LNrf_H&2P~9~O^cLnmWl6?y=aRfIANGKUme zg85nKoI2cRj10~pkQRX&#tMPPkVat?a3gXPkb|qEuviu|&6A_Uld)i3R!1*%0E_OI zV5mZy_mF)aIxrs;NdV!D#RueYlr3W-=od~xs+Fu@Q0S0_nH`75=p%4Qi0*QLU5m5H zP&Q!Z3ju_?UkG>$09>@X zpdM4qPzA$w1WQ8)Xv{LsXe~pGL0PycoXdkX)NOcA`xH$V@+yc2$&5Tc^ng+uhMuf)*^gv&q(7m;Mo(Q@uENq2GN29 z=2!#tu3@Bi-DtAJn>Xa4cNm4BhR#M-)pt+@lqP`SJWi-ODJbP2od%9NY@y@%D)^)^ zDuUM<7|ZP6{2#{sJG9{55_I-~#mMO%h5VrFPYVjG(!3U0he4@Lu;pPo)S|U*as`4w zgM}|{#M#4(hJ&F20k}fPVb&`C2cram#V9*WbZb~9^YFOCa979+qF!DW-XK$HI8?YP_@6|LANcEkX1@w$FpdSG~|Ye`f*2`43~rR4uI% zwZO?6e$~~27+8F0P!j}{P(0D)v<;m5VH10_LP;>gVU-F-!vr5RM63ar#WNU~<*RWN?jJv_XO zS>7?uIzh=2DNP`i#zSldfFOGTjge_H2_7VvvnkjzW}^)gCQ1ohRHQ(PCy})qtaE`w zJ(Ad9veB_D(PWLu>SfHACJrX>ETyzf0)JGRi|8s7=Fl=`ueC}${)}ES#K&6E1$~MA z!k}n1k7dc+klLB~-~L6f;ut38pByVjQC6f@uT<`nzZ-xoS8C zVRT&2d;!JJ&5Pmb7D#al^w_pR(~;umA4pN8Q$paqau5|W^b7X!S%hH=D40?Z`ddIz z3KGV6Wce1NJr_8EvE;AA!wrZ+Jm~Up8R%u;vtTsP`*2B^8u~zm;f!1h^f%B@pdGLv zCIhvE3qUSVU08G)fEoeq2O14?Lqq3jK)w&;pCQL1@$r4+K?>6W znhyAC7!&+`CTVYqo8xjrkQ;&A;ve=VxIG2zHv;YgSCq5-T>j0Y`S_0U<4%xH1n9hl zQ@tMQBQY%9&lk?YG)=_jn2J$A5A;pNgz#}f{mcbF#8g4v@OcZ*fLJErXb%4=e=_hV z1Aj8`Cj);n@FxR*GVmt@e=_hV1Aj8`e>DT-_j$d1FEjuP$(&><6y&zjz?O zk3HIDFEQSN#DGf^RGFZ<1hpXOYJ$2GbQ?kU5cC*9FA_9|pbrT8f}kG=+DlMD^of3@Ns>=qqx_g>tESx_Pu(bcTCjah|{Fv??w0C zY}=l|{C%fvm;D>zHMTJ?=ks@{=SRz$^Es7O2#B7vcxj-~-%_&f$Et)D@g>LU4)^C> z+PY*~TZ;B2>j8IX-li$WuMAam!|zHxx+)~H*70hOA2iU~9rr|b>vch^22cAZ5-rZDd9!-#>wGpB$+Z{``3F>T}uQi*cLXE*Yn#XHNO+jMURBv0-_}zqD6c=bH?_|588v zdHY_Qw;Bf`>K7$ndUHJ_PWzh~qjOuuf_dW>NcD(Gy^BksdQ|7L&i;&8`iffQ?38)o zd8+KmMw@ezF303ULo%c;PI~7&80om{agXQX^G|#$N*tn#uNM)jd};_zyJfDRjM4b2Dwl z>vkYH#&`g(uP?poVvk2?>XxgKjb%cFFMh>fj(SaVg9QQ9f_Yho2K z_Qh$NQm^V(9W4u=bpP9i`*xFSearT`4@R!n3HLp>Pc$`W6?P&-Qcq>)1U_dzhcjw4 z`!Lnma~EF<*^92wwtPPB^1&@V{Z+mLvse48*LTd>bKlObwNK#ZmJ_Gdy_;CAdP}!p zMLgV4&Rs2) zqPM#$d_3>Z>vsJ_?Y3ft*(!nK&S(W{9q%$+bt!@UnAtTy_U!Jc(&?7X7rv z>0#x;nGMk|dpk5=WeA+!T>mAfTzBSFyX;Q=`AWe&Ga?VA&wSQx?PB(Hak9RD3+;T* z#gE7J+Fza=aL##ezhV+M;qUQ)QWVy&EL`rtA6<$Z+v>xvFnumE?aAf zfd%4T?4#1l=e=KXt>NX56O+_Lj6E-u%JpNV5%0c^3xDD!WM~z3u$@Qp^i(~&acLoH zYvqQ_E}lQ~ZsLkZw*z;~a!GdD>A&Zje4}E1NJ{;sa(9Us$?8DQmTz5p6s={vQzR#t z^>)}iKh&{4>v0^vo&85j!}r0BEAxBzbj40R5x>q?*6_yOs7`h;LuA^}-T?ViXDfoX z{NCE^tGXyvKr-;<2a%?N)JqC}QwDT14pR-R@4jol6?5oI*PJZf>%AXpXNYO?&ne%2 z&vLtWy2!np7g$%v!oIS_{0knNvX4CwJ!{q^m0hiLi7Ecgad3wyAFmp_BzEh(Rr*$r z-wm!(lC7ATG2>h&mXB*xioc+KTR6N@hE?-vJYRlD027djyB12GSg-n>|eSg z-%~%dVCCx18=Y&nR^@c|n)1pzWzTLE&`}QAw`g_3g^$L2vcLDgXzpp>={=#QCtql3 zZT(X5Swr{rrPU&Ti9~A$?a|a|)tRTn;CcDA?!$&Pzd|gkWfQM^MlXp7;rDx7@21t9 zIPRL>^-rx`ubaNlt7vEtC~mm9r#J4dK%!8ke59(vBl^px4^ry4Bi=lA6*?a!b7Rf) zT2`x-vTT@-Blbr1^w8ZS1vB&Xc<%HbnpFOMV6)@ROg{sSBmw(x;rdTk>1vapIuWCQpe|x!=G{4HT6En@9t(9&T)zeFuc4Sf6n*givmSd5rkl;ozZG4qN9SAQ^Aqd1N2UF+axq%x{%J|9_3(X$;01c$n#IpFwsbcaHztZ1 z75R1S-EvPkM034Y(ELS*t=3xYJKtB(f-!^m=$60NeJFB^>RdFpXMb?w&C@-`O_j|F ztr`wS;cBui3VE6;>g!h9H(O^M)p0HEGW?#u<>^5QkXM1J(2L9SuQZ2K({a$U2 z-r&9F#U6X^%fvljbE)jx^3?})umzL14!+b;DF5N{HFLA>tDoN_`sdG+>^%C!*~VUO zLvqEQZAr~)#__sUlPAh<2-&qIwfdd=V|m*9{-rg(6Zg`7O3Im)t3AyUFS+}dIN!0B zs^2OrJ`H7drhVd}zwV{pp6)zFiCTQ*X1#~awl49M<&ykzVpEGP)J__QI`*h0eP1$n zuHg)ZZ#d)Y{7WCM%PTCi+*I0hXjrFYh07lI;j||;ZsOO)Y|cB@m(V&l#;kLmHfOnc z?Auho+~FD}#@klwuAMilgMMc3ov5=_#9|xoi_Ei%j=vwRdmlIFQPYAQjJGY%$~H9A zy*{VfCm&Uvnauz0)be#~sSQ0jRniAk+YVEv6n_&Ad}cK{D_m{P`vB*p>__MFXC1jg z6Mh`88pU$sN7@o(P<$YZ5-KEz%za1}_ zD!z;=F=P9}PV=f8Il&)aue5oWAIyHDwqSq8k^XgYu@{?4_Vv9DsU9Dz@^P8d#gC_y z80BAD?`q7hPigl!`#Gk0|4qx?mvg-~UU~TSkm;?S%Eql$jgx4OLW@*raW5Q7c z>7~^11x+qn2DfDPcvFsrpOZ1Itl>FlvT6Fcjn$GWWs}c0U0rlG@kaRCLjv08V;>IX z-FXsoHvdC-^pCUx7j6_!LfHZOb=%q)y z-Diq_E2=S*f04OMdTsDC|CoVJsYNrk?%BDdCpGhI4D}bU*SP*KX?@Xs1$jYY4K^E6 z6@p^Y54yC!2$(R-v&7fs$v4runE}NX6QAuGaHxvW_&{ON#19ER_ZARN>&e}?;?Thx zX=U5iHdDKWcA3j&7!7`|pBVmjT7sT?zh%Gg$DaIV%f)f_F2^mMmmB!S&l-|VJ$0bw z_Ho5DH^b!eo3;B3u)~I$E41fK*SUGCd9`F|QP+T>f@5i83dE@7ZU-;Qhxw}g(<+PTP;8nGQopH0(V=w8iSwAc^{^wi6ik8ZprmMSE zg{3D{9hAR&&5s#egVm{BzZ&u`_JrnSNK}rHYqfr*ovn zm-ptKG`TkXc98P4$xc*aAX!RMWoO+m&wYc#1NR(`c^zrCTzF+kSjPDItp#a2G4>+K z@d4S71RifGWDnk){MjP*#?MgWx|a5pkqc!)<}AH({g%d8_jsOwVX^Pqol>Je(Pn30 zwy#(vV$_q@O1!#t)Vo}79Vj`~v_GfUM`C73!?>Xh`TT5ZXtSHu^sG;N^~@`n%i}C8 zJDh{hs#(6AmK8lcUU8Z0V$IiyxB2cg-HzoAH*>kTI_cxQr>9m&-3gOlUlb=NyJL9% zW#N2>thKu>V@gydo-A7Rd11Ke(7XGa+NRBT_9=LiRL=Boh4YqIseIH~&&aRkNfrEV zxZ#|6s+(Ja(|J8j%a7B4uR6FYyFBcefJE`bYbULWweJnYpDPl*L5qI7ylNTkGJVAj zc2aB9y8)jkbtPi-%Gm-`?Skobrs?UcoiggOTHC|cxZcP;yy~iuW5^rDIK@KykGF*N z>T*K#sy7FTv>NH3k-X<5>Au!W{pOkRU&nWUe&eC&raDl0ZgSRg-TuRw2KTK8D+H}? z^Sou|(x(UcP!;Q%Cln}(X1x!|-9GS4u=c&6>Z+IvhXW=>9F>%)ZclrbxM9VQFU5-E zGib%W@iy1mw3COAB%hrpHc6@N{GelBM2}Ug*(b?gw@%&NoOyjs*#qW<qGM zba16ixqzUBvg>B2(AazS)!%X=Eu zRVvPblJ$#DrJZ))DEqs1b&dY7*@rr%UT@D5&!7p0`T6LEPnN6Xc_`6Mi4cv`*)&Cm zFFYwR@}9?5%d26l@8?R^ED?y1yYh2Ni@KJnslkUOx27ANO{$HWTC*ccQ__Y0BSd;v z!VEp74b&BuVTO)-j2cc$p1j5kzrHOeXl>oZH(noBCRyyZN_jiga%I{>n~rr(jRC*) zCVU8rOX*&UOvd?75tL zRI()H@uo?_arG>xl?^9SJGTbXnkSfC&B)mrs59Y^y1UV|t?8MsHkYgtcWl<2s9~<@ z{c#fA<~vV{wnW5X8$O}B@W!LbwL@oq?a`=?KV|f@FNZ(yHghE<?d;b7zPH`sN%O011%frpm{h^v4I~jbDBq zk6l{$uBGw)~Po#y-IYvz`%(7$%|72B7e|pQs-testl~;A1+xt7pEYHX7b4T^l?3!ZjUtVj>(P>5yapWwWcjE6LUVGJVa#*3>KAzoy7%`LB7v zhn?42Wg}c^otwCtc04vLY)?|m<)+U@TlUsnt#OSRp8oCve?_yu)w>tR-ygJ6Z_qhc z_2r1if?CD97a7Y}T)CREZ~giJ$qVfv5uz7`Zk29!ZODmA8Sk}pk8henllW0>m4{R( z2d6VE0h{t@JK6jmzx#FN((48zV+`ADFP~F+6Bj0u))w3!tz4m(zqyoG!TX)A%(O$- zIwlX63bh^*y)gAcmXC^csQV$;Jwf5JtFNxB{Bcc7#djdxfwm&0yY>zLV^`*eXB4?% zU%T{#Y`3S)JC5`m{j0t_@)cvCamcb=s$JT8udv7?Mdj9N2N}&xd8bk>$7LK`l&E`Q zw@&`ohIG;U#_3WqU&i}9ukgQOba-XKL3vHO!Q^?-YJy)@iQF+0UXm*-Zu#g;%)6od z=hK+5fhN*rJDt0Oh{T# z-_*a29%-8$^3X&^Op}%euT1vyB`#qKE#BE?y{(a+_xqlqyS<`9tgJURV{pO}v!~~8 z+%glcR#>9k625hurp3BP-xl_I{%CtQ)n4SP^2eC6mz_&zovVqAdRZH#8#eQ$=kHI+ zvffb-{F|@{TTRQw9f5`UrHy+tJ!WtE5*A+3y5r`KW3oez`x+fZR1P?JZm*iH8;=z( z^lU%rK$npKfYCFAG~- zp?CYZW2M93mQP>QyspbLr3T$i#ybShEli)iOM3X-f`Xv!E9dr~J1hJ8$cqn6Rmy^S zo0m{O+s*gY@2wD6+hLnvR41u)V2C|FBPWw_EB|yw+jt+*=(&3O-*-AZQ(yPJ-NE9? zz(H)Onb`u$90%uMKSnS`k2;^KIaezf=d^Zd=~Ff5Q?*n$IEGP!JmKGx8BWd^75@9# zEieG1`uQ{5s3xY%<}#c-2+qSVnCcwt1wYFG|IJKAoTpQeCq{J*^9u^|Zk}}a zKqp@}x~D5RAvumI-6=58DU4%5)}aL_UoRJk2{(5R3c{!^{=U9$evHvCA^$&k^gbQE zS|{I=kM;W^q-)|eJjr6{yT0h1IcY!o_d6&fnw$#yY8Q8r2Zr08K{z6*BDXTsN88T_ z48Bt4Pqt6)E07e)Q6cvk$oKRd6oX%J;p{1p_T;_;NgIe4@n~NH^_{dQ_a7_(Ln@>_ zxsO3oa^C_}@G?4o%K=4u0;D~;4?t2o!j6oe)FbHzkfS{Yl20ZAB&jW7KRSK_#v0u1GZ-1i~(ok&XV&wvVE zMvs3OpxpK?#6AW|M>ON^p1qwR@(ffj<2@e*bu@soJMD0}kvfJoXx>}!zrWcwt4 zWRyL*&qh*mzlqcz-TxDWJvn|Y#D*J5JxN1?l5vx8+9>^N+MA_Z_RK07B76LasvElk^qHxa~1b3P)R$ zL&DJl%T*{`byRJE5AsE}PyYTvxEX*@XrtPv;OO6ncBmp1qPY_ | -# +-------------------------------------------------------------------------+ - -set -e - -# Version control. -APP_NAME=$(basename "$0") -APP_VERSION="1.3.0" - -# Export LEMPer stack configuration. -if [ -f "/etc/lemper/lemper.conf" ]; then - # Clean environemnt first. - # shellcheck source=/etc/lemper/lemper.conf - # shellcheck disable=SC2046 - unset $(grep -v '^#' /etc/lemper/lemper.conf | grep -v '^\[' | sed -E 's/(.*)=.*/\1/' | xargs) - - # shellcheck source=/etc/lemper/lemper.conf - # shellcheck disable=SC1094 - # shellcheck disable=SC1091 - source <(grep -v '^#' /etc/lemper/lemper.conf | grep -v '^\[' | sed -E 's|^(.+)=(.*)$|: ${\1=\2}; export \1|g') -else - echo "LEMPer stack configuration required, but the file doesn't exist." - echo "It should be created during installation process and placed under '/etc/lemper/lemper.conf'" - exit 1 -fi - -# Set default variables. -LEMPER_USERNAME=${LEMPER_USERNAME:-"lemper"} -LEMPER_PASSWORD=${LEMPER_PASSWORD:-""} -MYSQL_ROOT_PASS=${MYSQL_ROOT_PASS:-""} - -# App library directory. -APP_LIB_DIR="/usr/local/lib/lemper" - - -## -# Show usage -# output to STDERR. -# -function cmd_help() { - cat <<- _EOF_ -${APP_NAME^} ${APP_VERSION} -Command line management tool for LEMPer stack. - -Usage: $APP_NAME [--version] [--help] - [] - -These are common $APP_NAME commands used in various situations: - create Create new virtual host - manage Enable, disable, delete existing virtual host - -For help with each command run: -$APP_NAME -h|--help -_EOF_ - - exit 0 -} - -## -# Show version. -# -function cmd_version() { - echo "$APP_NAME version $APP_VERSION" - exit 0 -} - -## -# Create new webapp. -# -function cmd_create() { - if [ -x "$APP_LIB_DIR/lemper-create" ]; then - "$APP_LIB_DIR/lemper-create" "$@" - else - echo "Oops, lemper create subcommand module couldn't be loaded." - exit 1 - fi -} - -# Aliases to create. -function cmd_vhost() { - cmd_create "$@" -} - -# Aliases to create. -function cmd_site() { - cmd_create "$@" -} - -## -# Manage existing webapp. -# -function cmd_manage() { - if [ -x "$APP_LIB_DIR/lemper-manage" ]; then - "$APP_LIB_DIR/lemper-manage" "$@" - else - echo "Oops, lemper manage subcommand module couldn't be loaded." - exit 1 - fi -} - -## -# Manage database. -# -function cmd_db() { - if [ -x "$APP_LIB_DIR/lemper-db" ]; then - "$APP_LIB_DIR/lemper-db" "$@" - else - echo "Oops, lemper db (database) subcommand module couldn't be loaded." - exit 1 - fi -} - -## -# TinyFileManager add user. -# -function cmd_tfm() { - if [ -x "$APP_LIB_DIR/lemper-tfm" ]; then - "$APP_LIB_DIR/lemper-tfm" "$@" - else - echo "Oops, lemper tfm subcommand module couldn't be loaded." - exit 1 - fi -} - - -## -# Main App -# -SUBCOMMAND="${1}" -case ${SUBCOMMAND} in - "" | "help" ) - cmd_help - ;; - - "version") - cmd_version - ;; - - *) - shift - if declare -F "cmd_${SUBCOMMAND}" &>/dev/null; then - "cmd_${SUBCOMMAND}" "$@" - else - echo "Error: '${SUBCOMMAND}' is not a known command." >&2 - echo "Run '${APP_NAME} --help' for a list of known commands." >&2 - exit 1 - fi - ;; -esac diff --git a/scripts/install_tools.sh b/scripts/install_tools.sh index 81b0f98..021c51b 100755 --- a/scripts/install_tools.sh +++ b/scripts/install_tools.sh @@ -23,7 +23,8 @@ requires_root function init_webadmin_install() { # Install Lemper CLI tool. echo "Installing Lemper CLI tool..." - run cp -f bin/lemper-cli.sh /usr/local/bin/lemper-cli + #run cp -f bin/lemper-cli.sh /usr/local/bin/lemper-cli + run cp -f bin/lemper-cli /usr/local/bin/ && \ run chmod ugo+x /usr/local/bin/lemper-cli if [ ! -d /usr/local/lib/lemper ]; then