Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intégration à Yunohost #395

Closed
tmos opened this issue Jun 22, 2014 · 51 comments
Closed

Intégration à Yunohost #395

tmos opened this issue Jun 22, 2014 · 51 comments
Assignees

Comments

@tmos
Copy link

tmos commented Jun 22, 2014

Salut les contributeurs !

Je ne sais pas si vous connaissez yunohost : https://yunohost.org , c'est une distribution linux dédiée à l'autohébergement (merci @Phyks qui m'a fait découvrir ce projet).

Elle intègre de nombreux logiciels web pré-configurées, type owncloud, roundcube dokuwiki, tinytinyrss, jappix, etc.

Et dans la todo des applis à packager, on trouve notre Leed chéri !
Personne n'étant attribué à l'intégration Leed, je compte m'y mettre cet été (dès le début de mes vacances, d'ici 1mois et demi, 2 mois).

Étant le dev principad de Greeder, je compte bien intégrer mon thème dans le package ! Et si la #394 aboutit, j'espère bien être en mesure de laisser un réel choix à l'utilisateur (pas de mise en avant de Marigolds ou Greeder ou autre). Un peu l'écran de choix de navigateur de windows quoi :D

Bien évidement si d'autres créateurs de thèmes veulent intégrer les leurs, qu'ils me contactent, je me ferais un plaisir d'ajouter leurs travaux au package !

Dites moi ce que vous en pensez, au vu de la notoriété de cette distrib, je pense que ça peut ramener pas mal d'utilisateurs à Leed, et créer une bonne animation.

Quant au boulot d'intégration, je ne suis pas (encore :D) une brute en php, donc je prendrais le temps qu'il me faudra ! Je pense y arriver d'ici la fin de l'été, mais si quelques personnes veulent filer un coup de main, n'hésitez pas à me contacter, je mettrais en place le dépôt d'ici quelques jours.
Comme dit, je serais pleinement disponible d'ici 1mois et demi, 2 mois, mais j'attaquerais petit à petit dès que possible :)

@Phyks
Copy link
Contributor

Phyks commented Jun 22, 2014

👍

Au besoin, n'hésite pas à me pinguer pour le PHP etc.

@Sbgodin
Copy link
Member

Sbgodin commented Jun 22, 2014

Cette distribution installera-t-elle automatiquement une instance ou bien on arrivera à l'écran d'installation ? Je suppose que pour une bonne intégration, il faudrait pouvoir faire une installation batch afin d'avoir directement une instance utilisable.

Si les paramètres de base de données peuvent être choisis automatiquement, il restera à pouvoir changer le thème avant l'installation et paramétré par le gestionnaire de la distribution. Éventuellement, ça préparerait à l'intégration dans Debian et autres...

@tmos
Copy link
Author

tmos commented Jun 22, 2014

La dsitribution installe automatiquement Leed (donc script bash automatisant la chose, c'est prévu dans le package en fait). Du coup je pense coder un petit plugin qui permettrai au premier lancement de choisir ce genre d'options :)
(Yunohost met en place une connexion intégrée à toutes les applications, donc pas de pseudo à choisir pour l'utilisateur par exemple).

Je vais me baser sur le script d'installation d'autres softs similaires pour avoir une bonne base.

Si ça en intéresse le dépot sera ici : https://github.com/tmos/leed_ynh

@Sbgodin
Copy link
Member

Sbgodin commented Jun 22, 2014

Bien :-) Je suis l'opération. Merci !

@tmos
Copy link
Author

tmos commented Jun 25, 2014

Yunohost fonctionnant avec Nginx, est-ce qu'il y à une config particulière à effectuer pour que Leed fonctionne avec ? Je n'ai jamais testé avec autre chose que apache...

@maniackcrudelis
Copy link

Salut les gars.

Utilisant Leed depuis la version 1.0 et depuis peu yunohost, je me suis penché sur l'intégration de Leed dans yunohost.
https://github.com/maniackcrudelis/leed_ynh

En l'état, ça fonctionne déjà sans problème.
En revanche, je me demandais si il était possible d'utiliser une authentification par header http pour profiter du SSO de Yunohost?
Et si il était prévu de pouvoir utiliser un serveur ldap pour le multi user?

En tout cas, merci pour ce super agrégateur, il est parfait!

@Sbgodin
Copy link
Member

Sbgodin commented Aug 18, 2014

Yunohost authentifie en HTTP l'ensemble de ses services, c'est ça ? Comment ça se passerait ?

@maniackcrudelis
Copy link

Je ne suis pas un expert de l'http auth (loin de là!), mais je crois avoir compris qu'en effet le SSO de yunohost authentifie ensuite en header http.
Je crois que ça passe par la config nginx.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 18, 2014

Alors, il faudrait tester si le serveur web a authentifié quelqu'un sous le nom d'utilisateur pour accorder l'accès ?

@maniackcrudelis
Copy link

Dans ce que j'utilise pour le moment, il y a roundcube et owncloud qui profite du SSO.

https://github.com/Kloadut/roundcube_ynh
https://github.com/Kloadut/owncloud_ynh

Mais les 2 utilisent également ldap.
Il me semble (mais rien de sûr) que c'est cette ligne qui sert à l'authentification dans la config nginx:
fastcgi_param REMOTE_USER $remote_user;

Le problème c'est que je suis plus shell bash que php etc. Et à l'heure actuelle, tout cela me dépasse.
Il faudrait que j'arrive à comprendre comment tout cela fonctionne.
D'ailleurs, l'app android ne fait-elle pas quelques chose du genre? il y est question de mode digest ou basic.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 18, 2014

L'application Android passe uniquement par l'API d'authentification. Par contre, je pourrais peut-être implémenter un mécanisme similaire...

@maniackcrudelis
Copy link

Je ne sais pas si la version multi-user est prévu avec un support ldap (ce qui simplifierait sans doute notre affaire).
Mais je viens de penser qu'une solution simple en attendant mieux serait simplement de faire sauter le besoin d'authentification pour une version pour yunohost.

En effet, si l'app est gardée en mode privée, elle ne sera accessible qu'après connexion sur le sso yunohost, ce qui exclue donc des problèmes de sécurité.
C'est évidemment une rustine, mais qui est peut-être (?) plus simple à mettre en place avant d'en savoir d'avantage sur une authentification http. Si cela est possible.

De mon côté, je vais tenter de voir avec un ami qui fait du dev web si il connait un peu ce type d'authentification.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 19, 2014

Ce serait effectivement plus simple de supprimer l'authentification. Je regarde comment je peux implémenter ça.

@maniackcrudelis
Copy link

Ya des bons jours comme ça où on tombe sur la bonne personne!

Un dev de yunohost m'a expliqué tout ça: (enfin moi, perso, j'ai rien compris ;) )

Le SSO de yunohost s'occupe de la prise en charge de ldap et de l'authentification de l'user. L'app n'a seulement qu'à s'occuper de la partie http auth.

Et ce serait aussi simple que cela (point de vue de dev web évidemment!):
isset($_SERVER['PHP_AUTH_USER']) -> il y a un utilisateur loggué dans le sso
$_SERVER['PHP_AUTH_USER'] : le login de l'utilisateur loggué

Il m'a donner également les liens de 2 app qu'il a modifié pour gérer cela:

Je cite:
un exemple : j'ai fait une petite modif de jirafeau pour bloquer l'accès à l'interface d'admin à un unique utilisateur : https://github.com/julienmalik/jirafeau_ynh/blob/master/sources/admin.php#L46

une modif d'une branche "multiuser" de shaarli pour qu'il supporte le sso de ynh et ne demande aucun login : https://github.com/julienmalik/shaarli_ynh/blob/master/sources/index.php#L458

@Sbgodin
Copy link
Member

Sbgodin commented Aug 19, 2014

Je peux ajouter dans Leed cette vérification.

Question aux développeurs : peut-on vérifier systématiquement l'authentification HTTP ou faut-il l'activer sur demande ? Si c'est systématique, il y a peut-être des effets de bord à craindre. Sinon, il faut prévoir l'option qui va bien.

@cobalt74
Copy link
Collaborator

Salut, je pense que tu peux vérifier ça systématiquement. A mettre en dev et on effectuera les tests afin de savoir si on a des effets de bord.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 19, 2014

Fait (841719a). Il n'existe pas de connexion anonyme à Leed, aussi il faut que le compte existe côté HTTP et côté Leed.

@maniackcrudelis
Copy link

Quelle efficacité!
Pour yunohost, pas de problème car le compte est nécessairement choisi dans la liste des users ldap, et c'est celui-ci qui sert d'user pour Leed. Ils correspondent donc systématiquement.

Puis-je intégrer ce User.class.php ou juste la modification dans ma version 1.6.1 pour yunohost sans régression sur l'ensemble du logiciel?
Ou dois-je dés lors passer sur la version du dépot?

Je voudrais tester cette modif en conditions réelles.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 19, 2014

Tu peux passer ça directement en production. Je n'ai pas trouvé de cas de régression fonctionnelle ou de sécurité.

Le fait de restreindre la connexion par rapport au login empêche le déclenchement intempestif ; par exemple, une zone pourrait être restreinte par mot de passe HTTP et plusieurs utilisateurs pourraient avoir leurs applications dans cette zone. Avec l'obligation d'avoir un compte qui existe, pas/peu de risques de chevauchement. Enfin, si : si l'admin qui contrôle l'auth HTTP se crée un compte exprès pour aller dans Leed...

@maniackcrudelis
Copy link

Bonsoir

la modif de User.class.php fonctionne parfaitement.
Leed vient de passer en test pour Yunohost et a déjà fait quelques adeptes.

Sauf remontée de bug dans les scripts d'install, Leed est en bonne voie pour être intégré dans Yunohost.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 22, 2014

Si l'installation côté leed pose problème, même si ce n'est pas lié directement a leed, je peux peut-être arranger ça.

@maniackcrudelis
Copy link

L'install de leed en elle même fonctionne très bien.
Seul le choix de la langue en curl n'a pas fonctionné, mais j'ai contourné le problème en le fixant dans le constant.php après l'install.

A présent, j'attends plutôt des remontés de bug sur mon script d'install.
Mais peut-être que durant les tests d'autres choses remonteront. je n'hésiterais pas à t'informer des problèmes que nous rencontrerons éventuellement.
Mais je ne m'inquiète pas trop ;)

@cobalt74
Copy link
Collaborator

salut, très bonne nouvelle. Pour la langue, elle doit normalement être en base de données : Table configuration (key : language / value : fr ou en ou es ...)

tu as mis quelle version de Leed ? la v1.6 ?

@maniackcrudelis
Copy link

Version 1.6 oui.
Le choix de la langue à l'install recharge la page sur la nouvelle langue. Mais ça ne fonctionnait pas avec curl, donc je modifie la langue après dans le fichier constant.php directement, ce qui fonctionne très bien du coup.

@cobalt74
Copy link
Collaborator

ok. je me trompe surement mais pour info, dans les versions suivantes (branche dev), ne restera que les infos de connexions à la BDD et la gestion des versions. Tu devras refaire un travail d'adaptation pour l'installation ;)

@Sbgodin
Copy link
Member

Sbgodin commented Aug 22, 2014

Je confirme. J'ai laissé la consultation de la langue du constant.php pour la compatibilité. Plus tard, ne devraient y rester que la connexion à la base de données et les numéros de version.

@maniackcrudelis
Copy link

Il n'y a que la langue que je passe sur le constant.php
Mais autant modifier ça dés maintenant pour passer la mise à jour sans encombres.

Toutefois, je n'arrive pas à choisir la langue en curl. Ça ne fonctionne tout simplement pas!
D'ailleurs l'appel curl contient encore la langue.
https://github.com/maniackcrudelis/leed_ynh/blob/master/scripts/install#L68

Puis-je trouver un autre moyen de changer la langue? Ou une autre variable à renseigner dans la page?

@Sbgodin
Copy link
Member

Sbgodin commented Aug 22, 2014

Bizarre ! Le paramètre install_changeLngLeed sert pourtant bien à régler la variable language dans la table des paramètres : https://github.com/ldleman/Leed/blob/841719a25e3753b0c50275bed62c29a55aa21bb9/install.php#L208

@maniackcrudelis
Copy link

C'est peut-être en rapport avec le fait que choisir la langue recharge la page.
Or, l'appel curl se fait en une seule fois.

En gardant le cookies, je peux peut-être tenter de dissocier l'appel en 2, avec un premier pour la langue et le second pour le reste de la config.

@Sbgodin
Copy link
Member

Sbgodin commented Aug 22, 2014

Ah okay, je vois ! Le passer en GET fait effectivement recharger la page puisque c'est compris comme un changement dans la liste déroulante ; il faut donc recharger la page pour changer la langue choisie, et ses traductions.

Passe plutôt install_changeLngLeed en POST.

@maniackcrudelis
Copy link

Ok, je vais voir comment faire ça

@Sbgodin
Copy link
Member

Sbgodin commented Aug 22, 2014

En fait, il suffirait de faire pareil qu'avec tous les autres paramètres de l'installation.

@maniackcrudelis
Copy link

Actuellement, il est passé comme les autres paramètres.
Mais j'ignore si c'est en POST.
Je débute avec curl, je ne le connaissait pas avant de l'utiliser dans ce script :\

Je commence les tests présentement...

@maniackcrudelis
Copy link

Bon il semble que j'ai trouvé la commande curl qui va bien \o/

Mais ça soulève un second problème...
Cette ligne,
https://github.com/ldleman/Leed/blob/master/templates/marigolds/footer.html#L18
elle n'a pas prévu elle aussi de se faire la malle dans les prochaines versions? Je l'utiliserais bien volontiers pour retrouver le code de synchronisation dans la page.
A moins qu'il n'y ai un moyen plus simple d'avoir ce code de synchronisation bien sûr!

@Sbgodin
Copy link
Member

Sbgodin commented Aug 23, 2014

Cette ligne concerne les traductions. Le code de synchro est disponible dans la table des paramètres.
L'installation au final ne fait que peupler le constant.php et la base de données.

@maniackcrudelis
Copy link

Oui je sais, je me sert de la traduction pour retrouver le code de synchro dans la page de préférence.

Mais justement là, je me bat avec mysql pour tenter de récupérer le code dans la bdd, ça m'évitera des problèmes de traduction et d'encodage dans le script.
Mais bon... C'est comme curl, je découvre mysql CLI depuis 10 minutes! Donc c'est pas évident!

@maniackcrudelis
Copy link

Je bloque sur cette commande
mysql -h localhost -u leed -pIdcLrwUE3yZAQ7ihAmerCkWQ -s leed -e "SELECT value FROM leed_configuration WHERE key LIKE synchronisationCode"
Qui me renvoi une erreur de syntaxe sur le where.

Mais je n'ai pas le problème si je fais un where sur l'id 15. Cet id reste toujours le même ou est-il sujet à des variations?

@Phyks
Copy link
Contributor

Phyks commented Aug 23, 2014

@maniack : fais gaffe, tu viens de donner le pass de ta base au monde entier…

Sinon, pourquoi un LIKE ?

Phyks

On 23 août 2014 18:44:44 UTC+02:00, Maniack Crudelis notifications@github.com wrote:

Je bloque sur cette commande
mysql -h localhost -u leed -pIdcLrwUE3yZAQ7ihAmerCkWQ -s leed -e
"SELECT value FROM leed_configuration WHERE key LIKE
synchronisationCode"

Qui me renvoi une erreur de syntaxe sur le where.

Mais je n'ai pas le problème si je fais un where sur l'id 15. Cet id
reste toujours le même ou est-il sujet à des variations?


Reply to this email directly or view it on GitHub:
#395 (comment)

@maniackcrudelis
Copy link

C'est le mot de passe de la bdd de leed de ma virtual box, pas d'inquiétude ;)

Un like car ça semble plus approprié pour le texte qu'un =.
Mais rien n'est moins sûr, c'est pas comme si je comprenais pleinement ce que je fais!

@Phyks
Copy link
Contributor

Phyks commented Aug 23, 2014

Like sert pour des comparaisons de textes.

Par exemple :
LIKE "%SOME_TEXT"

cherche tout ce qui finit par "SOME_TEXT". Un bête = devrait être suffisant. Après, je n'ai pas de quoi tester plus en détails ta requête pour l'instant :/

Phyks

On 23 août 2014 18:50:09 UTC+02:00, Maniack Crudelis notifications@github.com wrote:

C'est le mot de passe de la bdd de leed de ma virtual box, pas
d'inquiétude ;)

Un like car ça semble plus approprié pour le texte qu'un =.
Mais rien n'est moins sûr, c'est pas comme si je comprenais pleinement
ce que je fais!


Reply to this email directly or view it on GitHub:
#395 (comment)

@maniackcrudelis
Copy link

Si j'utilise WHERE key=synchronisationCode j'ai une erreur de syntax sur 'key=synchronisationCode'

Penses-tu toutefois que l'id 15 est une valeur fiable?

@Phyks
Copy link
Contributor

Phyks commented Aug 23, 2014

Je ne ferai pas confiance à l'id perso. Il n'a aucune raison d'être stable.

Tu as bien mis des guillemets autour de tes chaines de caractères ?

Phyks

On 23 août 2014 18:55:45 UTC+02:00, Maniack Crudelis notifications@github.com wrote:

Si j'utilise WHERE key=synchronisationCode j'ai une erreur
de syntax sur 'key=synchronisationCode'

Penses-tu toutefois que l'id 15 est une valeur fiable?


Reply to this email directly or view it on GitHub:
#395 (comment)

@maniackcrudelis
Copy link

Avec des " " ou des ' ', j'ai toujours une erreur de syntaxe. Et même en échappant les guillemets...

C'est sans doute lié à l'inclusion dans le -e.
Si l'ID n'est pas fiable, il faut que je parvienne alors à décomposer cet appel de mysql

@Phyks
Copy link
Contributor

Phyks commented Aug 23, 2014

Ah ben oui, avec les guillemets, c'est ton shell qui les traite. Il faut les échapper du coup.

Astuce : de bug avec la console MySQL, en lançant MySQL sans option -e et en tapant ta commande dans le prompt.

Phyks

On 23 août 2014 19:04:05 UTC+02:00, Maniack Crudelis notifications@github.com wrote:

Avec des " " ou des ' ', j'ai toujours une erreur de syntaxe. Et même
en échappant les guillemets...

C'est sans doute lié à l'inclusion dans le -e.
Si l'ID n'est pas fiable, il faut que je parvienne alors à décomposer
cet appel de mysql


Reply to this email directly or view it on GitHub:
#395 (comment)

@Sbgodin
Copy link
Member

Sbgodin commented Aug 23, 2014

mysql -h localhost -u leed -pIdcLrwUE3yZAQ7ihAmerCkWQ -s leed -e 'SELECT value FROM configuration WHERE key LIKE "synchronisationCode"'

Il faut utiliser des cotes pour encadrer le SQL car le caractère contre-cote ` serait interprété sinon. Pourquoi encadrer de contre-cotes le mot key ? Parce que c'est un mot clé SQL ! Pour bien dire que, non, ce n'est pas une commande SQL mais un nom d'objet, on l'encadre de cote.
Bises à celui qui a utilisé le mot key ;-)

@maniackcrudelis
Copy link

Ah non j'y crois pas... key est une commande sql...
En effet, ça marche avec ta technique Sbgodin.

Mais ça va poser un autre problème, avec des simples quotes, je n'aurais plus l'interprétation des $ pour les variables.
Je vais voir ça.

Merci de l'astuce!

@maniackcrudelis
Copy link

Oh mais en fait, les variables sont AVANT -e.
Donc ce problème est réglé!

Donc à présent, curl s'occupe du changement de langue et la code de synchro est récupéré dans la bdd. Parfait!
Merci les gars ;)

@Phyks
Copy link
Contributor

Phyks commented Dec 28, 2014

Hmmm… J'espère que j'ai raté un truc mais cette ligne https://github.com/ldleman/Leed/blob/dev/User.class.php#L52 ne veut-elle pas dire:
« Si quelqu'un envoie un login valide en HTTP AUTH, quelque soit le mot de passe, il est authentifié ? »

@Sbgodin
Copy link
Member

Sbgodin commented Dec 6, 2015

Effectivement. C'est exactement ça. Quand on met un htpasswd dans l'instance de Leed et que le nom d'utilisateur utilisé dans le htpasswd correspond à un nom d'utilisateur dans Leed, l'accès est autorisé.
Cela représente un risque ?

@tmos, ça en est où de l'intégration de Leed dans Yunohost ?

@maniackcrudelis
Copy link

Salut @Sbgodin, Leed est intégré à Yunohost et parfaitement fonctionnel.
Il n'est toutefois pas intégré à la liste des app officielles pour le moment.

Il peut toutefois être installé depuis l'interface de Yunohost en utilisant l'adresse github.
https://github.com/maniackcrudelis/leed_ynh

@Sbgodin
Copy link
Member

Sbgodin commented Dec 6, 2015

Excellent ^^

Du coup je peux fermer le ticket.

@Sbgodin Sbgodin closed this as completed Dec 6, 2015
@Simounet Simounet removed this from the Versions lointaines milestone Feb 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants