Vous n'êtes pas identifié(e).

#1 2019-03-24 23:12:35

Arthas
Membre
Inscription : 2013-05-09
Messages : 7

Mise à jour de Cheky en ligne de commande

Bonjour,

Existe t-il un moyen de mettre à jour Cheky en ligne de commande et/ou de manière automatique svp?

Contexte
Je suis le mainteneur du paquet Cheky pour le projet Yunohost. Le but du projet est de permettre à des non informaticien d'héberger leur données sur leur propre serveur en automatisant le plus possible la partie administration système.

Problème
Jusqu'à la version 4, il me suffisait d'extraire les nouveaux fichiers et d’écraser les anciens. Depuis la version 4, cela ne fonctionne plus totalement car un changement dans le schéma de la base de donnée doit être effectué.
J'ai mis à jour Cheky depuis la version 4.3.5 vers la 4.4.1 en utilisant la console d'administration de Firefox pour voir les échanges entre le navigateur et Cheky pour les rejouer avec 'curl' sans succès.

Des idées?


# Do a GET on the website to get the cookie session and store it into the cookie-jar
curl -v --location \
--cookie-jar cookie-jar.txt \
https://example.org/chekytest



# Connect as 'admin' to the website
## Users very often want to both read cookies from a file and write updated cookies  back  to  a  file,  so  using  both  -b,
## --cookie and -c, --cookie-jar in the same command line is common.

curl -v --location \
--cookie-jar cookie-jar.txt \
--cookie cookie-jar.txt \
--data username=admin \
--data password=XXX \
https://example.org/chekytest

curl -v --location \
--cookie-jar cookie-jar.txt \
--cookie cookie-jar.txt \
--data 'username=admin&password=XXX' \
https://example.org/chekytest




# Run "upgrade" step as it should be done by the user from its web browser
curl -v --location \
--cookie-jar cookie-jar.txt \
--cookie cookie-jar.txt \
--data upgrade=1 \
https://example.org/chekytest/?mod=admin&a=upgrade



# Sources
## cookie-jar: https://ec.haxx.se/http-cookies.html
## https://stackoverflow.com/questions/7181785/send-cookies-with-curl

Hors ligne

#2 2019-03-25 09:28:05

Blount
Administrator
Inscription : 2010-11-16
Messages : 713

Re : Mise à jour de Cheky en ligne de commande

Bonjour,

Merci pour l'intérêt porté à Cheky wink

Alors la réponse est non, il n'existe pas de système de mise à jour en CLI.
Par contre, on peut en faire un sans trop de difficulté je pense en s'inspirant du fichier "app/notifier/scripts/check.php" qui peut être exécuté en CLI.
Et voici ce que cela donnerait :

<?php

$root_path = "";

require $root_path."/bootstrap.php";

$storageType = $config->get("storage", "type", "files");
if ($storageType == "db") {
    $userStorage = new \App\Storage\Db\User($dbConnection);
} else {
    $userStorage = new \App\Storage\File\User(DOCUMENT_ROOT."/var/users.db");
}


require $root_path."/bootstrap.php";

$_POST = array(
    "upgrade" => 1,
);

require $root_path."/app/admin/scripts/upgrade.php";

// S'il y a des erreurs, on les écrit dans STDERR et on quitte
// avec un code erreur.
if (!empty($errors)) {
    fwrite(STDERR, str_replace(
        array("<br>", "<br />"), "", implode("\n", $errors)
    );
    exit(1);
}

Il faut configurer la variable "$root_path" avec le chemin vers Cheky.
Tu peux configurer ce chemin au moment où tu exécutes la commande. Exemple :

upgrade-cecky.php /checmin/vers/cheky

Dans ce cas, le code PHP devient :

<?php

$root_path = $_SERVER["argv"][1];
if (empty($root_path) || !is_dir($root_path)) {
    fwrite(STDERR, "Chemin manquant");
    exit(1);
}

Bien entendu, rien de tout cela n'a été testé, je te laisse ce privilège lol


Piost - Solution d'hébergement pour Cheky avec installation automatique.
https://www.piost.net

Hors ligne

#3 2019-05-08 13:50:27

Arthas
Membre
Inscription : 2013-05-09
Messages : 7

Re : Mise à jour de Cheky en ligne de commande

Bonjour Blount,

Il semble y avoir une erreur dans le code qui gère les erreurs. En le commentant, ça passe correctement. Tu pourrais jetter un oeil à l'occasion stp?

root@yunohost:~# sudo -u cheky__2 /usr/bin/php /var/tmp/foo/upgrade_cheky.php /var/www/cheky__2
PHP Parse error:  syntax error, unexpected ';', expecting ',' or ')' in /var/tmp/foo/upgrade_cheky.php on line 36
root@yunohost:~#

En tout cas, ça fonctionne si je lance le script en SSH mais pas encore depuis Yunohost. Un petit soucis à résoudre en interne...

Merci pour ta réponse et pour cet outil génial smile

Hors ligne

#4 2019-05-08 18:25:31

Blount
Administrator
Inscription : 2010-11-16
Messages : 713

Re : Mise à jour de Cheky en ligne de commande

En effet, il manque une parenthèse :

// S'il y a des erreurs, on les écrit dans STDERR et on quitte
// avec un code erreur.
if (!empty($errors)) {
    fwrite(STDERR, str_replace(
        array("<br>", "<br />"), "", implode("\n", $errors)
    ));
    exit(1);
}

Piost - Solution d'hébergement pour Cheky avec installation automatique.
https://www.piost.net

Hors ligne

#5 2019-05-11 11:40:06

Arthas
Membre
Inscription : 2013-05-09
Messages : 7

Re : Mise à jour de Cheky en ligne de commande

Une version version "testing" du paquet Cheky est désormais disponible via YunoHost : https://github.com/YunoHost-Apps/cheky_ … #L107-L122

J'attends un peu avant de la rendre disponible à tout le monde.

Merci pour le coup de main, je n'y serai pas arrivé seul smile

Hors ligne

Pied de page des forums