From 407180e2f24d9e3b8b7ca8179159e564eb1d75b8 Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Sat, 29 Feb 2020 09:56:13 +0100 Subject: [PATCH 01/58] Url rewriting (#54) * Remove unused code * Add rewrite URL functionnality * Fix subpath handling * Fix nginx error nginx: [emerg] named location "@dokuwiki" can be on the server level only in /etc/nginx/conf.d/sub.example.org.d/dokuwiki.conf:20 * [enh] Enforce URL rewrite * Increment package version --- conf/local.protected.php | 7 ++++--- conf/nginx.conf | 18 +++++++++++++++++- manifest.json | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/conf/local.protected.php b/conf/local.protected.php index f1b27c4..0604e4e 100644 --- a/conf/local.protected.php +++ b/conf/local.protected.php @@ -23,11 +23,12 @@ $conf['plugin']['authldap']['port'] = 389; $conf['plugin']['authldap']['version'] = 3; $conf['plugin']['authldap']['usertree'] = 'ou=users,dc=yunohost,dc=org'; $conf['plugin']['authldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))'; -# no groups -#$conf['plugin']['authldap']['grouptree'] = 'ou=Group, dc=server, dc=tld'; -#$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))'; /* Advanced Settings */ $conf['updatecheck'] = 0; //automatically check for new releases? + // Taken from previous package. Don't know what it does. Maybe Yunohost corner logo ? $conf['cssdatauri'] = 512; //Maximum byte size of small images to embed into CSS, won't work on IE<8 + +// URL Rewriting is handled by the webserver +$conf['userewrite'] = 1; // See https://www.dokuwiki.org/config:userewrite diff --git a/conf/nginx.conf b/conf/nginx.conf index c17758d..67b1f32 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,3 +1,8 @@ +# config built from these sources: +# https://www.dokuwiki.org/install:nginx +# https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/ +# https://forum.dokuwiki.org/thread/17126 + #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { @@ -14,7 +19,8 @@ location __PATH__/ { # Common parameter to increase upload size limit in conjuction with dedicated php-fpm file client_max_body_size 25M; - try_files $uri $uri/ index.php; + try_files $uri $uri/ @dokuwiki; + location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; @@ -45,3 +51,13 @@ location __PATH__/ { # Include SSOWAT user panel. include conf.d/yunohost_panel.conf.inc; } + +# rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki confi$ +location @dokuwiki { + rewrite ^__PATH__/_media/(.*) __PATH__/lib/exe/fetch.php?media=$1 last; + rewrite ^__PATH__/_detail/(.*) __PATH__/lib/exe/detail.php?media=$1 last; + rewrite ^__PATH__/_export/([^/]+)/(.*) __PATH__/doku.php?do=export_$1&id=$2 last; + # Specifig to "tag plugin". Added here to allow plugin to work if installed + rewrite ^__PATH__/tag/(.*) __PATH__/doku.php?id=tag:$1&do=showtag&tag=tag:$1 last; + rewrite ^__PATH__/(.*) __PATH__/doku.php?id=$1&$args last; +} diff --git a/manifest.json b/manifest.json index 8f68fac..1c3ae56 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "DokuWiki es un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "DokuWiki è un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22a~ynh2", + "version": "2018-04-22a~ynh3", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { From 9715aff9bae05ddadda652a4cea93f977f393aa0 Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Wed, 15 Apr 2020 12:54:57 +0200 Subject: [PATCH 02/58] [fix] dedicated named location per $app (#61) fix multiple install on subdomains Before this fix app1 => @dokuwiki works app2 => @dokuwiki fails After \o/ app1 => @app1 works app2 => @app2 works --- conf/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 67b1f32..64fc3ba 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -19,7 +19,7 @@ location __PATH__/ { # Common parameter to increase upload size limit in conjuction with dedicated php-fpm file client_max_body_size 25M; - try_files $uri $uri/ @dokuwiki; + try_files $uri $uri/ @__NAME__ ; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; @@ -53,7 +53,7 @@ location __PATH__/ { } # rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki confi$ -location @dokuwiki { +location @__NAME__ { rewrite ^__PATH__/_media/(.*) __PATH__/lib/exe/fetch.php?media=$1 last; rewrite ^__PATH__/_detail/(.*) __PATH__/lib/exe/detail.php?media=$1 last; rewrite ^__PATH__/_export/([^/]+)/(.*) __PATH__/doku.php?do=export_$1&id=$2 last; From 9d12c49aaec6dc7a45396bdc2407c0a7eb545b1b Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Wed, 22 Apr 2020 23:24:55 +0200 Subject: [PATCH 03/58] 2018 04 22b (#58) * Upgrade template to latest version * Upgrade dokuwiki version and version's location * Delete "jessie" from READMEs * Migrate to changelog file instead of READMEs * Fix markdown syntax errors * Add local screenshot * Update manifest.json Co-Authored-By: Kayou * Revert CI link * Correct version number to match manifest Co-authored-by: Gofannon Co-authored-by: Kayou --- CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++++++++ README.md | 28 +++++++------------ README_fr.md | 30 ++++++++------------ conf/app.src | 6 ++-- dokuwikimainwindow.png | Bin 0 -> 21486 bytes manifest.json | 2 +- pull_request_template.md | 12 ++++---- 7 files changed, 89 insertions(+), 48 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 dokuwikimainwindow.png diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ba827a8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,59 @@ +# Changelog + +## [Unreleased] + +## [2018-04-22a~ynhXX] + +### Added + +- Upgrade actions and config-panel scripts + +------------ + +## [2018-04-22b~ynh1] - 2020-03-23 + +### Added + +- New DokuWiki version `2018-04-22b` +- Changelog available in `CHANGELOG.md` + +### Changed + +- Upgrade content of file `pull_request_template.md` + +## [2018-04-22a~ynh3] - 2020-02-20 + +### Added + +- Use 'URL rewrite' for prettier URLs + +### Changed + +- Activate URL rewrite by default (does not break old links) + +### Removed + +- Unused DokuWiki config file + +## [2018-04-22a~ynh2] - 2020-02-20 + +### Added + +- Add fail2ban support to avoid bruteforce login attempts + +### Changed + +- Global upgrade of the package + +### Fixed + +- Get rid of the php ini file and merge its content into the pool file +- Update Readme following last work made on the package and current version in testing branch + +### Removed + +- Unused config file settings + +## [Previous versions] - YYYY-MM-DD + +- Will be written (one day maybye) diff --git a/README.md b/README.md index fea004e..8f18d2a 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. -**Shipped version:** 2018-04-22a "Greebo" +**Shipped version:** 2018-04-22b "Greebo" ## Screenshots -![](https://www.dokuwiki.org/_media/dokuwikimainwindow.png) +![Screenshot of DokuWiki main window](dokuwikimainwindow.png) ## Demo @@ -26,8 +26,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Documentation -* Official documentation: https://www.dokuwiki.org/manual -* YunoHost documentation: https://yunohost.org/#/app_dokuwiki +* Official documentation: +* YunoHost documentation: ## YunoHost specific features @@ -40,26 +40,17 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that * x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/dokuwiki/) ## Limitations * Cannot create or login with dokuwiki internal users, only users from Yunohost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -## Additional information - -### Changelog - -* *Many missing - List taken from previous documentation* -* 07 Mar 2017 - Update app -* 11 Feb 2017 - Create script app - ## Links - * Report a bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues - * App website: https://www.dokuwiki.org - * Upstream app repository: https://github.com/splitbrain/dokuwiki - * YunoHost website: https://yunohost.org +* Report a bug: +* App website: +* Upstream app repository: +* YunoHost website: --- @@ -70,7 +61,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that Instead of merging directly into `master`, please do your pull request to the [`testing` branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) To try the `testing` branch, please proceed like that. -``` + +```bash sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug or sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug diff --git a/README_fr.md b/README_fr.md index fe39537..2eb9035 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,7 +3,7 @@ [![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) [![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* > *Ce package vous permet d'installer Dokuwiki 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.* @@ -12,11 +12,11 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. -**Version incluse:** 2018-04-22a "Greebo" +**Version incluse:** 2018-04-22b "Greebo" ## Captures d'écran -![](https://www.dokuwiki.org/_media/dokuwikimainwindow.png) +![Capture d'écran de la fenêtre principale de DokuWiki](dokuwikimainwindow.png) ## Démo @@ -26,8 +26,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation -* Documentation officielle: https://www.dokuwiki.org/manual -* Documentation YunoHost: https://yunohost.org/#/app_dokuwiki +* Documentation officielle: +* Documentation YunoHost: ## Caractéristiques spécifiques YunoHost @@ -40,26 +40,17 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/dokuwiki/) ## Limitations * Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de Yunohost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -## Informations additionnelles - -### Historique des versions - -* *Many missing - List taken from previous documentation* -* 07 Mar 2017 - Update app -* 11 Feb 2017 - Create script app - ## Liens - * Signaler un bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues - * Site de l'application:https://www.dokuwiki.org - * Dépôt de l'application principale: https://github.com/splitbrain/dokuwiki - * Site web YunoHost: https://yunohost.org/ +* Signaler un bug: +* Site de l'application: +* Dépôt de l'application principale: +* Site web YunoHost: --- @@ -70,7 +61,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/REPLACEBYYOURAPP_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. -``` + +```bash sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug ou sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug diff --git a/conf/app.src b/conf/app.src index e42acb7..4021565 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22a.tgz -SOURCE_SUM=18765a29508f96f9882349a304bffc03 -SOURCE_SUM_PRG=md5sum +SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22b.tgz +SOURCE_SUM=9d1437cdc7e98e471ff32079f7ca224ccf52dbbaafed39ec9746b0405b3a29ce +SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= diff --git a/dokuwikimainwindow.png b/dokuwikimainwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..c357376b781f55d9cfe7d6505bbc679a4dd41e8d GIT binary patch literal 21486 zcmX6_cRZWl_qWxms#Vk|ZIu+IHEOn6ZBaUm7>T`Om&6`LwbZKGTWeH^86q)4Yt*cf zL=dwmiM{vF=llCBuP5g|_nv#6d*0`~&%Mv{>9ziIHfDZiDk>^A?H5nqQc=+$sHmu0 zF4126V=oMqyZGVr(K7Kd@Nn>fS$o@4J+||(u@}*Hvv#z9Yj17m@AcbWm5Pd%>h()Q zt%1n}lMh9I6J!q$_scLnCr5vY^ULUwCEdWB!m-S3N7Izl6fybdW#-a%w9LNN^fevs z+r^d~9Uc}G6b!kT7zAcWXj}PxEj`*JE-fwP$9Qj7zTRA4x0V$%@czAn8$6mP4Eo)3 zlyhGiLLQH0PM^0ud6#nECSquCaDTP0zrUZ-@6gaQHhyv}2MTx{lHY)79T*ro+~1EY zX|nr}OI>+4GP}|zz3%k16;B>oI6nS{C3K8V4%QFm zla_$CwqG{S6kJnkh&`1mhK`KvT;o-x$)nzW{fCbspY9rY1^T%wImJq*5Jx9we!h@i zC{8i3^{h+}b4;pq4~z!&n&wRGOT313cJ=(pNcyfSP9zc^+C@rwH!OVhnvF0KdTffv zcg`)Z_l3T5c6zB~6(|M$Ra>6=m%PCvB2GpWo}QlS_$148JP&R?hIzM6PfweM<&Jo3>|M zYLL8 zA9;P<-``zcUY?(w-QM2b-`$;^on2pDy%3Vg>M0*EOnR_6m)lYZ5&S*Oiv#l9iE?`(|F~+p`v;nsr~e^q2D+q zhvku>@6`Sc0eP(XodyxDV8biET)cX+ZG4PHS>=j$DNT0QUi^Smq0NTv+u!KKnN2o* zuRx?KpeM{J?GG-|#2nQbn_HMo=%w`s`|NwcgULw2sp<7|4MHO}gWA4odY|>(!*`3U z-Ccu0gXh_NG?^kd_Wg5s!L1fMm7lzO|1xE_Cyr7@?rQbUPgun9{nNXR3Gr8cY;(4> zc`LV;O}twGvD_!F>Yv5uCWln;xKkn^u=`Gan{CsTv*xL;(Ee8sNAtA6msLOK!H+Ga z_HR2+GiYo+Ri5Mbw)EUO+t`Rq|DC)(ocmkfk}|n`(_&Ko;q4m|K`&9FT7HsON8qId zr<- z?s_w$_+B&iCk-tvJH1eQUz>K4gpxL2gm^j^@ncC`dKfY%8OM}ZtXR|XX7Xw=6|_a_ zU+l5?yq7Jy?{NR|?e~DS?U++< z2?uh-!&xfV!h%O6z-n?Tg%GlnU_t(FKZ4l|OoOfQu%}x}nP1VNe0?ZsLvNLnNJ_8s zvRzuE*Lk~nbAhc_QU5!`%+>UP$4?y8f;3*%itG<=T{EHL4YXdZ7n)Cw$a7-$o9nRa zd`&ZV6cb<;JmFS34V_q-uz1rSOz*g1I=n2stLJ|^m*fk4`M$lvAkkPUE5gj)g?m96 zUG<7*jyWGOCLYUeouXv#h*2tMNvV>PyJfP{(@D?@D(rfRk}txt#VL6C{|{5K2njMZrObT1)vdP*v8)*B#X; z;YQHuQ`8uXv&ZLk*|RutO&W{4j?x zDlN7d_Y`L>j5iX!Evd76;|DEO2^GBDSY67lygd>n=c+a%$)CzO@fP4zeHq2Lr^aig zHb0JonWQxJU|Y)Pd=q1Uct#qdCiE?QBkzlDcRNdMYLes4oAZBf=hO-<0b|~NH;Kf& zx9~IR^j(FYI{XD*>D3?1HbQ-z;lahOqo2XSOo7@B?eWdw6murug~t-@SqWz$+f8ZVVio`S}v3 z0&4qD#*rBc`4pN63*#0l)~hV#e}S+MMq<4g+%$NO)y$^WuUgNHUwY#iLT)WQ^@%xy zs$sa+%wVnj_zpjwuUFk-9qOcwr+9bA;?otw@SD?A2;mRnO!ibC4WcJ@9rY?rI#0c? zf)r${MG@c`0P`Q@XUH%U%g+c~Oa`Vy$j5?ZBL~MDCd|e6+883g#t%sT znl7x#_ZCknwwu@Td((px%eF=RtxM@tRS0ci9xF-2-*@EaANXD#sM8^Na~tOIk>sm= z_3~^4m{(;aph|IUcjjgrBDt_LE@xC~d*-GEgGHO%AGd@xSrpmL`mljre~x#cX-iJT zFQt(iSN6dukvzpsQ|WDP6pl`e$n1L9H!=W;{k7&|QH6p2SY*yJXB~Sik{dHb~ca2W@4t8r*9CsopTagX)5UH=_Tmn&f`LYUDO$&#ZCmFc`)Uu z-XNfr?hXwCW;zum_lM1JoU6?<=Ycaz{kS`L2L62H^&to2G_=1hB6bK-mSmh_re(5U z4W|17CXM2nqWndRL`(f$T?DMun4yFO`&OOWsD3G9OYkvP#L|=d>9SgN|CVz14~(RL z#}cdI4z*&pXjM7qokS^{Uz);JQ2W;IuW-i!`KoN~*|$=9+E$neYC>nA0PkIsD(kl9 zFJMBSrDABv6~+|tqV@Om5@ahPy@U<-BTxhtA@4Wz^xmfwLS*_xwrSP_=eG^ol=3Xk zqAX8yl(c^G*s$MwcrwVJ9wVt({kIKZS`j?fMnic`JpgAZkKnCI3w`D~WyLo<%PhH_ zS%S2;3B`~b^uPGJR7$oh%GhX((A6WXN)YVvHr8cIkgQe(&IwD|gUCODKf1eQ^oEhn>Q*m9OrN(MH!}a@ zdLf&Mc~5=jn-Wzj+pCUSdtW1Orf%F^niRSZC^f(G=Tga3^XyH#VxJ0uz9^>Du*&Gr zlIt)nj8MF3P?b?#OaCAUzqvP2&6oiW+}xyEa0+w92j}C}DfjM1fszc3skUyK5f?mX zby4lFeljXPfh#tlCrGy_8lFNq3%k354W~HgSh8BlX?1Qx13G{VELmHrZ!UY>QSl_o z^0^W%K(jYv_13G&YE233v&3wROv4>xzXNlcQX2))dFw zN-;YieJk?^ttf&;er}~5FhE?0C%}{{*BkPIicJa{ntw#A!3zpAJcKmTY)@55DEA7}uS?%8L%Rs?iIkUC$WhQCOL^3L zBn#m;0JTY@AJ(^UOm zC$CSo0S0@J&OOA{I1t{H^^?XlV{BxLK4NdC5Y-Xi+$em!#uB&uc z|AG?h{_JQr=}|+J*Yd>3ThR;6qHUsFfgb?(Z(A|{7Lc|rLn(mRJj}0>AG{R#YS!?R zwtZH5T`@E)HP8a1pi+!0x5emuL%4edk3<=N8rkQ@#zeD!_Ov(3u;_M`p*AVtye^rU zoPOnAgrIl7j00U?ItO-Ik!xnBCCjZnk}&nJ$<3T9n-RMkrna(h&`$*ou$`#C<>8}` z4K~~Ae)JZl8*?CFc(9=^q}}mcpF6q?opA8zOsPW}STc}lbjQ_db0B72(4;`=nt3VW zql-|<+k8XR?J4ghw|8|%P9{kvC5i(S?`TMGlZzBxjb)Y?Uad+Rb=idn_`6b!My)t) zr^D>AOyd=<%_laSiJIN-25-d}%)L`P_!K@K3L;wLvBg%z%93Aao^xwut}R?P`CLmPio zt_M=>Eu@h)%AVnELvgBQ3*J|(fhF^`DG@;TFzyeQ=2XUEJhvv`Y26SR>+AI&H<_`w zsjCLP95`^lo-#lRBi#xcCgay{43|+5wNE6tH1twI40MJaKgzF>*^JG(3I?e*Y=Y^6h}*^5_+R{si@ph$^Dw3`9G%2k{U1 z3pw+z|1|nxfT8-E5R-=iT%pU)6Sj1H?LgmdD3}|iPJ+qw7@?xqCt?FA^cc6Nnr6Yl zb5-K5(Vja^JcKrCPI$zCB6=mzp;0CR^-`-OPp*Z60vUPfFEc$yvrrvv@h@Hy%ku-Gm#HBDeg zxO5f$6uX;j)>9$a{Mh5YOt5+7+iCptomvRkzW;{-G|)cBmEggR8m`>t85F;L!>ztE zx%ipN_aRR)&p35F1qE??uz-(WMl&tf033Fk13B!R2a{KB9ZyLOBvm%X&Zcj*{~YeG zYzM2xVG6-w^dP{U1|Js)HNos8k-Pc9x@x}Ro8$h|5zBXG2Ys2y`2#ZAqH3vFooXhjK)hxHLcUH#4yLNoK|e&d1Ij-7@@8t88D z5E_^Vs&g7lqaa!|LRolUcMJgSt^hB=V>@-1Qg%=MhYPjXb9cB2k_D`npdGIsr0dC~ zHu%L;BZh{=cWy_hdd!j3zPXiHrk{;33%&w2-BUwDyGFzr?`pOq)QOx9*CQZHL~wlz zOv8i>y0)t+KEta}uY9Sz=qg^KvV5KNihyOc>t|hu;!E#!zVV?b(yu+WqBtuU>Tf4MmLZG=ps+|Rb5Y7E zBYr=Lm%H8`!;=IKr9!=DsLV2^u7bY|V4#s3g$;owWc^4V`c{v(3HsU7?=@9F+#J-h zjDdN*lk{${VkSh2KdyA;6EGfg+UDu#nX!8p+|(7sZz=Sd$-ZRE4+br=T&hSQmn9Ug zZZeEW9GB#c-x9>PRMjmJtlCG0Oq2t26~0|5@E20S!M(9)C;g~7T3>K`T&9d+zp9zoa@;b!?^^#g4a*-ojktv=VR^OdUPEeECYI=js^GWLa6&L(-~s)NSZ5sz;EkGjC)*0nC;6)BDLD zT$HkQBWD8pp?FkNAYD&OQNj3d`8Dp^92)c97S`5N{1roDU_lqg3KYD$Xh|o2J z+UJQsg*M|N?ig#XtYn&ZP8iJ{%`~wYT?!k%r*yn8zD83XvB zts3#NpRKc1L(#`+z2k|ZfTXrif61QNiBu*8sXpP`?NlD3TUC-&&xirF%yG zQj4q9CMNCx#zkljA@pT5M=$b>N%Sv{J9kNCju0N4aX!#k>rw9`>0)ww?m+djl{%Q} zYUHdQn^|V0sQ7I5Wx&7#r7FHLT;nh21oax6u5Y?o5nkj`TpCzCf0kXvWq<16)qBX{ z)%b!e)|+a-cv($}bA{@#_HeQXb>vFe)bC;yL42z#LaVEfen|;5?T{qXQog>cRvIug zD;KV9Mft?2OWU6H9VQDkszSDEy1b+HKU7ozpTEiMt@sS@41K>ykrcY0&vugOA!W+f zwm=YfSkx_F{%=H_H)dFQ`;iJ9Ng_VOzF^bhY|>!6n_4{5LI&+_sN zJJE*j{zjZTV3<;?V4PGJ>MY9xO7a?~pS}xGNBLmSPHCliR%P@l-0BWGLmhLc2DcY) z3J!P0NyNpX(hbW2dQTb#GLZp%R4V>NboyjJL9BKC#d#Pvehs}-^xltud2{V?Z z2~4*|LhqqgdT;CpB*3HBGDRljgX)`;>mySwb1pR@VrW3`zIe~E+Rj9szt#t3|43`` z(^>Ag8GO(o!E0>*`2AHS^sH~}xpC!VGjSP*x<%OVk*db%q%w*I9w4G%-f2W`4QIqi zCh+}16~8Hdz5R59ti^)I%Nopkw^I`=x|a%uQK#BPpB#Vcc2PAiO8lX7=o|>J>tA^u zMwp@^pVZxmoM&eMs?j39H#N1HgR&X`$Jf$`-yR^yAB%*?<)dervy2|jKJ?-Z%;;=4 zT{ijo_1CG_r&;X|4i1A6Y(=cFzum4_x=AVh_I-6R{)@RnB?+~?Hx`N&sv$JOd23LsdKBjcBWFW;*+XU)rVV5y9A3h5Z<^KYH(G&D@T6jI9 zZk7qV#nD^>w={fAPbAC?dl8*ji4nlt*H~2a?zPaPnBlO`{8p2&rJP8z-q`R}Ny-%u zFW-7{^ha_l4vIT*;pQJ-U-=aRlrrd|L44w!znUyP=T5j3@+g+itKZQb+;ouC@v>rj zsmsoURL*>-@fV8zsFN{8G8g->_KLKARIU>u&t}2EIZ!&*iQi zP;>9nEAB6kP*aoFJjal#bxo?s6cREQMxa~B3m-XICt5W!FW|B>giDn5Uw?%}KIC*> zZBC~ah;`8uutGM?@(>bZJD)lX)x|yTl+Js$X&$yIbm9A4hzeUP_U;bRW7MT$>26f; z^>T-6<~-62*BU~}o?KmAE5lcI=F%&sHE;OoRzbWnWj77(&_KeuXT`$8n%AkfAcU4v6HOO>CVhYG`a@aD zd!muIWT0uDh^zl<+XPiX2Wma<@+|}h<%rHif!QsXFXMxrlsnApz=ZC$Gu(FDp+2Z&dNe>V6nrySlo0dM)@$?4v&Pb+BhVVrY(sK>Asz`K8*s zSXG#AZ`3QwfjP=x1#!*i=9t%xK)ek82JSTjw&J*D0dCzpr*#E7d8d?$^RqzG^5*5= zh(`cKnrHKJ(}&cCa4=?Luv>?j{nZvTuy?nm7q5CXW!c7f#@EKZ?u(tI)c<CG`Boop>%w|5)%!I~O}o$(41k7AkLVRLuRTbTuPqeK?qhD2rwJr~ zpK9h9%P7C}^y$-oTR>t(+mp$8{%Yw3e+tdzIzSkY!hkGJ=}15N9gNId)D{1HlMB`iB9B8@m$*n~`J!!~tQ7AI!G( zdINb1dg|WSr`_xoAQ1b=Jzl!~dI4at!3-FM?&7vUVS?5F`B{YQVd!%a%JXqfV=8w&e?Hl&kMhFP5~!-4u6KU$~QaiRZtw= z>$>}K*TcmRBozko9=u!pp3y9RqaxJ?OgHXp)M5ma{}~LUPrH5jkuyVe_z<-$xpm2C z^atkI_qJ2f?n%UPZh~AqRLK`O`Kt$f%rDRr3`njpsDiK`@V`Pq4KYw{t1i})PeWxS zL~no$i?Yoc3~AEoi_NqTlSIkelzFL-`7Ta0UAkvN_Cfz>GtN=_hHnO6kk_4i?#u5m zAp%@q2Cw-D!lH7Is=SW3FJDivA?-@pDTS}njQ!lO`_ep}{)>@kZn(ZuS9tODXVyuN zmweAq&=;690e^d_p3W9CK^{`rz$$Agzt8C@-<83rx@)*D9~=$@|3mxE7#HJxdBcrs zFAw-UY*WsWAN?x?{A0cLq*B=rrd9v;b971|vI=7yVl6A0-r?LCJfW-ycAPv@Y{{ZZ z4Po;lwe+JU`|lWzaT!xz$LAxj2RTpT`0avv*Va)}Jsy*LLDZZaB&sfr|%KFey+ z@ahqpFl<$HT>du;W{*t5z>0~kc=}gykC2*d_hcgcoAUx(Ok3*?D_dKn8LoC{+e0fJ zn9pnleK=lYuKf2R&j}b`;7YhM;5fvp9LqmcLin5{QH{c@Zdvij-tU|!82jX z8zOf!@7vD9MzDnYYNm(}VUQ1D!D@%QOICZgnQ2d3czdJS#M2BPC_C?4Eqhx^QPGXG zXr%m)+HW{ROn+JQE^yTtUi7$kTxFp8&Q}3$M~skgKLZ07bk|`L_lB>|Rd2oHRX?c7 zuRqhYS0q6-s!Dx#H1j0(A?N(H0xHRfUCcUS1&gqpvSpL<@b4G)d9POnT;_cS^{t1b z(Y5?AT318FiyuE03UMW7KF8l(Yra;xddihODA^LAutd3aKb|qYnlarMSm}zMf3MFw z={H!se%q|B6gT!JKD%)80Va2#eX(ctD2^RvHuowW09-H^>kD(6ZaF=YA~!Ea^>A`< z4i+zdUj(78I^*u<@Z(L0(_I+$2uX-3WIKgqMOS3C1FuCSBF5 zC6#FQZ6B}6($@MdXkPxu?Y(?$T;66>Eo<%IsUyy}$8wic47l8Td0D0skOv-^j2m>#b^2r*%{;kDsYG}- z%7J9SXdi_oof8-kG3nJ+>=?ScuLlD)IvOo{L&PB^pJB_u$D1U?NAlsXUw@v;tgdvs zJjkjviy10~sUA}Vm2=|b=s?N>>|f79Mv7a{PuE3oDhSZwaq%{kyp?SQm_e(i_W(Ld z)_R;4NGU`7D@HJ1x~x8jccZ3bD4KA0$-&QPzd=yT`YmQW__mqhnEN}bLPB~J;3$yr0Cdpj zipMScEUl026yc7V7q~9S<3PS8eMcZhNJbNL`yFPDvHA9gfM{}}RSq%J|4o{8(Bf|Y z;K_na=;2U8?r*k%YP^sH79@$HYRaXtsIYV&x3dW8d&?MrlpZY2pQi7CVDOH<%cA4E zKB8ObX%!IUexJBc8(cKxysx%$=`3oN8LMt<>btznk`{*74TGfcIpK)wM4v8Mc!z8A zQWNrb|KmuF(H+eH$~=o{%gcLc#X&j20a$77vxbGoxSmO=Zx7MpM0RSx&Z@wu9l^Go z^`>}eF9j_ernj@^do)lEcYuVnthuf&65b#}50_u@)#Q)GE~#Uv>MRZ@+uL3GMtGBo zeb;dx^#d1Dacd~iMpGZZ`Xst zKBV=vC3Wadp#JXNk!c&~0^qIGH;aaH?uQRZPtLIsWNBj0F<=(0CaC@H%I;R^gr1Ch+l-v&-KP%j@0}o zDQTqku08NhbrmxyS#4AE^ez*-vc-X7d9+Nsa2Sdi@K*XlSJZ#Hk}4ExeOW^Nuk?g% z1iNMo@P9bDixw|oC&QcFlqPol-pCF2c%FWo&s-q2)=P{Ati;Z2I}Ym0Z^`8|>}7mD zVW~%NclnffVsYck`>p6L()9Tm*uei`_(dUgqqlSVPFUyAo5{qL{2=M3sU8-Qe7uw} zOF}zKn&V-YephO!r~8L&12X<80~Y^({7TgobeOFJH!%xmXq~SlP}wi7IYeSNd-9 z!NR-GH=R4;1=)N4-%5VEyIk%pF0B|19xr>A8wg_#VExsQ)i&cX`G<|VRO^VMqN1sZ zUD9XU66vRUO+I@R*qcGs2rM&{-hyLH_(nC~0x+xGIC}RLFgF-FQW>%f7#s86x0cqJ zl-p<@&V4_3y%1a^u(ldAq0p|TgVDLNYvh4xlT+!`kh&{To;P7+k`%zVix&0?W_AP} z*Q~W2q~$#ghu2+I?|P2Go1$+R@+ z6E@FNM~O}dDB_)Rut$a;by%~{Y^@)C75hvi_H5^QIhS3!zPx-6lf@Zs>vmSk-cRKO zR@HuHY*$QDxR!9NB+}iw63_9f=M=lyF6uv$>$d)CT2x&pz#pg<`{+y6N8i{3&lXXf z+=?#?OKEO<5o?tfA)&(~Rp$F$+Mo;9%Cj9@`vz{U_i2;9f>l7e%QOr6?eY-*c*99@ zLqR{nsE-eMdH(J`*Wg|~!qUQ2H^Ro4w#f0Ok7^EvF8P{1U5T5SYRzl!f0myHWuw9{ z%y5|2Pw-Vv+1N2#AXo+-cI;bogAOPsETUB+gw}T!>sWoN73J34!Yl%Jp^$%)Ifw1^)_G+AZ5BRFF~3I}0J^YX zhi!6}I0HFTKZgxz7x@-ebYKHyopVtM!kq0*>`u*@W%#msA~P#3W)3N}gKiE6(gHWF zf~gi_u?=M3$Q;D-pNZa4vjcTg(t_44d7+i#SZZ+Fa_zhSae(5hf+oeU9# zS81Gb`%ov6Lrx+PJCOVX7oZh#J9of@L6WnEv*)s7phi$0y;UyyNbBJ!ZsYTHC^nzX z0mNQ!mm(f&_$B-~&zaNq>#^Z+S22)8MJ+jZfI24w+(j z-uA5@Y`LUm_-gLHG9}t8Q3Uqy^%Urnam>0HEj1NnNsW>oUK3eEiKJUkpxjT%;+Ndi z(ew5Fv~X>W?qbVvM~v}UckRMquAkFl)whqxS^J?r;(VhQ~7|jih7&2 z7-%XbGaHl&GJf`4=gkQLA%{qL1c;>QT!`GsO>Pqk?t~;NO1J0{u<)Q7+|b74r55Eb zs0}STr~s$Yc|5_iv{5oMvvusl=GLL~HXMXk$-0Ta_LR9+lCJ>EPvlL$FsXtyolQ$j z4=N-JL=(U!f_Zz=h|z)Oy!oOk=Fc#zvwR5}te8*dq*t6!^Zfu07G6S0&t4#>ZYk^Q zlL>^b5@I@)E)gsd;sK;4z><4=zVv=sPN$AJANNhTpe9C2-|qw|oC4mQj3R^`;vCyF zYKZ>FPbL}$rqHQpDR<6X2&;qES6d&0!f_Sm+vt(js~xXa19In&Cg)iR73Pjh3rQE9 zyAzhu!H!FA{bCpT5fFJ72OpxnZ-FF2TnTYVMap0^wT+?$Hu%i1@t48qlR_R4Q7)*@_;=Tz?PaGt1HV!_oOBp)Kb|P@q z06G#@l>_HHCEkM-|Nb|;8=-91;9BJ*V%h)a$ZrH!YXkYJJMb?~03?RylMTJT*kOCL z>UyRSHTN5_YhL2|i^(ge%}H>r2+X**zs63SwWN1jQ-~V=e6je;F_#B*h1FF_ydcH_ ziw4XR_S!eEqMxz~o!8`e2Vwh$wI}U`TCqaET7wmXuUQ0-b8P#;8sAo)C)fYVuTnmg%-aN zU*oNTSl@xKx4dB&mN|nE9?k6j`Rdk(NZ)ymM8r=0(QYKJN9r-z1q4qrVul5jB@_>H zsw_(wy0J9f8F0ABRqk_#AK& z(1G9|1|X&kE1Rgq@yqvE%s+&pT9cnyfmfB^&-PH1+5L;WfI0vtdJ~8wfV|?G`xXc^ zHI2X?IT18D2yCpt8bFbJ-8g{kI)p@ulSxZ)|U%&n{hQh9nn!NsV z#neau>`W*G61)f;V)<-zF(htH)Z3s`01CPC^6@>^1(7L2mJg3Kinc9ajSNA;T1)sZP+-o=&Ny; z2Qw?32(hZ>9@H1GM9Z9VnH;*Tpt`W*349LRNpj*t9L? z$v%F{f>=XCZlqA_2+Rg-y|gXsL3n8hEC#?8kehwlmK3u=idpyS1(ps6fTFKMI0!K} z_`Q4yU@xaI81T{s=CdK#;-1i9co-SaUDMaBm10@gE>Dec0ds|8YMa_{6<`)xd&~z8 z#8*5qWxi}e7UBGeedmXJ7sQW)7yaCt@F7_pM!;e<9SF3HO*N3-uGzOCud9L2gf(g& zVdZH=QY_D?Et(eH_&jY1n%DVfplmAnL@zb$uxNwfV(q&3{)+jgP@XR6sV_nD@wFj`sh^>Jz;L)!gJJG+T}Lx)l(tC zyw`v1BQXr|SDrCkA^2P0;CJqb=yV$z8sg^WMshL#_4}LDIqIjrX4Z7>f6_kOqZF(c z2l?rhRVhYW1AbF^!_0}k)_A-S@(M3pS@_ydbWl(N1?%>0LzGiLFcm*>oeZ0qIXw)V zJCORjyOS80a6JLBS&fMaL|#K|KbUo4+$P|GTDi_jngtuzrJR~l`9n{AdIOPE1WEHa z1x(1sW2Ds9rLDA%iNv$g^^lB`!EX>qBeq?I`V^zb1y$J}pni34dO1v=tf`gZ z5W-Ez?hBZ%!PE62LqZa@9;!w$5tj!!EWPL%(3_^Bj?9TK|6>DmL&;$zdmg1!{pg?^ zl^TOGK=Rk+^$Sp;ifu_{25&sFg|Qs##$r;2l9JB*d#C~x!yl|2l|BPivp6l^;fjfdac08_TMkkVKwI}z z6NZ%$7NWk1JK;Hpi5p5mN$`Vifl~v-Wxi3vxh=&PsN2|P)h*PHfmj#pR9|ByJbz*) zbglHWdWZw{1*Xd)f3Wb!Ly%-lr6%8jrI%ek`@GRVgpzYRQb+mqXU)xV#1oz>5?xM{ zhC|rAJ_TH7W{{ShXXl_aS7qumLj{ zMOhz4(uWrLaA86Qo-xq;52y*v|HHs1W8CPlppPsUjXf}OjSSK^E}FM@hpkX)USvSi zP%X1SCa4?9qJrt!%a0qIwQneR^}*@;mY}}$;$rH4nZf(A-(u%d-E->RBWrbAMX$Jf zVet1s+>BT1`GNC(m*0-ZVSNiboOZ$hcE?Jhv-k#xwN<6XT=ye^nekZCHLIP=goc?L zvQl&WbbEWB;a=0*k?j>EumKfe$jybowTOE8jR3`6!6NxE{BcZ??NS~(c>;0@)PUS#!vL}Dp?m*odT{at3XL~@z zZ_X~6JIWeUoQNCDAQtY|0&&_(p^ct_tCE|C3?KJ--{4lQpv^H|tS_K$Y6#4`&z);O z$L`_H->_-`uHa7Ps|VsehV6hB@1rH)&SOf;@gxLFdeAydqa^H2=`GG|ff}1|*JoULEnszIoFOkBYsWp%u}F|X=rWp_y+bx#TRy^&9fS@7az2O6Xx~DEWUuvk-*ql zW$8=NH8Isi%&1N#F3~_Op=S)&6m>Agt+%DWpg_lujFtN2Dtqj0IWs`@X&u!ua}WG| z8ax{}eCnL>o6i{X(e)W%7<*Qj-wY8>gRrFEbl8P@*X>=mK zEs)HB+asu#UiJdS@;mDD){pln)e}FOq4zL6-k^zYganFOs3uy%_?J5kE#2}9z7ib5 z_HVy+=TeF%wp&vnRKej3TS zm|d@Fpuw$v|H;u9ug(-+y$**a%o=~;v$bOp^)35ZxfJR=k^a{wiZ?)~?1UG|1-~M| zuZkJHL3vI9P};U2U6qmg+Qgb~FKQu=o zF$xV%1RF0;#hA*DB8+ln&YUBvSQHV!{@kvJPPD?!3CJKWP?hGXRf9FVBV{) zMjBOcd)ZgiM|<0ee9)LS^s)<^OF-eDj~m#7z?96Zex*Qxaqjft8@woS<94Gf2ph)o zKuo97yctH)cJ-fIRgUn@e8FGO>Je(|jjUDYchy=}vH-3wvaSs>rqXekId_)%f4B4& zOOd8Wp;whdK9E1vyxa4OI4g}7tJ%7Y`~lu)TICSDGp`)Rp&HQG05#g{Lsn`}_6B2d z2o7g`mFmn1xYj%(V47$EjG!LxCOGM=%9D z6%jrDy{!jwB6EB#@xsj_LiZED$f!@-``3j}h0Xv`3fFc%#4!JSlQ54+D7ij|s?P!Q zT{aQsUcZdRpc5clXpHn=b(L7n+b`;K_q{iYK+5XYF+$)$LZbQGL-jAN|{LW%x*@;OwR=j*p(x32OEUIO)YeXh~uL@qZT3a1_W?$ZugZSp$gtPQgOUpU+&1lOn z#x;YNCSPN`K?dXGG4XBX0NaN1dHxJARC&tk-h(>Nr^dNq{mSNW&2T@d)D9^gGHp0ZM{CQAFPPy672q7XTM@mTUa8(uR1qI5`u3m$`@!6#X?v zyI&!L-%Nc{tF{76jT0 zdh;L2B#we51iKNRjg=k3hB+u^d2-Pdo#lM!f0V56Zcm#t0gDJn#+P<2- z{&AWfZXAa}@Jw+ay1RH&gXxV z&7LoCymme9uLAr{yG}^|e$BSKt1l#fGBM#6rl)~nZ}0(s+WVJj-cNz|^=;!iN$0q8 zTkz}Kce{A-zCX1R$5ZrZAD6+;4=g7Uw6>|tP{E1wec4WuOq=qi7`^e_w!jlPYXC%CTNuNfakyvsNVOBvH(7nlegv_pNc{4BX3 zmCt5zm{yo@QC=~Qfzn^{C56dZTMr?y+kc5FSvIit04hSbEc+aP)~^!t=Hpw&95$QY zjw9Fyvq|vtmmc`NcOXb@tr#TwVw6^QK%sFMQ{ko7~882I*2Zxo;8Ka?iGU3oN3? z@d$mAZ~o249a2LGS0b*nNKdb9tp^y!qKndJfb9){e|LhZ|NOootV>F9BgWaXeN4)m|u$PKaxk>Dh{CXijWYv&8U))py>90EnImxl-(PqDKuj%hAcyUN*GJoLy=FE z$Pz}(SVESuXDO1MvMWPTvWwxhjxc23LnX#wtf??25?U<3FNZM{U#$j0yoFd z+{f(8PC>UGw8CTC9-<<%yt--6b1dCk$l+s_r4@Ve__{vN;|tss1s2b$FH({FaN)lR zWly%$rb+doc$>PO?t1F4R|Z`qhuP9Fvyj1ZTuXP0)x8Bxdh_oxPr}}dZJ)W77IKI^ zZ)oSJo$m?#PV>t4gfpriwR?h8g&Sa=)j>s8>&XE)+ z_nQy~p>g}VU^1V)%@J}yF^o-81xbgs=jufTUK@$F{p{b@(rEU{@_h;tf&_6aW85IVZ)3Gc&8QU4vRuBewkbD9iwD?Ge6I}WA0TQT)o0piO+GtNWs#w;_;D} zCet|*bmh%zm}zF@Yb|Xf=V4;-DvnCSat3Q74+O43e^c6wbPr+nwqhE8SZWk~fto#i z6j6UWn6?$=LScYM+?jV%VX8P16jHL+AsUFG#Zv;!IbV@IAw-K1<)bHG7&Ypd4>reK>E7v zwk~hnOAiX;XgYpi46(z+u64D{R6_us`Ik52=Ou%R>pECaOk^da6(gQh)8$=Yq`}a* z>wg|yvb348t3Ol$M4RB*(shMu%RrP#y`f-lUMh3k%}E{RoP>5{Njo`}c^OPI zaph|B8nt6fe)pd@Y>bU zzs@EehbT0ZIWPryBJm+9`LGS*Kw3p%^rA&}+>%uYiN30NL?vN`)>T11T`!q}sRvlp z%(u-ypG=&J?gc;YQGH z7~y*$4XOxXV)O6tPMRCv!K}{s?n}x7N2o9KPrt=^$amK4Rw1)j`&mFd#DJTv#t?H0 z^2!WIp#y`(&I4kw$`Yh*z3Bu8W>>;~KmFcLSeDUnjO@t-attc$G0>-8dYdzn6So~H z+R?ZUkn#gMklS9P-Zs&@Ri3L-j8VA50baJ+2;XPg(ItnVp@54oZB9ruXECXe+S}QH zC38~3nqjr+fK==yp&yRn>rgI+n~Ds<*9^!WB=^-=w1{R7C8H=vIFQ59;{X;2EDA|2 z%(JHL8Coi*Tmcm?D|44Lz$7$7pt-nf*(n%qU718wo8 z57KpT=#n0=^a8{|rF!1?cg6q^ZFOy8>m;o&nb$gk76TwZy08NAF3H9-WK)5hS|MmO z?6nj%0Ep|hKD2Z4{*I-cZV%j+dyfDcA6`sxI(PKuz`}v(Nb^CC%-5sqm_d~udm#Po zJtj`K8VyctuJbNKyqc}%Uhg+L^qXX^ozc91-AYdgtJSfL%dD1`H)8q6G{N;DzzfW##%MG~#K%}Vz?FMEV z(iQ9{OD6+lqzh7+^<$SHF)&sw1*i9Z9ZKVjz=xaRE-!$L5FhkkB>g_6ZysLI4?R zxL(!;37H12LLZ8&4M*q)=f1toaP^cQ^*#UCm@DBf8 zoDC|L3nrZmZorZ86Q8uPE5k^vy5T;9cgDMU?B38>>~kD>i;DK6Fed0$4#Y(1`V0`$ z$0)&wfAAhk#DmXUl;P9@$<2Mu<>NL*Hwn4!&pJ^oZLzD85 zu?;%k$U=!%aXMH=$)7DcPpPDY!tjuGd95aZE6HsP8vkTEVUB=a>W+S5uK1e7%d04B z=`9zXCxZwZjS%}9W|2lTs*k{e4b!z2jj!Gps0_Yg}7AXW(ca;^Fr){mXJL zJDspv>U36mgxFm4kq;MKy>|~8op-Tk#b``-QVLJcf6$3^4KdQVqjgh2%O;o0%wmjc zcc!w=3SPK)GLQ*}JM(kwhLy{vBW1fuAP{-~NXMaS-Z)GNbB$ZUXe4eXtsB=-OGVy0 zVi#^{m#+OmM2Drf;U-VH$UxWwopfESK-DAZ=y@FDQ*UW7)&ye5l=rY3OQ=XPRvWdK zp$T0UiL|YDWGPdRf6N%|Ft2{_Tz}~b+|@CR9+a<88ETYaJ+CnuvV0^fOY(Hyq<+0M zWw73e#Qly>RM983cG9SBzK@Ev*sJh2R0rXtz8w)u zR@>HNWYbO5oc<&)Mt221jiX+MMd9_jHiNqh2aeAiFmz3R#>@C$kWIfOtUKy?Quw}L zxAUVwt{qB7yVB9iOQ~y?EE<>i-<=SGZT#M6Qi43ZFane(46AK7lLzpdA1rx~sZ6v| zSL)w*Pk#Zeyq46{g{N=6f3@RMYf z^X0X6Htbu)lnNG41qE<8me+0Bh|am=uQRst#eOVasGNC=BO8uqHw!Qsm z{s$|Gi%~}t&SKXX{YLew!Jn?jG2&j_b?e^RPu^iyefq}W&ZuS$*?zMw5){f(x zo5Svszy6T7dx1`8=Ki&h+8W0;koz@>YaS#(vM53{D~E(rcN-KP)(NQ4XlyQQT<$I; zVOE^k&u4Kd)1JG{r>k&Q%33vGF>Ft+>gI6OMwRoUnltn^A2|OH!Zn5H?~yYc{BT$J z52W+jmr|F`^W86B7!)W5IO)7c?ek}xTQFF1MoENNJ5o4JZTAx@2oCoV#*<3Q4keR@ z*xu2ua2!u%pYwcnN={-{YH;=sfBU`)n-QDJILocE z8}^P`yERFxGb34{vKTDJ&L0K-D0cL9#1ruvx1P{IQ7+?owKdxo&OhV0z(vF`K~%eCh5Nj|2_;;pM=Y~(X#zITfi4&%GqT(iR3eKz}?;N3_~ZEWh;Wk3%+tVh0E zc;f0jr$)Dy8>s@hF>ZG#$m1X>=nFY1y;*nr&`{ovyf-Kz`rFf~_7LT7FKE#tX5m7& z>Xw&(aFynt!BRk$-+PP?iRLhUJb6pmTB*aII}s375XQum<>g_d(*YM#$L3#n9VVq) zxe^3;ik#2l3k!>yz%viS0#G`D6jaog&Rnr3>~YSjxm*MkdFME0GuBNOZ}UJ&EDJ7(9Tt9vz44p^wvpWlrgs=lM0FNTVioB!k2=~U^~kV?=f=odrh%;H-0?NGdv*if%z3KJ zPOM*!zOmw|aV}BWflv+khyK*hs5wG(MlWP^vT%_4Lr1>qygKOt|E*opQtB zJBP|6`Q=Z{+-Eg$s$|TMKsdy@I|VA&oc`lb*Qx%!%r;y#i3#guGbdP#oVh9yy$-L0 zL_6tj&sR-|9!wsAsTP+jSh+`GzqA*GAlB0$xv-lpZAZHNQzKxJ(Nt5WP&QTW>5X*3Ni^~dHX@7= zsbkUB{JwUfP5zXBfki^yD}OGdnXVKNHq^H)C z#@D{G`@T~xW1RexVRQ;?XGLqH)t7vO$GWZQOAZQBC^H=jU z5_kqaH=0+j?QPJ6W)}H$J-7m}&W(0+Sgq zH?c8qs>?AiX@r;iXEw6ecOc`5+K|gw^s{n0Vrakh3IZ4QCVW#ElZ)^s%iHKxCi@2# zfw%r{++K?}WHywWc9sMOKvd)b0i>t_9-=jsuF;yQwNgh)!3d01`k6-)s7~*0@Q}4E zpYfMTeV$OWqYAcL-ba33?k+=Y@K*L;IY}F>aBGfx=+W@DKj>v~70=bm{-jME@Z!v~ zKL3oV!+cWJ@kV*L`vOddFO+Kw*u6hg9?d9a`Z%%Ty%u7`1huZjrwgc{&xm}P{~YA3 zb*(kQF&RA`W=m(6Q|?t*JfqyZaY*BV9`n3wOs!d%?_5~juPSPwab@mC%+QesQmXyp z>{(U08wo@Awi6CLQ(J(kA(AI6!*{*CDJ;LOBTCBKAO0Eo0jG`*(L3LEQWes8LQiX$ zWiDP&C{QSFYOCgGADY!RaJFw(IMpWi_LmON{KO|e(M9pkS3-9on>4vD;yfjO+Q7HK roYsSxyMHY)ob_UO!Cojc3)57nn#h^d;$3inC)2enH*_FvyNLe*=)-b( literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 1c3ae56..503c689 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "DokuWiki es un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "DokuWiki è un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22a~ynh3", + "version": "2018-04-22b~ynh1", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { diff --git a/pull_request_template.md b/pull_request_template.md index fceb723..8f984e1 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -2,7 +2,7 @@ - *Description of why you made this PR* ## Solution -- *And how you fix that* +- *And how do you fix that problem* ## PR Status - [ ] Code finished. @@ -13,12 +13,10 @@ ## Validation --- -*Minor decision* -- **Upgrade previous version** : - [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- **CI succeeded** : -[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/) +- [ ] **Approval (LGTM)** : +*Code review and approval have to be from a member of @YunoHost-Apps/apps-group* +- **CI succeeded** : +[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/) *Please replace '-NUM-' in this link by the PR number.* When the PR is marked as ready to merge, you have to wait for 3 days before really merging it. From ff984be3b50e0e837519656aca941a47ae188846 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 22 Apr 2020 23:25:56 +0200 Subject: [PATCH 04/58] Simplify description (#60) --- manifest.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index 503c689..8b83da8 100644 --- a/manifest.json +++ b/manifest.json @@ -3,11 +3,11 @@ "id": "dokuwiki", "packaging_format": 1, "description": { - "en": "DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database.", - "fr": "DokuWiki est un wiki Open Source simple à utiliser et très polyvalent qui n'exige aucune base de données.", - "de": "DokuWiki ist ein standardkonformes, einfach zu benutzendes Wiki und zielt hauptsächlich auf die Erstellung von Dokumentationen aller Art ab.", - "es": "DokuWiki es un sistema de Wiki de uso sencillicimo y compatible con los estándares.", - "it": "DokuWiki è un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." + "en": "A lightweight, simple to use and highly versatile wiki", + "fr": "Un wiki léger, simple à utiliser et très polyvalent", + "de": "Ein standardkonformes, einfach zu benutzendes Wiki und zielt hauptsächlich auf die Erstellung von Dokumentationen aller Art ab.", + "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", + "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, "version": "2018-04-22b~ynh1", "url": "https://www.dokuwiki.org", From 851001f91ae6cb6d264e477b34b00a74f533c378 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 30 Apr 2020 17:37:53 +0200 Subject: [PATCH 05/58] Bump new version number --- CHANGELOG.md | 12 ++++++++++++ manifest.json | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba827a8..d304d40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,18 @@ ------------ +# [2018-04-22b~ynh2] - 2020-04-30 + +### Added + +- Support for new permission system in YunoHost 3.7 + +### Changed + +- wiki administrators is now a group and can be modified from webadmin YunoHost panel +- Require YunoHost 3.7 minimum + + ## [2018-04-22b~ynh1] - 2020-03-23 ### Added diff --git a/manifest.json b/manifest.json index 8b83da8..0b3719d 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22b~ynh1", + "version": "2018-04-22b~ynh2", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { @@ -22,7 +22,7 @@ "email": "opi@zeropi.net" }], "requirements": { - "yunohost": ">= 3.5.0" + "yunohost": ">= 3.7" }, "multi_instance": true, "services": [ From 228968e2dec986f539d9edb7ee1c9adbf755aead Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 30 Apr 2020 17:38:37 +0200 Subject: [PATCH 06/58] Add required helper --- scripts/_common.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/scripts/_common.sh b/scripts/_common.sh index a9bf588..91adcdb 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1 +1,52 @@ #!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= + +# Check if a permission exists +# +# While waiting for this new helper https://github.com/YunoHost/yunohost/pull/905 +# We have to use another one because the new helper use a new YunoHost command, not available for now. +# +# usage: ynh_permission_has_user --permission=permission --user=user +# | arg: -p, --permission - the permission to check +# | arg: -u, --user - the user seek in the permission +# +# example: ynh_permission_has_user --permission=main --user=visitors +# +# Requires YunoHost version 3.7.1 or higher. +ynh_permission_has_user() { + local legacy_args=pu + # Declare an array to define the options of this helper. + declare -Ar args_array=( [p]=permission= [u]=user= ) + local permission + local user + # Manage arguments with getopts + ynh_handle_getopts_args "$@" + + if ! ynh_permission_exists --permission=$permission + then + return 1 + fi + + # List all permissions + # Filter only the required permission with a multiline sed (Here a cut from the permission to the next one), remove the url and his value + perm="$(yunohost user permission list --full --output-as plain | sed --quiet "/^#$app.$permission/,/^#[[:alnum:]]/p" | sed "/^##url/,+1d")" + # Remove all lines starting by # (got from the plain output before) + allowed_users="$(echo "$perm" | grep --invert-match '^#')" + # Grep the list of users an return the result if the user is indeed into the list + echo "$allowed_users" | grep --quiet --word "$user" +} \ No newline at end of file From ac50e4c71938bdbb1341fb3ba8079dbea74e4910 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 30 Apr 2020 17:41:56 +0200 Subject: [PATCH 07/58] Implement new permissions system in YNH 3.7 --- conf/local.protected.php | 10 +++++++--- scripts/install | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/conf/local.protected.php b/conf/local.protected.php index 0604e4e..ddf37b3 100644 --- a/conf/local.protected.php +++ b/conf/local.protected.php @@ -14,15 +14,19 @@ $conf['useacl'] = 1; //Use Access Control Lists to restrict access? $conf['authtype'] = 'authldap'; //which authentication backend should be used $conf['passcrypt'] = 'sha1'; //Used crypt method (smd5,md5,sha1,ssha,crypt,mysql,my411) -$conf['superuser'] = '__YNH_ADMIN_USER__'; //The admin can be user or @group or comma separated list user1,@group1,user2 -$conf['manager'] = '__YNH_ADMIN_USER__'; //The manager can be user or @group or comma separated list user1,@group1,user2 +$conf['superuser'] = '@__APP__.admin'; //The admin can be user or @group or comma separated list user1,@group1,user2 +$conf['manager'] = '@__APP__.admin'; //The manager can be user or @group or comma separated list user1,@group1,user2 /* LDAP Yunohost config */ $conf['plugin']['authldap']['server'] = 'localhost'; $conf['plugin']['authldap']['port'] = 389; $conf['plugin']['authldap']['version'] = 3; $conf['plugin']['authldap']['usertree'] = 'ou=users,dc=yunohost,dc=org'; -$conf['plugin']['authldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))'; +$conf['plugin']['authldap']['grouptree'] = 'ou=permission,dc=yunohost,dc=org'; +$conf['plugin']['authldap']['userfilter'] = '(&(objectClass=posixAccount)(uid=%{user})(permission=cn=__APP__.main,ou=permission,dc=yunohost,dc=org))'; +$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(memberUID=%{user})(cn=__APP__.*))'; +#$conf['plugin']['authldap']['debug'] = 1; + /* Advanced Settings */ $conf['updatecheck'] = 0; //automatically check for new releases? diff --git a/scripts/install b/scripts/install index 4ceb331..58accd4 100755 --- a/scripts/install +++ b/scripts/install @@ -22,7 +22,7 @@ ynh_abort_if_errors domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH -admin=$YNH_APP_ARG_ADMIN +admin_user=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC language=$YNH_APP_ARG_LANGUAGE @@ -46,8 +46,6 @@ ynh_script_progression --message="Storing installation settings..." --weight=2 ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url -ynh_app_setting_set --app=$app --key=admin --value=$admin -ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=language --value=$language #================================================= @@ -108,8 +106,12 @@ ynh_script_progression --message="Configuring dokuwiki..." --weight=2 # It will only be updated by Yunohost package or directly by adventurous users cp ../conf/local.protected.php $final_path/conf -# Set the "admin" user -ynh_replace_string --match_string="__YNH_ADMIN_USER__" --replace_string="$admin" --target_file="$final_path/conf/local.protected.php" +# Create the "admin" group and add the "admin" user +ynh_permission_create --permission "admin" --allowed "$admin_user" + +# Customize admin group in case of multiple wiki install managed by different admins +# dokuwiki.admin; dokuwiki__1.admin; etc +ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$final_path/conf/local.protected.php" # This file might be modified by dokuwiki admin panel or by plugins @@ -216,13 +218,14 @@ ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." --weight=2 # Make app public if necessary if [ $is_public -eq 1 ] then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + # Everyone can access the app. + # The "main" permission is automatically created before the install script. + ynh_permission_update --permission "main" --add "visitors" fi #================================================= From e42bed446d3f16d9764f76650e406c00d568c0c1 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 30 Apr 2020 17:43:46 +0200 Subject: [PATCH 08/58] Adapt 'upgrade' script for new permission system --- scripts/upgrade | 75 ++++++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 8e9eaaa..e2a7375 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -18,8 +18,6 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) -admin=$(ynh_app_setting_get --app=$app --key=admin) -is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= @@ -33,34 +31,53 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -# Fix is_public as a boolean value -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 -fi - # If final_path doesn't exist, create it if [ -z "$final_path" ]; then final_path=/var/www/$app ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi -# TODO Not sure if still needed ?? -# admin default value, if not set -if [ -z "$admin" ]; then - admin=$(yunohost user list | grep 'username' -m1 | awk '{print $2}') - ynh_app_setting_set --app=$app --key=is_public --value=$is_public -fi - # language default value, if not set if [ -z "$language" ]; then language='en' ynh_app_setting_set --app=$app --key=language --value=$language fi +# Cleaning legacy permissions +admin_user=$(ynh_app_setting_get --app=$app --key=admin) + +if [ -n "$admin_user" ]; then + # Removing skipped/unprotected_uris under certain conditions, remove the visitors group added during the migration process of 3.7 + # Remove skipped_uris. If the app was public, add visitors again to the main permission + if ynh_permission_has_user --permission=admin --user="$admin_user" + then + echo "permission admin already exist. Nothing to do" + else + ynh_permission_create --permission "admin" --allowed "$admin_user" + fi + # Remove legacy admin setting + ynh_app_setting_delete --app=$app --key=admin +fi + +is_public=$(ynh_app_setting_get --app=$app --key=is_public) +if [ -n "$is_public" ]; then + # Remove unprotected_uris + ynh_app_setting_delete --app=$app --key=unprotected_uris + # Remove protected_uris + ynh_app_setting_delete --app=$app --key=protected_uris + + # Removing skipped/unprotected_uris under certain conditions, remove the visitors group added during the migration process of 3.7 + # Remove skipped_uris. If the app was public, add visitors again to the main permission + if ynh_permission_has_user --permission=main --user=visitors + then + ynh_app_setting_delete --app=$app --key=skipped_uris + ynh_permission_update --permission "main" --add "visitors" + else + ynh_app_setting_delete --app=$app --key=skipped_uris + fi + ynh_app_setting_delete --app=$app --key=is_public +fi + # Yunohost specific configuration, if it isn't exist already @@ -247,8 +264,12 @@ ynh_backup_if_checksum_is_different --file="$final_path/conf/local.protected.php # Always overwrite local file with the one from package. cp ../conf/local.protected.php $final_path/conf -# Set the "admin" user -ynh_replace_string --match_string="__YNH_ADMIN_USER__" --replace_string="$admin" --target_file="$final_path/conf/local.protected.php" +# Create the "admin" group and add the "admin" user +#ynh_permission_create --permission "admin" --allowed "$admin_user" + +# Customize admin group in case of multiple wiki install managed by different admins +# dokuwiki.admin; dokuwiki__1.admin; etc +ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$final_path/conf/local.protected.php" # Recalculate and store the checksum of the file for the next upgrade. ynh_store_file_checksum --file="$final_path/conf/local.protected.php" @@ -313,18 +334,8 @@ ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." - -if [ $is_public -eq 0 ] -then # Remove the public access - ynh_app_setting_delete --app=$app --key=skipped_uris -fi -# Make app public if necessary -if [ $is_public -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" -fi + # Nothinf to do here. Already done in "ENSURE DOWNWARD COMPATIBILITY" part + #ynh_script_progression --message="Upgrading permissions configuration..." --weight=2 #================================================= # RELOAD NGINX From af43ee6008069295fc8ec6f248aff964a7a0b8d2 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Fri, 15 May 2020 12:50:50 +0200 Subject: [PATCH 09/58] Fix upgrade error by changing rm options Warning: yunohost.hook - [1188.1] rm: cannot remove 'vendor/easybook/geshi': Directory not empty --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index e2a7375..709e29b 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -236,7 +236,7 @@ then # Move to the dokuwiki installation folder so the "official" commands can be used without adaptation cd $final_path - grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --force --dir || true + grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --force || true ) fi From 717f0f9f4452232b5888bbd4bd66ef130ce3a71f Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Fri, 15 May 2020 12:53:36 +0200 Subject: [PATCH 10/58] [Fix] caching pictures that didn't work (#65) Set HTTP Headers 'Expires' on the correct PATH... Co-authored-by: Gofannon --- conf/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 64fc3ba..5cb057b 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -39,12 +39,12 @@ location __PATH__/ { } # Deny Access to htaccess-Files for Apache - location ~ /\.ht { + location ~ __PATH__/\.ht { deny all; } # Serve static files - location ~ ^/lib.*\.(gif|png|ico|jpg)$ { + location ~ ^__PATH__/lib.*\.(gif|png|ico|jpg)$ { expires 30d; } From 2ab75c429794310209be9dc09b191f63a326d8d3 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Fri, 15 May 2020 14:52:04 +0200 Subject: [PATCH 11/58] Revert "Fix upgrade error by changing rm options" This reverts commit af43ee6008069295fc8ec6f248aff964a7a0b8d2. --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 709e29b..e2a7375 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -236,7 +236,7 @@ then # Move to the dokuwiki installation folder so the "official" commands can be used without adaptation cd $final_path - grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --force || true + grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --force --dir || true ) fi From fac3df20256f08c6f41b09ceb64e765f9af80d77 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Tue, 25 Aug 2020 23:31:12 +0200 Subject: [PATCH 12/58] [enh] purge of old upgrade files --- scripts/_common.sh | 95 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/upgrade | 36 +++++++++++++++++- 2 files changed, 130 insertions(+), 1 deletion(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 91adcdb..0d62977 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -12,6 +12,101 @@ # EXPERIMENTAL HELPERS #================================================= +# Remove a file or a directory securely +# +# usage: ynh_secure_remove --file=path_to_remove [--regex=regex to append to $file] [--non_recursive] [--dry_run] +# | arg: -f, --file - File or directory to remove +# | arg: -r, --regex - Regex to append to $file to filter the files to remove +# | arg: -n, --non_recursive - Perform a non recursive rm and a non recursive search with the regex +# | arg: -d, --dry_run - Do not remove, only list the files to remove +# +# Requires YunoHost version 2.6.4 or higher. +ynh_secure_remove () { + # Declare an array to define the options of this helper. + local legacy_args=frnd + declare -Ar args_array=( [f]=file= [r]=regex= [n]=non_recursive [d]=dry_run ) + local file + local regex + local dry_run + local non_recursive + # Manage arguments with getopts + ynh_handle_getopts_args "$@" + regex=${regex:-} + dry_run=${dry_run:-0} + non_recursive=${non_recursive:-0} + + local forbidden_path=" +/var/www \ +/home/yunohost.app" + + # Fail if no argument is provided to the helper. + if [ -z "$file" ] + then + ynh_print_warn --message="ynh_secure_remove called with no argument --file, ignoring." + return 0 + fi + + if [ -n "$regex" ] + then + if [ -e "$file" ] + then + if [ $non_recursive -eq 1 ]; then + local recursive="-maxdepth 1" + else + local recursive="" + fi + # Use find to list the files in $file and grep to filter with the regex + files_to_remove="$(find -P "$file" $recursive -name ".." -prune -o -print | grep --extended-regexp "$regex")" + else + ynh_print_info --message="'$file' wasn't deleted because it doesn't exist." + return 0 + fi + else + files_to_remove="$file" + fi + + # Check each file before removing it + while read file_to_remove + do + if [ -n "$file_to_remove" ] + then + # Check all forbidden path before removing anything + # First match all paths or subpaths in $forbidden_path + if [[ "$forbidden_path" =~ "$file_to_remove" ]] || \ + # Match all first level paths from / (Like /var, /root, etc...) + [[ "$file_to_remove" =~ ^/[[:alnum:]]+$ ]] || \ + # Match if the path finishes by /. Because it seems there is an empty variable + [ "${file_to_remove:${#file_to_remove}-1}" = "/" ] + then + ynh_print_err --message="Not deleting '$file_to_remove' because this path is forbidden !!!" + + # If the file to remove exists + elif [ -e "$file_to_remove" ] + then + if [ $dry_run -eq 1 ] + then + ynh_print_warn --message="File to remove: $file_to_remove" + else + if [ $non_recursive -eq 1 ]; then + local recursive="" + else + local recursive="--recursive" + fi + + # Remove a file or a directory + rm --force $recursive "$file_to_remove" + fi + else + # Ignore non existent files with regex, as we likely remove the parent directory before its content is listed. + if [ -z "$regex" ] + then + ynh_print_info --message="'$file_to_remove' wasn't deleted because it doesn't exist." + fi + fi + fi + done <<< "$(echo "$files_to_remove")" +} + #================================================= # FUTURE OFFICIAL HELPERS #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index e2a7375..88f5813 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -236,7 +236,41 @@ then # Move to the dokuwiki installation folder so the "official" commands can be used without adaptation cd $final_path - grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --force --dir || true + while IFS= read -r line; do + + # Added this test to reduce the spam printed by helper to the user in the webadmin. + # Should be less 'scary' to them I think + # + # number of messages = number of lines *2 (673 lines while writing this) + ### grep --extended-regexp --invert-match '^($|#)' data/deleted.files | wc -l + ### 673 + # + # Spam sample: + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'inc/parser/spamcheck.php' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/favicon.ico' wasn't deleted because it doesn't exist. + #Info : 'lib/images/thumbup.gif' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/toolbar/code.png' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/toolbar/empty.png' wasn't deleted because it doesn't exist. + if [ -f "$line" ]; then + ynh_secure_remove --file "$line" + fi + done < <(grep --null --extended-regexp --invert-match '^($|#)' "$final_path/data/deleted.files" | xargs --null --max-args=1 || true) + # ^ ^ First < is redirection, second is process substitution. + # Source: https://tldp.org/LDP/abs/html/process-sub.html + + # Previous attemps if someone reads this one day + ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --verbose --force --dir 2>&1 || true + ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 ynh_secure_remove --file 2>&1 + + ###grep --null --extended-regexp --invert-match '^($|#)' data/deleted.files > toto.list + ###xargs --null --verbose --max-args=1 --arg-file=toto.list ynh_secure_remove 2>&1 + + ) fi From 1332c386564f02380a6c4cc79c6cadf4ce59f448 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Tue, 25 Aug 2020 23:36:47 +0200 Subject: [PATCH 13/58] [enh] Simplify by removing subprocess + add comment --- scripts/upgrade | 76 +++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 88f5813..cf19ba1 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -230,49 +230,43 @@ then # See https://www.dokuwiki.org/install:unused_files if [ -f "$final_path/data/deleted.files" ]; then - # Use a "sub process" to start a new shell to run these commands - # Allow to use only one "cd" and to be more efficent - ( - # Move to the dokuwiki installation folder so the "official" commands can be used without adaptation - cd $final_path + # Feed output of grep[...] line by line to 'ynh_secure_remove' + # 'ynh_secure_remove' can only work file by file. Cannot work with a list + # This is a (complicated) workaround this limitation + while IFS= read -r line; do - while IFS= read -r line; do + # Added this test to reduce the spam printed by helper to the user in the webadmin. + # Should be less 'scary' to them I think + # + # number of messages = number of lines *2 (673 lines while writing this) + ### grep --extended-regexp --invert-match '^($|#)' data/deleted.files | wc -l + ### 673 + # + # Spam sample: + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'inc/parser/spamcheck.php' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/favicon.ico' wasn't deleted because it doesn't exist. + #Info : 'lib/images/thumbup.gif' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/toolbar/code.png' wasn't deleted because it doesn't exist. + #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. + #Info : 'lib/images/toolbar/empty.png' wasn't deleted because it doesn't exist. + if [ -f "$line" ]; then + ynh_secure_remove --file "$line" + fi + done < <(grep --null --extended-regexp --invert-match '^($|#)' "$final_path/data/deleted.files" | xargs --null --max-args=1 || true) + # ^ ^ First < is redirection, second is process substitution. + # Source: https://tldp.org/LDP/abs/html/process-sub.html - # Added this test to reduce the spam printed by helper to the user in the webadmin. - # Should be less 'scary' to them I think - # - # number of messages = number of lines *2 (673 lines while writing this) - ### grep --extended-regexp --invert-match '^($|#)' data/deleted.files | wc -l - ### 673 - # - # Spam sample: - #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. - #Info : 'inc/parser/spamcheck.php' wasn't deleted because it doesn't exist. - #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. - #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. - #Info : 'lib/images/favicon.ico' wasn't deleted because it doesn't exist. - #Info : 'lib/images/thumbup.gif' wasn't deleted because it doesn't exist. - #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. - #Info : 'lib/images/toolbar/code.png' wasn't deleted because it doesn't exist. - #Attention : /!\ Packager ! You provided more than one argument to ynh_secure_remove but it will be ignored... Use this helper with one argument at time. - #Info : 'lib/images/toolbar/empty.png' wasn't deleted because it doesn't exist. - if [ -f "$line" ]; then - ynh_secure_remove --file "$line" - fi - done < <(grep --null --extended-regexp --invert-match '^($|#)' "$final_path/data/deleted.files" | xargs --null --max-args=1 || true) - # ^ ^ First < is redirection, second is process substitution. - # Source: https://tldp.org/LDP/abs/html/process-sub.html - - # Previous attemps if someone reads this one day - ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --verbose --force --dir 2>&1 || true - ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 ynh_secure_remove --file 2>&1 - - ###grep --null --extended-regexp --invert-match '^($|#)' data/deleted.files > toto.list - ###xargs --null --verbose --max-args=1 --arg-file=toto.list ynh_secure_remove 2>&1 - - - ) - fi + # Previous attemps if someone reads this one day + ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 rm --verbose --force --dir 2>&1 || true + ###grep --extended-regexp --invert-match '^($|#)' data/deleted.files | xargs --max-args=1 ynh_secure_remove --file 2>&1 + + ###grep --null --extended-regexp --invert-match '^($|#)' data/deleted.files > toto.list + ###xargs --null --verbose --max-args=1 --arg-file=toto.list ynh_secure_remove 2>&1 +fi # TODO Taken from old "upgrade" script. Should check if it is needed and what it does # Update all plugins From 2075b564ae9cdddc2792b1929b663b23bf1886d9 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 3 Sep 2020 00:02:29 +0200 Subject: [PATCH 14/58] [enh] remove helper's code as there are in core --- scripts/_common.sh | 130 --------------------------------------------- 1 file changed, 130 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 0d62977..944a65e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -12,136 +12,6 @@ # EXPERIMENTAL HELPERS #================================================= -# Remove a file or a directory securely -# -# usage: ynh_secure_remove --file=path_to_remove [--regex=regex to append to $file] [--non_recursive] [--dry_run] -# | arg: -f, --file - File or directory to remove -# | arg: -r, --regex - Regex to append to $file to filter the files to remove -# | arg: -n, --non_recursive - Perform a non recursive rm and a non recursive search with the regex -# | arg: -d, --dry_run - Do not remove, only list the files to remove -# -# Requires YunoHost version 2.6.4 or higher. -ynh_secure_remove () { - # Declare an array to define the options of this helper. - local legacy_args=frnd - declare -Ar args_array=( [f]=file= [r]=regex= [n]=non_recursive [d]=dry_run ) - local file - local regex - local dry_run - local non_recursive - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - regex=${regex:-} - dry_run=${dry_run:-0} - non_recursive=${non_recursive:-0} - - local forbidden_path=" -/var/www \ -/home/yunohost.app" - - # Fail if no argument is provided to the helper. - if [ -z "$file" ] - then - ynh_print_warn --message="ynh_secure_remove called with no argument --file, ignoring." - return 0 - fi - - if [ -n "$regex" ] - then - if [ -e "$file" ] - then - if [ $non_recursive -eq 1 ]; then - local recursive="-maxdepth 1" - else - local recursive="" - fi - # Use find to list the files in $file and grep to filter with the regex - files_to_remove="$(find -P "$file" $recursive -name ".." -prune -o -print | grep --extended-regexp "$regex")" - else - ynh_print_info --message="'$file' wasn't deleted because it doesn't exist." - return 0 - fi - else - files_to_remove="$file" - fi - - # Check each file before removing it - while read file_to_remove - do - if [ -n "$file_to_remove" ] - then - # Check all forbidden path before removing anything - # First match all paths or subpaths in $forbidden_path - if [[ "$forbidden_path" =~ "$file_to_remove" ]] || \ - # Match all first level paths from / (Like /var, /root, etc...) - [[ "$file_to_remove" =~ ^/[[:alnum:]]+$ ]] || \ - # Match if the path finishes by /. Because it seems there is an empty variable - [ "${file_to_remove:${#file_to_remove}-1}" = "/" ] - then - ynh_print_err --message="Not deleting '$file_to_remove' because this path is forbidden !!!" - - # If the file to remove exists - elif [ -e "$file_to_remove" ] - then - if [ $dry_run -eq 1 ] - then - ynh_print_warn --message="File to remove: $file_to_remove" - else - if [ $non_recursive -eq 1 ]; then - local recursive="" - else - local recursive="--recursive" - fi - - # Remove a file or a directory - rm --force $recursive "$file_to_remove" - fi - else - # Ignore non existent files with regex, as we likely remove the parent directory before its content is listed. - if [ -z "$regex" ] - then - ynh_print_info --message="'$file_to_remove' wasn't deleted because it doesn't exist." - fi - fi - fi - done <<< "$(echo "$files_to_remove")" -} - #================================================= # FUTURE OFFICIAL HELPERS #================================================= - -# Check if a permission exists -# -# While waiting for this new helper https://github.com/YunoHost/yunohost/pull/905 -# We have to use another one because the new helper use a new YunoHost command, not available for now. -# -# usage: ynh_permission_has_user --permission=permission --user=user -# | arg: -p, --permission - the permission to check -# | arg: -u, --user - the user seek in the permission -# -# example: ynh_permission_has_user --permission=main --user=visitors -# -# Requires YunoHost version 3.7.1 or higher. -ynh_permission_has_user() { - local legacy_args=pu - # Declare an array to define the options of this helper. - declare -Ar args_array=( [p]=permission= [u]=user= ) - local permission - local user - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - - if ! ynh_permission_exists --permission=$permission - then - return 1 - fi - - # List all permissions - # Filter only the required permission with a multiline sed (Here a cut from the permission to the next one), remove the url and his value - perm="$(yunohost user permission list --full --output-as plain | sed --quiet "/^#$app.$permission/,/^#[[:alnum:]]/p" | sed "/^##url/,+1d")" - # Remove all lines starting by # (got from the plain output before) - allowed_users="$(echo "$perm" | grep --invert-match '^#')" - # Grep the list of users an return the result if the user is indeed into the list - echo "$allowed_users" | grep --quiet --word "$user" -} \ No newline at end of file From 0ce691091d35d9d5a182ea5427aad07b64a999c6 Mon Sep 17 00:00:00 2001 From: Gofannon Date: Thu, 3 Sep 2020 00:05:08 +0200 Subject: [PATCH 15/58] [enh] fix CI test for upgrade - add recent commit --- check_process | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/check_process b/check_process index f6fdd01..c039dfc 100644 --- a/check_process +++ b/check_process @@ -14,7 +14,8 @@ setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=01add99d3d903ca6d07f863045edf2ba46cf18d5 + # Laster released version. See https://github.com/YunoHost-Apps/dokuwiki_ynh/commits/master + upgrade=1 from_commit=500a7d3fa9c008a2b75d0f6bec519e41fed97da0 backup_restore=1 multi_instance=1 incorrect_path=1 From b428aa06bb56ac65ca9427ef642fd102f0314b76 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 10:59:54 +0200 Subject: [PATCH 16/58] Update app.src --- conf/app.src | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/app.src b/conf/app.src index 4021565..2274131 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22b.tgz -SOURCE_SUM=9d1437cdc7e98e471ff32079f7ca224ccf52dbbaafed39ec9746b0405b3a29ce +SOURCE_URL=https://github.com/splitbrain/dokuwiki/archive/release_stable_2020-07-29.tar.gz +SOURCE_SUM=cc1cd9f00095fea327baa79d8f02c904fe1c37bc3f8fd9999eaf646ee9928884 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true From c5178d814f1a989739d761ccec2e8df274c6a093 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:34:47 +0200 Subject: [PATCH 17/58] Add badges --- README.md | 6 +++--- README_fr.md | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8f18d2a..fd1beff 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DokuWiki for YunoHost -[![Integration level](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) +[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Lire ce readme en français.](./README_fr.md)* @@ -38,12 +38,12 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ### Supported architectures -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) ## Limitations -* Cannot create or login with dokuwiki internal users, only users from Yunohost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +* Cannot create or login with DokuWiki internal users, only users from YunoHost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) ## Links diff --git a/README_fr.md b/README_fr.md index 2eb9035..ee91cd0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,18 +1,22 @@ -# Dokuwiki pour YunoHost +# DokuWiki pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) +[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Read this readme in english.](./README.md)* -> *Ce package vous permet d'installer Dokuwiki rapidement et simplement sur un serveur Yunohost. +> *Ce package vous permet d'installer DokuWiki 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 DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. +<<<<<<< Updated upstream **Version incluse:** 2018-04-22b "Greebo" +======= +**Version incluse :** 2018-04-22a "Greebo" +>>>>>>> Stashed changes ## Captures d'écran @@ -26,8 +30,13 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation +<<<<<<< Updated upstream * Documentation officielle: * Documentation YunoHost: +======= +* Documentation officielle : https://www.dokuwiki.org/manual +* Documentation YunoHost : https://yunohost.org/#/app_dokuwiki +>>>>>>> Stashed changes ## Caractéristiques spécifiques YunoHost @@ -38,27 +47,38 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ### Architectures matérielles supportées -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) ## Limitations -* Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de Yunohost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +* Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de YunoHost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +<<<<<<< Updated upstream ## Liens * Signaler un bug: * Site de l'application: * Dépôt de l'application principale: * Site web YunoHost: +======= +## Informations additionnelles + +### Historique des versions + +## Liens + + * Signaler un bug : https://github.com/YunoHost-Apps/dokuwiki_ynh/issues + * Site de l'application : https://www.dokuwiki.org + * Dépôt de l'application principale : https://github.com/splitbrain/dokuwiki + * Site web YunoHost : https://yunohost.org/ +>>>>>>> Stashed changes --- ## Informations pour les développeurs -**Seulement si vous voulez utiliser une branche de test pour le codage, au lieu de fusionner directement dans la banche principale.** - -Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/REPLACEBYYOURAPP_ynh/tree/testing). +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. From cb229a1462fabe42654b289ef9d70e3b0a0698f8 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:36:42 +0200 Subject: [PATCH 18/58] Change version --- README.md | 2 +- README_fr.md | 8 ++------ dokuwikimainwindow.png | Bin 21486 -> 0 bytes manifest.json | 6 +++--- 4 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 dokuwikimainwindow.png diff --git a/README.md b/README.md index fd1beff..2d1b627 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. -**Shipped version:** 2018-04-22b "Greebo" +**Shipped version:** 2020-07-29 ## Screenshots diff --git a/README_fr.md b/README_fr.md index ee91cd0..1d80136 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # DokuWiki pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) -[![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) +[![Installer DokuWiki avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Read this readme in english.](./README.md)* @@ -12,11 +12,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. -<<<<<<< Updated upstream -**Version incluse:** 2018-04-22b "Greebo" -======= -**Version incluse :** 2018-04-22a "Greebo" ->>>>>>> Stashed changes +**Version incluse:** 2020-07-29 ## Captures d'écran diff --git a/dokuwikimainwindow.png b/dokuwikimainwindow.png deleted file mode 100644 index c357376b781f55d9cfe7d6505bbc679a4dd41e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21486 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 diff --git a/manifest.json b/manifest.json index 8b83da8..53dd472 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22b~ynh1", + "version": "2020-07-29~ynh1", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { @@ -63,10 +63,10 @@ "name": "is_public", "type": "boolean", "ask": { - "en": "Is it a public DokuWiki site ?", + "en": "Is it a public DokuWiki site?", "fr": "Est-ce un site public ?" }, - "default": "true" + "default": true }, { "name": "language", From 7bea7b1b3b2fb3d96d43b98288c431c915c3dec5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:39:46 +0200 Subject: [PATCH 19/58] Nicer screenshot --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d1b627..bf68e11 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot of DokuWiki main window](dokuwikimainwindow.png) +![Screenshot](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) ## Demo diff --git a/README_fr.md b/README_fr.md index 1d80136..ba796c2 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran de la fenêtre principale de DokuWiki](dokuwikimainwindow.png) +![Capture d'écran](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) ## Démo From 9b7d078d822ec79fca72bae24dd5c4d4e38f573d Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:40:23 +0200 Subject: [PATCH 20/58] Cleanup backup script --- scripts/backup | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/backup b/scripts/backup index b931a0e..176834b 100755 --- a/scripts/backup +++ b/scripts/backup @@ -19,7 +19,7 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_print_info --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME @@ -27,32 +27,31 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_script_progression --message="Backing up the main app directory..." ynh_backup --src_path="$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Backing up nginx web server configuration..." ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Backing up php-fpm configuration..." --weight=2 ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" #================================================= # BACKUP FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Backing up fail2ban configuration..." ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" @@ -61,4 +60,4 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" # END OF SCRIPT #================================================= -ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." From d6660e904fb7e917b362b20df5dedb4c8846470b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:46:49 +0200 Subject: [PATCH 21/58] Small typos --- scripts/change_url | 16 ++++++++-------- scripts/install | 22 +++++++++++----------- scripts/remove | 10 +++++----- scripts/restore | 4 ++-- scripts/upgrade | 20 ++++++++++---------- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/scripts/change_url b/scripts/change_url index 6851308..fe9ea64 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -50,23 +50,23 @@ fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating nginx web server configuration..." --weight=2 +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2 nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# Change the path in the NGINX config file if [ $change_path -eq 1 ] then - # Make a backup of the original nginx config file if modified + # Make a backup of the original NGINX config file if modified ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for nginx helper + # Set global variables for NGINX helper domain="$old_domain" path_url="$new_path" - # Create a dedicated nginx config + # Create a dedicated NGINX config ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location @@ -81,7 +81,7 @@ fi #================================================= # UPGRADE FAIL2BAN #================================================= -ynh_script_progression --message="Reconfiguring fail2ban..." --weight=6 +ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=6 ynh_add_fail2ban_config --logpath="/var/log/nginx/$new_domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $new_path.*$" --max_retry=5 @@ -90,7 +90,7 @@ ynh_add_fail2ban_config --logpath="/var/log/nginx/$new_domain-error.log" --failr #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index 4ceb331..820c3ef 100755 --- a/scripts/install +++ b/scripts/install @@ -64,9 +64,9 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." --weight=2 +ynh_script_progression --message="Configuring NGINX web server..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -80,9 +80,9 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." --weight=2 +ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 -# Create a dedicated php-fpm config +# Create a dedicated PHP-FPM config ynh_add_fpm_config #================================================= @@ -90,7 +90,7 @@ ynh_add_fpm_config #================================================= # CUSTOMIZE DOKUWIKI #================================================= -ynh_script_progression --message="Configuring dokuwiki..." --weight=2 +ynh_script_progression --message="Configuring DokuWiki..." --weight=2 # Loading order of configuration files # @@ -103,8 +103,8 @@ ynh_script_progression --message="Configuring dokuwiki..." --weight=2 # See https://www.dokuwiki.org/plugin:config#protecting_settings -### Copy Yunohost specific configuration -# This File cannot be modified directly by Dokuwiki, only by hand or by Yunohost +### Copy YunoHost specific configuration +# This File cannot be modified directly by DokuWiki, only by hand or by YunoHost # It will only be updated by Yunohost package or directly by adventurous users cp ../conf/local.protected.php $final_path/conf @@ -112,7 +112,7 @@ cp ../conf/local.protected.php $final_path/conf ynh_replace_string --match_string="__YNH_ADMIN_USER__" --replace_string="$admin" --target_file="$final_path/conf/local.protected.php" -# This file might be modified by dokuwiki admin panel or by plugins +# This file might be modified by DokuWiki admin panel or by plugins # It will not be modified by Yunohost in order to keep user settings cp ../conf/local.php $final_path/conf @@ -159,7 +159,7 @@ ynh_store_file_checksum --file="$final_path/conf/local.protected.php" #================================================= # INSTALL LOGAUTHERROR PLUGIN FOR FAIL2BAN #================================================= -ynh_script_progression --message="Installing logautherror plugin for fail2ban..." --weight=2 +ynh_script_progression --message="Installing logautherror plugin for Fail2Ban..." --weight=2 ynh_setup_source --dest_dir="$final_path/lib/plugins/logautherror" --source_id=logautherror @@ -209,7 +209,7 @@ find $final_path/lib -type d -print0 | xargs -0 chmod 0755 #================================================= # SETUP FAIL2BAN #================================================= -ynh_script_progression --message="Configuring fail2ban..." --weight=7 +ynh_script_progression --message="Configuring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 @@ -228,7 +228,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index 6bb05bb..b0d36b7 100755 --- a/scripts/remove +++ b/scripts/remove @@ -32,23 +32,23 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration..." +ynh_script_progression --message="Removing NGINX web server configuration..." -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration..." --weight=2 +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2 -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config #================================================= # REMOVE FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Removing fail2ban configuration..." --weight=7 +ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=7 ynh_remove_fail2ban_config diff --git a/scripts/restore b/scripts/restore index 0cf8f4a..e36a534 100755 --- a/scripts/restore +++ b/scripts/restore @@ -94,7 +94,7 @@ ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" #================================================= # RESTORE FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the fail2ban configuration..." --weight=7 +ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=7 ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf" ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf" @@ -105,7 +105,7 @@ ynh_systemd_action --action=restart --service_name=fail2ban #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." --weight=2 +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM.." --weight=2 ynh_systemd_action --service_name=php7.0-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index 8e9eaaa..645baee 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -63,10 +63,10 @@ fi -# Yunohost specific configuration, if it isn't exist already +# YunoHost specific configuration, if it isn't exist already # Previously, these settings were store in an unique "dokuwiki.php" -# Now, they are split in multiple files to ease upgrading process (separate Yunohost config from user config) +# Now, they are split in multiple files to ease upgrading process (separate YunoHost config from user config) # Loading order of configuration files # @@ -176,9 +176,9 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2 +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -192,9 +192,9 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." +ynh_script_progression --message="Upgrading PHP-FPM configuration..." -# Create a dedicated php-fpm config +# Create a dedicated PHP-FPM config ynh_add_fpm_config #================================================= @@ -203,7 +203,7 @@ ynh_add_fpm_config if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading dokuwiki..." --weight=7 + ynh_script_progression --message="Upgrading DokuWiki..." --weight=7 # Remove upgrade notification inside Dokuwiki's admin panel # See https://www.dokuwiki.org/update_check @@ -256,7 +256,7 @@ ynh_store_file_checksum --file="$final_path/conf/local.protected.php" #================================================= # INSTALL LOGAUTHERROR PLUGIN FOR FAIL2BAN #================================================= -ynh_script_progression --message="Upgrading logautherror plugin for fail2ban..." --weight=2 +ynh_script_progression --message="Upgrading logautherror plugin for Fail2Ban..." --weight=2 ynh_setup_source --dest_dir="$final_path/lib/plugins/logautherror" --source_id=logautherror @@ -306,7 +306,7 @@ find $final_path/lib -type d -print0 | xargs -0 chmod 0755 #================================================= # SETUP FAIL2BAN #================================================= -ynh_script_progression --message="Reconfiguring fail2ban..." --weight=7 +ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 @@ -329,7 +329,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload From 8accb206f20e013e30309aae5298d7d815b5afb3 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:48:33 +0200 Subject: [PATCH 22/58] Update README_fr.md --- README_fr.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/README_fr.md b/README_fr.md index ba796c2..51397f0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -26,13 +26,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation -<<<<<<< Updated upstream -* Documentation officielle: -* Documentation YunoHost: -======= * Documentation officielle : https://www.dokuwiki.org/manual * Documentation YunoHost : https://yunohost.org/#/app_dokuwiki ->>>>>>> Stashed changes ## Caractéristiques spécifiques YunoHost @@ -50,14 +45,6 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de YunoHost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -<<<<<<< Updated upstream -## Liens - -* Signaler un bug: -* Site de l'application: -* Dépôt de l'application principale: -* Site web YunoHost: -======= ## Informations additionnelles ### Historique des versions @@ -68,7 +55,6 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * Site de l'application : https://www.dokuwiki.org * Dépôt de l'application principale : https://github.com/splitbrain/dokuwiki * Site web YunoHost : https://yunohost.org/ ->>>>>>> Stashed changes --- From 0db62e3a35ce0f87fffba3f6701586f8f504ce90 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:55:17 +0200 Subject: [PATCH 23/58] Update README.md --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index bf68e11..5d0b729 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Documentation -* Official documentation: -* YunoHost documentation: +* Official documentation: https://www.dokuwiki.org/manual +* YunoHost documentation: https://yunohost.org/#/app_dokuwiki ## YunoHost specific features @@ -47,22 +47,19 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Links -* Report a bug: -* App website: -* Upstream app repository: -* YunoHost website: +* Report a bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues +* App website: https://www.dokuwiki.org +* Upstream app repository: https://github.com/splitbrain/dokuwiki +* YunoHost website: https://yunohost.org --- ## Developers infos -**Only if you know what you are doing AND want to switch to an unstable branch for testing or coding** +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) -Instead of merging directly into `master`, please do your pull request to the [`testing` branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) - -To try the `testing` branch, please proceed like that. - -```bash +To try the testing branch, please proceed like that. +``` sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug or sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug From 65d17a64b58e13ce540919aebfb7c8db8d35d582 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 25 Sep 2020 21:49:16 +0200 Subject: [PATCH 24/58] Add local screenshot --- README.md | 2 +- README_fr.md | 2 +- sources/DokuWiki_Screenshot.png | Bin 0 -> 141447 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 sources/DokuWiki_Screenshot.png diff --git a/README.md b/README.md index 5d0b729..ea35bc5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) +![Screenshot](../sources/DokuWiki_Screenshot.png) ## Demo diff --git a/README_fr.md b/README_fr.md index 51397f0..cc4b1d3 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) +![Capture d'écran](../sources/DokuWiki_Screenshot.png) ## Démo diff --git a/sources/DokuWiki_Screenshot.png b/sources/DokuWiki_Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..dcba61c6d18cee25ab47c4bde5370fcc71d41830 GIT binary patch literal 141447 zcmb4qWmFu^x-|rXJ40}H3-0dj?lKTu26qC%-Q5Wi+}+*Xo#5_nAMd^QoOAEbZ%y~i zRM)IE)m3}%daOegH5*1Q)TRF{i&CpeQ z`q(^3I$HH)Z%6SsB!U%73n5Vx-3!kNG5(5L<@Xb#yRsO@ALI5#C4od4fJR&g21_nT z6dBX8Y%S&D`lD#wbMom8WM;-OTqu-)mBleeTg%g!;b@!cDDc9YErAV0@F#-#_tC>{ zG>r0}razH24@u$wX+!`2wxbaI{`CiTiNcc(-^SVkaoW-J4tvAYXBf|L`*0uPx=|sG zlEp|=Acau=>u{5S)c0G<^E8*mSqqEpE77iYEY)H?L59>fx}p7%4eU;-rc23Oy+(S@ z-mPDdqRUF(6r!J)@tnrWdY-|%Z9Ni1#J|AjFVyJ;-ivY6EGDlEwHGv0?#D54I2>8~ znsuPLotu4_G#ZroT6udx4_9iBNKCdyKfas;SF+Wwn;qYW`{5y|%64QRE&`2EnZ*8k zSSSIFqM$e2TRL~Z&tvKX<24#EV=KafruWG4N-S)d+4{v9)`4|r=%PzFy9f770dNrk8{w?_8W>I@!H3UBUK+C>e7#O8lBwqN$*pe5P&{|My4n7G&+>N zuUVyC+kimJxDHpy*wd_+KCcN5{s(Vh(S+shslw?nb|jA`#id8{@mlBAMylADyrXx= z_|DG|>VGYL8=`KexO@9;n-_G;4wwHLJFgax+?>~6UCT5V??rGkT}qpe#wtA6{LM!e zo6^B8ZOa$-IeT{KeFwbsQIPe4fJI4p;Zg3y<$-P##AL}w^nGcQ2|;ISvSD6pf{xkk z#|w#f2H7k>Q{W%D>qG8arguIAp3pG?`GTDX=$rR?c&-DpGwZw}^Y+A@yd&Km6#;%B zWpI}S(rChQR5s}#xAdrg4Hc$Ghe(+vmg|oURl|6X&U+@kj2<*{1!PXF7( z)}MWkEPn5y1M}Bq4n|jF|09}i^g*xq^NCzkSe=bVeIJJKDBQ{XBx4T;UIrgesQ$BO z5tod)C&C~eJIZ)ys;Q4)fjouQpJBhhgx!7^+7a-aD*#3n+OZdWEg=|x`eLFPa7OOczcq)!=a~T+k8r#rtkqxn3hEf24}VUxPpPK^3vfM zlJ&|+xj8K~_$>j&REx7gY(9j7-_!W()82{2q!XxH;-h=e_l9K9=Q=y0-SE4@9?{Ld zGXGsOv}A@oawyA3Kjp;*c{%)=_gyEaUDo7{K>9>TH1EV+cnf>_N^SeuDnXDC;X-_>>K6gcx*q3#D*u_ zn*m>_7>lQj0!T*dWf5y9>uj&7{y|0H;biRN=C~XB;}xz&pD%(hD|52WGqJOR3zAyJsRn9|;-%wZ&hCHQ~jynS9*~mNJj7f~#3*BfG_E zMb2Qo0iW<%Ji=RtLp8QK@4vN9F1Guji;n<;mVg5V-;gu`zV7p)2*dOpR0pf(oha59 zy(-*bUnje?gRyPD#BCqhO@|Jb;~giTXRnpl%9}onAc4*Jfz_?yw%|^_n5~lJPN9Q5 z^x}^ly$t(-FNLqqGENWPK@11kJAcz#sgY=%Zm)+*NuQQ$v&}YYZnz%C2b&&0Wz60T znPISZ^tk!#V36tJKL63dh2QMm7XR(%unXv^@nH7uo%HDOV3_v?_0d=1fa4I@f8GjO zyig$ixE$tnln)SiKO`qObmn}o5qVPe_7ATR2)*~*nB0tx24Z?N-JeXdc>e|HH-E5t z__ibG{}|g>VY$&cOP;s~eayabjwiA%2{H`|B+c26(o@!)HbUD69PQTFwe_3?;}2X1 z%bPwmN>pt%6g8i!h0k_+({-+|Zs#y$3a(~KfR^`_|7?iAGz1OX7J65@9lpzdZ}kB8 zCgcu_^352lC2VZ6TG-;WvskA$$Unav6zT)~&jyF`zCLEKGLgxm57f#{?7a8N7^Ly- zdfm6XF0HsZl;nB6t-#b=Uv8W~gLL$jFuPKv@V=8IsgT(Xkx6xGkr=ErfFqnc^}y-$ zgk>8?Roy|2;A{_Fn;nJvirSbuATvos@YNW-*waAd>BjK<;^IP2mffOY8MppYgYa6lA9N>+0M0`&42jmQ_I~G`WNM8ShnVI7c5bv;O9~ z({H#5f&&>7#qImm$A0rz2pjQ@Q<>c93)G=!JVY*}^Mp@ee}Z5%6Ms)ULDAPU%+{M@ zjGp+3RGFJ?TW?`2}b)A>H?!Ar#B`W^YH z)$#5?LeWBpHQOF?lhYyJ={rw1bR}1S$O+wFbk~D5Z@{^f%F`jgQbw4#{D&r+RhIT- z)wgEbFqQA?@zqL1>b;-~nVP>x1TIaP6&TyUk)uu8AULHaI7>rMXKCHr!IsHK-HEWe z*$7K=M{3OZ?U^@M%!cxtFiel9$4^yEa}!4O2j%xq!}JNX*xITR^{y#=Pp$S_qB&TY z^Fr9_FYjv6#(bL6vy3L$#>)tKMaPGINkPZ?UX(mx=^abL`Cpe%<==;>T*8s8J-K`z zBre}rPAu%{aPCw49*Qi^KO~S>ai(hD&Q@I-<~l0KX&<4>b>I9fOX$J}s9Ueb-%hWa zTS%YpU1Da2{NIB<4t)L<-G1Qs;EpX8w42wd3pI#r(SOOjN-B*RyuS7{8 z2#Z4GO6Ub5Y%Df~293kkYu%h5)JN_q`t|2F+97e)Y~EQKWL|F-P~V1~=`P$NhbTLR zcxwzLUv&O_tohNsZ+6BCeB}SO%aYn%yNHRfIRKwNIch&b`}TG##H>d!0(a?YjRW7y z+x1d<_`1mhn)D5bh1Rf1j`1J9IUT<_;@K6AvQRdh2dxa2G@ol!);x|%%(he{Td%vN zjQ|OZ=6*j0A!o@)BpuIe-X+S>S*pzA(9-AIqqB1pA`t2sN)*fdxxRAAhZ87jq}7%* zf??Mdg8r%e3ux3@r;ZR65g!&mQlLfnGkGGm-1>L3mo|5VWhBD=wA)z61x7`aE8>j@ zVuR`7IMu{ukez9DQFc^^?Zn%zh^TZcYez87Ni0j%5qJ&fCH$cM!yJq)ov>aH9OiKH zN+zCex6Hv|WicTyfhKEo*wlwG=y50;f2PC6Oy=xF!R$zZZJLp>YNW84S~-en*THacL0s|dQEvCG0UTFQNfIT_*LzwTwrM-qDQMU#27pT3_wMv z8_id9ZWBCRnx?drs`mK4)zIF+pHg+_z3L1E=}<75URC~)?-+N9ctt7S=@_y?CLGCX zj1sRl`~|&p_`$3eKj*DP=?PP_ZZI@G z^gN}j*zP#}JBy_e_v`9-!{;w1U8x6Q(2HaL2KIUm1_Wksq$cckSR4q~q{{OJeGombq1viW` z(226N_1VqVg5c~f`D-GdxVrV*vdhPfh5g3>E(d?)!HZk1?QY~JzWJL!R^L}^+BeHRWgu%{mS(i1D z#o{aV*OhRq;9_!PV2)g5u(#HIF0HT9pfkl?rem!1^K3K4v>#7E@O_%c8S{Ao`RjMl zBbx~W=fx^7Yq7;{CmjBY(>@NNGG(;_`CSuQjp<`|E_Bh=(S+<`R>~YAF7Nzm+>Ma?XG^t^! zQ8LZ~k&D2K>sFJxu6%#spuPJZ$q}ysGgNjtbXr@5YIpd+@%L=|tr_#@yU7d7ZGorM zLttf86kFT-b7@_3miX*(79BFZRDP>|w zLO14rd!`LT%ar({X53px8cEjbZ;@Dm>>(FXNM zmPJ!e>%V0A3*l<)YGc(TSe`1vQ(ZUwc)d+YZFk;P30HZs%Bu^!OGQ#RcaYnjmMbr< z_n@zwAziPPBAVV^jvHEu;XK#2=b~2E2Io}`ZoxU9A5>qTRgLYosmJ*bPh`1|oc7Q7 zQY9S`&-G`EvFrC3zpx#Xo<21VwpmazFJ^Z8BoqFuEl7wY8W-Ux&w0*Jxa{Vm!Fnb2 zjr(|d=JdG@JaB)PC~{cW3%)wKu?3DKN?GEhbGL?pcb4sQa<*{rDGglJWSSq%be6_B&?=?!BYZ zYT6)k4=`u#6?z{2Ja-xtspyv{Z~SM`CbO2z66l2y?F#rnayFk z!{aU{CDTrDH1km^E z9L2f>#jFJPtVBy?bjQYBUAdN+&Z_i^Iz46PQNJ@C9*_Uo5*a#(Mj2Ka1A`1*N*P0{ zghpk|+noSNc{=La>3g$(;VaZ-)40)9-uaFVJNTm!#J1}|fUl=@&A;U0|8~z4(|(`T z(*#22JP(Km;Z3joH}nGVCGWNNFRqx%TJ?d~-5_k_F1n5^Gvs$lAf{|lffgFfhSIg3 zuKjyBtIvaGhd_7I)sn^cxG%1HS1Vp^+zA6MfOS5t4b7GD8a3~-6TOMjTFlEL0Vl?bdCaF{jLldG`u~nOoi=gZ zwtT&Pn4g*38ZiV*;rH+b!3P3ue|Ja)0EA$s%TgDIS7H%QH4sY==yubdnE0=oALWTn zLQ4evsRgs!!E+q)YYL| zq{_y~l1q}s|BjOqkCbF`{|inQKU-W``gxa0&(9u~B~~Cj+|in9did39kaa6r(h^m{ zlppaFPCkSab&5GrAr&JOtE!s%^y&-F09L{ZBY$OUYrIvbBQ}Eo->*px@(}Z0e?gVl zi0zhda(C3?>>B>ck3K(zncjxUbzN_4A_!QrYA5&&4JqsY#3WK3D8u{&9eUx5;L~ z|Kyb=OzrWzQ$XYsw!ZAIjSTA&g_X(Y=kn@}2LC?>Y$H&KiB-IRc;6}g0(nST@1b=8JL9C!)MIy0k zr%#CvrqtYAcPTC39wIciBB9F0g+e}Tytw*YjS5_M37DZPAS@IZRR5Lh0PXcVO=gdp zm7t$uR=XE=4pr9gCvOUbj+g`(O4=|M0Fu5on1Tk^8E%3-4GxkF-eY@_1hgxD{L68I z+}4})EeGI1fvigK({>o*A|$CfMUCmn`W~UZMe<(_ zyI(aPM@+McH|7WW*1+9%sUZva=m4gBOy{r!#|8Mv!Z> z<-dZSC;_f)Jc%i29?`o;7YfONvG4D!Z>g+DPJ~BJ419bipPbAC2-QS*5i9gn+v`EE zx=0lmtEyUK@zuQaLEUefvHnqw8+fKUKC${!US3d>_hq%A3K|lP=a#X$?9u=zJS}b& zxxgKP#`McW0tL&ztH``fZpIQyEV{d8;g^31&JV7j4{H{ZkuAz!#&RUFebqKu9)GEk zvbhtv9JBt;j0%hfcm*lU_x))AXyu2})Q6^gPSgwdlUZ_JYt0hSGURkavW|H`?0`Ua zQ6YQlx>CQ-rt=Bj*%{Gc?>{l*3+)XiCevL*IZ46rUvB zXiv?lvUViJR11L5m^}pQiVx8oF7Pj7-hd#|L=Z_|p>P;Zo?o%tBB44Sw!A1)@Ap!6 zeSJTnc*(wM{B(|Fy1xc21iR@PdSiZW89L~s6@b8*eb&M@8!N-sD6uMQ{I`cO2!me* z_7CPg86C*;<@34@-A1}kJA+Nf=?41)*&hUpkwf#O|Gv#OTKB=ego7;ijE~kGiu(;m z4zyva9SMz^2Lk9=X$o`e;=G26wC5G>5*pgxLsXtyoN61~Rpq6qUp9f%)P99@an|PG z=!NT$V$tJVy#c~Q;^O4#Avl&SC$>k)Iw;a};=;o}@|EV)#S;8DRtq9LJ+05#|>nj@4sZYqU4J&UMIqD z^d@qQ?FOAx?4E44$X5{jFRBgmP!y`F%}>p#j&f8!B3!xQ6{t3Qd~$xp++Pp~)g}>C zb^;A0fQ2H7V5#Y6v=zLqmLP;`D&w-;>)Y{^kQIqrg>8^9ZtFSPL6yFVL}eOVQVh15 zhw_`NfO&%Y52xW}@ORsux!+2jXOVX!#y%g5m`%5{D%D`E#Gz^!A`iRWP#CUP8h2B^ zo4luv$UjE(>2+WKh&-OlHL|#@iSj>RDU4!}{b$xs+y*V-3Y0N^&uY~vnL}g|#*AVf zUQEV~9#8{#y#$D+(gbmDW0IM+X%k527+3m|@}&}Lr1c0}#s*?Z7ARJ+*b5~7*hGsj z3wABLE$6;1NwbEn*k?{{_S=7meB?D&M%U8pWTb@wBZwJ|x+2+gAPDmz;(`f>i3wjg zHM~xH*93q}zV9!kqSk>b$z(2loU+}xYkFe^oRyhtr+d2)oMaBDw@|>)-1}kE6mi0dW%KyN;5*7-+mYy4g4QO0(aRA8HgZn2a?|DV zhi9AYxDa2gLvuI8`+j$(R{kLABYk|#ED5ciJ`XyoXT2Rf{vn7}ODUuATjs;nm+_;E z&0p~wJV_Vc4^|FeVgEhU3+|2SA;9E~W@82J=!&K_7QcrGqTJ!KX!25ANS?It$bBdk z#EET&aJNuJ+trG3Fi;c|o65OJCQ&dm2YI70OAO%5nl}#X10C^$@2^xsngJALF zG>Jv6B$1a%i7gX6;vwOEiq@KHAh;d?@tXDpH4Db$U|VD8&|?s zX^Ik~%ac4{4K0p55tl4t(Y?vXb${)KesZuve;L5L7W(4{$B3hMD=D`UxxW)VC|>|` z&8280lgMP$PjH6ntk>~=HQT(4*}2oAleODwz?WnKggeQAxJq`~rq@$2Y4lL-8%W^B ztf<(9L;LqCZaAOXGxa}sFO;8{-j%p4)HzpqIP+Atw}hDe7%%YjMjmdGaRkzjk0&m< zB%GgjZ0|C>^bNgNiVlUk zIZk=L%j=C0PoX%||6q{6c{q5fD!)9KY_9|_0H7}RRAa=3h;dg=L&51&^=V3j`Uo&i z`AOsz*tY^XSg;V=wX&z_6P?P={*GMeP0B>`4HS^3rvN}hh<6#&IBlQl!ijkRQ+Zyo}p?ta<4BBsh*8moON+}MtPK)kTa$lC|>oTzhiD$ zCQjXp$)G1`&=M_p5?7Vmke80Y5Ti-{fhI#uM+<;^Rc;CYf~S+{t<^^4b<~w3_oy|e z#L51M<8LS^S*^KA$ml7Rv>_{~!EGp7J{pWvL1V=vHfg_k%D>_nMn!b+%ak^1wTSsN z-p@&1<(3syLP^UsK8y$O1xpWekCxC{$g0Z#9#u>AQlDwkoNnGuBB;2Q4;w_2fc)^S(rI8)Fg6|k+-HZkU~`;x)G?B z&;sfGGRvvi`5WRXD2QD?s^_3K%noaK@i|VauW#{%%et35l^59Py%su+$ zGXI#?JYy{6?`ax1|WQkc|gpv3*m%=7n@!*2?tji?5Po??mc!U z&^N526JrWy+adl}EdXQL=p(1gQuJ{E{&Nx5FB@u-s2;;&X-zDMW+FUX3BO9jlAP*< zKpW}^jO}_c+U6s>&aLqS{jE49`a14!S~er|2@sQmVNI;~T#0FX4_${js^n6EEul(= zWpS?OibCXLM#qzTTu#?y-(N1NU$-iK^E=pwjb5TjP#r@Cb*)#0lM&2qbdHdP0)!-oRyAd9yr86>Mhq1E{I*2{9!g?l6#oWhEIMeFT&wsyhS>#fk>c zNr6~7o#u>b4o<;9+LcAm-LTw7sodhD!yAxwASM>g4ts@ZqF7EBmbH#jrqdKwm{`wQ zB7zknN;uV;d4lyIjqTG(WwBOkii|kBikV0UfX*09@6w)DxvtF>Cvj&0)ot4inQfa5 zf=dp9WJHimQA?9)7v7!U?UA_7)%9jaC!0(u-q^%3jE|C?v8LL;;R;>iW+`G2q>C#<-Iga&ZOD!yx}-_QWVp)C#>Pgcl_mxaHA>*Nv}td&s6?l& zvbAwg%gMeQ9(1?-vlgk`P}vb-mE9yf?cJXkTP>oz(W1g-gyh!_RRV@BrSPG9T$pwr zX_&v=;jra(KjX@82F%L?Exub*w!zbQ;oOudz}}JAn;_LLotBPav=S58^;dK_)`B7I zPC#f)TmDc7aOd``QQG8BcN?`H8qcbnt{i)t@DWk0mbe??iv&eE*ugxKM54xXwJgue zgNRd|@n$*axg|wB%UI>xki|u&zbO`EX*e)&1z~*BM$!ZfCA#xNh9iT0aP7uW0T=~c zpdpvCy(X`;*gLf{7*;Ed-&!qhd<>~S%WQxo>{-gcX{`RY>VFbgUt64YW}`Z4;+$VR zvY3?7KeU(iU3 znB9Vzs$M{}Tsgw5F^mk%pdODbDzi~RCh$Rq$;Kg17gXfkK8b!)+txs1P%(B>>5eVV zA-YsfE-q6pV>(8Wx!9DH*S?s4h-+LS){t}M^w?29VJc=8tJ{4!u<}J^fSlS5d?nzo zSf3KBhQu^^Z2lS_#B@ktKH#f@$|b^;BvqX#kSVG29Y^8qj51=_38e4MN1cO(5Kw6z zK^TLxJ~EWQ@k=L`WC&B5d*r7;7)BUPShqAkE?!DpNC8~}FjniD;*8~8Eau$Qi)6sI zV6r_qakbAI~D;k30f?gx$Uj;Y*mleGpt+-gzE27+bTl0%a+bt970RXkASiyg$ zD|>S1#Bd5PQLYYPT+vh0L&63f5$&)-j3JAI+6|8oRbDK`jRhe_m{6cdUaJKpI!1d= zK*5=$`5Iars8TY=(m*}JC86dx)CZYG_*@R)?JWy@`_w%4y{gF+x5w0SbAyZ7>`&K& zS}Zmf-`!eM$Gt-1eHaFSbJVf}YuloYvVOlRv;WfK{@g~1xYm0JX+ zzDJ@=Cx{%KS@kiZW&Iyb!E-jE3^zc=}w_)^47PXMf( zX~nP(3jZgpv=)ERouh%#{M*BhDf5;%wWY{}`SpMyZ50M@?1S6d4cE?X^!3|`Z6dAY zf5^yW>Sb%*PvQ@w|1gNE40Z}pdd8V zGAfBa31C*V`)+8YLolj-i^(bkmh^Qe-MGm`Q>nOpFrT6H%31Sx39C3_wJ-nMkNgg7 z2qg)lRilq*2OJIzvxVA8$7%9pmb{{L$CDCCFnuYS>6IL3!8aezDegO>gmM@!0f1x# z6gmPOtf`XNFX~Vl4?)#wDj8G&e4W4(s}+GKUO6J?#Lrf^fuHcVUxNg0_aAjo`5*RZ zpY{_uVkF7-{+E^Y58wV?VFeTVfLZZ)PyycjWaA=50cD2nHe) zm0EL2y^9n8egswWp2PT>tpFOc7g5r0Nd=b>LsrQLSsqC;9X{lq0EY|}oj@Q}(ej}n zkj|XnNkAKE2{WSm(Fdym$V$P8WiuiW41oqmYg8xwlNy#Lshq0f!gQWAdgiT1W^2iC z6`>4#i$?R@!uDvqx~VV}x1u%BapEaLm+Rk7P*3Z(L2Cf*mHLv|h)GroQ+yugR?|Yv zR19Li5|l3tpX}dINWY8O`T71Oru?fn#L`K@ravLL9)(mnTY=nuG-|C(f^+p%0D!mL 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� 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 Date: Fri, 25 Sep 2020 21:51:33 +0200 Subject: [PATCH 43/58] :/ --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea35bc5..a36ce1c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](../sources/DokuWiki_Screenshot.png) +![Screenshot](sources/DokuWiki_Screenshot.png) ## Demo diff --git a/README_fr.md b/README_fr.md index cc4b1d3..0796ecc 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran](../sources/DokuWiki_Screenshot.png) +![Capture d'écran](sources/DokuWiki_Screenshot.png) ## Démo From b7166f410d6600343f70f82a854e2ccd5bcff2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 1 Oct 2020 08:44:30 +0200 Subject: [PATCH 44/58] Update README.md Co-authored-by: yalh76 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a36ce1c..b8db370 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DokuWiki for YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Lire ce readme en français.](./README_fr.md)* From 46aab7ce12c26089ad82175241e2e7b745a19ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 1 Oct 2020 08:44:41 +0200 Subject: [PATCH 45/58] Update README.md Co-authored-by: yalh76 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b8db370..dadfba7 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](sources/DokuWiki_Screenshot.png) +![Screenshot of DokuWiki main window](sources/DokuWiki_Screenshot.png) ## Demo From 81554d2093b7772b3f45d10c1ea6755cbb009fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 23 Oct 2020 18:35:07 +0200 Subject: [PATCH 46/58] Transition to PHP7.2 (#68) --- conf/nginx.conf | 2 +- conf/php-fpm.conf | 2 +- manifest.json | 2 +- scripts/_common.sh | 18 ++++++++++++++++++ scripts/backup | 3 ++- scripts/install | 3 ++- scripts/restore | 5 +++-- scripts/upgrade | 5 ++--- 8 files changed, 30 insertions(+), 10 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 5cb057b..85ae532 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -23,7 +23,7 @@ location __PATH__/ { location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_index index.php; include fastcgi_params; diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 74a8089..238913c 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -33,7 +33,7 @@ group = __USER__ ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) diff --git a/manifest.json b/manifest.json index 53dd472..f21401e 100644 --- a/manifest.json +++ b/manifest.json @@ -22,7 +22,7 @@ "email": "opi@zeropi.net" }], "requirements": { - "yunohost": ">= 3.5.0" + "yunohost": ">= 3.8.1" }, "multi_instance": true, "services": [ diff --git a/scripts/_common.sh b/scripts/_common.sh index a9bf588..d7614e9 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1 +1,19 @@ #!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +YNH_PHP_VERSION="7.3" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index 176834b..994eb7f 100755 --- a/scripts/backup +++ b/scripts/backup @@ -25,6 +25,7 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -47,7 +48,7 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # BACKUP FAIL2BAN CONFIGURATION diff --git a/scripts/install b/scripts/install index 820c3ef..c0ddf5b 100755 --- a/scripts/install +++ b/scripts/install @@ -83,7 +83,8 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP diff --git a/scripts/restore b/scripts/restore index e36a534..8e49f15 100755 --- a/scripts/restore +++ b/scripts/restore @@ -26,6 +26,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -89,7 +90,7 @@ chown -R $app:root $final_path/lib/tpl # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # RESTORE FAIL2BAN CONFIGURATION @@ -107,7 +108,7 @@ ynh_systemd_action --action=restart --service_name=fail2ban #================================================= ynh_script_progression --message="Reloading NGINX web server and PHP-FPM.." --weight=2 -ynh_systemd_action --service_name=php7.0-fpm --action=reload +ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 645baee..6a99821 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,6 +21,7 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) admin=$(ynh_app_setting_get --app=$app --key=admin) is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK VERSION @@ -61,8 +62,6 @@ if [ -z "$language" ]; then ynh_app_setting_set --app=$app --key=language --value=$language fi - - # YunoHost specific configuration, if it isn't exist already # Previously, these settings were store in an unique "dokuwiki.php" @@ -195,7 +194,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION #================================================= # SPECIFIC UPGRADE From 5260ab300fbb984cae9bb757eabdc12633f315fc Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 23 Oct 2020 18:49:46 +0200 Subject: [PATCH 47/58] Update CHANGELOG.md --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba827a8..3eeed71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ ------------ +## [2020-07-29~ynh2] - 2020-10-23 + +### Added + +- New DokuWiki version `2020-07-29` + +### Changed + +- Set PHP7.3 as default + ## [2018-04-22b~ynh1] - 2020-03-23 ### Added From fb407d05c8dd870f04d1ef044a55a02ceb9605f3 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 23 Oct 2020 18:50:59 +0200 Subject: [PATCH 48/58] Version increment --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index f21401e..80b7cd1 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2020-07-29~ynh1", + "version": "2020-07-29~ynh2", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { From 756c0905adac37c0cecaa9f2d65c59927c0ef94b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 19 Nov 2020 17:00:43 +0100 Subject: [PATCH 49/58] Remove unneeded --phpversion --- scripts/install | 2 +- scripts/upgrade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install b/scripts/install index c0ddf5b..2066dad 100755 --- a/scripts/install +++ b/scripts/install @@ -83,7 +83,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +ynh_add_fpm_config phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 6a99821..ec7de76 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -194,7 +194,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +ynh_add_fpm_config #================================================= # SPECIFIC UPGRADE From 22f5d4e0c519bee7b90f00de3ece0dff26e843eb Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 6 Dec 2020 11:52:06 +0100 Subject: [PATCH 50/58] Fix linter warnings --- check_process | 2 -- manifest.json | 2 +- scripts/upgrade | 7 ------- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/check_process b/check_process index f6fdd01..af56a08 100644 --- a/check_process +++ b/check_process @@ -20,8 +20,6 @@ incorrect_path=1 port_already_use=0 change_url=1 -;;; Levels - Level 5=auto ;;; Options Email= Notification=none diff --git a/manifest.json b/manifest.json index 80b7cd1..6b128f7 100644 --- a/manifest.json +++ b/manifest.json @@ -22,7 +22,7 @@ "email": "opi@zeropi.net" }], "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.0.0" }, "multi_instance": true, "services": [ diff --git a/scripts/upgrade b/scripts/upgrade index ec7de76..9e6c3c2 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -151,13 +151,6 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors -#================================================= -# CHECK THE PATH -#================================================= - -# Normalize the URL path syntax -path_url=$(ynh_normalize_url_path --path_url=$path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= From d4b4abcc0c5a53c1028d0c6e2a2b427359b1ed23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 26 Dec 2020 23:16:49 +0100 Subject: [PATCH 51/58] Set SVG badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dadfba7..4e5f662 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # DokuWiki for YunoHost [![Integration level](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) -[![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) +[![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=dokuwiki) *[Lire ce readme en français.](./README_fr.md)* From 74fc35d984aa2d2edc33f9fcdbf23a2373ef9422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 26 Dec 2020 23:17:10 +0100 Subject: [PATCH 52/58] Set SVG badge --- README_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_fr.md b/README_fr.md index 0796ecc..6626ce5 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # DokuWiki pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) -[![Installer DokuWiki avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) +[![Installer DokuWiki avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=dokuwiki) *[Read this readme in english.](./README.md)* From dd5aff6203578be4a7bf1ab92ea87f041b6f51c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 6 Jan 2021 16:54:00 +0100 Subject: [PATCH 53/58] Add extra php dependencies (#73) --- check_process | 1 - scripts/_common.sh | 2 ++ scripts/install | 2 +- scripts/restore | 3 +++ scripts/upgrade | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index af56a08..5302a20 100644 --- a/check_process +++ b/check_process @@ -17,7 +17,6 @@ upgrade=1 from_commit=01add99d3d903ca6d07f863045edf2ba46cf18d5 backup_restore=1 multi_instance=1 - incorrect_path=1 port_already_use=0 change_url=1 ;;; Options diff --git a/scripts/_common.sh b/scripts/_common.sh index d7614e9..115991f 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -6,6 +6,8 @@ YNH_PHP_VERSION="7.3" +extra_php_dependencies="php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-ldap php${YNH_PHP_VERSION}-gd" + #================================================= # PERSONAL HELPERS #================================================= diff --git a/scripts/install b/scripts/install index 2066dad..b3dfdf5 100755 --- a/scripts/install +++ b/scripts/install @@ -83,7 +83,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --package="$extra_php_dependencies" phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/restore b/scripts/restore index 8e49f15..213eb9f 100755 --- a/scripts/restore +++ b/scripts/restore @@ -89,9 +89,12 @@ chown -R $app:root $final_path/lib/tpl #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= +ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=5 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" +ynh_add_fpm_config --package="$extra_php_dependencies" + #================================================= # RESTORE FAIL2BAN CONFIGURATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 9e6c3c2..f87cc73 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -187,7 +187,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC UPGRADE From 1a3fbbebe49d07764145a7e27d0d6f18e767d049 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 6 Jan 2021 17:15:33 +0100 Subject: [PATCH 54/58] Change version --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 80b7cd1..fb212b8 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2020-07-29~ynh2", + "version": "2020-07-29~ynh3", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { From fb65a8bfa2cc8348ae2d531ce09d29820a255e13 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Tue, 19 Jan 2021 13:25:05 +0100 Subject: [PATCH 55/58] [fix] Allow to use every groups we want --- conf/local.protected.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/local.protected.php b/conf/local.protected.php index ddf37b3..f6945dd 100644 --- a/conf/local.protected.php +++ b/conf/local.protected.php @@ -24,7 +24,7 @@ $conf['plugin']['authldap']['version'] = 3; $conf['plugin']['authldap']['usertree'] = 'ou=users,dc=yunohost,dc=org'; $conf['plugin']['authldap']['grouptree'] = 'ou=permission,dc=yunohost,dc=org'; $conf['plugin']['authldap']['userfilter'] = '(&(objectClass=posixAccount)(uid=%{user})(permission=cn=__APP__.main,ou=permission,dc=yunohost,dc=org))'; -$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(memberUID=%{user})(cn=__APP__.*))'; +$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(memberUid=%{user}))'; #$conf['plugin']['authldap']['debug'] = 1; From 793df20c076c38c1bd508998a7a56674ba8f0657 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 19 Feb 2021 00:06:47 +0100 Subject: [PATCH 56/58] Simplify legacy permission migration --- scripts/upgrade | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 2c550f9..b56a82e 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -61,22 +61,10 @@ if [ -n "$admin_user" ]; then ynh_app_setting_delete --app=$app --key=admin fi -is_public=$(ynh_app_setting_get --app=$app --key=is_public) -if [ -n "$is_public" ]; then - # Remove unprotected_uris - ynh_app_setting_delete --app=$app --key=unprotected_uris - # Remove protected_uris - ynh_app_setting_delete --app=$app --key=protected_uris +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all - # Removing skipped/unprotected_uris under certain conditions, remove the visitors group added during the migration process of 3.7 - # Remove skipped_uris. If the app was public, add visitors again to the main permission - if ynh_permission_has_user --permission=main --user=visitors - then - ynh_app_setting_delete --app=$app --key=skipped_uris - ynh_permission_update --permission "main" --add "visitors" - else - ynh_app_setting_delete --app=$app --key=skipped_uris - fi ynh_app_setting_delete --app=$app --key=is_public fi From 4e81097d8e4b1988edab453a440de2878d06c292 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 19 Feb 2021 00:07:53 +0100 Subject: [PATCH 57/58] Unecessary commnted block --- scripts/upgrade | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index b56a82e..99d5000 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -342,9 +342,6 @@ ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 -#================================================= -# SETUP SSOWAT -#================================================= # Nothinf to do here. Already done in "ENSURE DOWNWARD COMPATIBILITY" part #ynh_script_progression --message="Upgrading permissions configuration..." --weight=2 From a6c6be2f1db6a7e6fc3e0746fd2455d29a625f6c Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 19 Feb 2021 00:08:19 +0100 Subject: [PATCH 58/58] Unecessary commented code --- scripts/upgrade | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 99d5000..8db409e 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -342,8 +342,6 @@ ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 - # Nothinf to do here. Already done in "ENSURE DOWNWARD COMPATIBILITY" part - #ynh_script_progression --message="Upgrading permissions configuration..." --weight=2 #================================================= # RELOAD NGINX

~vyi`?=x>@`8m-t@f<)W>Ks4V4lNIdbx%e@PM}rtx=p z&gKDZ)V|z}I;If)s4RToY(}1YeT=0FOELRS`VY@tCCRS7rqY*o@fF(2PBNOjbCcS! zNP*9LQj|ebuOL+8O)(~`Vj(+VJU=|RQX5`A*-8GTF0mq}X<*U>zqDyxkwT127P{;b z!T*$vFa8yRJz408HN5!)`cZlwUi8wrVNt_tBIJwK54X;Sj3)e84Vr}T&8uutL~fdu z^PRsk5e=gEO?KFBjn_FzN0IMoqJc*#XD1qX^=&xSUkK=;>Yt4fQ%k@85#p;|{~qf8 zPBrfZ&+iQ-EaZ5T*9%HS_w^iVP6Rr%V}QyZFZ7FiN>v5hGE}Ph8{jv`#E{0&&%6zK z+A;g3!h;jTT}<(f6gT}z86%&SXatP9x4vDx|5>ukp@^@Q->dsTuGScqdO;Y^z_XxaRf6Nkeds};K z)rT}%pE&+gN{zMI&PXt=#h{G$$!w|2Mb$(Zj3Zb)q1?hwB319=MWe#4Gi3u?K;Fov z>$^g2SyGCjj;&PB%~}dA$dIBXA;ioczKZ!PiWK5$`Z;yo)S$%AYOl9^s`V=)ro066 zV7lH_aB=#blcuyO>Iu(+sPcWL>-M~^WMvC1;54Lb?`Xiigrafl-RW570TlM%p;Z4Xu0_ty*SwfR z63u_6;=Say>y^^b7l~3Pq^$jYBW(Ky6n!L-M zX3t>ikz47L52yq_2SjypUsd~3s*DIMdRPe58f=CzT z#Qadhw|ynugn`m+2_@pK>i(WZU3_lPK$GTeX;WBa5tTZ);L?w&R(YeO-X773FEN}g zi@%+r9^TRu#_tEb!PxK|Bg4A|<%J~X%3x3sh`dSr%0r)N{*`BCPV)vT$!ME5{}5*@GO z4>c3&oKj9!yo<%{Z&hXbr=HR6MgqFM4iygU9X2@4wl(pvawPiTH>tf@VQ1Wx8P%eU z6hyE@SplEWT_gCqUeDf>BA zXId@jntYYkgef=IRW%Jf#kY2^3?`0rZITvvHY3^3;cqcgm0c%xh@F{vMYrLF{?BXq zy-lqgn4o5`xA*+*Jz2eGp||Sl7rSFnq0jCg*49iR_CDgy@WJ($i?=zOci-x9l9^Yf z*lD^PIW9$)Z=bAdp`0E?akMybcKal4t?f%w^)A*&th?_S&+lw@{t{RjBz&% z&M3cnbz7JYZ;jer0D7`DWGYLEdsg>zT7WkfA&PYdf@o-JXZ$OF5kM?%8b60#2j+S& zES(1h!MrRqmr&5%Q!xJy%ePa@X8$y}YJnnL)gk^wqS1Jz1wjr;r` zCAkwwDx9ap4|i!lN&+l1wcs9aJ8*KX8cDvC(BCDL$_U;gpXB)nl-L*9N}<6D6D!RD z*VB`~T4r)TkQ4;)9r;%yfsM!E$$+_}pPOqcLSE98>X(A7EWQ47;>f*xLonu8lRFpc z3qg1vkxK0V1YZOTWfTIZsmse3lvUo6*X|@_TXEZ?|;oi3~$+OWyI|70?W8zb) z{&1qo2zGgE+y7LB$1lj5vhZKuZs?(Dtz{MZhN}sxO*m_n2;@7n5wA7uCT65UbYg2$ zv!haCTKG0ylyEzq+ExU1!jy9C^GB$uFCH1H>?`?{l+Ya49<nmsI z{<;sO(6>QodR@GjMq9d|H$J{Sm}zxakC@swP#&_S-M4%);;4_^gG=TYQ%^p~0WS6LCoKsr5~d z7*a?y(P}(;4ZqtlAaF8P1NB30CFMU)A$mXcHq-MVZyL_Mh%Duqs#gz)zp*&fi`K=w zH}WV~C9vD$dO{}V{nf-!1}#EeN)`F^`nU`0u04}6Syw!4^l;~O z!z_>GYu8-||E|S|efW2qL>{Zn*8;$rpX;$CJ-JdEqpzrnK%l_bb0HWk@pZ;*6R78) z1!*l38aj>BBzvZ|iS^p0l;BsUG18A7IN469!JsEAyz&A;^<*C)`{Xda?y=Ig1OFg1gkbO5O@b6mo(_DG z8ogd;zTz`}v49juYwZ_d4#!CAxlelqGz`UoJ5z%Rldwii#s$_-aO_KJ2tXpAA9s%kMr=7n&?k{isluBW5Q8`6@@5p^F`Hd%rWy z^9I?O?xh(RLSyLD^W|E(DbvKypfZ%1nan|HRkanEWOx+9!o6hQS$$N`-yswTV(s7A&Hhsr=i>voanmGs1pBWP@G?m zAFPz=TnnH49cxf5oo^@K2z0a=uGJ#EcCpv;;3;sfeZRV1i?c2;nDk%wV(*RW>uxS* zUptD$n60wb9u8Qry5RHlydhnJINekyhu!tD+6^AZ8y-Cw0>YEjk%LJaD`Kp?%OsvG z8$75=dY88=BMz=aQatI179MEyR!L*Vz!{fBcYL$J$DQhxjb)5Y602J+bK=b3OvFQq z4w|S2sBSiv;d-K;Wd}9BCsauwzxsj+a*aGdNOaTjsKO81i7#ov^HQgYwg#T-kHk^u zfEyqsk4uwqLg$TM2dC!Kp}`6HyzyV`NZI^oaCrsu_{D&2r3Bq;G^vxk@Bi5^YTq10 zJUE%>(tzSIKRu0&58dnfpi%zgE9(MPYI}hK62)PRz-!Q-A@{$)VJv2LAJTm_&7ohv zeV>ZX$7#o2zye~4JPJETKV7G+tlqsy_xl-UTOFUKI3ly7R^N*im3Ch`%m@tkt7XtR{+4Fk&#`dyvuHlY)_wN z*)24z&z--?`w(H6+4#`_Cf4=6eu^lcirgjyev9tme%l%ZRAFk`-P+IeD`z}xmFpw9 z&}U0wsLsm?ZT8;ldLGL74)=+5$dt0*KK*NAqR{b9i{D?ae=CKJ;Sf$hE#Ki88!idt zeH|vk^~&+LrxA`K?fioehlc)d!iD^fHverFXDw#vU-*>7YyXV2lwpSSfkg-yiT$7! zO+gU>E|0XA{g+!Z7c&_nBF&dwhD48H#BDb{;=hX$xi)mIBF9#S8v>4GKDUL`d3Z^P zCy*A#l81Zj(V~Y||6Y$DBbp@fw~pRR5uI-4`PGG1Dw{?Rt=cY!pNE{DP^X;F>GD#y6jt$$$mB_i1Q*lxM~Pt zUPX>Fb+qBUSqf)Oe7jWmRdWCOR}u>?<#^HJmGuLEkJc;nW@kQHpoGY3*y|QrLDhkw z`UOk|K#q#e1{&Wr4wqZ{g01QFU}@UPPE0Uhu0>eGpcy!U11ZvNaLUQ^#k8HVcd}>{ z`WR)j&2+L>0X=$BXzgRO<&oZ@DXJU>q&J**V_x;IsIcw5K*JQ2`hqb{V~rbP{r#-S zFVu9w#^mJ7@>lEa_`QyA_g3{U&I^lG>`tHggdc~2D$1ms|LhQ2ssW1wim9Bo#MUDy zirJpE*CWMBhiE0sbopis-PHD~E4(tJmLn>s6XUuEXwH7>ffg0raw;5RaASas>XcA` z!_AhhYeIr>PvzFm=IMq2b&$3w4U$yQeZNnAKh`JXV5#kk@ot6(Hq>1B`=m-)RCNmH z{oshEsc=F9+={#=KV0M?6mJgm0Q?cfB zuQKc7iv^Rb8511if`=J+ah!cLNAnk@dRNG_zZjm9;QvLuG&7wl@p&$TO<5Eb82Kjy z2~(w7BOkmKXoh^GJ`3Xo^zhZaf4jzbeAoXVj&{fn7+%Ex<4wc{@I+~yY9@? zy7PcoJyPPk$@0|P!BnqF4@bip$^RW8v;O2=YuUf&c_Lq~=vJ*dHl%`AkMCz&@}0|Y zDn&Ap6Y~IX`lofb5uG7a!WvQJ8o;acSP1?4)}BX=`S5I(C;P82{7V*b(Ch1f9nwi` zrFYg9RL}g48Sa7q**WL9V-knH#*f5Ix9+g!GhA=znrx!ey4s`~J)h52&_avS-Rtx$5g3fi@jCX*yGShP&x*f|*bChttAluO9PDHIBw%SBI;7&qL**N57|z~O|EQziDn95o(_U$%f&iAHg2MjC3ad1TLmlq zgqy_A&I2xXbv8U?$`_epA<+&6M)(S{{8 zAIR$sOv^5s*;HU_E;{8!W=3Sg9U8hde7b4>Q_3f|;Y z_$X5S!pBJR*@o9~W=7j|jNwMA*DH_vfkLD`_zun;wj{$iQHWBP)ZP}BHW%L;`sc(;QF-8?w0ddfyXd0l# zAo%ebSk9mh+;#4zWVuj-Zn8zsve<_cYAhsQP)R&GmB;`3yX3vd<_V98s9x0b6QtXF zV6GbR`DWqPf01ACKmHRnQMb^H-@gl>Z8-#?SJAKMxIJaRtvvqipANCJ&=kx+uK&H| z6aVfTqlF)_PRcdS=%b5(Fm`ZrKfqu-)kvf(%4l%s@(XXLp-h|vF3(4lt&R*DmV06p z_5G!^_*okf3H?86EdaHGeBb^@b?+V3bh~wnqKJrq5m9=TF4Cn#P>S>}y?3dh2!xJE z2kE^8rAlwok=_YGKzb(>k=_zYfE)3B_ucn9d*8FabM6@T-u%V*WsKh-Pg!fOIp=yF zDS_l~nbC{$@62OIo@bP$hCEwbKdvoOyJ3kWbCb}U&Ur;Hvzd3XqI)_9K`cFC^Q~#I zF^o@3R9W>}OFJ3V=?li)%a=Mt;M>=)8|gW{c>~?*P*odj0`vVk?tZMi*IRJ-(uO|x zZpsZ^i;_jl5^C%jN*s2k$aRp1)f?v>4ZW`ck+G>iJbn@`kh(AscLke$4}vZ4s=FJZUE|U zTePnWVmtb5`z2xUoHy-qf%hZv`0J+3i0~xty@C}u$iuz_Vr6!k{k(R~{J{CbuIJ=i zrn0(a#nAdwbRA$<4x^pa(GB8B-#9ElwzAc6SUnaJ-aRnr zsfD5C^RVv!h7CjIzhT3;TX8dM8L!amt{UnC=9i8nc~qLu1LWy`LEj_L0gQ}0f=#CJU*7GJ zWqqkoDf^>lhj!6-rOq(}+uf!9tI5A%EdDmDgc8UeRQa;>fA}Q>wQ%K2R-qInMr__g7va2Pq^Cjy4>L* z&a?J)+$gbWtE2@A@7R1V^l&`GctSwr-V19fFXqkHs|HgTe!(#~|Yl*|=%*Tiv;hyA&K zNQMTjO0#Hne0EKRX7Wd$*+wU})P-13L(LY*Bc^nAtYXsyK>PX=Y!t5~*LQM%hZcvP zlWX7rKB(O4YJRBljphrq(*id?7NumAW)venJGi&j`@koZgVp%o7&8;u_V<6woQYiy z$fL|K^f}ojC|4F97v-V0f0JYDftTE)p=lGrzmKNApg^28_2y@DuiJF}3Gwt8ubrGK z**R9-k49j|cWdsc{+0Mv0ch3nuQVX}|C*!Ef8fsSjsmvhUE@37_Bg-C~^4 zKM|3-G%_)0!M|8$YfdNXpXL9$oaSfWt*XjZjw>z8wg;d7GDdtOY7JnbD_}B{KS+V; zvw65oYDEP2cq@})`hYU4`GP${v)o+&2u^LE(VBK!nRkm#_f=1y!Y`3yoW00~I9yYS zN=c@XwcXU`8B>AfJ&~3sE!f*zvdZ^2{;&N$CWF55!n553c6Zd73YnsPAie!(F>$Ch z1*#vx;E4AolB4yLozI!|V zIk*Sju2^QNMMLb^)^>fbJL#;@qWy%wPpA1Pgw=F)fGzWA&NzOz5@ z$SI^&PgCL)4@KJpb!`8(2d)j8-qeTXFF4=>v*HjJUZl|*K=F9^xD7+u_e8Gc9PcG~BUMU`Z8{~P(Pkr)%6`-CQc zivHIOA_gROpeJzS8JwvQM0l@sH0~b`pP~D&5?Z26Ibfz8-JhRKY?ep1^4WHU(tAuj z1{x+ul!BR#9Oi~s+v!dZ?-{Gi3}g5%d1cTK-Q~2ej9SdJj94&Uuz~ zZlM@A*~nK=bk{rGz~TQ_2~XV=UQxOo?d_|3hQH|Tf;w3{w5KRWTv9Q@$VHM}ait%| zdI+;re%8)Tce-qicJ7?rO7(Mhd7k(L-&VfoU)TrlYwO0gyd}ti@@!7_iN_E~njf`@ z0L8GSEpSC{JdfS&X8)_%F2X~~0y-Z0*GypCxCagYKja=%>xmyOpyMd8)@Kg>o#57| z*5Ao{h4F@n@_s=+q!vAK_nh-N-y$^}biLr%TNq9^qc;2DIlD(r?M~$a@s5nOjan{! zCq`|#f6*X-$>t^W+nRt7FyouS{FUvb)y;9kzQoR$tKE|vh`ZH0m0A-WitFVhad~fh zHtFyHsi$*3Ft2ZB(^>21O5Z$_h)pob_R$Y%>%Z2OC$=85`1Zc1yrahlu4}{1u_d9e zt-ox@c&m&v@)&2nH79+2lMf1mGCVO+aV(vA?hwu5A;LWm#P@&pPx^Q8LN&^b10+4GliGU#~mz@$CfFx<)<)&w*!+9Te_&@6Sws-Dk^ZzX+lX za^UQBbV@Gv_+rGp@#9!QRju!r6t4C-Qk-45H&At^Rqn!B*Xf`AAQf+5JXxu6I`K*2 zPQ)cX9&ENs@?UOZY3Pq%YdPXH&fLUJKu8C!Jkpu-0@o6BOC5d<&$_OU6tc2?)Kd%J zlc;l=Ob2nbjgFCqFzJ^8}1_0noXKfr|pkJ() zW$CA*PQTBpoPk|+Yges+&xzw*l?IDP&?68J7j34WTNDr%dFTA+psb!Cpk!lule!YV zk`7*OT<^;GK>#nSDHu*7=1dvwng;7sH=>6=n4I_HEhI>+Tc4{-i*|-Lu0{Pu+TMNkwev=d_7{5|q%5&a1+N0E$E$ftJMr2iKTMQ{>YcJS8TfsU zWl6~2Q5&c$8LOb|6!KL(kG`mIk1A_tQ%XD-C&u9Dt>suA;h%iutU;#UIL_1@5CgWN zP==7Ww@1E^kq=6q>=?AI5&uK%z#gCt5ZAL!M*`_v-O=#!JwdB=XzF~V{oVM|er^IY zCVj6rUt$8)Vn;2%HJGT#vPWp)6*vGa6hu_F^)7Ls?In;V)yV_MAa89 zUYvn5dL^u2$ZDTtszoIH=*)NR>D3F*3uXxVjM_>oQYV8wv-2nbxCDf$3j)Wfo(zC+Kt3=X7sn z<{I3&AQLIa&_xCwIp`_&X$IgOlt_V!Nr``{(!~)jx1jUwgD9yRCu#lRVPE;LHXnnY zbN89s{vSkf7EJ?dEIs2xpMFR{%ii=dr2FhIpJOh}-)2_%6E$q*P0)>bR9=j!5M%Mu zyD24sTA-m!SBVrz3QnPy;I6-1((O1+w$-gp_JAVyT-zMAln8RlsQ_k;r^i)R`5FEA zQI+N}8*bYlp9jhZQ(9`Cadh3y0*K=+1t6ESZ+F}~DD0v$yZc?JJ~W}-Y1yqCE>a6Q zI6{mXFVXa9;GEmx%iV#x*EU_3Ps~VcK76U7z-OT1N6HhmDu)IA`+jJmB z%?^7i?kMvoEzVQ?RX}&CTuylW$L)US<@OIp?}TREw>M5TfGm?c&|Zi8^hI_LH8C>^ z5EbU|!a*aKZC5daZZAq_0=(9HyB^*&(bE%LcDf?ME)nd7e$TslAUJC5c*l$snt%v3z?{Z2K8x&I7TD?fRi*XrcNRgYUZPM;TGT$q(usE04R; zd%oir-TN#Pn}DxEyF`m7A%~9Rv!7Q;eRxx9Rzgz-El_1!TkUH z`fJo@~f_1xu9kyu%l#WI-4_@e* z^uq01%f9a9-LE2O65)uOgy8{nEPf zbamX`sAQLcr^&}cXjr*BZ|rwJHrfs+joxH=N+634ALS$acB6U#6#$F>kbQ1j{-U?| zKp!8s$8}mdJ!QW`X_ss^^Kji(1(JuiBdxgHFx6IUyGK2LRdrDO5?LQ*cRk5!CseAg zcJtoh*XZ{K%`wTIZisf-x2E1Q(=}_Na?QvL8aXY!JpNS!`B{q-=sGpfwWA~=pd)I7 z3y+^Gp{z`*V6+YOJZH9caLg3x&;7ipo)6O^;VLdfX+Iqt6(LR_RsK+T@pA$$T=ex4 zQosj6WqM*n$K!+S8S*_uUPHA=Ds8QKH%VkCO~oSzVOo3J%Qf>>Tj%pY;>xprJj0(g z!Qm2sc<}UBV!-ABVanbGP4vRLpKtoHt3qSz1B;To!2~jEZo}2v`>8O22hGw=-{an8 zCI=iriJK?c6V#CGG~-wT(FfzF?aj3e8wy_f)+JP9VLu<@2Agy|did%CExCXqU-1RH zl;ZFx+0h8AsNl?Qd`>^)+mAS#CDG*a?{R|v92W@wnJ!15xu(SE02P@v0(f|B?7y{> zg$4&L4N#IC*nkF-e-0FF^IYP5xgZf8I!ZZp?WsxK`NQttSC=e9d#c4KW$HFVtWSSE z>fyy{0aic55MlQXbwBD7R+NbZwKwi!MUrQB8HNP$!OcjYSY)4dt($uTt{zT%@>MinZ7k}kEUvJJPN^&Yc|2ibZw0Ct^q^>}i zx@9)A@2O?&Dkw|xdeQ}KDZ$7dosOa-2RB(sdE;acl_W+M+2ou_WB2v-(QH;bB(VRI z`_;b|((MM(uFUL`=r19U8K{?DFfXUXGn@-MZfh`~7Z&rt>i(ShVU?ZHf-F;d})#A9N*p^vjOfREEvdJ`7^l<@Bt_uhlOa@(e;vGD>*tR?h!RC6( zT3u=T@Kx&*%Z4h!B>RWj9h%xnboLz9h#?WZ;vZOWIQ^u-d!lI=PqGkQ0;BSSrFHAh z>7!@>IRDjm5KN?Mf}&@IR4_8b8Bli&lv62%iEu6B8~)TTJAEI%Ebo}I6L58I;zVrh z{(%Qhqw_wIncA@o>uzn|vp_vHcIGz8mtYJ?NshVjEu+l5o9&0*eOI}owWSO@*`ULz z%Xw$Md_n*J3Pj3XG4VLr8wQa$HL9b!0m;b|1zP=2pZW)MG-pq3V*^Hf?1bDEKwVZJ zQ5C6kc9%$@wB2S^I#9l={&UJ?yPOk3%asDHY+qvnF`hHR^}Y4hX)G`dj~KX|$ZTy3 z8@yKhq&2;m;+WhTF?kV5_f3MsK~F5OfVjr;6|yfInMEL@kk#)!V#N(t#b$5xD!&QtaV*=NAjgf?9InX|!M7z|#9CGk&b8?UNE==M1LUGhLAS;{X zosJQsL)<}Ru`cAjMimJkZIB|<92n!GaIEB#@x$YdaSeE_a6kW<+PA7F={OYDy&gW+ zEt5Wn0`sfH`lyDPRJMG78i+>@Eg>dg^t{sOl)X5#t%FP|=dF=iEq&Ht%zgyAXN=d^ zd}@qm>K!x+8-O4TD=|oW8IHMcUTp&P>9P>*k5jfhnr^C#-`55$%o-h^rv_Zg>zob& zm4w>%ap|%Z?g2OAp1E)m&^koz3VDxTENULT@=P!o{&_Gc%d&4QR+Wa6v(n%6r3ow7 zPB8K$>F%3~UwD7iTOQSvr-xQ%wWDYKhj;wG-qM3=-4SyR%t?9~JQQkC!4L$qU*YQZ zmNG6VjXY<}3MkH?S=KsX%tyXJ9}g^K<2L)UI<`0L?drxFd8A0LcYW-m%7dx%I#2D}FJI6nivUv&YL*Gw2sg+IYVq)Kftvodx{ z8oy(D&8C>$250nHtA6Llnot?B^7iqnggMeZb<&JlqEXq@Yhlga(F$aRXk(N-B_mmX zNY-*+*;nA>1g*bd9L(tw2cn6cZt`&MoG!{Uo$74TY_6)#`rH7Njd~u)4+$;a@R8J2 z+(@PpjMJ%RO!xdo_9(kr{11BQ?i(5!*W+IcK10Q%UKDSdJY1nv?s29HC6zlavXA_D zCaf^K?`Yaj`G$%@q66ZmJ_)$*7P(%FxJaq8rE*W;{5p06m#-vWpsyCZa*nL1jijdP znImp}I)ACP{XQa+ZBWOH2AiMi@Bur+?%5sjrgu4M)Js6v0I?XocNchuS>^__osEs4 z?F6eFeIZ54rRJADXLqios)JFNN2K2yaW9-H>Y)~27Ps(|zD+GbT|6Uc(v%F9x9)+A zdY|8H>T6uxbvpipq`$68=`;HH_n)Dm;8!MpA1Dw?{P-Vjp8tD~9}k#%NE_jG)~}jn zpAe^N8I>G8?05Cn=6}b!yMk&lCcXe6HhR06K--Q}NXJiUV(G-WUW?_d_Fjc3dwNYg z)2-xgN-N^RBO&#?P6{>s$xr22O`%QGSwxdA&>b&uVVc+wQ7*h84FRt9sSM^!o!(&` z^YDGfo{75o!G@J@?@6+6__>JM1Z4?}-Y(QT;x_}= zvKG1miQSwhQD+JK*HVbE8~FEG*N&#=_u%;bel`6x zbeT@-H`Ce>jCNpVTz2sk_VYH6K^I?}c4P2$e>9VZlT0kW2?rI;^|yaaeaT09Ddf16 zETV)c>f$#sDcP!e*hDU}xg`Mhqim@m>mq;eJ-O=AKJ|AB<7%uQU1p6pD5-MHxS^?`L_P#jzo)yp-ItT+-yn z*Wi&1>)el_5_^Bv0yz9>e-*R_C?h?qL}2hlxAU3S{{%I4k^lq2%J!^%nqfMZ$yjnN}xBGF++ zR{H7F>^JlJJ3F-wtc@Yst&&ayUyrSC0;W=3K7x2f8_d~j)lItH(x~L}7yRG&`m8D{ z&3?F-UK1y$VV`jN6N8P1yZ*A;;Z%rF_SY0d0_(Cc{?{k_1*L3O4s+>A{yx_XR-WjR zAddv2$_Pu@rY|ER`)FwBbt`mN;zY668t(M{uxUBP3Te6#!ZNwhbAI1mu=m?Fof~g+ z@^Svr+tcOF(^>Y+kl6lw!L5qg#t#D%5rfwzm6=SMc1#B<+*@~Zxp!mvr){whYq@HD z0PBfi@LoG&M1s^@=Be_G=+_jpU78uFZvU4ezBIpg{*jS*alozDoATvR|BC=~_+JA| z7E7yZih?34#=a=hBVKT8JaK7f+_QnZN%sTLRCkJE0Yi~jQZ$w5;ts;3is> zeuRkEt?pjGGR=%@i@w(DcPKeG!YCsFe)4z&`~vW_TaZKe}Sh zc-<$Hx3Khu9ISeeetZ5-Hr;};d_kDG#br+F8ZH}xf63_&SIZ6fxit4j0zvG)KZ7+ zA7?Lms7L()rj;k09t|PdQ*e@aPhj_C>f>Tjt!s&06zZnA=Cl)j%#dM)}u7#5iExrCUcqzI$BNA+>9)F8@9*#qH=Qf1Gmt-;B z_mawV2`YJ5E-eggKMk&DnR2b?oZ{*hkqaUdtJ>QnHK(e^q?%)TB-rrcy?3w1gnCTS ztbUsRFMCBf#5+y+^2U0OdT?DpK*8L{`a7WJ(=9dDl~ZWT6o>2e0IS zt`h=j&o^@u0as+nnD30NQ*eG*C4nvrlDfS@Z*<$MN-$lB0*Igr$;4YGcT zRm^_t@4V2w=Ev%Ty&&7YZU6idd@HL|IFKQm9T{~MNxiW7a_ah*9hbD4P?=bgwd?5& zr_9?+0xTeJy><6}hr`rvWmU};d_vo7;YvU2N4v!e>Sr&NOKH1mGF|( znqqzMu^bT`2=C`4Aej$Sm5*oMua`ACdp^H--(ovkfDG&G;q;}!`pHyp%x?UYVb=hQ zJHpKpU?(0}{@&!l=jG!4)sV5blxk3f{sFkGx84FYcHFced8Ts@BtoDyd=dIJ4W?}D zOkZuO$amt&OE0N~@f&2un({cixSYIJXfOeanXg~jw2<992xl@A1a#psc#iY+^t_dm z;*$PID8KvZaEas*0+rtAt5RY1qONAKH^JbjJ}2-q?W5msVqrv6tFf&VbR}%?kPt3p zce#watw{L#Q?o(m397#Kk0H$;~PzCx7-W=hsGUS57;`kHL-`{-Ds2F`L&Y!QIu3!cI!)ziC-TKXP!-#CS%DC zf{pvIQDDX5eU%tU-%9kN)%O(Q2KOoL-HSV8S~E<=`^F+0sY$E$|sFwSj%@QP5NyjI)g;mKZo z{1;}{o<+B93VM)s*G~?fF#E-{Wp~Ydaeq?fb{53$R9CZ(`dN`RXk{j$ckz2HqSXxr zCad0nS#(vzVkl%Bb6-+{WFrrQ&qD}w4M8r?*+ zMWC-;FBIL)zW|4*>kUA(+H$~Pwe;Bi>JZ}(@!S{S@)Z+bzV;b+P4Rm2J7;<2R#9MK;3jl zx~%!Z4IYaf4hpDSfHIDQtuIrjaIeZtN9wew*`g(=_(8(#*R(|0hC6TG_EksM(7qcp zWh|fRB#?esBP{ZAE;A9w8A3XiWtOgDdCif#4p~o7jq>tx&C#>ai#0pHFjMI)e7}X0}vju(>^1_6#ccQtPb#oaj%%1wSYH@_9)2T*Q^H ziBCxC#rjjefEPTj(`*?eKsx}Xg>WTEmGNFgtt}~;;DWI5=|G*eow0&hmyt&JoY>iXi z8@e#E4H3)A>pc{xIHy|x>PBpMjXy%k0=Oza}Jl zQKthSDD`~1VKhY_aq$9}dPNQFFCUyrHe$RQN=~@|%bTJU4JiN%$9X?#EM{v69WTVNmlaJ8y~&1bMwc5#U~Ov)R_?7r4hG`d`#8XAHYLnqF-nubSG&aG?Q{u+0Nu}N#xymcrTDY)JPU0i z;izd`jt~u9Ub>z|3}`~(SRB#1=<~~yLz)D_`$}P4RQlV`lW6{OG@_T2>f- z?+JHSdt4U%33V3~6O_`EXE#gYi`y(Kg~C-NLsrl6`tV`6204 zhdiMT?75~_#&oaXrowV5aW7Z3BTm>~>T!JrQ~wEvY$z!OQ@p?%Y*VgJ;yZVL z=vMtw5S{MruT7%qgFYF&L-=0=X<`wV91&$}x|&^>LRPq%!EPMwc86z#-z@*NPbhlH^H{r#8Wc>QBvXf?kB^za zrn{?~2l%|(`Z}l;fXCEVnU$c=?}}2m9)q`ARy*}l?#Rds!@h1(tCT5_?(QHko@75W zsh)nfa^tkr$NIgpm`>eZKPbd%gN*?8e^$_n952!PVkw-QkMYdh|7V2WRqSa{#aqQ* z+WFwAb4+!TU=hnJ@(9h2ZXObrlA(vu#U_a7y()d%PW;FiIE0 zysglFg*o+rU<;lz^93R2v||hN92KZzH}}Eg3a@GXg<(*~lynoT$>tRto->-(33B^?H8f!;`>YwGnn0Z8ItM8a8}XCII~lI z$_`iJ=iX1!oE-W+KZ$`1oj6JUjy7`>X`jb$$qP{KHHN*SF8g%l;;vc_n^!1wL1OJ} zhR&|_n77b0)u0Shskq%aEdHI)@BD9+`x&kub{bJ^JVxs$bRODr8bRHdWU!9=Ts^%C`@>=laUM~Vl?{CrAQwK*xyY)Gg4|-GY>`ds{ zIvM*t%^TGGZhaHdoS#I_&FM!6zj8Fc>^q(KcO47CsUb_Bw>QSZ|)(^F5E`<^GuHxnq7{RfFGl+ zevH!P&WfhkoBXJ+0S*IIuZPKVQ6Fn;#$Ug>u>|(HenPWHLeEZ5)Tz>%v25*#saiMp zAdDoZ(sOd Date: Fri, 25 Sep 2020 21:51:33 +0200 Subject: [PATCH 25/58] :/ --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea35bc5..a36ce1c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](../sources/DokuWiki_Screenshot.png) +![Screenshot](sources/DokuWiki_Screenshot.png) ## Demo diff --git a/README_fr.md b/README_fr.md index cc4b1d3..0796ecc 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran](../sources/DokuWiki_Screenshot.png) +![Capture d'écran](sources/DokuWiki_Screenshot.png) ## Démo From b59e479fce2fcd9c8f57c196b2891df76adbf355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 1 Oct 2020 08:44:30 +0200 Subject: [PATCH 26/58] Update README.md Co-authored-by: yalh76 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a36ce1c..b8db370 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DokuWiki for YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Lire ce readme en français.](./README_fr.md)* From 6fa6ea3c0f626be468f0b47e09d4e4c189afc3e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 1 Oct 2020 08:44:41 +0200 Subject: [PATCH 27/58] Update README.md Co-authored-by: yalh76 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b8db370..dadfba7 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](sources/DokuWiki_Screenshot.png) +![Screenshot of DokuWiki main window](sources/DokuWiki_Screenshot.png) ## Demo From 7648128ee513908bff74e883e5b6604b8a52c35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 23 Oct 2020 18:35:07 +0200 Subject: [PATCH 28/58] Transition to PHP7.2 (#68) --- conf/nginx.conf | 2 +- conf/php-fpm.conf | 2 +- manifest.json | 2 +- scripts/_common.sh | 18 ++++++++++++++++++ scripts/backup | 3 ++- scripts/install | 3 ++- scripts/restore | 5 +++-- scripts/upgrade | 5 ++--- 8 files changed, 30 insertions(+), 10 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 5cb057b..85ae532 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -23,7 +23,7 @@ location __PATH__/ { location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_index index.php; include fastcgi_params; diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 74a8089..238913c 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -33,7 +33,7 @@ group = __USER__ ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) diff --git a/manifest.json b/manifest.json index 53dd472..f21401e 100644 --- a/manifest.json +++ b/manifest.json @@ -22,7 +22,7 @@ "email": "opi@zeropi.net" }], "requirements": { - "yunohost": ">= 3.5.0" + "yunohost": ">= 3.8.1" }, "multi_instance": true, "services": [ diff --git a/scripts/_common.sh b/scripts/_common.sh index a9bf588..d7614e9 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1 +1,19 @@ #!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +YNH_PHP_VERSION="7.3" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index 176834b..994eb7f 100755 --- a/scripts/backup +++ b/scripts/backup @@ -25,6 +25,7 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -47,7 +48,7 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # BACKUP FAIL2BAN CONFIGURATION diff --git a/scripts/install b/scripts/install index 820c3ef..c0ddf5b 100755 --- a/scripts/install +++ b/scripts/install @@ -83,7 +83,8 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP diff --git a/scripts/restore b/scripts/restore index e36a534..8e49f15 100755 --- a/scripts/restore +++ b/scripts/restore @@ -26,6 +26,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -89,7 +90,7 @@ chown -R $app:root $final_path/lib/tpl # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # RESTORE FAIL2BAN CONFIGURATION @@ -107,7 +108,7 @@ ynh_systemd_action --action=restart --service_name=fail2ban #================================================= ynh_script_progression --message="Reloading NGINX web server and PHP-FPM.." --weight=2 -ynh_systemd_action --service_name=php7.0-fpm --action=reload +ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 645baee..6a99821 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,6 +21,7 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) admin=$(ynh_app_setting_get --app=$app --key=admin) is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK VERSION @@ -61,8 +62,6 @@ if [ -z "$language" ]; then ynh_app_setting_set --app=$app --key=language --value=$language fi - - # YunoHost specific configuration, if it isn't exist already # Previously, these settings were store in an unique "dokuwiki.php" @@ -195,7 +194,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION #================================================= # SPECIFIC UPGRADE From d34636051e17e4992450be17e97623037d02ae44 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 23 Oct 2020 18:49:46 +0200 Subject: [PATCH 29/58] Update CHANGELOG.md --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba827a8..3eeed71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ ------------ +## [2020-07-29~ynh2] - 2020-10-23 + +### Added + +- New DokuWiki version `2020-07-29` + +### Changed + +- Set PHP7.3 as default + ## [2018-04-22b~ynh1] - 2020-03-23 ### Added From f27e751e89b040a3358814c197f8a21c0bd03da9 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 23 Oct 2020 18:50:59 +0200 Subject: [PATCH 30/58] Version increment --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index f21401e..80b7cd1 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2020-07-29~ynh1", + "version": "2020-07-29~ynh2", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { From b261958a44bbea11edb35fc7714d8aa07cfb6ab4 Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Wed, 22 Apr 2020 23:24:55 +0200 Subject: [PATCH 31/58] 2018 04 22b (#58) * Upgrade template to latest version * Upgrade dokuwiki version and version's location * Delete "jessie" from READMEs * Migrate to changelog file instead of READMEs * Fix markdown syntax errors * Add local screenshot * Update manifest.json Co-Authored-By: Kayou * Revert CI link * Correct version number to match manifest Co-authored-by: Gofannon Co-authored-by: Kayou --- CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++++++++ README.md | 28 +++++++------------ README_fr.md | 30 ++++++++------------ conf/app.src | 6 ++-- dokuwikimainwindow.png | Bin 0 -> 21486 bytes manifest.json | 2 +- pull_request_template.md | 12 ++++---- 7 files changed, 89 insertions(+), 48 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 dokuwikimainwindow.png diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ba827a8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,59 @@ +# Changelog + +## [Unreleased] + +## [2018-04-22a~ynhXX] + +### Added + +- Upgrade actions and config-panel scripts + +------------ + +## [2018-04-22b~ynh1] - 2020-03-23 + +### Added + +- New DokuWiki version `2018-04-22b` +- Changelog available in `CHANGELOG.md` + +### Changed + +- Upgrade content of file `pull_request_template.md` + +## [2018-04-22a~ynh3] - 2020-02-20 + +### Added + +- Use 'URL rewrite' for prettier URLs + +### Changed + +- Activate URL rewrite by default (does not break old links) + +### Removed + +- Unused DokuWiki config file + +## [2018-04-22a~ynh2] - 2020-02-20 + +### Added + +- Add fail2ban support to avoid bruteforce login attempts + +### Changed + +- Global upgrade of the package + +### Fixed + +- Get rid of the php ini file and merge its content into the pool file +- Update Readme following last work made on the package and current version in testing branch + +### Removed + +- Unused config file settings + +## [Previous versions] - YYYY-MM-DD + +- Will be written (one day maybye) diff --git a/README.md b/README.md index fea004e..8f18d2a 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. -**Shipped version:** 2018-04-22a "Greebo" +**Shipped version:** 2018-04-22b "Greebo" ## Screenshots -![](https://www.dokuwiki.org/_media/dokuwikimainwindow.png) +![Screenshot of DokuWiki main window](dokuwikimainwindow.png) ## Demo @@ -26,8 +26,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Documentation -* Official documentation: https://www.dokuwiki.org/manual -* YunoHost documentation: https://yunohost.org/#/app_dokuwiki +* Official documentation: +* YunoHost documentation: ## YunoHost specific features @@ -40,26 +40,17 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that * x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/dokuwiki/) ## Limitations * Cannot create or login with dokuwiki internal users, only users from Yunohost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -## Additional information - -### Changelog - -* *Many missing - List taken from previous documentation* -* 07 Mar 2017 - Update app -* 11 Feb 2017 - Create script app - ## Links - * Report a bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues - * App website: https://www.dokuwiki.org - * Upstream app repository: https://github.com/splitbrain/dokuwiki - * YunoHost website: https://yunohost.org +* Report a bug: +* App website: +* Upstream app repository: +* YunoHost website: --- @@ -70,7 +61,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that Instead of merging directly into `master`, please do your pull request to the [`testing` branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) To try the `testing` branch, please proceed like that. -``` + +```bash sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug or sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug diff --git a/README_fr.md b/README_fr.md index fe39537..2eb9035 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,7 +3,7 @@ [![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) [![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* > *Ce package vous permet d'installer Dokuwiki 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.* @@ -12,11 +12,11 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. -**Version incluse:** 2018-04-22a "Greebo" +**Version incluse:** 2018-04-22b "Greebo" ## Captures d'écran -![](https://www.dokuwiki.org/_media/dokuwikimainwindow.png) +![Capture d'écran de la fenêtre principale de DokuWiki](dokuwikimainwindow.png) ## Démo @@ -26,8 +26,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation -* Documentation officielle: https://www.dokuwiki.org/manual -* Documentation YunoHost: https://yunohost.org/#/app_dokuwiki +* Documentation officielle: +* Documentation YunoHost: ## Caractéristiques spécifiques YunoHost @@ -40,26 +40,17 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/dokuwiki/) ## Limitations * Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de Yunohost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -## Informations additionnelles - -### Historique des versions - -* *Many missing - List taken from previous documentation* -* 07 Mar 2017 - Update app -* 11 Feb 2017 - Create script app - ## Liens - * Signaler un bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues - * Site de l'application:https://www.dokuwiki.org - * Dépôt de l'application principale: https://github.com/splitbrain/dokuwiki - * Site web YunoHost: https://yunohost.org/ +* Signaler un bug: +* Site de l'application: +* Dépôt de l'application principale: +* Site web YunoHost: --- @@ -70,7 +61,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/REPLACEBYYOURAPP_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. -``` + +```bash sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug ou sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug diff --git a/conf/app.src b/conf/app.src index e42acb7..4021565 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22a.tgz -SOURCE_SUM=18765a29508f96f9882349a304bffc03 -SOURCE_SUM_PRG=md5sum +SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22b.tgz +SOURCE_SUM=9d1437cdc7e98e471ff32079f7ca224ccf52dbbaafed39ec9746b0405b3a29ce +SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= diff --git a/dokuwikimainwindow.png b/dokuwikimainwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..c357376b781f55d9cfe7d6505bbc679a4dd41e8d GIT binary patch literal 21486 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 1c3ae56..503c689 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "DokuWiki es un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "DokuWiki è un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22a~ynh3", + "version": "2018-04-22b~ynh1", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { diff --git a/pull_request_template.md b/pull_request_template.md index fceb723..8f984e1 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -2,7 +2,7 @@ - *Description of why you made this PR* ## Solution -- *And how you fix that* +- *And how do you fix that problem* ## PR Status - [ ] Code finished. @@ -13,12 +13,10 @@ ## Validation --- -*Minor decision* -- **Upgrade previous version** : - [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- **CI succeeded** : -[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/) +- [ ] **Approval (LGTM)** : +*Code review and approval have to be from a member of @YunoHost-Apps/apps-group* +- **CI succeeded** : +[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/dokuwiki_ynh%20PR-NUM-/) *Please replace '-NUM-' in this link by the PR number.* When the PR is marked as ready to merge, you have to wait for 3 days before really merging it. From 29f7b8d4ce324ea628d7ee101c1fc5f80da25d17 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 22 Apr 2020 23:25:56 +0200 Subject: [PATCH 32/58] Simplify description (#60) --- manifest.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index 503c689..8b83da8 100644 --- a/manifest.json +++ b/manifest.json @@ -3,11 +3,11 @@ "id": "dokuwiki", "packaging_format": 1, "description": { - "en": "DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database.", - "fr": "DokuWiki est un wiki Open Source simple à utiliser et très polyvalent qui n'exige aucune base de données.", - "de": "DokuWiki ist ein standardkonformes, einfach zu benutzendes Wiki und zielt hauptsächlich auf die Erstellung von Dokumentationen aller Art ab.", - "es": "DokuWiki es un sistema de Wiki de uso sencillicimo y compatible con los estándares.", - "it": "DokuWiki è un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." + "en": "A lightweight, simple to use and highly versatile wiki", + "fr": "Un wiki léger, simple à utiliser et très polyvalent", + "de": "Ein standardkonformes, einfach zu benutzendes Wiki und zielt hauptsächlich auf die Erstellung von Dokumentationen aller Art ab.", + "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", + "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, "version": "2018-04-22b~ynh1", "url": "https://www.dokuwiki.org", From b1d6dfc77cf3e6db546c5a59f81e3cfd7cb89f2d Mon Sep 17 00:00:00 2001 From: Gofannon <17145502+Gofannon@users.noreply.github.com> Date: Fri, 15 May 2020 12:53:36 +0200 Subject: [PATCH 33/58] [Fix] caching pictures that didn't work (#65) Set HTTP Headers 'Expires' on the correct PATH... Co-authored-by: Gofannon --- conf/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 64fc3ba..5cb057b 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -39,12 +39,12 @@ location __PATH__/ { } # Deny Access to htaccess-Files for Apache - location ~ /\.ht { + location ~ __PATH__/\.ht { deny all; } # Serve static files - location ~ ^/lib.*\.(gif|png|ico|jpg)$ { + location ~ ^__PATH__/lib.*\.(gif|png|ico|jpg)$ { expires 30d; } From e112636a7d39867fe2a55835ef629cfe72603c0b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 10:59:54 +0200 Subject: [PATCH 34/58] Update app.src --- conf/app.src | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/app.src b/conf/app.src index 4021565..2274131 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2018-04-22b.tgz -SOURCE_SUM=9d1437cdc7e98e471ff32079f7ca224ccf52dbbaafed39ec9746b0405b3a29ce +SOURCE_URL=https://github.com/splitbrain/dokuwiki/archive/release_stable_2020-07-29.tar.gz +SOURCE_SUM=cc1cd9f00095fea327baa79d8f02c904fe1c37bc3f8fd9999eaf646ee9928884 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true From 69c9a4932921c8c46c62af311381df6cf87ba7e1 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:34:47 +0200 Subject: [PATCH 35/58] Add badges --- README.md | 6 +++--- README_fr.md | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8f18d2a..fd1beff 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DokuWiki for YunoHost -[![Integration level](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) +[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Install DokuWiki with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Lire ce readme en français.](./README_fr.md)* @@ -38,12 +38,12 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ### Supported architectures -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) ## Limitations -* Cannot create or login with dokuwiki internal users, only users from Yunohost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +* Cannot create or login with DokuWiki internal users, only users from YunoHost (Work needed for [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) ## Links diff --git a/README_fr.md b/README_fr.md index 2eb9035..ee91cd0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,18 +1,22 @@ -# Dokuwiki pour YunoHost +# DokuWiki pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) +[![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) [![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Read this readme in english.](./README.md)* -> *Ce package vous permet d'installer Dokuwiki rapidement et simplement sur un serveur Yunohost. +> *Ce package vous permet d'installer DokuWiki 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 DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. +<<<<<<< Updated upstream **Version incluse:** 2018-04-22b "Greebo" +======= +**Version incluse :** 2018-04-22a "Greebo" +>>>>>>> Stashed changes ## Captures d'écran @@ -26,8 +30,13 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation +<<<<<<< Updated upstream * Documentation officielle: * Documentation YunoHost: +======= +* Documentation officielle : https://www.dokuwiki.org/manual +* Documentation YunoHost : https://yunohost.org/#/app_dokuwiki +>>>>>>> Stashed changes ## Caractéristiques spécifiques YunoHost @@ -38,27 +47,38 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ### Architectures matérielles supportées -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/dokuwiki/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/dokuwiki%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/dokuwiki/) ## Limitations -* Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de Yunohost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +* Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de YunoHost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) +<<<<<<< Updated upstream ## Liens * Signaler un bug: * Site de l'application: * Dépôt de l'application principale: * Site web YunoHost: +======= +## Informations additionnelles + +### Historique des versions + +## Liens + + * Signaler un bug : https://github.com/YunoHost-Apps/dokuwiki_ynh/issues + * Site de l'application : https://www.dokuwiki.org + * Dépôt de l'application principale : https://github.com/splitbrain/dokuwiki + * Site web YunoHost : https://yunohost.org/ +>>>>>>> Stashed changes --- ## Informations pour les développeurs -**Seulement si vous voulez utiliser une branche de test pour le codage, au lieu de fusionner directement dans la banche principale.** - -Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/REPLACEBYYOURAPP_ynh/tree/testing). +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. From 6508dda3455085cbc8bd74935aebd265b93a093f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:36:42 +0200 Subject: [PATCH 36/58] Change version --- README.md | 2 +- README_fr.md | 8 ++------ dokuwikimainwindow.png | Bin 21486 -> 0 bytes manifest.json | 6 +++--- 4 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 dokuwikimainwindow.png diff --git a/README.md b/README.md index fd1beff..2d1b627 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. -**Shipped version:** 2018-04-22b "Greebo" +**Shipped version:** 2020-07-29 ## Screenshots diff --git a/README_fr.md b/README_fr.md index ee91cd0..1d80136 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # DokuWiki pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/dokuwiki.svg)](https://dash.yunohost.org/appci/app/dokuwiki) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/dokuwiki.maintain.svg) -[![Installer DokuWiki grâce à YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) +[![Installer DokuWiki avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=dokuwiki) *[Read this readme in english.](./README.md)* @@ -12,11 +12,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent qui ne nécessite pas de base de données. Il est apprécié par les utilisateurs pour sa syntaxe propre et lisible. La facilité de maintenance, de sauvegarde et d'intégration en fait un favori d'administrateur. Des contrôles d'accès et des connecteurs d'authentification intégrés rendent DokuWiki particulièrement utile dans le contexte de l'entreprise et le grand nombre de plugins apportés par sa communauté dynamique permettent un large éventail de cas d'utilisation au-delà d'un wiki traditionnel. -<<<<<<< Updated upstream -**Version incluse:** 2018-04-22b "Greebo" -======= -**Version incluse :** 2018-04-22a "Greebo" ->>>>>>> Stashed changes +**Version incluse:** 2020-07-29 ## Captures d'écran diff --git a/dokuwikimainwindow.png b/dokuwikimainwindow.png deleted file mode 100644 index c357376b781f55d9cfe7d6505bbc679a4dd41e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21486 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 diff --git a/manifest.json b/manifest.json index 8b83da8..53dd472 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "es": "Un sistema de Wiki de uso sencillicimo y compatible con los estándares.", "it": "Un Wiki aderente agli standard, semplice da usare, finalizzato principalmente alla creazione di documentazione di qualsiasi tipo." }, - "version": "2018-04-22b~ynh1", + "version": "2020-07-29~ynh1", "url": "https://www.dokuwiki.org", "license": "GPL-2.0-or-later", "maintainer": { @@ -63,10 +63,10 @@ "name": "is_public", "type": "boolean", "ask": { - "en": "Is it a public DokuWiki site ?", + "en": "Is it a public DokuWiki site?", "fr": "Est-ce un site public ?" }, - "default": "true" + "default": true }, { "name": "language", From 4435a8f0cf7205494503b828dbeffba4f07f803d Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:39:46 +0200 Subject: [PATCH 37/58] Nicer screenshot --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d1b627..bf68e11 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot of DokuWiki main window](dokuwikimainwindow.png) +![Screenshot](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) ## Demo diff --git a/README_fr.md b/README_fr.md index 1d80136..ba796c2 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran de la fenêtre principale de DokuWiki](dokuwikimainwindow.png) +![Capture d'écran](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) ## Démo From a3d2d36f6249f06d90a99b214fda67ff7facdfe3 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:40:23 +0200 Subject: [PATCH 38/58] Cleanup backup script --- scripts/backup | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/backup b/scripts/backup index b931a0e..176834b 100755 --- a/scripts/backup +++ b/scripts/backup @@ -19,7 +19,7 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_print_info --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME @@ -27,32 +27,31 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_script_progression --message="Backing up the main app directory..." ynh_backup --src_path="$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Backing up nginx web server configuration..." ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Backing up php-fpm configuration..." --weight=2 ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" #================================================= # BACKUP FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Backing up fail2ban configuration..." ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" @@ -61,4 +60,4 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" # END OF SCRIPT #================================================= -ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." From a4e9531b8022a5502686cfae44c5f15a11357746 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:46:49 +0200 Subject: [PATCH 39/58] Small typos --- scripts/change_url | 16 ++++++++-------- scripts/install | 22 +++++++++++----------- scripts/remove | 10 +++++----- scripts/restore | 4 ++-- scripts/upgrade | 20 ++++++++++---------- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/scripts/change_url b/scripts/change_url index 6851308..fe9ea64 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -50,23 +50,23 @@ fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating nginx web server configuration..." --weight=2 +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2 nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# Change the path in the NGINX config file if [ $change_path -eq 1 ] then - # Make a backup of the original nginx config file if modified + # Make a backup of the original NGINX config file if modified ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for nginx helper + # Set global variables for NGINX helper domain="$old_domain" path_url="$new_path" - # Create a dedicated nginx config + # Create a dedicated NGINX config ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location @@ -81,7 +81,7 @@ fi #================================================= # UPGRADE FAIL2BAN #================================================= -ynh_script_progression --message="Reconfiguring fail2ban..." --weight=6 +ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=6 ynh_add_fail2ban_config --logpath="/var/log/nginx/$new_domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $new_path.*$" --max_retry=5 @@ -90,7 +90,7 @@ ynh_add_fail2ban_config --logpath="/var/log/nginx/$new_domain-error.log" --failr #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index 4ceb331..820c3ef 100755 --- a/scripts/install +++ b/scripts/install @@ -64,9 +64,9 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." --weight=2 +ynh_script_progression --message="Configuring NGINX web server..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -80,9 +80,9 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." --weight=2 +ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 -# Create a dedicated php-fpm config +# Create a dedicated PHP-FPM config ynh_add_fpm_config #================================================= @@ -90,7 +90,7 @@ ynh_add_fpm_config #================================================= # CUSTOMIZE DOKUWIKI #================================================= -ynh_script_progression --message="Configuring dokuwiki..." --weight=2 +ynh_script_progression --message="Configuring DokuWiki..." --weight=2 # Loading order of configuration files # @@ -103,8 +103,8 @@ ynh_script_progression --message="Configuring dokuwiki..." --weight=2 # See https://www.dokuwiki.org/plugin:config#protecting_settings -### Copy Yunohost specific configuration -# This File cannot be modified directly by Dokuwiki, only by hand or by Yunohost +### Copy YunoHost specific configuration +# This File cannot be modified directly by DokuWiki, only by hand or by YunoHost # It will only be updated by Yunohost package or directly by adventurous users cp ../conf/local.protected.php $final_path/conf @@ -112,7 +112,7 @@ cp ../conf/local.protected.php $final_path/conf ynh_replace_string --match_string="__YNH_ADMIN_USER__" --replace_string="$admin" --target_file="$final_path/conf/local.protected.php" -# This file might be modified by dokuwiki admin panel or by plugins +# This file might be modified by DokuWiki admin panel or by plugins # It will not be modified by Yunohost in order to keep user settings cp ../conf/local.php $final_path/conf @@ -159,7 +159,7 @@ ynh_store_file_checksum --file="$final_path/conf/local.protected.php" #================================================= # INSTALL LOGAUTHERROR PLUGIN FOR FAIL2BAN #================================================= -ynh_script_progression --message="Installing logautherror plugin for fail2ban..." --weight=2 +ynh_script_progression --message="Installing logautherror plugin for Fail2Ban..." --weight=2 ynh_setup_source --dest_dir="$final_path/lib/plugins/logautherror" --source_id=logautherror @@ -209,7 +209,7 @@ find $final_path/lib -type d -print0 | xargs -0 chmod 0755 #================================================= # SETUP FAIL2BAN #================================================= -ynh_script_progression --message="Configuring fail2ban..." --weight=7 +ynh_script_progression --message="Configuring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 @@ -228,7 +228,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index 6bb05bb..b0d36b7 100755 --- a/scripts/remove +++ b/scripts/remove @@ -32,23 +32,23 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration..." +ynh_script_progression --message="Removing NGINX web server configuration..." -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration..." --weight=2 +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2 -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config #================================================= # REMOVE FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Removing fail2ban configuration..." --weight=7 +ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=7 ynh_remove_fail2ban_config diff --git a/scripts/restore b/scripts/restore index 0cf8f4a..e36a534 100755 --- a/scripts/restore +++ b/scripts/restore @@ -94,7 +94,7 @@ ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" #================================================= # RESTORE FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the fail2ban configuration..." --weight=7 +ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=7 ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf" ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf" @@ -105,7 +105,7 @@ ynh_systemd_action --action=restart --service_name=fail2ban #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." --weight=2 +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM.." --weight=2 ynh_systemd_action --service_name=php7.0-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index 8e9eaaa..645baee 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -63,10 +63,10 @@ fi -# Yunohost specific configuration, if it isn't exist already +# YunoHost specific configuration, if it isn't exist already # Previously, these settings were store in an unique "dokuwiki.php" -# Now, they are split in multiple files to ease upgrading process (separate Yunohost config from user config) +# Now, they are split in multiple files to ease upgrading process (separate YunoHost config from user config) # Loading order of configuration files # @@ -176,9 +176,9 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2 +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -192,9 +192,9 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." +ynh_script_progression --message="Upgrading PHP-FPM configuration..." -# Create a dedicated php-fpm config +# Create a dedicated PHP-FPM config ynh_add_fpm_config #================================================= @@ -203,7 +203,7 @@ ynh_add_fpm_config if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading dokuwiki..." --weight=7 + ynh_script_progression --message="Upgrading DokuWiki..." --weight=7 # Remove upgrade notification inside Dokuwiki's admin panel # See https://www.dokuwiki.org/update_check @@ -256,7 +256,7 @@ ynh_store_file_checksum --file="$final_path/conf/local.protected.php" #================================================= # INSTALL LOGAUTHERROR PLUGIN FOR FAIL2BAN #================================================= -ynh_script_progression --message="Upgrading logautherror plugin for fail2ban..." --weight=2 +ynh_script_progression --message="Upgrading logautherror plugin for Fail2Ban..." --weight=2 ynh_setup_source --dest_dir="$final_path/lib/plugins/logautherror" --source_id=logautherror @@ -306,7 +306,7 @@ find $final_path/lib -type d -print0 | xargs -0 chmod 0755 #================================================= # SETUP FAIL2BAN #================================================= -ynh_script_progression --message="Reconfiguring fail2ban..." --weight=7 +ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=7 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-error.log" --failregex="^.*authentication failure. while reading response header from upstream, client: ,.*POST $path_url.*$" --max_retry=5 @@ -329,7 +329,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload From 310bf01f79ff8e6ae11cda00e9a75c814f875eb5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:48:33 +0200 Subject: [PATCH 40/58] Update README_fr.md --- README_fr.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/README_fr.md b/README_fr.md index ba796c2..51397f0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -26,13 +26,8 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Documentation -<<<<<<< Updated upstream -* Documentation officielle: -* Documentation YunoHost: -======= * Documentation officielle : https://www.dokuwiki.org/manual * Documentation YunoHost : https://yunohost.org/#/app_dokuwiki ->>>>>>> Stashed changes ## Caractéristiques spécifiques YunoHost @@ -50,14 +45,6 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * Impossible d'ajouter et d'utiliser les utilisateurs internes de DokuWiki, seulement ceux de YunoHost (travail nécessaire pour [authchained plugin](https://www.dokuwiki.org/plugin:authchained)) -<<<<<<< Updated upstream -## Liens - -* Signaler un bug: -* Site de l'application: -* Dépôt de l'application principale: -* Site web YunoHost: -======= ## Informations additionnelles ### Historique des versions @@ -68,7 +55,6 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent * Site de l'application : https://www.dokuwiki.org * Dépôt de l'application principale : https://github.com/splitbrain/dokuwiki * Site web YunoHost : https://yunohost.org/ ->>>>>>> Stashed changes --- From bdf8e6cfefa49391e137edbe9811b76164c785d4 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 24 Sep 2020 11:55:17 +0200 Subject: [PATCH 41/58] Update README.md --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index bf68e11..5d0b729 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Documentation -* Official documentation: -* YunoHost documentation: +* Official documentation: https://www.dokuwiki.org/manual +* YunoHost documentation: https://yunohost.org/#/app_dokuwiki ## YunoHost specific features @@ -47,22 +47,19 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Links -* Report a bug: -* App website: -* Upstream app repository: -* YunoHost website: +* Report a bug: https://github.com/YunoHost-Apps/dokuwiki_ynh/issues +* App website: https://www.dokuwiki.org +* Upstream app repository: https://github.com/splitbrain/dokuwiki +* YunoHost website: https://yunohost.org --- ## Developers infos -**Only if you know what you are doing AND want to switch to an unstable branch for testing or coding** +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) -Instead of merging directly into `master`, please do your pull request to the [`testing` branch](https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing) - -To try the `testing` branch, please proceed like that. - -```bash +To try the testing branch, please proceed like that. +``` sudo yunohost app install https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug or sudo yunohost app upgrade dokuwiki -u https://github.com/YunoHost-Apps/dokuwiki_ynh/tree/testing --debug From 89176932222c5fb4adcba3db92ef6db357f51daa Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 25 Sep 2020 21:49:16 +0200 Subject: [PATCH 42/58] Add local screenshot --- README.md | 2 +- README_fr.md | 2 +- sources/DokuWiki_Screenshot.png | Bin 0 -> 141447 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 sources/DokuWiki_Screenshot.png diff --git a/README.md b/README.md index 5d0b729..ea35bc5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ DokuWiki is a simple to use and highly versatile Open Source wiki software that ## Screenshots -![Screenshot](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) +![Screenshot](../sources/DokuWiki_Screenshot.png) ## Demo diff --git a/README_fr.md b/README_fr.md index 51397f0..cc4b1d3 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ DokuWiki est un logiciel wiki Open Source simple à utiliser et très polyvalent ## Captures d'écran -![Capture d'écran](https://www.dokuwiki.org/lib/exe/fetch.php?tok=341927&media=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F8784%2Fdokuwikitemplatevector2.png) +![Capture d'écran](../sources/DokuWiki_Screenshot.png) ## Démo diff --git a/sources/DokuWiki_Screenshot.png b/sources/DokuWiki_Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..dcba61c6d18cee25ab47c4bde5370fcc71d41830 GIT binary patch literal 141447 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%0D!mL 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� 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