From 65e8ab41f6dd20e337bb7a17703f698805f532e7 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 4 Jul 2021 10:23:53 +0200 Subject: [PATCH 1/5] Set rights --- check_process | 15 +++++--------- manifest.json | 2 +- scripts/install | 36 +++++++++++---------------------- scripts/remove | 15 +------------- scripts/restore | 20 ++++++++---------- scripts/upgrade | 54 ++++++++++++++++++++----------------------------- 6 files changed, 49 insertions(+), 93 deletions(-) diff --git a/check_process b/check_process index f0b8ae9..6cbb6d7 100644 --- a/check_process +++ b/check_process @@ -1,16 +1,11 @@ -# See here for more information -# https://github.com/YunoHost/package_check#syntax-check_process-file - -# Move this file from check_process.default to check_process when you have filled it. - ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - admin="john" (USER) + domain="domain.tld" + path="/path" + admin="john" language="fr" - is_public=1 (PUBLIC|public=1|private=0) - password="pass" + is_public=1 + password="strongpassword" ; Checks pkg_linter=1 setup_sub_dir=1 diff --git a/manifest.json b/manifest.json index a7a39cb..85ba6d0 100644 --- a/manifest.json +++ b/manifest.json @@ -15,7 +15,7 @@ "url": "https://computhings.be" }, "requirements": { - "yunohost": ">= 4.1.7" + "yunohost": ">= 4.2.4" }, "multi_instance": false, "services": [ diff --git a/scripts/install b/scripts/install index f2b36c8..3156711 100755 --- a/scripts/install +++ b/scripts/install @@ -67,6 +67,14 @@ ynh_app_setting_set --app=$app --key=db_name --value=$db_name ynh_psql_test_if_first_run ynh_psql_setup_db --db_user=$db_name --db_name=$db_name +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." --weight=1 + +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -76,6 +84,10 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -84,14 +96,6 @@ ynh_script_progression --message="Configuring NGINX web server..." # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." --weight=1 - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -133,16 +137,6 @@ ynh_script_progression --message="Modifying $app config file..." ynh_add_config --template="../conf/noalyss.conf" --destination="$final_path/include/config.inc.php" -#================================================= -# GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions to app files -chown -R $app: $final_path -chown $app: $final_path/include/constant.php - #================================================= # SETUP LOGROTATE #================================================= @@ -151,12 +145,6 @@ ynh_script_progression --message="Configuring log rotation..." # Use logrotate to manage application logfile(s) ynh_use_logrotate -#================================================= -# ADVERTISE SERVICE IN ADMIN PANEL -#================================================= - -#yunohost service add $app --description "Accounting free software" --log "/var/log/$app/$app.log" - #================================================= # SETUP SSOWAT #================================================= diff --git a/scripts/remove b/scripts/remove index f90307a..e534dc8 100755 --- a/scripts/remove +++ b/scripts/remove @@ -21,19 +21,6 @@ db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name final_path=$(ynh_app_setting_get --app=$app --key=final_path) -#===============#================================== -# STANDARD REMOVE -#================================================= -# REMOVE SERVICE FROM ADMIN PANEL -#================================================= - -# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -# if ynh_exec_warn_less yunohost service status $app >/dev/null -# then -# ynh_script_progression --message="Removing $app service integration..." --weight=1 -# yunohost service remove $app -# fi - #================================================= # REMOVE THE POSTGRESQL DATABASE #================================================= @@ -56,7 +43,7 @@ ynh_remove_app_dependencies ynh_script_progression --message="Removing app main directory" # Remove the app directory securely -ynh_secure_remove "$final_path" +ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION diff --git a/scripts/restore b/scripts/restore index ee0ce3f..bb02c13 100755 --- a/scripts/restore +++ b/scripts/restore @@ -48,28 +48,24 @@ test ! -d $final_path \ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# RESTORE THE APP MAIN DIR -#================================================= -ynh_script_progression --message="Restoring the app main directory..." - -ynh_restore_file "$final_path" - #================================================= # RECREATE THE DEDICATED USER #================================================= ynh_script_progression --message="Recreating the dedicated system user..." # Create the dedicated user (if not existing) -ynh_system_user_create $app +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= -# RESTORE USER RIGHTS +# RESTORE THE APP MAIN DIR #================================================= +ynh_script_progression --message="Restoring the app main directory..." -# Restore permissions on app files -chown -R $app: $final_path -chown $app: $final_path/include/constant.php +ynh_restore_file --origin_path="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # RESTORE THE PHP-FPM CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 0b187c0..10b9be6 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -30,6 +30,20 @@ phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) upgrade_type=$(ynh_check_app_version_changed) +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up $app before upgrading (may take a while)..." --weight=5 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= @@ -55,18 +69,12 @@ if ynh_legacy_permissions_exists; then fi #================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +# CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Backing up $app before upgrading (may take a while)..." --weight=5 +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 -# Backup the current version of the app -ynh_backup_before_upgrade -ynh_clean_setup () { - # restore it if the upgrade fails - ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -93,6 +101,10 @@ then ynh_secure_remove --file="$tmpdir" fi +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -108,14 +120,6 @@ ynh_script_progression --message="Upgrading dependencies..." --weight=2 ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -124,20 +128,6 @@ ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=1 # Create a dedicated PHP-FPM config ynh_add_fpm_config --usage=low --footprint=low --package="$extra_php_dependencies" -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions to app files -chown -R $app: $final_path -chown $app: $final_path/include/constant.php - -#================================================= -# ADVERTISE SERVICE IN ADMIN PANEL -#================================================= - -#yunohost service add $app --description "Accounting free software" --log "/var/log/$app/$app.log" - #================================================= # SETUP APPLICATION WITH CURL #================================================= From 28ff1a3fe03d1777d2b8f115bf72bd0ee4990bcb Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 22 Aug 2021 14:58:08 +0200 Subject: [PATCH 2/5] Add templates --- doc/DISCLAIMER.md | 3 +++ doc/DISCLAIMER_fr.md | 3 +++ doc/screenshots/Sélection_099_0.png | Bin 0 -> 61746 bytes manifest.json | 6 ++++++ 4 files changed, 12 insertions(+) create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md create mode 100644 doc/screenshots/Sélection_099_0.png diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..b7ead97 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,3 @@ +## Configuration + +At the end of the installation process, you need to open `https://domain/noalyss/install.php` to start using it. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..4bb725a --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,3 @@ +### Configuration + +À la fin de l'installation de l'application il faut se rendre sur `https://domaine/noalyss/install.php` pour terminer la procédure. diff --git a/doc/screenshots/Sélection_099_0.png b/doc/screenshots/Sélection_099_0.png new file mode 100644 index 0000000000000000000000000000000000000000..576804abb1306a52b81631c7c7281aa84519153d GIT binary patch literal 61746 zcmdSBWmH^E(=Lo_fCLQ=A-KCsAVBaSgG++DyAv$91$PKGSa5fDch?yhoWbpo`+nZ{ zJ>Oa1kMsAeHEYe@J-u71tE;Z7s`rF_Rg}g+BSM3Lfx(dZ@>vB21`!bk23`jR?zP03 z$M*2`3*JdwMhyi8Wo1ig^Y!+vv!tf8s-3B`+jmD37*%r@XJ->fqaTx~FfbG_GM_)G zxi25BnR(*^Rywy{tQAfZ5mZou*1h7^Khb~4LkXu-7n@xGRZ-%(fg-!Cg4iK_$r-=9E|v4%|dYx&K_S8Hm_5=APlK@5&nsVY}2 zC+fr+8i{um9<8L^sNp|=vYbCHp;7IXC$~lYEs<8rf!G}&(Fpc{yc}-qw~8&kk%wU| zA8ecyQuv+rBMCVzeU2?ZagWUIHGzIZ1kCe5S*6^eIw3K$+slyCzTgW7oW&I9o zcf0N~*fkc%yH}3CYU3DO8|;71Y72v54*wyI;&Vz>0rTwv7fQ-+L>^P>Jrx}LFogJR zqsHXoD(3qtli~_>#eR(=rmzt^uI<~A-i0q*{5pRyaAa{7?k9adq)!92OeljIqxEhh zSljnj?C$o7@%{Q&YEmcDit{4S+r_PIL$@dKFPKsY(I zL3O@bonUHpb>U_zP0hyPo+5o;^nk|1op>r~q4URy+Xc6JyvhlWRrJ$N_N^14f}UIh zJ>Q^UC`vHaHD?Q8sC1O96Y}g`8#b?>Au_lu;eME58!2V2E%!V6$D8X4<7G9Z#l<@= zDT)|gq)RYaVf$bP@!7)L7urf;nM-bKJt+wz03u_V2JN*^Xi+MsSBew4kKNv&YQsO2E^!XO5hk3OQ1F!py?e zGlOoPG+V)ZDeD*!cBbifcg)XdJLgrBVJp+_rwVWK8(XNuqnJ+x8RAz_3B*w-S@5x} zpnCUQ-W7?ZNEF`UD#P2N@kyCnS}d;LA=4dl=4bQJY@pZP;b^qfDXmm!sP))mE7D~f zon(w3MSwP3V3_UrpYKq+zT?ZqYlM((oB9b_7Zh|ocd$*?Ba9MEnVA;;z%Fy7E&AJ; z6tcPDMm7Ud1ng%vTfu`X(xI1vtRyOQcW=hiV-v@xJR2jTnIcw+boMPjYwtf$F##q` z<+jM6pl$f?SMF{sxj2iN5-G_w0Q@{DdY7~irIX$8A$PhHaQzQ7s{7$cTS}IM^@vU} zuD96Z=sS0NHkc$muJA;Q)&Bfm4ws+N{k_ai+K|aPOZ7o(`0~sISOjNtJ@T4CsLn`C zH2&+^=OcWzh~9$fE=KNWQqXUT-&B-DgfX@MbW=e+5=~;ZbNy5CD$l$$my(*?M_5%YR0(X>WbD~wZ!N954O(ih_$$ehuO}h?}BFa4eivcn2 ziDgVz|KnRm7+b+F9 zP3vsDH(?$5;PI?jKMpD`3ID;5CiN8x#xpBr>McNS$FzvjOKXIC--(L@O| z+{=GLA@eZOVqZ%jb|mYqY&{q8RYm=eh!`tMmgGb#WLU$)B_C)pbLh;_=ts^3&QjC` z_2!#;v-d4O>y_;JaGYT0N$SftpW=RP^mK#VE)M9QAJ7r;%e1_CqBqDucY2D+GY22^ zGz#Y=9ePI4Sy{#J9i~;BWLAEzNSabF!0sE5&rbHw0pI*dtZbjf5kE4mwS?S^BgeB{ew$J1Ho7|8uYXWsxR{%^9mOJl`AXIg6>Pq1W*@_|>+YTeB%dYw+z_QEOvUanp~cVzx9=Mt ziRyk3FMASBC+O=Y6J;BXjg3EVB?r|NT>yBa@_<0#XP59NL+e@iHStrh{%NovvBDd5 zv>P}zy2m+I9>*!>cL~i4UcTa^-&oZE0Pg;0J#p#T853>XQWa=R;bU|(_QLxIH|ROM z#Fx&fD`%ppD!=5(A&LAVXtCf2|9E5W#Jy5rg-bVR1Ml){@}Hr=G+(w+RxxGLX7?3t zvLMO;2`x!Kny237uVmJNR!(H$n^)xY-Y>G}paU;WUvys4i4FQ>hs4BzfW1eM*NJ;P z1;%dm*84G}P5tj9AwE;2)GQ6*KN4F)*tojdM$bw_tN{}C$957aYOyqI`Bl~Xc=vXY>J!iP;acw8R6Xe znDYk*Xu20NtBi1rT(Wr#+?yqESx(+ae{8wK>GaUTQ}-QmySzxr6$#N!mRUnUOy1P8 zo%KsgPcOP7?SxjOEhl8fgw z>Xt@oQ7dzF1z;gUgzQy^=!68*?=BRyMWx{3!GsTV4;u{nt+KhGbZf5|sAMhX?_+nK zj2gkimE!z5ohI3y#xawYKK(<8GOn{NS6iF_r-u;*(Vx8plb(%{DQj?WL?V;{T|MR5 z(;E+$^gAgZZy59CnQ}(ytDbaC{p4(xMwU`O8wof%RV+DC{`3w>;tuD>(`g^P2blOF zgjJ@Bc+f-AG_ zUUwc9?XM8hj-k?oH%%I&UpBc`8E*6VYX4(rG7pP7g5TV`kurR?L&oJI5MdloW)`)c!0t)X-56nFVoPi~!&I(jzmg&JXcbXox< z*jAA=s!im)%t=BCx!n+{grSs79;=h+XM-$G;<_rNQbK5WpE(Di0zL+vdc>45$1+#B z&lk}oPv~vQIqPwwms9e$Vh#vwrxz66zEyZ~ej;)|;U9%JV;-n*}_ z(pzf=MWEmFbOEQ7=UCQ%6goR{AvD77o|-({`gY*xZCQ@)d|Bzq6Yfj5wD4nvC}Q7m zDia?}r7HBrK@DGf?2x?^OTdx*)suyv#n5JE?jwh0==dm0U*=y=m zBkrOVVH-Y!(UGgu198Nsl(swyhaH%Esm+CBesQTx;B;gX@}AAeLDRqAsH+nhFd1%% znNDtcxFKfd&FT{>GNu!lZNTmF+sw9HD%<)-XYS6&Pe!Dx7vt$f}IY=j5Ny?!R|Iu`S!^F3I1FVzk6Nw32=3k@ z6|gZxMKwKwYxn)7UWM?$xeKTUbbjhdB2-9Ktlgrf+su!7??z5alj}Vkus!p+&y@8> zw!J6d=nQQ9OLPrznx#(_!nn#G991;z{KTMG)24Y5t_RVhWA5o&VWv%gz~`X&DVn`q z!zpye65=6ASv8)d^&Ee0jL+F9UlrhKcaPC%1j`BV|q@s z-2Vq`*X)e^H8N<9diEqqN31Dk0DN}cr-A(T?XaNjXQ<&2x)6y}jQRRg;_B9~2&En0 z9+m8n6Gc4vshypO7*;2;yfwc?M;txjOyH|kx(?&U{iQ7nmz@;~DEi%)OQs6qi2FG%~$Kj(~HlsbiaI+fJs#MIEwMQM=T+GihtF#YS+Y=EWDh-lhItZKzk$nv z)U~?DTnBe~gUl|@jw+~DJ49m$2_xgnN9-Ay=qs}YdaPNIsc9y;@?@1e7tnfA7S~nYA}Ekb-N%+x3y{5=Wq2-pA((ZQhb7aO3-Z z=p*~w`GDxrD@QT`+Q%!4r}Nr;Sr47C$?zKvF$D9LgEBO;J+;DG9FL@&Q>XN}V(lJ3 z^z0sTxBC6r`lf9vI~7&{4f@LATGnI=m^<9fWOFbf-54aCMBG#!i_r8z;FUbT5So`a z{JJS=mpw2!6T`Z(bE|m>f#s;bc+y%HiK>J{A`1TccAx|8>lp?ZT1B(7Gh2p3bNwS2KarN>?}dI6u?Z25 zgrM09UF+_3WhJr1IOO2KdsVfa1zgc3y>!J2aDT;;fM56f`HaPWd$k>CYf_5iGPSfJ zF=aRjWB#VEL63ym@Fm*(L`40_$VfCxBm8iY3Z5Y>wA7q@APT?pSc$Xw9U>wfEJ7B& zwiSyLatAH^$4B``D=wF!TOYf$HQAc=$L1n%_efe;16g^|jx$T%!Pjlk%@owlsw#%^$&A|X&f8lILM*-&5I~+&1^HpBl_JduvN=8>KaIkGFNYYr)^s#&J z+aQCJISIKcPyqaDmbS-&V8H=wXkvHZVMOi(hjB>hFrfC*yAMVGgLP4jj zHNt>>o!BO4x#wapdM4xF2^A9D4u`Dz9{w58 zZ%WW7H(~c5JB3O49yyF!2z*}7R$r={&{s|>n!okXCVS}NbeBn+^CuYev-fs{GoU-9 z4#)6C$+e8He*R0 zGV#Ns5spZERes_vnNKn+GJ7NY4$TxL9K@r(P;hu6!Ymt<9txh$4h`LLOo}l8$@{dE zg&dRGvG-ow zvxRWwYx&62(6CZSDcw(CV$(Yn7)y}%#I#tL-mrD-@r7%z%Bnk#&6#IkCmClaXt@zX;2BR+DY_7lWugkMQ6YKzllQ0TR&1gHS`$k~lvY4viH?0cG+O`=F|`Ed)CRX2fzXZdn_N5zar5Xae1{ZZ#Z`t{8o`}_sMEo%v4E{G{ zy5rQc=OYP`ywJ$Tg0__<(gE5r839w*sqH-GK`)#2syQu@1}HkJ zkPjtBXK|mTjx!6prNb0(nK_&M{{B~$nNISpODO1M!P0&Te|OB|sn=I1TbHMu254t0_kQ(224^Hs}e_rn0Gj@?D!f z1s36ZexYe=-q?}Mx8c5#L=6;CpCGpn0zr*Tg?#g6-^c8%V`zbltS{Y7sD z;M20UQ!Rv^IUXc5tCLRpHdt_Yk}yu+`TQ&@zzQ!Wp{~DkkolH1(PtkMhm`Fq|Nn=6N^zM-*ise zFkBpMEFq31CrpY1je5QNy6PWFFodYPC3Gk9DJt5Am99`s*q`rZ<-Mm`Dub_mgE!h% zu>;}Ei*bT;tya#ULQxNMvBWH!pGYBKi+sbVby; z{XQ3@_zFmu8>0Snd+=R7%V<(3^1`euFr|>KfEx{bct|q0e>-)@88hDCm1{dh92^?c zdOjM*d-RO=8(wvq(~So23DY?98N4(@j;D{t*!Mst{0LqP<<>481C~2WhlUvmT%U(f zlEVkZ>YI9*UDW-y(fo5B6D)amZ^`JBQS>#vso06}E<2zI>!LRQg)2SGgQhb%(VN!z z!2=K9RkhIvhdSHP;#%nNk|2{rm+-AZBB{%kSB#PrNH zTlsdWz`Fddg7gZq3&^kIvLpQEY&X4(qsDzCtSl2nJt@)%s=>50s&Eyay)iXu%0Wyk zI4q_i6ZaW0KqBRt-i8Y0tl->U3fGTrynxWHYsbEk(7zs&+^18|$eotFG^;A2k-4n< zK?rl{=ZNtfr6*#K80KncODKCoag|-!`N7bNM3aRM_n{#<7O`&1N`z!ZvHF|1(fgzp z5}NICcsGt}oQTk~olqv-u3yN-H}8pvS=hZBe~3J{@&&IfpIgFwKRzJy7{aSQzw~?m zf=HW9A)INlVP7kK4gjM`F@0AjZFNdq1Nuxj{S@$C$~wI!(uiHm5v!}yFUdPYXC zuT|#g3k7xJafd_RQ8K|m$3z6_l4E=%ZhhsBu~jxhC6{)roEI0I!J$_WnSFqmEb&M|a@?H3bh%K9?=85w@bp@hXQ6Mshegs{)RqOo}g zyEA2J)I3<-VVld!kHxcR$#o|9d>Hb$fjhgD;SM{ZR#?m6`JzS0;V=duwIOn15#U_` zbik?u+DAmeR0If$QI?2z>Ke-B?d;H#jpvecmL2U`4oey(*Zn(}Z4bk56Vc$@AQ? z7P_Savs#y9nlvr8a1qygBxm!A{Tp%BoS8A zW(-QpaM@}0)`u+>_wVM08)R^4vx~$F;wTOZQ^Du+hiI$}!vLRBb!FVIm5zlk-`d4d z2v1*sEzinnI%oFHl#kGAJp7YV%o|%-^Z^ozLRpbdamN4xg&;69_HuX`-TI`w6!1w+;?olfI+N+JdaCmD;Lf)6JUYoF>A|p$f)z`dDq+ zArn{X5mxnR;S8rYsFXo(w+&cWSZwbu_O!IL>MAX>va)(YFsvqXJ~0=Y+5jWC;%bX# z^IX+FZGV5Q{C8+?7pU$o#Q*0elPlnF`SbDi_O^P3uE$n)@UjNCfx*V7K%_(=v)jsw z|88e{8c1>e=Wp%L7!P-#Z0X4N?+6LC9)PZox98-(x8Ij*E$VX8>PlFqKTl_=M97tP z*GXk1-~drbUBc7_?LfHTZew7@m8v zgVGujm!}^fV9N3FC$&ZOpK<<`shl9=?^0)^V~xv_kdZfkW?!^k@MNcMNu zLAOO24{_1?D87*i1cO7M(QNtChY7#7-~T2!Y9rcIwkHLxTf-`8b2}nQ%FR+bLJN`a z&Y><&V86T``_@yCJ%bki?}76Ry&$mFzPn6i`*0hCffSC^t(=ncHF3r{jFgTweDg=_QR4#u|Q%!d~UFf(np-nS&;_j-?en`;mrJILUVKN zV(*hso8enETQ051q*UGwXUz7Sazd#{fr+v!Qm=C%W||@Cn_oz)Y(1I|BnTUs?S;T0gdA5iV{T58sza||jLznHC0|P^x4w`J|UTc0^mJ`I`NVCK@ z%>I8yK#>Wisxg(Tpzi+hR;P~4XG-)x%@R|+ng!cy%QdCB1Do>0Y{Z^W4(m5Za7?gz zgQs`)azJX+B6Y1A2CZ&@X_`bDll?><`NuYJ~_{ zBTQ9UV6-Apm_0pTE<%;27r2gOGEn7P=OR{;|FjRkJ1jog6I?9epbbbnQp1m~Ftxz! zAyQw4`~L)IbBeu1gVm!@(M<{pZ18nXt*%AC%_PiHeXdpF5Cis5=Ny<;f{CTvp};K5|5BFrs}u;dlu>J$ zS6wj0JLcZ^n#%(g;v9Cqy^3-NwB=l5srWT-f(cp>Y)TGqlMV@J0RVu_!C?>kp^>1R zmD$TkpUF!J&q+yEZ81>tskl-F{llPiix_q02QsP??|GJdrwW7w6QjA*=e=rk*x zR+2@=P;5u$q&pCqJty!qYn=Ytk1sIIhS|$FA|`q#Yp2-9vX#?7r>z;d4$w;H`vPpV zQS!@^ivFr<{h9zS9ROx-D33*B2KWpJUIibPsCFm-#s+5Vl@GJ|fxsmEXY7y(VrI2f zH3NgW1&ynyuNr2>K!6^<%&~yZnuv~#Z%3M?i(!xeuq6=F)gu#V$b5pTj?r%EA1X_F zb=dyGGmg4fVr%Tr8Ro7HHNp#MELH>2$+dbfs#Zgc&|!-rc>tQ~;Cf+0^Og8F47ClCtj?G}ZA>KTVy9XhDb(p@070*0G z8{z(evnk)gD|_H$(}QMJOw^Nm`@t)8-uu>feejd(MK- zrW_V5MUK?>>tHLZ3US)%9;;DBqg1uj${r*IG^1P?H1zKSrB~mtCZT)c4mzl{uKHM` znd;d={qdEUcXQmGq(z;@=oEy%j8ooxrY;Bd8%@01(N=pJkv-I={?{2=qDlxi6W-op z-D7Tl$hKp?OU~=7yH)w3%(ncb?|5a$=xeE5es*hk&miU3dBI$J6Qt(ZFMy^vXX!nw zUY8rQHL%9Tsqaa(81Lc5TbgiijGCkW&00{M#z}{%63gfdXWHC=vEc=rA#_(@lpRAd zCZgWjspRWLlR1V!-x7YKK;)Ej)kPmmvoot7n9*vEV4m%X!oY9PpSH=4d!`#WUQi2C zv(AR(YiKODyun=F-Ik$me?62mlQb=uB7A&Hfly7lu|a?Aj+VBqO~+vA0F!N1QMCoH zS;LnanjBrzw0ZE^z>!Oz>lsf#6O4DDwk$CEeyF^rX~%~vIz0JF5UBFZq{hxV02qP8 zfITT_+nY{k4jBUd?DJ{kWd|5ALM54{UBrq73#Urex&j?4Q zZp0SB?S70i1iBJ`WZE;w62LbYU=)!*>3=NHEF)PQ&orps*Wjrz)Ar(;8=7ikSC-by zf{A?;Y^i3MhkJp+%1Z6h$oDY8XySp<5xJXZ(4K2xziI1E&%Co`rK_p_+mDVH0Ra+7w zb}>2+cwAvx4D_5Rb5Ujv(0y0+-R$yIPl9FuX6Z#M3<&k>ri!D*nEjrGThzdmcdI z@H%H*PCgvTjjS<2Ltx4lZa+Z&=C=((RQjbZ5!E5V@g9*}?@g`c=g($vrX2Lm;pRmj zyEsLdbOTmaX3;76VrlXhGgXiAZ;yPC)}mUT_AZR$H>g;!0@0nkwoXGUdApeJC@}jr zmPoGHy>Gdk1mCUwoRT{rf_=-^>wx}9m3L|~lm5t_Nx|yfY9H~Tf|diuiDHNZW3f>Vqe@f62xA9^Gb1wHFw2>CaoE=;&8;VU)Z37Myg+UK@;>zrL#Q1@qE{i5sGJ>Bc@s9ukBIgP5055BXMH`X);qnJY z`@cXq&$X-w(4#V!m3w$NYE|r-tU9)Fs_fNTvcDMqEF`26l~Qc_A_#HJblzWHD@C{Q z`)u=^p}n~~Pk0!cGwsq*QOct6N@K>7bl1uML3_nVHi6ozIPuY2ddLI?;HY*VFBJ2i z`q5R;L%--fTvleI!(K~o1?OYJ`0X^x{~&3bBKsYk+YZTy`C2qUdYfx&tE6-7gSeBUp)VV*`Ke3goVwaOig{ry+kNxIq6)Pf=e7t{PizwU2VJy?r?^Y*Ub69RHE^D@PGRG z590mX<^RK%|1Qcu)BB%G!zR1W?O8DC#``OHsI?CBMQiO}iM%%W6B5_^zb%TugQz@WQfOh>z0uR%=o>(q z)N3vKkmQExa_P-S4|oiz%!HP~Aja1xbq|*6m(R~6RMn5yoGM-v)UjAC>|dMgrq@ax zp1&HxQqsG7_Ug%4m88*qE#8)$s2``hY=z#}fdsE=hgScZ6~2iXx#QWHdf#IYkXsz8 z#^1qD*VxqUY-L!_tx1rrV!w_OIM9=DRAy<-ic|4AXomu`70ZGD9&)dX`2TQ7Y^+y; z{O`mTkpD8s(ghdA|Clh$X4I9uDF`;RV|5-&6l6K zXRLGDvFVxKhr8DbEiWQg_cyD(0HJh@G*_eIDzMU=DZ5EQQKk^~%|KGV%pKlg?t9`l z%?HuyS@oBG9XDI!HR=aQ;*VCQI$@!GR|0y(j{>WF?%pwMybl^whxO(wp6)j;FPSZ4 zB}4M;vlg51DG7=NDU~WHQqK#v-7+Muaw+G+IOneD1fhNLD)X@tb3l*r#$UO!P~M z=YLCHe)74Q@Y@4rrUHG~NS54YjRFse{3nTREj-+xE3DI<5h$OjYs!0jwwvFCtaVEZ zvAJpnA$^^}X*iYPbLldKo=2E3{_!xso-laIJTe9s-`L=m!GNNF?;8|QLgv`yv3`>Z zCadn*xYlj19x!oFHk({+;i87T>bEYUcFes?l>gmrQeXPC4bnpApp?&YXyfLbi+gF} z!;8>UWl9X!iSm^$?8rH@fvqfOK6|5=be-i4^Yl-*nJt@_TdTF;yq_97^TvzJG1nOL zv4noZ?^PETJ*{6b2a;@>zSXoyOm20ZD=b~_Ji3(NA5e&7^bQT5ioAz$c)slPq#aQCv2T~eA`cH~5t?a?FXkSaIS83>uffZ8jMrh?+1@10gc zZZqQVM&FXWgNt=NYkk5nh>~`D}H)x+*D15xw{7{=K6RL zubty^bA|9HOJR_q348F_YlzCp(979&aVx2+jeEcLcgIF1AijN`w@_xn)&`kp8dkZ- z&g*+lcv{0vsa=PNZToID>R%_a?bz%sHbHq6B{toUwNRvM97f+)GgX_)%e}DDrpDUp z(b9jl?{jt#*PW^fA;&XDn8wDDORArCuO;!llxX`Q7oz^zcx_%Ut;`p4S-FG0urZ0m z9c}UU(8!7S(GaULewXUQVg2DOoAY?l1}%Q@d^lwe=$3s)$Me@N`8&M1rn83C-F(7e z9A{-qLW^?p>?yV~F#4>c63a+U9!5#yeDX|RX-W>1^wkyulvjJYA7QM9w|;Fm4ZL5i zibId}<9d#4k^;$=yMY94I~vN(WUk|s<7@K`^Ng>iu{V_XJ8CZyk4fyM!a;%+9W`;J>Wtx*I%UkI)3gx@-O%$-%Oi=6?GX z>!tp5o6)r7j?k>8{GFC`!!iFmKbnz4QtqRDo-3}bV?jh8mt8g3X#5$KNDNyd!SZDC z6s61= zYvfO?dk;r$d-C@=#pe8VpL4+`_7Z;nm#8v`Fai^kC;4`Vdx*a)pRUyO6~+_8HAZ0F z>aK!DJA9X_h1s#(Ho#I5a-DkzT7(5*x8T~$3f4uv&*OP_W~#cs#QCh(-adu+2MG+F zgiEp06~0Ec!Zi-a+|_xom*qrr15lI$r7c1ow)6dzjkh50ACkxY`~}`Zg7wUG2VH`v z&&YlceYLVGoU|;d4aR+_Ez*N;k~LbxQPE!2hM?$*Nmo8%vtIROMi+AU4yylgEsqX;ri3l1)ER#{-#LXS z;*CWr{x-1Zp)XBL#vByF_SH_0)RN_9`e}> zX1-0-MpV0+rf!~lkaSaArJk^J@sFD-Ifco}_SgY6mf*@o&1IJ_d-?XPwS%0mwib_T zTkAIem#?p=qxi>Er9C?{ZcJ=!-U8Y!LFsx@gh_cLj>C%Y#o zgtWt2$o^y7ElWKPA-%2g>n|&Te|Hb!xiEldohvV!q#wnE$2U<9*LL9A4D=9A}x;O${G1W z3Aeuj>1F;3L+miCvBnkM#iH%8EoanFTe2i`=?`nEuD74Zf3)7gp)bN>?^LVG*9%B5 z%KPB0a#2$IV;Z#p2_$P>qT}m6;|Koz{7%2Wv;GOG?sx$*n6`KN>oSZ=>Zg4)}a(z^jXH+?!eD z=RZ>76a3d7DPJ-n;!kd!K*|GU_lcwIE|JMjmOf)yNc-JAZFcoSq1FlQLz6`z$VPI) zYPG+dUl$)YU#XE+Y&-lEpPVtd)^be5Z5+)UJ`Wy4Y`FxX1yrXOPV+n)D4FekQ4T_N zJ(VO#8eyebP2h;INGwd!U}^6-+TI&lvv}3-xxB{E;0M@wPRPPb8{@(hJ~yuh++y|3 zGjtB>(q+?JPrh1Y@w-$mu$}5uxaQkQz4csJB-heF60;1mR@q3BpRd7duEQ$x3}%=G z6^V|h4L^rs!P=?*Lm!5r0C}=$xhd5@d?Rl^b)wH8M++td+;!}OW&Ndr4=prs*~L5$ zc_b{jl6fto1P=U&T!(@5Mdk~Gw|(ihp>`iRle#>8C{~eR)<`%3O4SPbB;qXA!0L(!F+AR-WTv4-luuKB#94s7VAb36zgAUw4q!6Hp++wmVZpEBrpnG!@&n?JVr{84@ z!=u}}y2=!;q^WlEsSSA^aZpZ3&pEWA+fdu`r0EG{{`T|YpLE-i2cMoP`Gj$93a;PZ zt>sl4p6vYou&${$i+yp_wQOJOCD-2|{*%EExc&JnE!~wNoes+|1bUQJZD9u-6Xwf% zh!yei?wm5z9&#wzV-;d)aYvlidPV+fa_5HH9$_+xh#s#idPp2e!kt3pccl1*FFP?p z$NkbYN;u$0ekf}StQm)6u{%4ns%6sn0_|H#(6(}e!$^7vk0ZQ_>ytg3k_(Sdc~LgH zf2l@JvQg4~JZQ{2@$9EeGQxnlq4g>FJ>dfRdT3+^!U-HEeN17yt z_M_uGC3bIV$%qUtlo%_tqbto^1R&~-Ga(yvja<-R3J+^4xdY7f2y|)f6Q+48sl|9RQ!vG z!trM~xCrmNBdcGA1ullXh+|Ui1$^Wz4e{BtZtMIWgRjNbD=G`gM;f88kmoOI7uV&1 zG%0Mn+{j<%K55rkz27!N__J@4DV*v24HS)llcT?QH3MmXvOS(->sEy?tW~9besq!c zJYDIRHYMfH1ii`{hWlZYb)q9l$op&hH3nQ8)SsJ{`tB^Chj<~Av6X{Po8q&A@V5r_ zkbXukpm{*-(e}f^>kdsC<+y4rP}&KBl|obSwFfPF->fp#qK% zo+moIs?fFd5=ilM?QS8wE)@F`0Ahqo!eR8g?f2^3ObQ?)VoEiuw-&W)j{GZ$r|QCC|P6Vj;^nE&!; zMqcTqR>gxQ+Q~aT zzKlD~ibw6KjPU1JE!srszM=Mm=ps2|5aZ=`RBxH!HPKOyeIP$R1f?2PspDY^w(S8h zK=4!&G(4Qc;r8M`wWT0i!p&Z{xBC?p+?-Z}ODccm8h&oy6|m&L9z7LReE%(vS&6r|jh(+ZxgWyva;!gn8e3ABvle#_Z8yEpWLe zQ&X^96EgK|oocIG##5TX{MR6014KpZAafRS-TKRo9d}t~(h7bB1C=$)O(jjzei=`L z`Q*p+U|nBG##)5mW%Jz#N@kkp$v08`+W$HWQ1$|LQ6>%d2T(J0=e}bZbS@)Y-~Vgso1R`tT9dDr9yZ$ z6Ue1LC-#NtQsUC8Ud@)tgjauwvem`wS@3FhHTiioivdo@{O%&|36ER51jI}{HRq-G z@|#+fSJ)sBKM9th*=Q4e27Z3Dv`O09QxTI{H=}UNt)04v% zH<`2|L++ryRv)h~2x6HlL>bLbp-^MuUt@h)UYg*Q2E?Q_eGT?KrLQD5T59z?LHN`Q zT?0=wM&#KwfOyB?RL;|8XPZ}xys(#d*Jehm3rY&ND3 z$2|!b_@QsNHwL!6b1$z?aXQ1w%@i9@ZB|xwgyS+LmI!mTYx=bUpOzel=t~jvd%XXy z2}E`76svL(>^k!F)ZKP?-R2khKt8f_+2#Bgs&vhhCQ@D^eHT^Z>ho-NW&_{jY##XV zw2{!@QU*CVB%W#0NlDZD7Wn86Qmrx07{5ljaoz4wA?CHSna)dmn&=*4gRT(|H}z-dP!u?FDj&PUvViE~F#{?rKeT>asHWfyB)g zHJoIr#4o%VYtG*u(?-KFSYH3|!r|D7%OC|J<-S1cw|3&hsI)Bf!AF~+@B(ycIYy*K ze{ClB_nkq!e=Yyq&(Ijt+t2@twyzFr>uI;8N{f`@4sCEKZpB*&#ogVCyE|!Vad(H} z?yf2BP~6=K5FCQ#hTmuB-20vLJm;mb&dEmkUlgeF=QQr^d` zsAqUp=9Vmb&=P~?X$<+&IY99G`XK3isis<{#$UjeM#bXRb zet%I@DEg+|BUzj%Exuo_AF%36s%gd0xq#~6J zqbfAOrT#kTA^V*z;o&M{Ats%gcOLomuwlu5QqFz9gTIyqZjV*_XYV64D4BI#WT6H@ zCBwG-@hDAQnP!6*rXy3{*X2|tj2x?AXVcU^@rH(2tU*(fkMJD{x&8i7U{lDM* zT)5Tz_n(YArvsLPGQ;P%TFq7(qdjC~NXkf}XnIU8GuAEu-D(4M%e)xQ3Z-9pdaUVs z3#uDcaCSCj&WV6AEF`4WEYPV>jK|G3&n@ve+;+CRE57;C2X-fx#5_cD_G!wpl_Bpe zGf7N#GbeSq)o@&kSpeV5Y;LtUuS>)q4aV2cf*JK2N)T1;9ocY61BvDS(RMxGtY222 zv~gOJk!Yg`UQD}pQ^#bt%QwOIQKA?ZU{VtvQB(SHM69y2HQyU3e$}v8$Wt|Jh$k^J zVxMa=sM{<|X>Ma%Bvq$T8)AIGb-xbhvDaFhf|?VNV76lneawhlR~vRI4w8;i$p{?M zN)<63tcyp=`%?9&TnH_!L}FIHB1PGu~62`S39bug{N~F?`u!7pdrz#iK+8qQP7-ni_(JUZN^V*$ zD4OHw!cize&Qyt_dH2eZYL@6zZ2UXZ+eW5nSxSkaogK}oZxweu*Y_HOZ!9Bf%5?lp zTfr;PQ^$;TzBn0HzB;GWq^Yf}4XUjxsGZ+Hm97tzNtV`!>wVZGTcj80n&A za~Leb^>*T)O3_t%=_ai|FkhH5GpTKePQ5|;@y1Tj8 z;|MD09CztUh=`x5nR?3{7OxRZ&tfudN6d(X^i6T6Q)j+G%&WTY3PePH?UD{zF5lM( zq084%=i9M@s2#l;7{+wJj32W-a^GC2T(Z>G^ykc*bQ~0{t9PR zV=S43=IGbB^Z{z#32?E5EM_+PEbwd|XnwdT8G zFJ%CZR%p8Te*qH%1A+90E}?;afM|fjJP&ksJYJ?5c^gc@06sd#XaJwkw4v#h2Hsd~ zBL}?rqN-pNWYe_KZjuqmqoN6%1n_2PrSJB|f5>$%*wa3(lMWI8s!$_Te{;LEbSyAT zHC4LY`kmKk)E)4daw2yN?~bdg%BvU*)$tqD%OYt4xg8oyCb|6Y3V^X?NQB*_endM_idi1#839FnCDGshB2n)4xadFgsECB+n1 z&5vig%~xJRuD4M3BTfDfR~Ji47|gq?PO%O)In*VD@Sz0ab^fm?wquZse&z>96_Xw6 z7hFlP@clP4->C+2l}{R+kHJ=aSc!5JmJK(3T0EV$8^Foam2}x>hgZ`M%6kVlj!j-y zVsk4mc?I`~`RP;oO1QlzZ>OHQI|jxFH+aklQ@)mrr5prqHnX^XsYMPD)Aph<8auKT zNkKn)OJ$M==imEX_5oA_%*h=}wksMdNF2f7^`f&O=V6LBH60<}$s9S9pr#g+qEv6$ zNjONyns>6>F)K!RNV~$T-1KUIltl@Q_1{9foAZC-(Ce9vbjJ^+RreEH#UCax=jNO? z8VBEk&ohQ~%F^2&nB{ISRrr8u>Mh7>($7A1J9b|Rzbc)sXA(MIa*r2!I#I|@Tva46 zJI&_#-GuR@rtXAl_HVPs$)j;jR)S1qB&3E!60EQgIj@^_NWp&Q%mu&j*11{)f6QHf zFr1@)ITo50lO_s0F*TB6;@Sw%0CHST$ZcRx*vftiXsO;YDHr*C68Uw8Fy3>lKHFAo z<>fav92IZgopPPVZsQER#npHd&vvVkH#z{VWxTPxIwy|@z4Eft0{HHA(Bp(oKR11; zc`tG`5iQ54u?f917O`~4(AW)2an~JSq~&f@^pUVLBf|d}kBTH86>I3(eoqJ@jo6)$ z8CY~*1%tj8cC2W=>ybkYPU0Ah6kBiSLvn6dF}%&=qRx8eGIcG*Ev(n;?OMZ&jr6$Zh52E1_oq{XkV!_AtCACJx5dxwP-4N z**oNLPwWe(06i(zAa3^{zzm@gBE_d}-xF*kq+g3$o!p0QN^vScB;)4Vlty3%<-GFP zh|Q%y{NSO(k7pId$Vjug+TM3vW{-z$y?+ibX-mt-E0JwTYX0aVt1bWBrJDIWL&hL_ z4XSq&Fq8BtQXM{3L7gUu5#f^{+TSAI zya@gl`Bl{c4M3zEcpz%qr3o{!ojlcMzqw&IGDQ0jgosV^`;euqFL?Ld-+mt|8y2w* zsiGi%iG);8<1_+VO0nPfy$WhBo-Q%`{0Rx^cg2Cpm`xsw>8IkRC#FjGAuc&RdDl%G z7?`tRyb7T!7>}z_F77QG7W*bXSyA{`M9EjPG!5eM$&1J`-j~m3xNpS!K0eQ{Arf9F zPx30^Y+dryPewLG-o_==YkF6z0$$7Bn=QyN7DN@~X6@h22<&-7ODsg#5Y-`%lcI6p zE;f5Au$Md%^>{aBvVe5~#Dn25#UKhzt9!^|DgMprx+fLz<+1+cx!z=4aRj-%L-;=< zQCVtE*zdN~Yj1a^-bwNVzBO%bs|3Ty2Va9LHNRZGf!x~8g8179X7&*WI5AC@l~@Ef zs1#_@e7%M!*BX9&%0j8r&ffDxvQ$>ZQuqeF|Gez9C3l1UZ~}u(whMUlY8q0j%3D7p z%;X(tO+(;YT7TIU9(H9N-({q&9wnJ37xpNFky@&lrYH`M0L6)YoE3oN1 zXj{uA`4Qi=u0l8Nmz#}>hnOTA}57vp2m6HOnlFsD}V9?(v)USBy zrhizN*``{f!)BtXbUg`mNK@%>UaO7qBlKQpWj;RmbP%IrYEZhDy+BhW_jW_l>AMc) z5|xd*#j-=_-V=`>&9O|@H6bvQY1WCMi##O_9G{f&)@Ce~RV9n2nsw8OqmSDq`TX-r zh4}Jc7?g0Qeav<83z)-Wv!#K+Ilht%rnffUBMV?bW|@n)uja6)6K#}u9>op`@G9@@ zK~*vL?8LlsJTk(9omw7^JNJ0;(1O*lbx9jsN(@lwL#pX=Mh`K@@kOIwLa$kDUUGMB z&w8;2FazE4r$a7g(zn#5EJEyfVy_Mc-Sx##ZFwB!N zZ4m%G%T4F6TRro0yejhnefhz|EVgZJ>!^5n=e%!crP*Xv?74H8rs=0nuvhkTid|J! z6O#Mw>`X`x>#hC5FB(WdFi=}!wiR@E*~KC7tG$(xmjjgp!Az(Nn@t3PIHrT#Mk?z) zN9I(sCrS#fEyRJqEQ$4_%}F8|kHw{RJU)i1otMTWDFP7XKNN?Wxulw{6x|yoOGckI z#9uEF{<1nX006Mu#jR^+ka;-yKew7{^pqWsK#N0wCk!RkGlj$cH=56}_N<^!A+bvF zbg}ieCrdy}NK;4ng!|d`4If+%)C5JR1W4Y@xsTdO3}@W`w7olfu&aMP)O_lG^ZIQ4 z$}hAfXxd)LO^xwn+2TDQT24#Xt*eq(03P$*p_a7lmc+fVZ!kie1g~VnpAARw84#&F?7TuHYs<6^58+{#HA3(@BD$as&6~iv*n_*V=v0H*+_xwTH21)HW-Z z_dS<>uh#Qy~`DiA%YMdjqY2oj-X{y!0VT0H`Bg zi0S#V_ktrJDz)jZvoPZ>3jfuO{r%0A9?UlXS8+Ogo7eOy1yX~cbmY)e%>KQT9UO;c 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 A&;S4c literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 85ba6d0..8f9e319 100644 --- a/manifest.json +++ b/manifest.json @@ -8,6 +8,12 @@ }, "version": "8.1.0.1~ynh1", "url": "http://noalyss.eu", + "upstream": { + "license": "AGPL-3.0-only", + "website": "http://noalyss.eu", + "demo": "http://demo.noalyss.eu/index.php", + "admindoc": "https://wiki.noalyss.eu/doku.php" + }, "license": "AGPL-3.0-only", "maintainer": { "name": "datatierce", From 1453d98b5a840364237c2b5afceacfe5f266cec8 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 22 Aug 2021 12:58:12 +0000 Subject: [PATCH 3/5] Auto-update README --- README.md | 60 +++++++++----------------- README_fr.md | 120 +++++++++------------------------------------------ 2 files changed, 41 insertions(+), 139 deletions(-) diff --git a/README.md b/README.md index 11e5ba0..5189483 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # Noalyss for YunoHost [![Integration level](https://dash.yunohost.org/integration/noalyss.svg)](https://dash.yunohost.org/appci/app/noalyss) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.maintain.svg) @@ -5,58 +10,33 @@ *[Lire ce readme en français.](./README_fr.md)* -> *This package allow you to install Noalyss quickly and simply on a YunoHost server. -If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* +> *This package allows you to install Noalyss quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -[Noalyss](http://noalyss.eu) is a belgian and french accountant software available in english, dutch and french. -**Included version:** 8.1.0.1 +Accounting free software (Beligum and French accounting) + +**Shipped version:** 8.1.0.1~ynh1 + +**Demo:** http://demo.noalyss.eu/index.php ## Screenshots -![](https://framalibre.org/sites/default/files/S%C3%A9lection_099_0.png) +![](./doc/screenshots/Sélection_099_0.png) -## Demo - -* [Official demo](http://demo.noalyss.eu/index.php) +## Disclaimers / important information ## Configuration At the end of the installation process, you need to open `https://domain/noalyss/install.php` to start using it. -## Documentation +## Documentation and resources - * Official documentation: https://wiki.noalyss.eu/doku.php - -## YunoHost specific features - -#### Multi-users support - -* There is no LDAP integration. Users are handeled within the application. -* Multiple users and accountant books is possible. Access rights are done within Noalyss. - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/noalyss%20%28Community%29.svg)](https://ci-apps.yunohost.org/ci/apps/noalyss/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/noalyss%20%28Community%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/noalyss/) - -## Limitations - -* Any known limitations. - -## Additional information - -* Other info you would like to add about this app. - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/noalyss_ynh/issues - * App website: https://www.noalyss.eu/ - * Upstream app repository: Link to the official repository of the upstream app. - * YunoHost website: https://yunohost.org/ - ---- +* Official app website: http://noalyss.eu +* Official admin documentation: https://wiki.noalyss.eu/doku.php +* YunoHost documentation for this app: https://yunohost.org/app_noalyss +* Report a bug: https://github.com/YunoHost-Apps/noalyss_ynh/issues ## Developer info @@ -68,3 +48,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/noalyss_ynh/tree/test or sudo yunohost app upgrade noalyss -u https://github.com/YunoHost-Apps/noalyss_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index 392d59e..6995970 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,120 +1,38 @@ -## Noalyss pour Yunohost +# Noalyss pour YunoHost -[![Integration level](https://dash.yunohost.org/integration/noalyss.svg)](https://dash.yunohost.org/appci/app/noalyss) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.maintain.svg) -[![Installer noalyss avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=noalyss) +[![Niveau d'intégration](https://dash.yunohost.org/integration/noalyss.svg)](https://dash.yunohost.org/appci/app/noalyss) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/noalyss.maintain.svg) +[![Installer Noalyss avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=noalyss) *[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer Noalyss rapidement et simplement sur un serveur Yunohost. +> *Ce package vous permet d'installer Noalyss rapidement et simplement sur un serveur YunoHost. Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* -### Vue d'ensemble +## Vue d'ensemble -[Noalyss](http://noalyss.eu) est une application de comptabilité belge et française que vous pourrez modifier suivant vos envies. L'interface est disponible en anglais, français et néerlandais. +Logiciel libre de comptabilité (comptabilité Belge et Française) -**Version incluse:** 8.1.0.1 +**Version incluse :** 8.1.0.1~ynh1 -### Captures d'écran +**Démo :** http://demo.noalyss.eu/index.php -![](https://framalibre.org/sites/default/files/S%C3%A9lection_099_0.png) +## Captures d'écran -### Démo +![](./doc/screenshots/Sélection_099_0.png) -* [Démo officielle](http://demo.noalyss.eu/index.php) +## Avertissements / informations importantes ### Configuration -À la fin de l'installation de l'application il faut se rendre sur `https://domaine/noalysse/install.php` pour terminer la procédure. +À la fin de l'installation de l'application il faut se rendre sur `https://domaine/noalyss/install.php` pour terminer la procédure. -### Documentation +## Documentations et ressources - * Documentation officielle : https://wiki.noalyss.eu/doku.php - * Documentation YunoHost : - -### Caractéristiques spécifiques YunoHost - -##### Support multi-utilisateurs - -* Pas d'authentification LDAP, les utilisateur·ice·s sont gérés dans l'application. -* Plusieurs utilisateur·ice·s sont donc possibles et disponibles pour les différents dossiers comptables. Une gestion des accès est prise en charge dans Noalyss. - -##### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/noalyss%20%28Community%29.svg)](https://ci-apps.yunohost.org/ci/apps/noalyss/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/noalyss%20%28Community%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/noalyss/) - -##### sur LIME2 (Ynh 3.2.1, sur carte microSD) -_(les essais portent sur install,backup,remove,restore)_ - -- OK sauf que le /install.php de Noalyss fait un 504 Gateway Time-out nginx alors que l'installation des table postgres est toujours en cours (après ±2 ou 3min) - - mais un refresh de /install.php affiche la page indiquant la fin d'installation et l'invite à supprimer l'install.php - - idem lorsqu'on crée un dossier comptable … sans le 504 mais renvoie une page blanche - - le refresh indique que le dossier existe déjà et il est fonctionnel mais j'ai attendu que les process postgress finissent leur travail - - pas de problème pour créer un user, ni se connecter - - donc en gros le **packaging fonctionne mais c'est nginx/php-fpm/postgress qui souffrent sur cette petite config**. - -##### Sur VM 32bit avec Yunohost 3.6.5.3 -_(les essais portent sur install,backup,remove,restore)_ - -- OK - -##### Sur VM 64bit avec Yunohost 3.6.5.3 -_(les essais portent sur install,backup,remove,restore)_ - -- OK - -### Questions et Todos - -##### Emails - -- comment fonctionnent les mails avec Noalyss ? - -##### PDF ? -voir : http://wiki.noalyss.eu/doku.php?id=installation:installation_sous_linux -- Pas de conversion en PDF (extension facturation et listing) -- Pas d'export en PDF des opérations de la comptabilité analytique avec les documents attachés - -##### Quid des mises à jours ? - -Pour Nextcloud par exemple il y a un dossier `upgrade.d` dans `scripts`. Mais si je ne me trompe, pour Noalyss il « suffit » de remplacer le dossier des sources. - -##### À propos de la [LICENSE](./LICENSE) - -- est-ce que reprendre la GPL de Noalyss est correcte ? - -### Base de travail - -[example_ynh](https://github.com/YunoHost/example_ynh) a été utilisé comme source(s) d'inspiration. - -##### Les helpers de YunoHost - -Disponibles dans `/data/helpers.d` de [Yunohost](https://github.com/YunoHost/yunohost/) - -- J'ai utilisé le `psql` pour en faire une copie en tant que `_psql.sh` pour pouvoir créer de user noalyss de postgress avec les droits de createdb. - -### Les sources de Noalyss - -Il faut les sources de Noalyss et différentes versions sont disponibles. Actuellement les sources sont téléchargées lors de l'installation. - -- [Version actuelle 7.2](http://download.noalyss.eu/derniere-version/) -- [Versions antérieures](http://download.noalyss.eu/noalyss-package/) - -## Limitations - -* Limitations connues. - -## Informations additionnelles - -* Autres informations que vous souhaitez ajouter sur cette application. - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/noalyss_ynh/issues - * Site de l'application : https://www.noalyss.eu/ - * Dépôt de l'application principale : Lien vers le dépôt officiel de l'application principale. - * Site web YunoHost : https://yunohost.org/ - ---- +* Site officiel de l'app : http://noalyss.eu +* Documentation officielle de l'admin : https://wiki.noalyss.eu/doku.php +* Documentation YunoHost pour cette app : https://yunohost.org/app_noalyss +* Signaler un bug : https://github.com/YunoHost-Apps/noalyss_ynh/issues ## Informations pour les développeurs @@ -126,3 +44,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/noalyss_ynh/tree/test ou sudo yunohost app upgrade noalyss -u https://github.com/YunoHost-Apps/noalyss_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From d9bc3d495792a76f832c7cbbec537d7546ecb580 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 29 Aug 2021 18:38:49 +0200 Subject: [PATCH 4/5] version bump --- manifest.json | 2 +- scripts/restore | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 8f9e319..85f6cc3 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Accounting free software (Beligum and French accounting)", "fr": "Logiciel libre de comptabilité (comptabilité Belge et Française)" }, - "version": "8.1.0.1~ynh1", + "version": "8.1.0.1~ynh2", "url": "http://noalyss.eu", "upstream": { "license": "AGPL-3.0-only", diff --git a/scripts/restore b/scripts/restore index bb02c13..b65e626 100755 --- a/scripts/restore +++ b/scripts/restore @@ -35,8 +35,6 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) #================================================= ynh_script_progression --message="Validating restoration parameters..." -ynh_webpath_available $domain $path_url \ - || ynh_die "Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die "There is already a directory: $final_path " From 443435a8757915cc245b43f1c24ff2d29df1a641 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 29 Aug 2021 16:38:56 +0000 Subject: [PATCH 5/5] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5189483..f43f47b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Accounting free software (Beligum and French accounting) -**Shipped version:** 8.1.0.1~ynh1 +**Shipped version:** 8.1.0.1~ynh2 **Demo:** http://demo.noalyss.eu/index.php diff --git a/README_fr.md b/README_fr.md index 6995970..d7b1c4a 100644 --- a/README_fr.md +++ b/README_fr.md @@ -13,7 +13,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Logiciel libre de comptabilité (comptabilité Belge et Française) -**Version incluse :** 8.1.0.1~ynh1 +**Version incluse :** 8.1.0.1~ynh2 **Démo :** http://demo.noalyss.eu/index.php