Modification du fonctionnement du fichier voo4_cli pour retirer les noms de serveur de celui-ci

Edit me

Introduction

Le fichier PHP voo4_cli.php, permettant de lancer des commandes sur toutes les applications Voozanoo 4, présentait plusieurs problèmes :

  • L’installation d’une nouvelle application nécessitait de renseigner des variables d’environnements pour chaque serveurs sur lesquels elle était susceptible d’être installée.
  • Le nom des serveurs présent directement dans ce fichier représentait un problème de sécurité.

Nous avons donc remplacer le code de ce fichier pour palier ces problèmes.

Lors de l’installation d’une nouvelle application à l’aide du dépôt Voo4Skeletton, la nouvelle version du fichier sera utilisée. Néanmoins, le voo4_cli des anciennes applications doit être modifié par un développeur. Cette documentation décrit la procédure à suivre.

Prérequis

Pour fonctionner correctement le voo4_cli à besoin de 6 variables d’environnement :

  • VOO4_APPBOOTSTRAPPER
  • PATH_VOO4_CORE
  • PATH_VOO4_EXTLIB
  • PATH_FARM
  • PATH_ZF
  • APPLICATION_ENV

4 d’entres elles sont déjà fournie par le serveur Appache, pas besoin donc de les renseigner

En revanche VOO4_APPBOOTSTRAPPER et APPLICATION_ENV doivent être renseigner.

Il faut donc s’assurer que sur le serveur frontal de votre application vous trouvez dans le répertoire /space/www/configuration/voozanoo4/env/ un fichier nommé {nom de l’application}_{version}_env.php

Ce fichier doit contenir une définition des 2 variables manquantes :

<?php

define('VOO4_APPBOOTSTRAPPER', "/space/www/libs/VOOZANOO4/2.26-alpha/src/tools/Voo4_AppBootstrapper.php");
define('APPLICATION_ENV', 'staging');

Ce fichier est normalement généré lors de la création du vhost sur le serveur avec la commande vhost setvoo4. Le nécessaire pour les vhosts existants aura normalement été réalisé par l’infra.

En cas, d’absence de ce fichier env.php pour votre application, vous pouvez contacter l’infra.

Modification du fichier voo4_cli.php

Le contenu du fichier _voo4_cli.php__ dans le répertoire _{nom_application}/resources/cron/ doit être remplacé par ceci :

<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * This is VOOZANOO, a program. Contact voozanoo@epiconcept.fr, or   *
 * see http://www.voozanoo.net/ for more information.                *
 *                                                                   *
 * Copyright 2001-2013 Epiconcept                                    *
 *                                                                   *
 * This program is free software; you can redistribute it and/or     *
 * modify it under the terms of the GNU General Public License as    *
 * published by the Free Software Foundation - version 2             *
 *                                                                   *
 * This program is distributed in the hope that it will be useful,   *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     *
 * GNU General Public License in file COPYING for more details.      *
 *                                                                   *
 * You should have received a copy of the GNU General Public         *
 * License along with this program; if not, write to the Free        *
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,       *
 * Boston, MA 02111, USA.                                            *
 *                                                                   *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

$aPath = explode( DIRECTORY_SEPARATOR, __DIR__ );
$sAppName = $aPath[ count( $aPath ) - 3 ];

$aArgs = $_SERVER[ 'argv' ];
array_shift( $aArgs );

if ( defined( 'PATH_ENV' ) ) {
    require_once( PATH_ENV . '/' . $sAppName . '_env.php' );
} else {
    require_once( __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'configs' .
                  DIRECTORY_SEPARATOR .
                  'env.php' );
}

putenv( 'VOO4_APPBOOTSTRAPPER=' . VOO4_APPBOOTSTRAPPER );
putenv( 'PATH_VOO4_CORE=' . PATH_VOO4_CORE );
putenv( 'PATH_VOO4_EXTLIB=' . PATH_VOO4_EXTLIB );
putenv( 'PATH_FARM=' . PATH_FARM );
putenv( 'PATH_ZF=' . PATH_ZF );
putenv( 'APPLICATION_ENV=' . APPLICATION_ENV );

defined( 'VOO4_APPBOOTSTRAPPER' ) ||
define( 'VOO4_APPBOOTSTRAPPER', getenv( 'VOO4_APPBOOTSTRAPPER' ) ? getenv( 'VOO4_APPBOOTSTRAPPER' ) : null );

require_once( VOO4_APPBOOTSTRAPPER );

Voo4_AppBootstrapper::bootstrapApplication( __DIR__ . '/../..' );

require_once( CHEMIN_CORE . '/tools/Voo4CliApi.php' );

try {
    //Duplicate the arguments
    $aArgs = $_SERVER[ 'argv' ];
    //Remove first argument : name of the Script
    array_shift( $aArgs );

    $oApi = new Voo4CliApi( $aArgs );

    $mReturn = $oApi->process();
    //If a string or a numeric were return print it, to dialog with shell/batch script
    if ( !is_null( $mReturn ) && ( is_string( $mReturn ) || is_numeric( $mReturn ) ) ) {
        echo $mReturn . "\n";
    }
} catch ( Exception $oException ) {
    error_log( "Exception : " . $oException->getMessage() );
    error_log( $oException->getTraceAsString() );
    exit( 1 );
}

exit( 0 );

En prenant garde à la ligne 33 de mettre la bonne version de Voozanoo 4 (actuellement 2.26)

Pour tester le nouveau fichier

Pour tester cette nouvelle version du voo4_cli, vous pouvez lancer une commande cli ou faire une publication sur cette application via Epicraft.