Installation du Core avant le GUI

Questions relatives à l'installation de Horux dans toutes ses versions

Re: Installation du Core avant le GUI

Nouveau messagepar Heero_Yuy » Mer 4 Nov 2009 12:16

Je vois pas trop où tu veux en venir là.

Ton script horuxcore.sql permettrait de créer quelles tables ? Et les autres scripts SQL serviraient à quoi ?

Moi, je vois plutôt un script sql qui crée la base de données et toutes les tables nécessaires (équipements, accès, utilisateurs...). Ensuite, c'est Horux Core qui remplit la base de données. Et si on installe le client Web, lui, vient soit ajouter une nouvelle base de données pour son interface et vient taper dans la base de données Horux pour récupérer les infos utiles (est-ce possible ?), soit ajoute à la base de données Horux les tables dont il a besoin pour son interface.
Heero_Yuy
 
Messages: 9
Inscrit le: Mar 27 Oct 2009 21:30

Re: Installation du Core avant le GUI

Nouveau messagepar letux » Ven 6 Nov 2009 07:46

l'idée la derrière est de pouvoir se passer totalement de Horux Gui dans le cas ou une société développe son propre interface utilisateur basé sur la base de donnée Horux. Il faudrait alors avoir la possibilité de créer éventuellement d'autre script et notamment les tables des périphériques.

De plus, nous pourrions imaginer l'utilisation de Horux Core dans un système embarqué comme par exemple un poste de paiement. Dans ce case de figure, le type de périphérique est connu et nous pouvons avoir le script de base de Horux et dans des script séparés ceux des périphériques.

cela toujours dans le but de n'avoir qu'un seul fichier sql de base général pour tout les types d'installation.
letux
Administrateur du site
 
Messages: 12
Inscrit le: Jeu 1 Oct 2009 18:05

Re: Installation du Core avant le GUI

Nouveau messagepar Heero_Yuy » Mar 24 Nov 2009 11:33

Désolé de ne répondre que maintenant, mais j'étais en congés :)

Mais j'en ai profité pour modifier le script. Maintenant, il y a un répertoire db contenant 2 autres répertoires : initvalues et structure.

Le script parcourt dans un premier temps le répertoire structure et exécute l'ensemble des fichiers SQL présents dans ce répertoire. Ces fichiers permettent de créer les tables de la base de données (un fichier par table et donc par équipement). Une fois l'ensemble des tables créées, le script parcourt le répertoire initvalues qui contient les fichiers permettant d'initialiser les tables - si besoin est - et là encore un fichier par table à initialiser.

Enfin, un fichier de conf est créé, lequel contient les informations d'accès à la base de données, à savoir, le nom de la base de données, le nom de l'administrateur de la base de données et le mot de passe pour accéder à la base de données. Bien entendu, ce fichier est créé avec des droits restreints, seul root peut le modifier, mais pour le moment, tout le monde peut le lire, ce qui est gênant. Ce sera la prochaine modification à faire.

Je posterais le script dès que j'aurais un peu plus de temps ;)
Heero_Yuy
 
Messages: 9
Inscrit le: Mar 27 Oct 2009 21:30

Re: Installation du Core avant le GUI

Nouveau messagepar Heero_Yuy » Jeu 3 Déc 2009 21:08

Chose promise, chose dûe (avec un peu de retard :p ). Voici le script pour créer la base de données.

Dis-moi si ça conviens pour Horux, et n'hésites pas à l'utiliser ;) :

#!/bin/bash

Code: Tout sélectionner
#***************************************************************************
#*   Copyright (C) 2009 by Heero_Yuy                                 *
#*   angel59@alionet.org                                                   *
#*                                                                         *
#*   This file is part of the TEST project.                           *
#*                                                                           *
#*   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; either version 2 of the License, or     *
#*   (at your option) any later version.                                   *
#*                                                                         *
#*   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 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.,                                       *
#*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
#***************************************************************************


# =====================
# ===   VARIABLES   ===
# =====================

## DATABASE
DATABASE_NAME=TEST;                           # Database Name
ADMIN_NAME=;                                       # Administrator Name
ADMIN_PASSWD=;                                       # Administrator Password
ROOT_PASSWD=;                                       # MySQL Root Password

## SQL FILES DIRECTORY
STRUCT_DIR=`pwd`/db/structures;
INIT_DIR=`pwd`/db/initvalues;

## ERRORS
ERR_CODE=;                                          # Error code
NOERR_MSG=" ... Done";
ERR1000="   >> Error while adding $ADMIN_NAME to MySQL Server !";
ERR2000="   >> Error while creating $DATABASE_NAME Database !";
ERR3000="   >> Error while creating $DATABASE_NAME Database Structure !";
ERR4000="   >> Error while adding privileges to $ADMIN_NAME on $DATABASE_NAME !";
ERR5000="   >> $DATABASE_NAME Database already exists !";
ERR6000="   >> Error while initializing tables !";

## CONFIGURATION FILE
CONF_DIR=`pwd`/conf;
CONF_FILE=`pwd`/conf/$DATABASE_NAME.conf;

###########################################################################################


# ==========================
# ===   Function TITLE   ===
# ==========================
## Print Script title
function title
{
   echo;
   echo;
   echo "         **************************************         ";
   echo "         *                                    *         ";
   echo "         *     $DATABASE_NAME DATABASE CREATION    *         ";
   echo "         *                                    *         ";
   echo "         **************************************         ";
   echo;
   echo;
}

###########################################################################################


# ==============================
# ===   Function CREATEDBA   ===
# ==============================
## Create the Database Administrator
function createDBA
{   
   if [[ $# == 0 ]];
   then
      # Ask for the TEST Database Administrator Name
      read -p "Enter the $DATABASE_NAME Database Administrator name (by default : domoadmin) : " ADMIN_NAME;
      
      if [[ !( -n $ADMIN_NAME ) ]];
      then   
         ADMIN_NAME="testadmin";
      fi
      
      # Ask for the TEST Database Administrator Password
      read -s -p "Enter the $DATABASE_NAME Database Administrator password (by default : password) : " ADMIN_PASSWD;
      
      if [[ !( -n $ADMIN_PASSWD ) ]];
      then
         ADMIN_PASSWD="password";      
      fi
   elif [[ $# == 2 ]];
   then
      ADMIN_NAME=$1;
      ADMIN_PASSWD=$2;
   fi
      
   if mysql -u root -p$ROOT_PASSWD -e "use mysql;
                  CREATE USER '$ADMIN_NAME'@'localhost' IDENTIFIED BY '$ADMIN_PASSWD';";            
   then
      # Add Privilege Usage
      if mysql -u root -p$ROOT_PASSWD -e "use mysql;
                  GRANT USAGE ON *.* TO '$ADMIN_NAME'@'localhost' IDENTIFIED BY '$ADMIN_PASSWD';";
      then            
         ERR_CODE=0;      
      else
         ERR_CODE=1000;
      fi
   fi
   
   return $ERR_CODE;
   
}

###########################################################################################


# ==================================
# ===   Function ADDPRIVILEGES   ===
# ==================================
## Add privileges on the TEST Database to the TEST Database Administrator
function addPrivileges
{
   if mysql -u root -p$ROOT_PASSWD -e "use mysql;
               GRANT ALL PRIVILEGES ON $DATABASE_NAME.* TO '$ADMIN_NAME'@'localhost';";
   then    
      ERR_CODE=0;   
   else   
      ERR_CODE=4000;   
   fi
   
   return $ERR_CODE;
   
}

###########################################################################################


# =============================
# ===   Function CREATEDB   ===
# =============================
## Create Database
function createDB
{
   # TEST Database Creation, if not existing
   if [[ !( -d '/var/lib/mysql/'$DATABASE_NAME'/' ) ]];
   then
      if mysqladmin -u root -p$ROOT_PASSWD create $DATABASE_NAME;
      then
         ERR_CODE=0;
      else
         ERR_CODE=2000;   
      fi         
   else
      # The database already exists !
      ERR_CODE=5000;
   fi
   
   return $ERR_CODE;
   
}

###########################################################################################


# ===================================
# ===   Function CREATEDBSTRUCT   ===
# ===================================
## Create Database Structure
function createDBStruct
{
   for file in $STRUCT_DIR/*
   do
      if [ -f $file ];
      then
         if mysql -u root -p$ROOT_PASSWD < $file;
         then
            ERR_CODE=0;
         else
            ERR_CODE=3000;
         fi
      fi
   done
         
   return $ERR_CODE;
   
}

###########################################################################################


# ===========================
# ===   Function INITDB   ===
# ===========================
## Initialize Database
function initDB
{
   # Initialize Tables
   for file in $INIT_DIR/*
   do
      if [ -f $file ];
      then
         if mysql -u root -p$ROOT_PASSWD < $file;
         then
            ERR_CODE=0;
         else
            ERR_CODE=6000;
         fi
      fi
   done   
   
   return $ERR_CODE;
   
}

###########################################################################################


# ===========================
# ===   Function ERRORS   ===
# ===========================
## Print error messages
function errors
{

   case $ERR_CODE in
      1000 ) echo $ERR1000;;
      2000 ) echo $ERR2000;;
      3000 ) echo $ERR3000;;
      4000 ) echo $ERR4000;;
      5000 ) echo $ERR5000;;
      6000 ) echo $ERR6000;;   
   esac;
      
}

###########################################################################################


# ========================
# ===   Main program   ===
# ========================

# The program must be launched as root
if [[ $UID -ne 0 ]];
then
   echo;
   echo "[$0] You may need root privileges to run this script !";
   echo;
   exit 1;
else   
   
   # Print the title of the application
   title;
   
   # Ask for the MySQL Root password
   read -s -p "Please, enter the MySQL Root Password : " ROOT_PASSWD;

   echo;
   
   # Create the TEST Database
   echo "Creating $DATABASE_NAME Database ...";
   createDB;

   if [[ $? == 0 ]];
   then
      echo $NOERR_MSG;
   else
      errors $ERR_CODE;
      exit 1;
   fi;
   
   # Create Database Structure
   echo "Creating $DATABASE_NAME Database Structure...";
   createDBStruct;
   
   if [[ $? == 0 ]];
   then
      echo $NOERR_MSG;
   else
      errors $ERR_CODE;
      exit 1;
   fi;

   # Initialize Database
   echo "Initializing $DATABASE_NAME Database...";
   initDB;
   
   if [[ $? == 0 ]];
   then
      echo $NOERR_MSG;
   else
      errors $ERR_CODE;
      exit 1;
   fi;
   
   # Create Database Administrator ?
   read -p "Would you like creating a TEST Database Administrator account ? [y/N]" CREATE_ADMIN;
   
   echo "Creating $DATABASE_NAME Database Administrator...";
   
   case $CREATE_ADMIN in
      y|Y ) 
            createDBA;
            if [[ $? == 0 ]];
            then
               echo $NOERR_MSG;
            else
               errors $ERR_CODE;
               exit 1;
            fi;;
      n|N )
            createDBA "testadmin" "password";
            if [[ $? == 0 ]];
            then
               echo $NOERR_MSG;
            else
               errors $ERR_CODE;
               exit 1;
            fi;;
   esac
   
   # Add privileges
   echo "Adding privileges to $DATABASE_NAME Administrator for $DATABASE_NAME Database...";
   addPrivileges;
   
   if [[ $? == 0 ]];
   then
      echo $NOERR_MSG;
   else
      errors $ERR_CODE;
      exit 1;
   fi
fi

# Creating the configuration file
echo "Creating the configuration file...";
mkdir $CONF_DIR;
touch $CONF_FILE;
echo -e "DATABASE_NAME=$DATABASE_NAME\nADMIN_NAME=$ADMIN_NAME\nADMIN_PASSWD=$ADMIN_PASSWD" > $CONF_FILE;

exit 0;


Y a certainement encore des petites choses à améliorer :)
Heero_Yuy
 
Messages: 9
Inscrit le: Mar 27 Oct 2009 21:30

Re: Installation du Core avant le GUI

Nouveau messagepar letux » Ven 11 Déc 2009 13:52

excellent, je vais voire tout cela et le tester. Je verrai ensuite pour l'intégrer au système. De plus, je modifierai Horux Gui pour l'installation afin qu'il puisse pendant l'installation vérifier si la base de données existe.
letux
Administrateur du site
 
Messages: 12
Inscrit le: Jeu 1 Oct 2009 18:05

Re: Installation du Core avant le GUI

Nouveau messagepar Heero_Yuy » Ven 11 Déc 2009 14:20

Oki ;)

J'attends ton retour d'expérience, mais en même temps, je me pose la question de l'utilité de démarrer ce script en tant que ROOT, puisque le script utilise plutôt le compte ROOT de mySQL, et pas celui du système.

Enfin, ce n'est pas très important dans l'immédiat.
Heero_Yuy
 
Messages: 9
Inscrit le: Mar 27 Oct 2009 21:30

Précédent

Retour vers Installation et configuration

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron