[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/www/bin/ -> installPackage.sh (source)

   1  #!/bin/bash
   2  #
   3  # Configuration des applis contenue dans appli.xml 
   4  # avec téléchargement des fichiers nécessaires à l'installation
   5  # et gestion des dépendances entre applications
   6  #
   7  # Syntaxe : installPackage.sh appli.xml NoDownload
   8  #   appli.xml doit être dans $wpkgroot/tmp/
   9  #
  10  ## $id$ ##
  11  
  12  Erreur="0"
  13  wpkgroot="/var/se3/unattended/install/wpkg"
  14  wpkgwww="/var/www/se3/wpkg"
  15  Z="/var/se3/unattended/install"
  16  
  17  function Download () {
  18      local url="$1"
  19      local destFile="$2"
  20      local MD5="$3"
  21      local pasDeDownload="$4"
  22      # $Appli est défini avec l'id de l'Appli
  23      echo ""
  24      
  25      if [ "$pasDeDownload" == "1" ]; then
  26          if [ -e "$Z/$destFile" ]; then
  27              echo -e "    Le fichier '$Z/$destFile' est présent.\n"
  28              PassMD5="1"
  29              if [ "$MD5" != "" ]; then
  30                  if ( md5sum "$Z/$destFile" | grep $MD5 ) ; then
  31                      echo -e "Le fichier présent est valide (MD5=$MD5).\n";
  32                  else
  33                      md5sum "$Z/$destFile"
  34                      echo -e "  Erreur : le test md5sum ($MD5) a échoué.\n"
  35                      ErreurApp="13"
  36                      PassMD5="0"
  37                  fi
  38              fi
  39          else
  40              echo "    Erreur : Le fichier '$Z/$destFile' est absent."
  41              if [ "$url" != "" ] ; then
  42                  echo "      Vous avez refusé le téléchargement automatique, l'application ne peut pas être installée."
  43                  echo "      Vous auriez dû télécharger ce fichier depuis l'adresse : </pre><a href='$url'>$url</a><pre>"
  44              fi
  45              ErreurApp="7"
  46          fi
  47      else
  48          if [ "$url" == "" ]; then
  49              if [ -e "$Z/$destFile" ]; then
  50                  echo -e "Présence du fichier $Z/$destFile : OK.\n"
  51              else
  52                  echo -e "Erreur : Le fichier $Z/$destFile est absent et l'url de téléchargement n'est pas définie.\n\n"
  53                  ErreurApp="8"
  54              fi
  55          else
  56              if [ -e "$Z/$destFile" ]; then
  57                  if [ "$MD5" != "" ]; then
  58                      if ( md5sum "$Z/$destFile" | grep $MD5 ) ; then
  59                          echo -e "Pas de téléchargement de '$destFile' : il est déjà présent et valide (MD5=$MD5).\n";
  60                          pasDeDownload=1
  61                      else
  62                          echo -e "Une ancienne version du fichier $destFile existait déjà. Il va être mis à jour.\n"
  63                      fi
  64                  fi
  65              fi
  66              if [ "$pasDeDownload" != "1" ]; then
  67                  echo -e "Téléchargement de '$url'.\n"
  68                  destDir="`dirname \"$Z/$destFile\"`"
  69                  fileName="`basename \"$destFile\"`"
  70                  mkdir -p "$destDir"
  71                  if [ ! -d "$destDir" ]; then
  72                      echo -e "Erreur de création du répertoire '$destDir'.\n"
  73                      ErreurApp="9"
  74                  else
  75                      # Le fichier est d'abord téléchargé dans $wpkgroot/tmp
  76                      # puis si c'est OK, déplacé dans $Z/$destFile (avec écrasement éventuel d'une ancienne version de ce fichier)
  77                      if ( ! /usr/bin/wget --progress=dot -O "$fileName" "$url" 2>&1 ); then
  78                          echo -e "  Erreur de téléchargement de $url\n";
  79                          ErreurApp="12"
  80                      else
  81                          PassMD5="1"
  82                          if [ "$MD5" != "" ]; then
  83                              if ( md5sum "$fileName" | grep $MD5 ) ; then
  84                                  echo -e "\nLe fichier téléchargé est valide (MD5=$MD5).\n";
  85                              else
  86                                  md5sum "$fileName"
  87                                  echo -e "  Erreur : le test md5sum ($MD5) a échoué.\n"
  88                                  ErreurApp="13"
  89                                  PassMD5="0"
  90                              fi
  91                          fi
  92                          if [ "$PassMD5" == "1" ] ; then
  93                              if ( mv "$fileName" "$Z/$destFile" ) ;then
  94                                  echo -e "  sauvegardé dans '$Z/$destFile'.\n"
  95                              else
  96                                  echo -e "  Erreur $? : mv '$fileName' '$Z/$destFile'.\n"
  97                                  ErreurApp="14"
  98                              fi
  99                          fi
 100                      fi
 101                  fi
 102              fi
 103          fi
 104      fi
 105      if [ "$Erreur" == "0" ] ; then
 106          Erreur="$ErreurApp"
 107      fi
 108  }
 109  
 110  function TestDepends() {
 111      Appli="$1"
 112      BashDepends="$wpkgroot/tmp/$Appli.depends.sh"
 113      if ( xsltproc -o "$BashDepends" --stringparam Appli "$Appli" "$wpkgwww/bin/testPackageDepends.xsl" "$wpkgroot/tmp/$appliXml" 2>&1 ) ; then
 114          source "$BashDepends"
 115      else
 116          echo "Erreur $? xsltproc -o '$BashDepends' --stringparam Appli '$Appli' '$wpkgwww/bin/testPackageDepends.xsl' '$wpkgroot/tmp/$appliXml'<br>"
 117          Erreur="10"
 118      fi
 119      if [ -e "$BashDepends" ] ; then
 120          rm "$BashDepends"
 121      fi
 122  }
 123  
 124  function AddApplication () {
 125      Appli="$1"
 126      echo "</pre>"
 127      echo "<h2>Ajout de '$Appli' aux applications disponibles.</h2>"
 128      if ( xsltproc -o "$wpkgroot/packages.xml" --stringparam Appli "$Appli" "$wpkgwww/bin/mergePackage.xsl" "$wpkgroot/tmp/$appliXml" 2>&1 ) ; then
 129          installationsTimeStamp "$Appli"
 130          echo "<br>L'application <b>$Appli</b> est maintenant disponible pour le déploiement.<br>"
 131          InstalledPackage=$(( $InstalledPackage + 1 ))
 132      else
 133          echo "<br>Erreur $? lors de l'ajout de l'application <b>$Appli</b> :<br>"
 134          echo "xsltproc -o '$wpkgroot/packages.xml' --stringparam Appli '$Appli' '$wpkgwww/bin/mergePackage.xsl' '$wpkgroot/tmp/$appliXml'<br>"
 135          Erreur="10"
 136      fi
 137      echo "<pre>"
 138  }
 139  
 140  function installationsTimeStamp() {
 141      Appli=$1
 142      # $appliXml
 143      TimeStamp=`date --iso-8601='seconds'`
 144      # $md5Xml
 145      timeStampsXml="/var/se3/unattended/install/wpkg/tmp/timeStamps.xml"
 146      if [ ! -e "$timeStampsXml" ] ; then
 147          echo '<installations />' > "$timeStampsXml"
 148      fi
 149      xsltproc --output "$timeStampsXml" --stringparam op add --stringparam Appli "$Appli" --stringparam AppliXml "$appliXml" --stringparam TimeStamp "`date --iso-8601='seconds'`" --stringparam md5sum "$md5Xml" --stringparam user "$login" /var/www/se3/wpkg/bin/timeStampAddPackages.xsl "$timeStampsXml"
 150  }
 151  
 152  cd $wpkgroot/tmp
 153  InstalledPackage=0
 154  nPackage=0
 155  if [ "$4" == "" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
 156      echo " Téléchargement des fichiers nécessaires à l'installation d'une appli."
 157      echo ""
 158      echo "Syntaxe : installPackage.sh appli.xml NoDownload login urlMD5 ignoreMD5"
 159  else
 160      appliXml="`basename \"$1\"`";
 161      NoDownload="$2";
 162      login="$3";
 163      urlMD5="$4";
 164      ignoreMD5="$5";
 165      echo "<pre>"
 166      #echo "urlMD5=$urlMD5";
 167      #echo "ignoreMD5=$ignoreMD5";
 168      if [ -e "$appliXml" ]; then
 169          md5Xml="`md5sum "$appliXml" |gawk '{print $1;exit}'`"
 170          bashFile="$wpkgroot/tmp/$appliXml.$$.sh"
 171          if [ "$urlMD5" != "" ] && [ "$ignoreMD5" != "1" ] ; then
 172              controlMD5="`basename \"$urlMD5\"`";
 173          else
 174              controlMD5="";
 175          fi
 176          if ( xsltproc --output "$bashFile" --stringparam AppliXML "$appliXml" --stringparam md5Xml "$md5Xml" --stringparam controlMD5 "$controlMD5" --stringparam NoDownload "$NoDownload" "$wpkgwww/bin/installPackage.xsl" "$appliXml" 2>&1 ) ; then
 177              # cat "$bashFile";
 178              cd $Z
 179              source "$bashFile"
 180              cd - >/dev/null
 181          else
 182              echo -e "Erreur $? : xsltproc --output '$bashFile' --stringparam AppliXML '$appliXml' --stringparam md5Xml '$md5Xml' --stringparam controlMD5 '$controlMD5' --stringparam NoDownload '$NoDownload' '$wpkgwww/bin/installPackage.xsl' '$appliXml'\n";
 183              Erreur="2"
 184          fi
 185          if [ -e "$bashFile" ] ; then
 186              rm "$bashFile"
 187          fi
 188      else
 189          echo -e "Le fichier xml : '$wpkgroot/$appliXml' n'existe pas !\n"
 190          Erreur="1"
 191      fi
 192      echo "</pre>"
 193  fi
 194  cd - >/dev/null
 195  if [ "$InstalledPackage" == "0" ] ; then
 196      if [ "$Erreur" != "3" ] ; then
 197          echo "Aucune application installée sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>"
 198      fi
 199  else
 200      if [ "$InstalledPackage" == "1" ] ; then
 201          echo "<b>$InstalledPackage</b> application installée sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>"
 202      else
 203          echo "<b>$InstalledPackage</b> applications installées sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>"
 204      fi
 205  fi
 206  echo "<br/>";
 207  exit $Erreur


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1