From 76ecaecc682111a5686a18b11912d4c5f9f92905 Mon Sep 17 00:00:00 2001 From: crestAT Date: Sat, 23 Jul 2016 08:53:26 +0200 Subject: [PATCH] b7 --- OBI.php | 124 ++++++++++++++++++ README.md | 32 ++++- .../ext/onebuttoninstaller-config.php | 2 +- .../locale-obi/de/LC_MESSAGES/nas4free.mo | Bin 6109 -> 7747 bytes .../locale-obi/el/LC_MESSAGES/nas4free.mo | Bin 5499 -> 5434 bytes .../locale-obi/es/LC_MESSAGES/nas4free.mo | Bin 2572 -> 2572 bytes .../locale-obi/fr/LC_MESSAGES/nas4free.mo | Bin 2689 -> 2703 bytes .../locale-obi/it/LC_MESSAGES/nas4free.mo | Bin 2308 -> 2322 bytes .../locale-obi/nl/LC_MESSAGES/nas4free.mo | Bin 0 -> 2383 bytes .../locale-obi/ro/LC_MESSAGES/nas4free.mo | Bin 0 -> 2606 bytes .../locale-obi/ru/LC_MESSAGES/nas4free.mo | Bin 3258 -> 3272 bytes .../onebuttoninstaller-install.php | 24 +--- onebuttoninstaller/release_notes.txt | 5 +- onebuttoninstaller/version.txt | 2 +- onebuttoninstaller_install.php | 18 --- 15 files changed, 165 insertions(+), 42 deletions(-) create mode 100644 OBI.php create mode 100644 onebuttoninstaller/locale-obi/nl/LC_MESSAGES/nas4free.mo create mode 100644 onebuttoninstaller/locale-obi/ro/LC_MESSAGES/nas4free.mo delete mode 100644 onebuttoninstaller_install.php diff --git a/OBI.php b/OBI.php new file mode 100644 index 0000000..59b05ee --- /dev/null +++ b/OBI.php @@ -0,0 +1,124 @@ + 1) { + if (!is_dir($path)) { // check if directory exists + $input_errors[] = sprintf(gettext("Directory %s doesn't exist!"), $path); + } + else { + $path_check = explode("/", $path); // split path to get directory names + $path_elements = count($path_check); // get path depth + $fp = substr(sprintf('%o', fileperms("/$path_check[1]/$path_check[2]")), -1); // get mountpoint permissions for others + if ($fp >= 5) { // transmission needs at least read & search permission at the mountpoint + $directory = "/$path_check[1]/$path_check[2]"; // set to the mountpoint + for ($i = 3; $i < $path_elements - 1; $i++) { // traverse the path and set permissions to rx + $directory = $directory."/$path_check[$i]"; // add next level + exec("chmod o=+r+x \"$directory\""); // set permissions to o=+r+x + } + $path_elements = $path_elements - 1; + $directory = $directory."/$path_check[$path_elements]"; // add last level + exec("chmod 775 {$directory}"); // set permissions to 775 + exec("chown {$_POST['who']} {$directory}*"); + } + else + { + $input_errors[] = sprintf(gettext("%s needs at least read & execute permissions at the mount point for directory %s! Set the Read and Execute bits for Others (Access Restrictions | Mode) for the mount point %s (in Disks | Mount Point | Management or Disks | ZFS | Datasets) and hit Save in order to take them effect."), $application, $path, "/{$path_check[1]}/{$path_check[2]}"); + } + } + } +} + +if (isset($_POST['save']) && $_POST['save']) { + unset($input_errors); + if (empty($input_errors)) { + $config['onebuttoninstaller']['storage_path'] = !empty($_POST['storage_path']) ? $_POST['storage_path'] : $g['media_path']; + $config['onebuttoninstaller']['storage_path'] = rtrim($config['onebuttoninstaller']['storage_path'],'/'); // ensure to have NO trailing slash + if (!is_dir($config['onebuttoninstaller']['storage_path'])) mkdir($config['onebuttoninstaller']['storage_path'], 0775, true); + change_perms($config['onebuttoninstaller']['storage_path']); + $install_dir = $config['onebuttoninstaller']['storage_path']."/"; // get directory where the installer script resides + if (!is_dir("{$install_dir}onebuttoninstaller/log")) { mkdir("{$install_dir}onebuttoninstaller/log", 0775, true); } + $return_val = mwexec("fetch {$verify_hostname} -vo {$install_dir}onebuttoninstaller/onebuttoninstaller-install.php 'https://raw.github.com/crestAT/nas4free-onebuttoninstaller/master/onebuttoninstaller/onebuttoninstaller-install.php'", true); + if ($return_val == 0) { + chmod("{$install_dir}onebuttoninstaller/onebuttoninstaller-install.php", 0775); + require_once("{$install_dir}onebuttoninstaller/onebuttoninstaller-install.php"); + } + else { + $input_errors[] = sprintf(gettext("Installation file %s not found, installation aborted!"), "{$install_dir}onebuttoninstaller/onebuttoninstaller-install.php"); + exit; + } + mwexec("rm -Rf ext/OBI; rm -f OBI.php", true); + header("Location:onebuttoninstaller-config.php"); + } +} + +if (isset($_POST['cancel']) && $_POST['cancel']) { + $return_val = mwexec("rm -Rf ext/OBI; rm -f OBI.php", true); + if ($return_val == 0) { $savemsg .= $application." ".gettext("not installed"); } + else { $input_errors[] = $application." removal failed"; } + header("Location:index.php"); +} + +$pconfig['storage_path'] = !empty($config['onebuttoninstaller']['storage_path']) ? $config['onebuttoninstaller']['storage_path'] : $g['media_path']; + +include("fbegin.inc"); ?> +
+ + +
+ + + + + /mnt/)."), $pconfig['storage_path'], true, 60);?> +
+
+ "/> + "/> +
+
+ +
+ diff --git a/README.md b/README.md index 596510c..53ad7c6 100644 --- a/README.md +++ b/README.md @@ -1 +1,31 @@ -Description -> will follow soon! +OneButtonInstaller +------------------ + +NAS4Free extension to display and install all known available Extensions/Add-Ons directly inside the NAS4Free WebGUI +just with the press of one button without the need to use the CLI. + +The extension +- allows the installation of all known Extensions/Add-Ons inside the NAS4Free WebGUI with a common interface +- allows a One Button Installation, just by selecting one or more entries and pressing 'Install' +- shows all known available/installed Extensions/Add-Ons on one page with a short description and links to the appropriate forum threads +- pre-checks and displays known unsupported platforms/architectures per extension +- features manual/automatic update of the Extensions list to get new extensions to install +- is based on the current installation procedures of the currently known extension/add-ons +- works on all plattforms +- does not need jail or pkg_add. +- add pages to NAS4Free WebGUI +- features easy installation, configuration and extension update & removal management + +INSTALLATION +------------ +1. Prior to the installation perform a backup of the NAS4Free configuration via SYSTEM | BACKUP/RESTORE | Download configuration. +2. Open the NAS4Free WebGUI menu entry ADVANCED | COMMAND, copy the following line, paste it to the command field and push "Execute", this will copy the installer to your system: +
fetch https://raw.github.com/crestAT/nas4free-onebuttoninstaller/master/OBI.php && \
+mkdir -p ext/OBI; echo 'OneButtonInstaller' > ext/OBI/menu.inc
+
+3. Open the NAS4Free WebGUI menu entry EXTENSIONS | OneButtonInstaller, choose a directory to install the extension to and hit 'Save' to finish the installation or hit 'Cancel' to abort and remove the installer from the system. +4. After successful completion you can access the extension from the WebGUI menu entry EXTENSIONS | OneButtonInstaller. + +DISCLAIMER +---------- +This Extensions is provided AS-IS, I'm NOT responsible for any data loss or damage caused by the use of it, use it solely at your own risk. diff --git a/onebuttoninstaller/ext/onebuttoninstaller-config.php b/onebuttoninstaller/ext/onebuttoninstaller-config.php index 6e1c505..25a9e49 100644 --- a/onebuttoninstaller/ext/onebuttoninstaller-config.php +++ b/onebuttoninstaller/ext/onebuttoninstaller-config.php @@ -130,7 +130,7 @@ function enable_change(enable_change) {
- "/> + "/>
diff --git a/onebuttoninstaller/locale-obi/de/LC_MESSAGES/nas4free.mo b/onebuttoninstaller/locale-obi/de/LC_MESSAGES/nas4free.mo index 24f65620e551194b05f4e7196ac28b51ba2764bc..799b1c798b7d83a1afd7b981c46b5a00f3212662 100644 GIT binary patch delta 1976 zcmZA1O>7%Q6u|L`v*HAcIQ_EViw$MAeTA6y?rl{!P;D%#w~8kHKt0`jLm;G+#M;mi01 z#_;GCrEbQDuoGwTUR=gW`~(?VRDbe?KXrqTCak}yGGPpxx!;5B*n=`|qIy4tE!;nb zJ1|x4e*q72e*w4QSJ;Z{C;|P7Gx!G{V10EztCF0`p)3^OJQ=@+w{m}-D0;AkrzNvP zC>c-Tql`O^^8ANHBMYwLOSp!8IK@K-7cq|Oco+VKGpw)Tgg1yDcH>2qf!`n{QddzH zypED-bgNSPuoG{`1WIKrWKLz{MFK0}`?#B^UZMX>vU?C8xTR9*H?X*qj<@*oHm;&f zFtfc<+NV(#n8(BTI-bF=k>aR$N2R2FRmX4_{YO#enZ-RgkFr(ga5uhLz5lp_`b&vF zr$Yky8BgNx$QtSh>5_yxjgq0kSzN$D{I=SE17+*#ndDP4-hp>={{xfXgV#_h*hh3s zttN1paS!jJ{*uXege9kR9na%6lnIJ-`uGlx;7(qV19%*t!vc=u6&%C8U6r%)6tY|D zRg{XXpj7e_$~-^fevA~Uk7U+^a(IT3z{2uL=8~0MGDa>r549KTh7)VtOOx#6(8Xzo zXmSly2m_a@$|cE4fJG@I$%ffNc+%yy8=}b}lW6;CvVW4HTylCPdifV2)oY;1KHp92 zrE!eHH=-Nmid0Y}9ae+gQFqYTl8Ne16-GhMgIsKBc=4Ksl{r|wA4c9dqVvnGTb`^d zCenfNw4YBVjqj)Pj<#JtupGwxZ%tkK=mn?t&_ zaRYCe8Ny#&Yst=3rkS(60hREQS$l~YY{%$*zIJngPM0R5T@99-G*0=6=x=om;rP-} zw6}b?@oIfhoidI|20F-X#HCK<7EEnit}!Y3J#D+TpOuwuZ)0#}^+hk2G^xC2d`(J~ z0l7j=a(dCq7?MlpJR`p^>w@h#bZpmtRz_O>#*8KvFAp~FkHjSUYN<@B^hnF&v9bP< zQ9U#^J~G@lG*bGkrL%dXXLPJ|x#hlAJz=})+!1TkAFzVSQdjKz2)p2Id#|o|!b)bf z@zOab;~6`drMSmx_kq}KO73c(A9cz$dfF=(o2|>c8RHHnQmOuvY!aoHjXAMddfzd& z9~d@FwmD@M^t8<;Ss6C&-x;FD?H(vyi5+iB%*}a*_1*GF>obwkvu%x~7q>Q*{*H~8 z&$X>Yi|TCtf1z1E_bbrps-${%kp?HqGBA)m&1@2m@P1P?7e>2*dD{|004$9XfRI z(DEjE>k^nT$f8@)p&}?K2*SE3k%#J39SnMZwi!L}?Dcz|J-_GqKHum0&37)eWk1zc zOd5(s-9()#GbXL)a(*aH6~+IW(L=izZ{QHR@Eca+3I@?>H)an;a4+_w1E;YP@8KGp zLFUVv$2?Tg@d9h{9ctj0Qu{lurEOytAG%TFqF93+xDI!0oFHzPGg$+<2q_b_fb22g2x&7616~>C}U{h0G`4yKEozlL@n$hiZ(ohjW~fC z_Xt_jd_c|r8GWp8e(=zMm27h>wxTkS!8-(S3=hy=COSX16U|-hK?S^w3^Bh^@7vvE z1skvr&!STP6j{nVFZmX;8|YZzK@rL2z*O>`BbID?A#J+i(DQ3<+G)UOhw z>Rn|@7gIZJq^f8W`kHo7w^LV(?up7aDpQ*v>lac-;QxxnlaAy65~iU$vRYbsP@vk4 z&QwLIRf!Za+}lFYrPHz5sLGx)p<~w3TDllYtv+{sCMtY!h4gGLw2UG9g-=u|&W$_T z^RtenvivLOQh8M<8ag^KGJ0-!G@o`wZMn z7HOs$wSmoiXMsITlFwk6{0Cj6Fvu#MxQklP#tw8BIgNIsHW$dzQ7r3gO@mlPskF|Qzc?~ zj9_i<+(~HYcc7s=QfDQM@IY;D?%cGTp0d6d+aR1#E&|;3tI&P21 o?}^4*BJsg!Z#WXQ-izvs|1+_EtI`~{B4)szHRnzH#lLU-0vU`&00000 delta 737 zcmXxi&r6#z7{KwgR&BNIwDotVdqJ$)qQ13mOm`Se5kc67f-uBGks>H4X!WWfV}cj; zZNZB$cG%8RH4w|_v=As#$=@HXaQmm!;j?fX~^B%dU2`s7K{T;w*gd>L?M6y*{1 zA+^e(R6BZ|G?dS1VitXPg(3Wj&(K?>R0$5D2VY?YzQHn_#sDs2DXw89ZlGVOW%Yqh zITKlYjVI_rKaKn_h%+P=MoD0+xUj){9AiF<1X6CIN3j-@*pF?vixT$?Td~<)NO%}4 z*k6s%k<(8iYt$;H3A~Oe#s#7L5$P4HkDXf6U^3{Ei#g5mf3We!+L> zBbzbIpv1jKN%SB3hUm0Z^Nu)c{dTn0ORh4KB6&)YdkI;+&S-DL-MG+5FnRM@Dwm;n zIn_v&Tao`#J@vjc**ng0mwz;|lr+M|NOB>Sm`~X^C8rKwcZd1dh?#w{r%^LzeRGG( zn0aEDJ$*fK>zDhv{lYWl>DO%t2UC~*6q7RtP>3w>K^2z=f Hu$=z^*a`&z delta 41 qcmeAX=@Hq`z{+c+YhbEiXkcY%p>1F|xtCR%3npT0w0RS26bk^=UJ300 diff --git a/onebuttoninstaller/locale-obi/fr/LC_MESSAGES/nas4free.mo b/onebuttoninstaller/locale-obi/fr/LC_MESSAGES/nas4free.mo index 3e8500a6f37cd56478ac95b205c95d3d093bb77d..cd916a1cf301386f3eaad9624ddc588b09bad65d 100644 GIT binary patch delta 279 zcmXxdJxf9X6o>J@==J?ww4jI!x=D7uDnf`#jqT1^aM2~j+@q;6!PTJ979nSJRrk~TJ^~0-6Y8g^Z(#9)Au;P=B@e(ia8W~Ml0er(le8(Vu z;sJhP7=JN|TTEcWFNH9ReLO=CzWCKroMXl#g$uNCg&q9E3OZB=IKcwOsP02`%-|K~ z@CIq>X})y*xFgk5yJT9`bGw+g?D2MCK^<4Ar~L8gH?P* mntI=T8D}%?H{77?xoz*c?t0A4FY%J21$)ZeNg2BW) zFqwQ6_4It6=NX<~U@z^(W4eimY@;H+i1cD2DGbm-g_P`R2|Qu}&%gbKIrb;U@r_y3 z43RYEF^MG{VGD_p6=ra4NLOrz1BW_ZaEvdk;gGLi=V;*xzX4Y);~gn6&2SePXqI2~ ennl-ddyR_gDNA<}|4YkNp59S?Js(c=nf3w4QXq!_ delta 249 zcmXxdu@1oi5XSLqs8*v$8AunCfuL<78Uv%%Zn!VB7S{R^Y!s10TBIi;gN#TX=V;>+DcRBt++zjf-+sk1`yF+BVF}+@ zz^o>c!zxa(jzq}{ix_G$5{qHSp@V0f;S<|9=4)brCY~?}xL^ZsNXbW!kIE!vdM&40 ZbDh5HHyt-JRonPqJU{Z(VH~JY>I+XFAT0m@ diff --git a/onebuttoninstaller/locale-obi/nl/LC_MESSAGES/nas4free.mo b/onebuttoninstaller/locale-obi/nl/LC_MESSAGES/nas4free.mo new file mode 100644 index 0000000000000000000000000000000000000000..8325ff1634ce12ac3f33b186642508ca106f374b GIT binary patch literal 2383 zcmaJ?zi%8x6kZ@ea{P?>)kI>9WEm0fQ4Mnbpkf z9p{1yr2w}n_y?$v5E30FLQqm5AyFV23aBWksQBLO?wySgEAM@tz4vCm_ujYP{W5pr zZiMR@+-GqAi2GUGhxgzE*U5XMs0BO)d<57At^!{JJ^=g(cnbIl@NwW>U<3FW@M++e zz|+9*fsX=z2JQfV2c7`7?<@CR19JWr@GS5>AOSxH&IA7hJ`bEj66dc17lDUB&ie|; zyuSs$0q(y6*RXyOBp(J&fER#wfDZw`2A%|d2Yd|p1CZ5E!=mmo$KI>>qgtd9C_YP;^vF{7rkt|eKjJ{ zQyGZ`C$#aRX9}Gx38kHvSth+QTF8#Eo|5_Ky3swA7B)PNZWu8!g|LLci5N@mg*R9Z z4fgbX67+#5?RbZtHN)`8O`NCUTC}cZC!=V+j+p%?_VPsfBVV~_^C+1_S?YRYC-q}W z#E2{(6Wv0h^V8)vjgN4sg1AsQk}6{YOCm2^Uo0-TMbRm|2UV0%6(0y|>``UTN81L( zZc|3mk>G{HDwI1bWEX{Z`%v49U`!DNSDYH>1SJwwRNM3Md zM9*ZI87rOQVP1Ga)*9=?m@J8eJa(ca5O%1a7sBLJDnX1@mVvhDnqi(HHff5TvPp>v zs_JH{I}lP&gaJic_1euxdqD@KZoE~5e${gdnsH>YMqChun6$AF+o2>?3O}uP4X_AAo$Gp$wnN)g}#b_P* zt9!ez#+PSt%&12;Ue{fdVC-#ixubmJ?RbMU&y}g}7)q2E%gu|;C<{Q1q6{#6CpY?R!qE1d8!XE&A9rI0e*< z@s8C#1WtO5UwM=>fC6>x7*nSpQ5}SKOBms_C0s)A5QW}EL6z(d zyyN}|6W~W>snc#mHwZ7+{((yIJ#6Ga?d!@zMkW)IZKh)-df4R9?#xR<^HVC5Ya7`U zLxa|qm1BZr%WV^5?8q=bF5#dY!XWI+{2|=x>~P9-R2Xl1tfOdAhyXXR#W70rw)joq z4PYe@2~sLM!IDYCC`(5PBdJV<#DUDjn4Jyg2@P2&tSL4KE((u8i#_~Du(h)J(0~f7 zQi8>>Qo=NHe8(dS(z^*&r5s&N1-X3*6$QD0=)ZiXF0u934ZHY|Z2W)}I#EDHj=i)&aImsx@y#G3A!*^-{BPF3|R z!*xkal!F%zM$a5gOgwpYP51*yNIZBk9=z#EkN#eN%uEcilb&B!)%*OtS8smZzvo_n z=S{qC;eCkrZM=7%zz?3iPX<8~xDWUOunk-Uz7Ko`cn7!-_$BaV;5}dscpvx%@O$7Z zzz4t=fxiGdz(0U{fbFLWyJvx{zYaVM`~)b0UjXaCKY{bW{ZL~4Mc_f;T_EfI0OYuT z2L6TEe+Qn&`VoTUxDPxV1Sf&>z`ejvOH{zuu(sv;bKvV(e+7IMcpu2T{0O`bd<2B) zpa~kO zk|b|=sU2JBTQkhJ+}L?JJR7WN(Mx2oQb|m|Xfut4pE+{D+H5efvNH0v#ZPCFwcaVCS_Xrg!l*#7-YuG3?>%nD%z&2ze zg_Fb!hgF{LG?6Y6kG6y!NJm=&O!TA#g=v~7MC!6AlFs!rP}T@?*;!7Z;R=PqMBF&t zvvl;#N8ovwAvLx$&I7A_C{4!3(xP&f55Th_FK&YVejiK~UZ$l`uF4PLKzYs;5`B{- zW?Sh2Hq*?LwANTh+tNykrH3UM=K(w9&kHiCEINUxDQHS_xq)0OdDL~{zaDg~`3zx( zYjJq3=#F-w9V7CKn`^ZVnWC%1bvICPcs?7ruxr{>>s;xE7tqq&_~A18sZ9&b)`_rr zGF&)D&6Dkg*5T$tvkAd)Lyi>p-DBn6T{zrqLGF@pKI~ed9d47cZHg@S=xL?<<~?!D zHH1F{Aw9^%K!#l@hW{_pCTnWzYwIi1yjqQB4ObJF4W7m+LiVWl(KHcCFLEpXf<(^t93YL z944@FBjv@7)KrIEVF%Lx$7Zmq9(=8&%@Pt8V{LaQA88p0+zb#t*xhl;SCdVk#MOz= z8A`LeGc(^Fe4`}hn^pKA2UD@UT}%bRJ0ijafJQZ4a6@pDoGND9xyY*#98@z+2H43& zqHbezqEelzV7Z)Va8h1PR?fRN(~~W@3pNw4hN9?rK8lq~jaEIC;Bca#O~w(=oYDN8 zJ9Gp*B*x__Vb&RBT@1byeUnW+3*1 zY(|kFjHj|>Bc&0u;Bv@D#rMQpSx-*ur|*h6xM_#GJKlhP*pQfis;G&#T)8TrVjA*) z)KyF?IJ_mJ%!^_kA|LQ0sF;#@Ds&AlY=#CLk_H9&{LJ&vDuOhL#PdWnnz@DnTn$*z z8G=DOBl(Q$E~ho&s1o+U!;x)bqDV?n+`JX)k8ik{E)=X@6;tpkkjXEb@c5yE8N(*ShjFy-=?zmXl`5v|C_u$+8Cu!tk`J2zLjgacDnZN%uMgZ Fy9ZayCma9( delta 264 zcmX>hxl3}wmwEvv28J+J28I9z28MKY1_lWry#q*V0O^ZBIu%I&0@4CNI)Q_MK?Fz_ z0%=Vk-3H}v0Mc?m{!u9Z36NF?@_zzpc_6LG2{G3ZNH+laQ9v4G&TUSHFa|Xs;{#AY z8AywBF)-KxX=@<807zE>X%8SR&CS5j3#3zkv@MYS1f)R*81O(G;tHfe;`u-th#1yx qKFRomnb%0yz*ND|z{=1<+rV)0E>>wSn23?Z= 9.3 -$release = explode("-", exec("uname -r")); -if ($release[0] >= 9.3) $verify_hostname = "--no-verify-hostname"; -else $verify_hostname = ""; - -$install_dir = dirname(__FILE__)."/"; // get directory where the installer script resides -if (!is_dir("{$install_dir}onebuttoninstaller/log")) { mkdir("{$install_dir}onebuttoninstaller/log", 0775, true); } -$return_val = mwexec("fetch {$verify_hostname} -vo onebuttoninstaller/onebuttoninstaller-install.php 'https://raw.github.com/crestAT/nas4free-onebuttoninstaller/master/onebuttoninstaller/onebuttoninstaller-install.php'", true); -if ($return_val == 0) { - chmod("onebuttoninstaller/onebuttoninstaller-install.php", 0775); - require_once("onebuttoninstaller/onebuttoninstaller-install.php"); -} -else { echo "\nInstallation file 'onebuttoninstaller-install.php' not found, installation aborted!\n"; } -?>