Monday, August 19, 2024
apps@conference.yunohost.org
August
Mon Tue Wed Thu Fri Sat Sun
      1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
             

[01:53:29] <Yunohost Git/Infra notifications> Autoupdater just ran, here are the results:

- 32 pending update PRs
- 16 new apps PRs
See the full log here: http://paste.yunohost.org/raw/unobohereh
[05:01:16] <Yunohost Git/Infra notifications> Job [#29790](https://ci-apps.yunohost.org/ci/job/29790) for gotosocial failed miserably :(
[05:04:33] <Yunohost Git/Infra notifications> Job [#29795](https://ci-apps.yunohost.org/ci/job/29795) for librex failed miserably :(
[05:07:02] <Yunohost Git/Infra notifications> Job [#29796](https://ci-apps.yunohost.org/ci/job/29796) for limesurvey failed miserably :(
[05:09:26] <Yunohost Git/Infra notifications> Job [#29797](https://ci-apps.yunohost.org/ci/job/29797) for minio failed miserably :(
[05:11:51] <Yunohost Git/Infra notifications> Job [#29798](https://ci-apps.yunohost.org/ci/job/29798) for shuri failed miserably :(
[05:14:15] <Yunohost Git/Infra notifications> Job [#29799](https://ci-apps.yunohost.org/ci/job/29799) for timemachine failed miserably :(
[05:19:17] <Yunohost Git/Infra notifications> Job [#29800](https://ci-apps.yunohost.org/ci/job/29800) for transmission failed miserably :(
[05:19:34] <Yunohost Git/Infra notifications> Job [#29801](https://ci-apps.yunohost.org/ci/job/29801) for wondercms failed miserably :(
[05:21:21] <Yunohost Git/Infra notifications> Job [#29802](https://ci-apps.yunohost.org/ci/job/29802) for forgejo failed miserably :(
[05:23:54] <Yunohost Git/Infra notifications> Job [#29803](https://ci-apps.yunohost.org/ci/job/29803) for chatgpt-web failed miserably :(
[05:26:17] <Yunohost Git/Infra notifications> Job [#29804](https://ci-apps.yunohost.org/ci/job/29804) for firefish failed miserably :(
[05:28:41] <Yunohost Git/Infra notifications> Job [#29805](https://ci-apps.yunohost.org/ci/job/29805) for fastapi failed miserably :(
[05:31:09] <Yunohost Git/Infra notifications> Job [#29806](https://ci-apps.yunohost.org/ci/job/29806) for diacamma failed miserably :(
[05:33:55] <Yunohost Git/Infra notifications> Job [#29807](https://ci-apps.yunohost.org/ci/job/29807) for crabfit failed miserably :(
[05:36:05] <Yunohost Git/Infra notifications> Job [#29808](https://ci-apps.yunohost.org/ci/job/29808) for qr failed miserably :(
[05:38:32] <Yunohost Git/Infra notifications> Job [#29809](https://ci-apps.yunohost.org/ci/job/29809) for searxng failed miserably :(
[06:26:45] <Yunohost Git/Infra notifications> Job [#29810](https://ci-apps.yunohost.org/ci/job/29810) for silverbullet failed miserably :(
[06:29:17] <Yunohost Git/Infra notifications> Job [#29811](https://ci-apps.yunohost.org/ci/job/29811) for terraforming-mars failed miserably :(
[06:49:34] <Yunohost Git/Infra notifications> Job [#29794](https://ci-apps.yunohost.org/ci/job/29794) for languagetool failed miserably :(
[07:01:31] <Yunohost Git/Infra notifications> Job [#29812](https://ci-apps.yunohost.org/ci/job/29812) for kanboard failed miserably :(
[07:15:41] <Nathanaël H> Can someone merge this https://github.com/YunoHost-Apps/nocodb_ynh/pull/165 to fix NocoDB on Bookworm ? Explicit dependency to redis added. I could help with co-maintain this app as I use it if you want.
[07:35:20] <tituspijean> CI be like: *admins are asleep, time to fck things up*
[07:49:49] <Yunohost Git/Infra notifications> Job [#29814](https://ci-apps.yunohost.org/ci/job/29814) for miniflux failed miserably :(
[07:52:49] <tituspijean> > <@nathanael:isidorus.fr> Can someone merge this https://github.com/YunoHost-Apps/nocodb_ynh/pull/165 to fix NocoDB on Bookworm ? Explicit dependency to redis added. I could help with co-maintain this app as I use it if you want.

thank you! I'm discovering I'm supposed to be the maintainer. You are most welcome to take over if you actually use the app. ❤️
[07:52:50] <tituspijean> May I give you maintainer rights to the repo @nathanael:isidorus.fr?
[08:11:08] <tituspijean> feel free to change the manifest :)
[08:11:08] <tituspijean> *so say we all*
[08:11:09] <Nathanaël H> Yes please, I'll do my best
[09:41:00] <eric_G> any clues on why this test fails? https://ci-apps-dev.yunohost.org/ci/job/18390
[10:04:18] <Aleks (he/him/il/lui)> `ModuleNotFoundError: No module named 'yaml'`
[10:04:38] <Aleks (he/him/il/lui)> sounds like it needs `python3-yaml` installed maybe ?
[10:05:00] <Aleks (he/him/il/lui)> ah but it should be there from yunohost
[10:15:57] <eric_G> > <@Alekswag:matrix.org> sounds like it needs `python3-yaml` installed maybe ?

it doesn't solve the issue
[10:45:55] <rodinux> Hello, I try use a helper `ynh_local_curl` to finalize post-install on paheko... for now I have something like `curl: (3) URL using bad/illegal format or missing URL`. Is there an example app with a form post_install to watch ?
[10:47:03] <selfhoster1312> rodinux, can you share your code please? :)
[10:50:44] <rodinux> https://github.com/YunoHost-Apps/paheko_ynh/blob/panel-config/scripts/install
[10:53:08] <rodinux> Perhaps is because there is something like a token on the page, on the end of the form there was something like   2024-08-19 02:34:12,971: DEBUG - <p class="submit">
2024-08-19 02:34:12,971: DEBUG - <input type="hidden" name="ct_c90a52c47ba7e07ecb5ad87e110df6e9adc464f3" value="d95aa898f3d9445e8e4d8af1501942995ad00d6a5e7e3816396243fb3891df9f/74eb5/107a385e4f8bb54" />
2024-08-19 02:34:12,971: DEBUG - <button type="submit" name="save" class="main icn-btn" data-icon="→" value="1">Commencer à gérer mon association</button>
2024-08-19 02:34:12,971: DEBUG - </p>
2024-08-19 02:34:12,971: DEBUG -
2024-08-19 02:34:12,971: DEBUG - </form>
[10:54:41] <selfhoster1312> so in general you should always use double quotes around variable contents in bash
[10:54:41] <selfhoster1312> huge footgun :) :)
[10:55:03] <selfhoster1312> like "$admin_url"
[10:55:27] <selfhoster1312> that one is produced by curl before sending the request
[10:55:27] <selfhoster1312> and maybe you have a token problem but that's not the error you see
[10:56:26] <selfhoster1312> are you using helpers 2.1 or helpers v1?
[10:57:53] <rodinux> I am testing on a bookworm so I think is 2.1
[10:57:54] <selfhoster1312> and i see missing quotes here too: https://github.com/YunoHost/yunohost/blob/eb14e404d6fdcb940f8e6048dc0a7c2799c4e75c/helpers/helpers.v2.1.d/utils#L79
[10:58:17] <selfhoster1312> i think it depends on package manifest?
[10:59:46] <selfhoster1312> can you try real curl in your script?
[11:00:28] <selfhoster1312> ynh_local_curl does POST
[11:00:28] <selfhoster1312> ha also i see in example below you're using GET params? is it GET or POST?
[11:00:51] <rodinux> the package use only a domain dedicated, so no sub-path
[11:01:13] <selfhoster1312> not my question: what HTTP verb (form method) does paheko expect?
[11:02:18] <selfhoster1312> https://xmpp-upload.kl.netlib.re/upload/3N86nH6XBQjy5327/quote_expansion.png
[11:02:41] <selfhoster1312> oh no i just noticed yesterday metronome_ynh package breaks file uploads
[11:02:43] *selfhoster1312 dressing up with my investigation cape
[11:03:04] <rodinux> I want to do a POST with values I have put on the manifest.toml.
[11:04:11] <rodinux> Here is a log of a test install (the install works, not the post-install) https://paste.yunohost.org/raw/zunajiface
[11:05:41] <rodinux> https://github.com/YunoHost-Apps/paheko_ynh/blob/4fbe6ba3c16e3f5ffc8e76d5ef5ca1673ddbf2f1/manifest.toml#L29-L62
[11:05:42] <selfhoster1312> > curl --silent --show-error --insecure --location --header 'Host: paheko.maindomain.tld' --resolve paheko.maindomain.tld:443:127.0.0.1 --data 'country=France&name=Mon' 'asso&user_name=Rod' 'Rob&user_email=rodorob@free.fr&password=**********&password_confirmed=**********' 'https://localhost/admin/install.php?submit' --cookie-jar /tmp/ynh-paheko-cookie.txt --cookie /tmp/ynh-paheko-cookie.txt
[11:05:42] <selfhoster1312> i'm no curl expert but that looks wrong
[11:05:43] <selfhoster1312> shouldn't it repeat --data between fieldS?
[11:07:45] <rodinux> The quotes when a space blank seems wrong ?
[11:09:00] <selfhoster1312> yeah this looks really sketchy: `'country=France&name=Mon' 'asso`
[11:09:45] <selfhoster1312> dealing with quote/space expansion in bash is hell
[11:13:53] <selfhoster1312> can you try running curl directly in install script without the helper? and with real quotes :)
[11:15:30] <rodinux> Ok, but still like a local curl ?
[11:18:07] <rodinux> something like `curl --silent --show-error --insecure --location --header 'Host: paheko.maindomain.tld' --resolve paheko.maindomain.tld:443:127.0.0.1 --data 'country=France&name=Mon asso&user_name=Rod Rob&user_email=rodorob@evxamle.com&password=**********&password_confirmed=**********' 'https://localhost/admin/install.php?submit'` ?
[11:21:23] <rodinux> or `curl --silent --show-error --insecure --location --header 'Host: paheko.maindomain.tld' --resolve paheko.maindomain.tld:443:127.0.0.1 --data 'country="$country"&name="$name_asso"&user_name="$name_user"&user_email="user_email"&password="password"&password_confirmed="$password_confirmed" 'https://localhost/admin/install.php?submit'`
[11:21:45] <selfhoster1312> yeah right
[11:21:46] <selfhoster1312> for example i'm not sure the space in "Mon asso" will be happy, maybe need to URL encode it who knows :)
[11:21:46] <selfhoster1312> maybe even outside the install script just to see if it works
[11:22:11] <selfhoster1312> no i don't think forms work like that in curl
[11:22:11] <selfhoster1312> but you could do --data one time per argument
[11:22:34] <selfhoster1312> and quote it properly there
[11:23:52] <selfhoster1312> `curl -d "name=$name_asso" -d "user_name=$name_user" ...
[11:25:08] <rodinux> It must be on a shell of the app to get the variables, isn't it ?
[11:25:39] <selfhoster1312> yeah just replace it with your test values
[11:25:39] <selfhoster1312> just see if it works because probably the backend refuses because of the token thing :)
[11:35:40] <rodinux> well if on a fresh install I do `yunohost app shell paheko` and `env` I did not see the envs..;
[11:36:32] <selfhoster1312> why do you want the variables? just use the real data :)
[11:36:33] <selfhoster1312> or define the variables in your shell if oyu must
[11:41:13] <selfhoster1312> but yes that would be a nice feature to ensure yunohost app shell has same environment as package scripts
[11:41:35] <selfhoster1312> so if your script is broken you can iterate faster on fixing it
[11:44:41] <rodinux> well I have try something, but it didn't show errors, and it did'nt do the submit...
[11:45:04] <selfhoster1312> even with curl -v it shows nothing?
[11:45:53] <selfhoster1312> and paheko logs show nothing?
[11:48:00] <rodinux> paheko@mydomain:~$ curl -v --show-error --insecure --location --header 'Host: paheko.mydomain.tld' --resolve paheko.maindomain.tld:443:127.0.0.1 -d "country=France" -d "name=Mon asso" -d "user_name=Rob Rod" -d "user_email=rodorob@free.tld" -d "password=Ceciest1TEST!" -d "password_confirmation=Ceciest1TEST!" 'https://localhost/admin/install.php?submit'
* Added paheko.maindomain.tld:443:127.0.0.1 to DNS cache
* Trying 127.0.0.1:443...
* Connected to localhost (127.0.0.1) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server accepted h2
* Server certificate:
* subject: CN=yunohost.org
* start date: May 1 17:27:14 2020 GMT
* expire date: May 1 17:27:14 2022 GMT
* issuer: CN=yunohost.org
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* using HTTP/2
* h2h3 [:method: POST]
* h2h3 [:path: /admin/install.php?submit]
* h2h3 [:scheme: https]
* h2h3 [:authority: paheko.mydomain.tld]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* h2h3 [content-length: 132]
* h2h3 [content-type: application/x-www-form-urlencoded]
* Using Stream ID: 1 (easy handle 0x55a4ec1747f0)
> POST /admin/install.php?submit HTTP/2
> Host: paheko.mydomain.tld
> user-agent: curl/7.88.1
> accept: */*
> content-length: 132
> content-type: application/x-www-form-urlencoded
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* We are completely uploaded and fine
< HTTP/2 200
< server: nginx
< date: Mon, 19 Aug 2024 11:45:33 GMT
< content-type: text/html; charset=UTF-8
< x-sso-wat: You've just been SSOed
< set-cookie: __c=8624f94a0ccb72ab290d; path=/; secure; HttpOnly; SameSite=Strict
< content-security-policy: upgrade-insecure-requests
< x-content-type-options: nosniff
< x-xss-protection: 1; mode=block
< x-download-options: noopen
< x-permitted-cross-domain-policies: none
< x-frame-options: SAMEORIGIN
< permissions-policy: interest-cohort=()
< strict-transport-security: max-age=63072000; includeSubDomains; preload
<

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" class="" data-version="f1732619d6" data-url="https://paheko.mydomain.tld/admin/">
<head>
<meta charset="utf-8" />
<meta name="v" content="f1732619d6" />
<title>Démarrer avec Paheko</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="/admin/static/admin.css?f1732619d6" media="all" />
<script type="text/javascript" src="/admin/static/scripts/global.js?f1732619d6"></script>




<link rel="stylesheet" type="text/css" href="/admin/static/print.css?f1732619d6" media="print" />

<link rel="stylesheet" type="text/css" href="/admin/static/handheld.css?f1732619d6" media="handheld,screen and (max-width:981px)" />

<link rel="manifest" href="/admin/manifest.php" />


<style type="text/css">
:root {
--gMainColor: 32, 120, 122;
--gSecondColor: 133, 185, 186;
--gBgImage: url("https://paheko.mydomain.tld/admin/static/bg.png");
}
</style>
</head>



<body>




<header class="header">
<nav class="menu">
<figure class="logo">

</figure>
<ul>

</ul>
</nav>


<h1>Démarrer avec Paheko</h1>

</header>


<main>

<p class="help">
<strong>Bienvenue dans Paheko !</strong><br />
Veuillez remplir les informations suivantes pour démarrer la gestion de votre association.
</p>



<form method="post" action="/admin/install.php?submit">

<fieldset>
<legend>Informations sur l'association</legend>
<dl>
<dt><label for="f_country">Pays (pour la comptabilité)</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><select required="required" id="f_country" name="country"><option value="BE">Belgique</option><option value="FR">France</option><option value="CH">Suisse</option></select></dd><dd class="help">Ce choix permet de configurer les règles comptables en fonction du pays. Il sera possible de choisir plus tard un autre pays dans la configuration.</dd>
<dt><label for="f_name">Nom de l'association</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="text" required="required" id="f_name" name="name" value="Mon asso" /></dd>
</dl>
</fieldset>


<fieldset>
<legend>Création du compte administrateur</legend>
<dl>
<dt><label for="f_user_name">Nom et prénom</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="text" required="required" id="f_user_name" name="user_name" value="Rob Rod" /></dd>
<dt><label for="f_user_email">Adresse E-Mail</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="email" required="required" id="f_user_email" name="user_email" value="rodorob@free.tld" /></dd>
</dl>


<dl>
<dd class="help">
Astuce : un mot de passe de quatre mots choisis au hasard dans le dictionnaire est plus sûr et plus simple à retenir qu'un mot de passe composé de 10 lettres et chiffres.
</dd>
<dd class="help">
Pas d'idée ? Voici une suggestion choisie au hasard :
<input type="text" readonly="readonly" title="Cliquer pour utiliser cette suggestion comme mot de passe" autocomplete="off" id="f_suggest" name="suggest" value="séparer pot bourgeon modérer" /><input type="button" onclick="var a = $('#f_suggest'); a.focus(); a.select(); document.execCommand('copy'); this.value = 'Copié !'; this.focus(); return false;" onblur="this.value = 'Copier';" value="Copier" title="Copier dans le presse-papier" />
</dd>

<dt><label for="f_password">Mot de passe</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="password" required="required" autocomplete="off" minlength="8" id="f_password" name="password" value="" /></dd><dd class="help">Minimum 8 caractères</dd>

<dt><label for="f_password_confirmed">Encore le mot de passe (vérification)</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="password" required="required" autocomplete="off" minlength="8" id="f_password_confirmed" name="password_confirmed" value="" /></dd><dd class="help">Minimum 8 caractères</dd>
</dl>

<script type="text/javascript" async="async">

g.script('scripts/password.js', () => {
initPasswordField('f_suggest', 'f_password', 'f_password_confirmed');
});

</script>
</fieldset>


<p class="submit">
<input type="hidden" name="ct_c90a52c47ba7e07ecb5ad87e110df6e9adc464f3" value="f81d12af28d353179d095329f3e3ed26ea1ea497e367fae192dd5c43e72985fc/74ec0/4154eefd3bf8375f" />
<button type="submit" name="save" class="main icn-btn" data-icon="→" value="1">Commencer à gérer mon association</button>
</p>

</form>


</main>







</body>
</html>
* Connection #0 to host localhost left intact
[11:51:01] <selfhoster1312> ok so it shows the form
[11:51:04] <selfhoster1312> which i guess it does when the submission is wron?
[11:55:28] <selfhoster1312> there is no "save" entry in your data form ?
[11:55:50] <selfhoster1312> from paheko source:
> $form->runIf('save', function () {
from your form:
> <button type="submit" name="save" class="main icn-btn" data-icon="→" value="1">
[11:57:11] <rodinux> I have to add a save in the curl ?
[11:57:32] <selfhoster1312> yes
[11:57:32] <selfhoster1312> -d save=1
[11:57:55] <rodinux> Perhaps also there is no path /?submit ?
[11:58:24] <selfhoster1312> there is in the html form but i don't see it in PHP side
[11:58:25] <selfhoster1312> you cna leave it
[12:01:32] <rodinux> well... doen't work...
[12:02:18] <rodinux> I have try this
[12:03:29] <selfhoster1312> hmm you alos need the csrf key maybe?
[12:03:55] <rodinux> curl -v --show-error --insecure --location --header 'Host: paheko.domain.tld' --resolve paheko.maindomain.tld:443:127.0.0.1 -d "country=France" -d "name=Mon asso" -d "user_name=Rob Rod" -d "user_email=rodorob@free.fr" -d "password=Ceciest1TEST!" -d "password_confirmation=Ceciest1TEST!" -d "save=1" 'https://localhost/admin/install.php'
* Added paheko.maindomain.tld:443:127.0.0.1 to DNS cache
* Trying 127.0.0.1:443...
* Connected to localhost (127.0.0.1) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server accepted h2
* Server certificate:
* subject: CN=yunohost.org
* start date: May 1 17:27:14 2020 GMT
* expire date: May 1 17:27:14 2022 GMT
* issuer: CN=yunohost.org
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* using HTTP/2
* h2h3 [:method: POST]
* h2h3 [:path: /admin/install.php]
* h2h3 [:scheme: https]
* h2h3 [:authority: paheko.domain.tld]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* h2h3 [content-length: 139]
* h2h3 [content-type: application/x-www-form-urlencoded]
* Using Stream ID: 1 (easy handle 0x55c02d33e7f0)
> POST /admin/install.php HTTP/2
> Host: paheko.domain.tld
> user-agent: curl/7.88.1
> accept: */*
> content-length: 139
> content-type: application/x-www-form-urlencoded
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* We are completely uploaded and fine
< HTTP/2 200
< server: nginx
< date: Mon, 19 Aug 2024 11:59:30 GMT
< content-type: text/html; charset=UTF-8
< x-sso-wat: You've just been SSOed
< set-cookie: __c=7846fb229c44fda2394b; path=/; secure; HttpOnly; SameSite=Strict
< content-security-policy: upgrade-insecure-requests
< x-content-type-options: nosniff
< x-xss-protection: 1; mode=block
< x-download-options: noopen
< x-permitted-cross-domain-policies: none
< x-frame-options: SAMEORIGIN
< permissions-policy: interest-cohort=()
< strict-transport-security: max-age=63072000; includeSubDomains; preload
<

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" class="" data-version="f1732619d6" data-url="https://paheko.domain.tld/admin/">
<head>
<meta charset="utf-8" />
<meta name="v" content="f1732619d6" />
<title>Démarrer avec Paheko</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="/admin/static/admin.css?f1732619d6" media="all" />
<script type="text/javascript" src="/admin/static/scripts/global.js?f1732619d6"></script>




<link rel="stylesheet" type="text/css" href="/admin/static/print.css?f1732619d6" media="print" />

<link rel="stylesheet" type="text/css" href="/admin/static/handheld.css?f1732619d6" media="handheld,screen and (max-width:981px)" />

<link rel="manifest" href="/admin/manifest.php" />


<style type="text/css">
:root {
--gMainColor: 32, 120, 122;
--gSecondColor: 133, 185, 186;
--gBgImage: url("https://paheko.domain.tld/admin/static/bg.png");
}
</style>
</head>



<body>




<header class="header">
<nav class="menu">
<figure class="logo">

</figure>
<ul>

</ul>
</nav>


<h1>Démarrer avec Paheko</h1>

</header>


<main>

<p class="help">
<strong>Bienvenue dans Paheko !</strong><br />
Veuillez remplir les informations suivantes pour démarrer la gestion de votre association.
</p>

<div class="block error"><ul><li>Une erreur est survenue, merci de bien vouloir renvoyer le formulaire.</li></ul></div>

<form method="post" action="/admin/install.php">

<fieldset>
<legend>Informations sur l'association</legend>
<dl>
<dt><label for="f_country">Pays (pour la comptabilité)</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><select required="required" id="f_country" name="country"><option value="BE">Belgique</option><option value="FR">France</option><option value="CH">Suisse</option></select></dd><dd class="help">Ce choix permet de configurer les règles comptables en fonction du pays. Il sera possible de choisir plus tard un autre pays dans la configuration.</dd>
<dt><label for="f_name">Nom de l'association</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="text" required="required" id="f_name" name="name" value="Mon asso" /></dd>
</dl>
</fieldset>


<fieldset>
<legend>Création du compte administrateur</legend>
<dl>
<dt><label for="f_user_name">Nom et prénom</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="text" required="required" id="f_user_name" name="user_name" value="Rob Rod" /></dd>
<dt><label for="f_user_email">Adresse E-Mail</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="email" required="required" id="f_user_email" name="user_email" value="rodorob@free.fr" /></dd>
</dl>


<dl>
<dd class="help">
Astuce : un mot de passe de quatre mots choisis au hasard dans le dictionnaire est plus sûr et plus simple à retenir qu'un mot de passe composé de 10 lettres et chiffres.
</dd>
<dd class="help">
Pas d'idée ? Voici une suggestion choisie au hasard :
<input type="text" readonly="readonly" title="Cliquer pour utiliser cette suggestion comme mot de passe" autocomplete="off" id="f_suggest" name="suggest" value="savant bravo réflexion missel" /><input type="button" onclick="var a = $('#f_suggest'); a.focus(); a.select(); document.execCommand('copy'); this.value = 'Copié !'; this.focus(); return false;" onblur="this.value = 'Copier';" value="Copier" title="Copier dans le presse-papier" />
</dd>

<dt><label for="f_password">Mot de passe</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="password" required="required" autocomplete="off" minlength="8" id="f_password" name="password" value="" /></dd><dd class="help">Minimum 8 caractères</dd>

<dt><label for="f_password_confirmed">Encore le mot de passe (vérification)</label> <b title="Champ obligatoire">(obligatoire)</b></dt><dd><input type="password" required="required" autocomplete="off" minlength="8" id="f_password_confirmed" name="password_confirmed" value="" /></dd><dd class="help">Minimum 8 caractères</dd>
</dl>

<script type="text/javascript" async="async">

g.script('scripts/password.js', () => {
initPasswordField('f_suggest', 'f_password', 'f_password_confirmed');
});

</script>
</fieldset>


<p class="submit">
<input type="hidden" name="ct_c90a52c47ba7e07ecb5ad87e110df6e9adc464f3" value="f140bfcecc7ee4c2520268697ce9055c9846aaf0d5379a19e55ea317f710c1da/74ec0/11d49b6d87290b9b" />
<button type="submit" name="save" class="main icn-btn" data-icon="→" value="1">Commencer à gérer mon association</button>
</p>

</form>


</main>







</body>
</html>
* Connection #0 to host localhost left intact
[12:05:08] <rodinux> maybe, I think I should try discuss with the paheko developper also
[12:05:09] <selfhoster1312> did you add the token? :)
[12:06:36] <rodinux> how ? did you mean the key we see at the end of the htlm page ? or the secret key which is on the config.local.php ?
[12:07:00] <selfhoster1312> sure that's easier :)
[12:07:01] <selfhoster1312> yes that one token
[12:07:23] <rodinux> which one ?
[12:07:47] <selfhoster1312> i hate that kind of "csrf" protection that provides zero security
[12:07:48] <selfhoster1312> > <input type="hidden" name="ct_c90a52c47ba7e07ecb5ad87e110df6e9adc464f3" value="f140bfcecc7ee4c2520268697ce9055c9846aaf0d5379a19e55ea317f710c1da/74ec0/11d49b6d87290b9b" />
[12:09:29] <selfhoster1312> but sure paheko dev will know better how their softxware works
[12:09:53] <selfhoster1312> maybe you can even convince them to add error messages and/or documentation :)
[12:10:42] <rodinux> he is alone (the dev)...
[12:12:05] <rodinux> when the post-install is done, there is logs, also in the interface admin... but perhaps also I can add logs on config.local.php to try...
[12:15:24] <rodinux> but it is a little tricky the problem with the quotes using the helpers.... It should be nice to see what's wrong... later, others priority also on the Todo list... Thanks selfhoster1312
[12:16:15] <selfhoster1312> it's impossible to see what's wrong with bash
[12:16:44] <selfhoster1312> the best way is to have everything run with shellcheck, but even that's not foolproof
[12:16:44] <selfhoster1312> the only way to write correct bash is not write bash
[12:16:45] <selfhoster1312> use a real programming language with actual types that are not "string"
[12:17:08] <selfhoster1312> i've been advocating to migrate most yunohost to Rust but to be honest in this case even python would be ok
[12:22:38] <selfhoster1312> don't get me wrong python is full of footguns, but bash is made entirely of footguns and you can accidentally extract functionality from it sometimes ^^
[12:59:16] <selfhoster1312> ok time to try find why i get 403 trying to download uploaded files on metrnoome
[13:01:51] <selfhoster1312> uhoh was there a log YML migration lately?
[13:02:15] <selfhoster1312> ```
Erreur : Le fichier YAML de métadonnées associé aux logs est corrompu : '/var/log/yunohost/operations/20211213-232754-app_install-my_webapp.yml'
Erreur : Fichier YAML corrompu en lecture depuis /var/log/yunohost/operations/20211213-232754-app_install-my_webapp.yml (raison : expected '<document start>', but found '<scalar>'
in "<unicode string>", line 1, column 13:
'**********'a'**********'r'**********'g'**** ...
^)
```
[13:02:16] <selfhoster1312> got 3 of these
[13:05:14] <Aleks (he/him/il/lui)> du coup il a remplacer empty string par `******`
[13:05:14] <Aleks (he/him/il/lui)> ça ressemble à un truc où il a voulu redact empty string, un truc du genre
[13:08:15] <selfhoster1312> oui ça ressemble beaucoup
[13:08:37] <selfhoster1312> mais c'est que sur 3 vieux fichiers de log
[13:10:15] <Aleks (he/him/il/lui)> dans ce cas c'était un bug qui a été fix depuis oui
[13:15:09] <selfhoster1312> ^^
[13:15:10] <selfhoster1312> le retour des fantomes
[13:15:33] <selfhoster1312> je me demandais parce que je me souviens jamais avoir vu ça en faisant "yunohost log list" en cli, mais d'un autre côté je fais vraiment pas ça souvent donc...?
[13:21:35] <selfhoster1312> ok now i can see my stupid meme
[13:22:59] <selfhoster1312> so nginx needs to be in metronome group to read /home/yunohost.app/metronome/xmpp-upload, and nginx alias is tricky and needs to end with trailing slash
[13:23:00] <selfhoster1312> or you get:
> "/home/yunohost.app/metronome/xmpp-upload3N86nH6XBQjy5327/quote_expansion.png" failed (2: No such file or directory)
(missing slash in path)
[13:23:50] <selfhoster1312> Aleks (he/him/il/lui), what's best way to request nginx read permission in metronome dir? i jsut chmod? add nginx to metronome group? something else?
[13:31:52] <selfhoster1312> it feels weird to give metronome daemon www-data group to make files it creates readable by nginx, but it feels even weirder to o+r all uploaded files by everyone on server
[13:45:25] <selfhoster1312> ok i opened 3 PRs to the metronome app repo: https://github.com/YunoHost-Apps/metronome_ynh/pulls
[15:15:56] <Aleks (he/him/il/lui)> i would add `www-data` as the "group owner" of the dir
[15:15:57] <Aleks (he/him/il/lui)> hmmm maybe the missing slash is related to the `alias` directive in nginx conf missing the trailing / ?
[15:16:01] <Aleks (he/him/il/lui)> > <@ericg:matrix.org> it doesn't solve the issue

the actual issue is probably the source of the venv : https://github.com/YunoHost-Apps/pretix_ynh/blob/testing/scripts/install#L38

sourcing the venv in a script is not practical because then it will try to use the python libs from the venv instead of the system, which aint always what you want

instead, there should be no need to really source the venv, but when calling pip or python you should use `$install_dir/venv/bin/pip` and `$install_dir/venv/bin/python3`
[15:16:01] <Aleks (he/him/il/lui)> (i'll yolo commit to the PR)
[15:16:02] <Aleks (he/him/il/lui)> hmmm
[15:16:02] <Aleks (he/him/il/lui)> well there's no need to add metronome to the www-data, if the files are created with something like perms = 664 it should be ok ?
[15:16:02] <Aleks (he/him/il/lui)> (and folders with 775 ?)
[15:16:31] <Aleks (he/him/il/lui)> something like

```
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x root root yunohost.app
drwxr-x--- metronome www-data metronome
-rwxr-xr-x metronome metronome abcdef1234667 (random hash or id idk)
-rw-r--r-- metronome metronome filename.png
```
[15:17:23] <Yunohost Git/Infra notifications> App crabfit failed all tests in job [#29807](https://ci-apps.yunohost.org/ci/job/29807) :(
[15:18:18] <Yunohost Git/Infra notifications> Job [#29809](https://ci-apps.yunohost.org/ci/job/29809) for searxng failed miserably :(
[15:18:40] <Yunohost Git/Infra notifications> Job [#29810](https://ci-apps.yunohost.org/ci/job/29810) for silverbullet failed miserably :(
[15:18:42] <Yunohost Git/Infra notifications> Job [#29811](https://ci-apps.yunohost.org/ci/job/29811) for terraforming-mars failed miserably :(
[15:18:43] <Yunohost Git/Infra notifications> Job [#29814](https://ci-apps.yunohost.org/ci/job/29814) for miniflux failed miserably :(
[15:19:12] <Yunohost Git/Infra notifications> [apps] Salamandar pushed 1 commit to tools_apps_arg: Use optional[] for python compat ([01b39788](https://github.com/YunoHost/apps/commit/01b39788d97e8c49d42498ec6b763f0046510261))
[15:26:50] <Yunohost Git/Infra notifications> [apps] Salamandar pushed 1 commit to cleanup: Return None when catching an exception ([d6e2b402](https://github.com/YunoHost/apps/commit/d6e2b402470d1622c27f17218dc2f45dc3d9b1df))
[15:26:50] <Yunohost Git/Infra notifications> [apps] Salamandar created new branch cleanup
[15:28:25] <Yunohost Git/Infra notifications> [apps] github-actions[bot] pushed 1 commit to actions/toml: app_caches: git pull when downloading all branches ([d0b08742](https://github.com/YunoHost/apps/commit/d0b0874273079ef424b595d44b4431ab605231a7))
[15:28:25] <Yunohost Git/Infra notifications> [apps] Salamandar pushed 1 commit to cleanup: app_caches: git pull when downloading all branches ([d0b08742](https://github.com/YunoHost/apps/commit/d0b0874273079ef424b595d44b4431ab605231a7))
[15:37:57] <selfhoster1312> hmmm that's a good idea Aleks (he/him/il/lui)
[15:37:58] <selfhoster1312> so only nginx can list files, but "everyone" (so only nginx) can read them
[15:42:49] <selfhoster1312> oh no because metronome creates one sub directory for each upload
[15:42:50] <selfhoster1312> so we can't do it ?
[15:42:50] <selfhoster1312> (i mean maybe with masks and ACL but i never understood that stuff)
[16:32:36] <Aleks (he/him/il/lui)> > <selfhoster1312> oh no because metronome creates one sub directory for each upload

imho the real questions is what are the permissions of this new folder
[16:33:03] <Aleks (he/him/il/lui)> is it like 750 or 755
[16:35:02] <selfhoster1312> 750
[16:56:13] <Aleks (he/him/il/lui)> like ... can you do an `ls -ld ` of such a folder ?
[17:00:17] <selfhoster1312> ```
ls -ld 3N86nH6XBQjy5327/
drwxr-x--- 2 metronome metronome 4096 19 août 13:02 3N86nH6XBQjy5327/
```
[18:22:02] <Aleks (he/him/il/lui)> zblerg
[18:22:37] <Aleks (he/him/il/lui)> we probably had a similar issue when metronome was in the core, i don't know how it was solved somehow
[19:37:28] <selfhoster1312> extended attrs magic!!! https://github.com/YunoHost/yunohost/blob/eb14e404d6fdcb940f8e6048dc0a7c2799c4e75c/hooks/conf_regen/12-metronome#L65 Aleks (he/him/il/lui)
[20:53:36] <selfhoster1312> i updated the PR
[21:16:10] <orhtej2> ```
2024-08-19 23:12:38,110: DEBUG - Successfully installed dnspython-2.6.1 environs-11.0.0 ldap3-2.9.1 marshmallow-3.21.3 packaging-24.1 pyasn1-0.6.0 pymongo-4.8.0 python-dotenv-1.0.1
2024-08-19 23:12:38,280: WARNING - import environs
2024-08-19 23:12:38,280: WARNING - ModuleNotFoundError: No module named 'environs'
```

python plz
[21:19:30] <orhtej2> I guess sourcing `activate` in `install` does not work 🤷
[21:23:18] <Aleks (he/him/il/lui)> uuuuh not sure one should ever source venv/bin/activate in a script, imho it's way cleaner to use the absolute path to venv/bin/pip and venv/bin/python3
[21:39:29] <orhtej2> > <@Alekswag:matrix.org> uuuuh not sure one should ever source venv/bin/activate in a script, imho it's way cleaner to use the absolute path to venv/bin/pip and venv/bin/python3

These set paths internally?
[21:39:55] <Aleks (he/him/il/lui)> calling venv/bin/pip and venv/bin/python3 will do everything "as if" you sourced the venv using venv/bin/activate
[21:40:29] <Aleks (he/him/il/lui)> or rather: if i remember correctly, if you study the content of venv/bin/activate, it boils downt to "add venv/bin to $PATH such that calling pip and python3 will use the one from inside the venv"
[21:40:48] <Aleks (he/him/il/lui)> and then it uses the python libs from the venv etc
[21:41:38] <orhtej2> Will try that
[21:42:14] <Aleks (he/him/il/lui)> but the drawback of sourcing the venv is that you should call "deactivate" once you want to go back to "the rest of the script", because the rest of the script may use python stuff for unrelated purpose, and then stuff explode because library X ain't in the venv even though it's on the "global" system
[21:42:24] <Aleks (he/him/il/lui)> (that's the issue er_ic had today or yesterday on pretix)
[21:49:25] <orhtej2> > <@Alekswag:matrix.org> but the drawback of sourcing the venv is that you should call "deactivate" once you want to go back to "the rest of the script", because the rest of the script may use python stuff for unrelated purpose, and then stuff explode because library X ain't in the venv even though it's on the "global" system

Run into that one already lol