Utilisation de ynh_local_curl

Bonjour,

J’essaye de mettre à jour le script de pluxml et je rencontre 2 soucis avec ynh_local_curl

Pour le script d’upgrade, je dois lancer une page php pour procéder à la mise à jour, voilà le contenu de la page

	<section class="section col sml-12 med-9 med-offset-3 lrg-10 lrg-offset-2" style="margin-top: 0">

		<header>

			<h1>Mise à jour PluXml 5.8.3</h1>

		</header>

										<form action="index.php" method="post">
				<fieldset>
					<div class="grid">
						<div class="col sml-9 med-7 label-centered">
							<label for="id_default_lang">Sélectionnez votre langue</label>
						</div>
						<div class="col sml-3 med-2">
							<select id="id_default_lang" name="default_lang">
		<option value="de">de</option>
		<option value="en">en</option>
		<option value="es">es</option>
		<option value="fr" selected="selected">fr</option>
		<option value="it">it</option>
		<option value="nl">nl</option>
		<option value="oc">oc</option>
		<option value="pl">pl</option>
		<option value="pt">pt</option>
		<option value="ro">ro</option>
		<option value="ru">ru</option>
	</select>
	&nbsp;
						</div>
						<div class="col med-3">
							<input type="submit" name="select_lang" value="Changer" />
							<input name="token" value="HkS5j7ELTWepncg4U0faXsYKm9V1y8hu" type="hidden" />							</div>
					</div>
				</fieldset>
				<fieldset>
					<p><strong>Vous allez mettre à jour votre ancienne version de PluXml 5.7</strong></p>
											<p>Attention, avant de démarrer la mise à jour, n'oubliez pas de faire une sauvegarde de vos données en faisant une copie du dossier "data"</p>
					<p><input type="submit" name="submit" value="Démarrer la mise à jour" /></p>
				</fieldset>
			</form>
								</section>

vu cette page, j’ai donc ajouté la commande suivante dans le script d’upgrade

ynh_local_curl "/update/index.php" "submit=Démarrer la mise à jour"

à partir de là, j’ai 2 soucis :

  • ynh_local_curl n’a pas l’air d’apprécier les espaces, j’ai essayer de les échapper sans succès
  • le contenu du bouton dépend de la langue affichée (qui dépend de la config du pc), ce script risque de fonctionner uniquement sur pc “français”

pour plus d’infos, voir branche “issue_42” sur github

Salut,

pas sur que fournir la valeur pour “submit” soit ce que tu veux … ce submit c’est “juste” le bouton sur lequel tu cliques à la main d’habitude pour lancer le bouzin … mais là, le helper ynh_local_curl s’attends à ce que tu fournisses (pour chaque champ) les vraies valeur pour chaque champ du formulaire que tu aurais rempli. En l’occurence, par exemple “default_lang=fr”

Le truc c’est qu’il y a aussi un token csrf dans l’histoire et je ne sais pas comment c’est facilement gérable … (ceci dit ce serait surprenant que ce soit la première app qui ai besoin de gérer ça ?)

Autrement, est-ce que tu es sur qu’il faille passer la une requête POST et qu’il n’y a absolument pas moyen de lancer ça “proprement” en ligne de commande directement ?

Salut,

Oui j’ai uniquement besoin de “lancer le bouzin” avec le bouton Démarrer

Le formulaire a “submit”, le premier ne m’est pas utile car il change la langue du texte d’affichage

Le second permet de lancer le script de mise à jour.

Pour moi, le plus simple est de passer par ce script de mise à jour en php. La doc recommande de passer par ce script, pas de ligne de commande.

Bonjour,

Grace à @yalh76 , j’ai réussi à débloquer la situation.

j’ai modifier le script d’upgrade pour faire apparaitre

chown -R "$app":"$app" $final_path
ynh_local_curl "/update/index.php" "submit=submit"

l’utilisation de ynh_local_curl me parait toujours très obscure, par contre je ne comprends pas pourquoi je dois changer les droits avant de lancer le script php

Pour les droits, le plus simple c’est que tu testes:

  • installe la version précédente
  • dans le script d’upgrade tu mets un read -p "key" L121
  • lances l’upgrade en ligne de commande, elle va s’arréter à la ligne 121
  • si tu te rends si l’interface de pluxml, tu verras l’interface d’upgrade de pluxml et tu pourras lancer l’update manuellement
  • Tu verras alors que l’upgrade boucle sur elle même sans réussir.
  • l’upgrade semble modifier des fichiers dans le dossier data
  • comme php-fpm tourne en tant l’utilisateur pluxml, j’ai regardé les droits sur le dossier data et le propriétaire etait root
  • donc ça semblait pas étonnant que l’upgrade n’arrive pas à se faire, l’utilisateur pluxml n’ayant pas de droits sur le dossier ou il a des mises à jour à faire.