Commit acb41cf3 authored by chirac's avatar chirac

Merge branch 'Fix_install_re2o' into 'master'

Fix install re2o

Closes #122

See merge request federez/re2o!163
parents d610ac6d a884f36f
Datepicker ## MR 160: Datepicker
=======
Install libjs-jquery Install libjs-jquery libjs-jquery-ui libjs-jquery-timepicker libjs-bootstrap javascript-common
Install libjs-jquery-ui ```
Install libjs-jquery-timepicker apt-get -y install \
Install libjs-bootstrap libjs-jquery \
Install (if not) javascript-common libjs-jquery-ui \
Enable (if not) javascript-common conf libjs-jquery-timepicker \
libjs-bootstrap \
javascript-common
```
Enable javascript-common conf
```
a2enconf javascript-common
```
Delete old jquery files : Delete old jquery files :
rm -rf static_files/js/jquery-ui-* ```
rm -rf static_files/js/jquery-2.2.4.min.js rm -r static_files/js/jquery-ui-*
static/css/jquery-ui-timepicker-addon.css rm static_files/js/jquery-2.2.4.min.js
rm static/css/jquery-ui-timepicker-addon.css
```
## MR 163: Fix install re2o
Refactored install_re2o.sh script.
* There are more tools available with it but some fucntion have changed, report to [the dedicated wiki page](for more informations) or run:
```
install_re2o.sh help
```
* The installation templates (LDIF files and `re2o/settings_locale.example.py`) have been changed to use `example.net` instead of `example.org` (more neutral and generic)
...@@ -18,165 +18,10 @@ le réseau (adhérent à jour de cotisation). ...@@ -18,165 +18,10 @@ le réseau (adhérent à jour de cotisation).
# Installation # Installation
## Installation des dépendances Un tutoriel pour installer le projet est disponible [sur le wiki](https://gitlab.federez.net/federez/re2o/wikis/User%20Documentation/Quick%20Start).
L'installation comporte 3 partie : le serveur web où se trouve le depot re2o # Installations Optionnelles
ainsi que toutes ses dépendances, le serveur bdd (mysql ou pgsql) et le ## Générer le schéma des dépendances
serveur ldap. Ces 3 serveurs peuvent en réalité être la même machine, ou séparés
(recommandé en production).
Le serveur web sera nommé serveur A, le serveur bdd serveur B et le serveur ldap
serveur C.
### Prérequis sur le serveur A
Voici la liste des dépendances à installer sur le serveur principal (A).
### Avec apt :
#### Sous debian 9
Paquets obligatoires:
* python3-django (1.10, stretch)
* python3-dateutil (stretch)
* texlive-latex-base (stretch)
* texlive-fonts-recommended (strech)
* python3-djangorestframework (stretch)
* python3-django-reversion (stretch)
* python3-pip (stretch)
Paquet recommandés:
* python3-django-extensions (stretch)
### Autres dépendances :
Paquets préalables à installer avec apt :
* libsasl2-dev (stable)
* libldap2-dev (stable)
* libssl-dev (stable)
Avec pip3 (pip3 install):
* django-bootstrap3
* django-ldapdb
* django-macaddress
Moteur de db conseillé (mysql), postgresql fonctionne également.
Pour mysql, il faut installer :
* python3-mysqldb
* mysql-client
### Prérequis sur le serveur B
Sur le serveur B, installer mysql ou postgresql, dans la version stretch.
* mysql-server (stretch) ou postgresql (stretch)
### Prérequis sur le serveur C
Sur le serveur C (ldap), avec apt :
* slapd (stretch)
### Installation sur le serveur principal A
Cloner le dépot re2o à partir du gitlab, par exemple dans /var/www/re2o.
Ensuite, il faut créer le fichier settings_local.py dans le sous dossier re2o,
un settings_local.example.py est présent. Les options sont commentées, et des
options par défaut existent.
En particulier, il est nécessaire de générer un login/mdp admin pour le ldap et
un login/mdp pour l'utilisateur sql (cf ci-dessous), à mettre dans
settings_local.py
### Installation du serveur mysql/postgresql sur B
Sur le serveur mysql ou postgresl, il est nécessaire de créer une base de
donnée re2o, ainsi qu'un user re2o et un mot de passe associé.
Ne pas oublier de faire écouter le serveur mysql ou postgresql avec les acl
nécessaire pour que A puisse l'utiliser.
#### Mysql
Voici les étapes à éxecuter pour mysql :
* CREATE DATABASE re2o collate='utf8_general_ci';
* CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
* GRANT ALL PRIVILEGES ON re2o.* TO 'newuser'@'localhost';
* FLUSH PRIVILEGES;
#### Postgresql
* CREATE DATABASE re2o ENCODING 'UTF8' LC_COLLATE='fr_FR.UTF-8'
LC_CTYPE='fr_FR.UTF-8';
* CREATE USER newuser with password 'password';
* ALTER DATABASE re2o owner to newuser;
Si les serveurs A et B ne sont pas la même machine, il est nécessaire de
remplacer localhost par l'ip avec laquelle A contacte B dans les commandes
du dessus.
Une fois ces commandes effectuées, ne pas oublier de vérifier que newuser et
password sont présents dans settings_local.py
### Installation du serveur ldap sur le serveur C
Ceci se fait en plusieurs étapes :
* générer un login/mdp administrateur (par example mkpasswd sous debian)
* Copier depuis re2o/install_utils (dans le dépot re2o) les fichiers db.ldiff
et schema.ldiff (normalement sur le serveur A) sur le serveur C
(par ex dans /tmp)
* Hasher le mot de passe généré en utilisant la commande slappasswd
(installée par slapd)
* Remplacer toutes les sections FILL_IN par le hash dans schema.ldiff et
db.ldiff
* Remplacer dans schema.ldiff et db.ldiff 'dc=example,dc=org' par le
suffixe de l'organisation
* Arréter slapd
* Supprimer les données existantes : '''rm -rf /etc/ldap/slapd.d/*''' et
'''rm -rf /var/lib/ldap/*'''
* Injecter le nouveau schéma :
'''slapadd -n 0 -l schema.ldiff -F /etc/ldap/slapd.d/''' et
'''slapadd -n 1 -l db.ldiff'''
* Réparer les permissions (chown -R openldap:openldap /etc/ldap/slapd.d et
chown -R openldap:openldap /var/lib/ldap) puis relancer slapd
Pour visualiser et éditer le ldap, l'utilisation de shelldap est fortement
recommandée, en utilisant en binddn et basedn tous deux égaux à 'cn=config' et
binddpw le mot de passe admin.
Rajouter (exemple de chemin de fichier avec un certif LE):
`olcTLSCertificateKeyFile: /etc/letsencrypt/live/HOSTNAME/privkey.pem
olcTLSCACertificateFile: /etc/letsencrypt/live/HOSTNAME/chain.pem
olcTLSCertificateFile: /etc/letsencrypt/live/HOSTNAME/cert.pem `
Mettre à jour la partie ldap du `settings_local.py` (mettre 'TLS' à True
si besoin, user cn=config,dc=example,dc=org et mot de passe
ldap choisi précédemment).
## Configuration initiale
Normalement à cette étape, le ldap et la bdd sql sont configurées correctement.
Il faut alors lancer dans le dépot re2o '''python3 manage.py migrate''' qui
va structurer initialement la base de données.
Les migrations sont normalement comitées au fur et à mesure, néanmoins cette
étape peut crasher, merci de reporter les bugs.
## Démarer le site web
Il faut utiliser un moteur pour servir le site web. Nginx ou apache2 sont
recommandés.
Pour apache2 :
* apt install apache2
* apt install libapache2-mod-wsgi-py3 (pour le module wsgi)
Un example de site apache2 se trouve dans install_utils ( re2o.conf)
re2o/wsgi.py permet de fonctionner avec apache2 en production
## Configuration avancée
Une fois démaré, le site web devrait être accessible.
Pour créer un premier user, faire '''python3 manage.py createsuperuser'''
qui va alors créer un user admin.
Il est conseillé de créer un user portant le nom de
l'association/organisation, qui possedera l'ensemble des machines, à indiquer
dans le menu reglages sur l'interface.
## Installations Optionnelles
### Générer le schéma des dépendances
Pour cela : Pour cela :
* apt install python3-django-extensions * apt install python3-django-extensions
......
#!/bin/bash #!/bin/bash
setup_ldap() { SETTINGS_LOCAL_FILE='re2o/settings_local.py'
apt-get -y install slapd SETTINGS_EXAMPLE_FILE='re2o/settings_local.example.py'
echo "Hashage du mot de passe ldap..." APT_REQ_FILE="apt_requirements.txt"
hashed_ldap_passwd=$(slappasswd -s $1) PIP_REQ_FILE="pip_requirements.txt"
echo $hashed_ldap_passwd LDIF_DB_FILE="install_utils/db.ldiff"
echo "Formatage des fichiers de config ldap" LDIF_SCHEMA_FILE="install_utils/schema.ldiff"
sed 's|dc=example,dc=org|'"$2"'|g' install_utils/db.ldiff | sed 's|FILL_IT|'"$hashed_ldap_passwd"'|g' > /tmp/db
sed 's|dc=example,dc=org|'"$2"'|g' install_utils/schema.ldiff | sed 's|FILL_IT|'"$hashed_ldap_passwd"'|g' > /tmp/schema
VALUE= # global value used to return values by some functions
echo "Destruction config ldap existante"
service slapd stop _ask_value() {
rm -rf /etc/ldap/slapd.d/* ### Usage _ask_value <text> [<option1> [<option2> ... ] ]
rm -rf /var/lib/ldap/* #
# This function is a utility function to force a user to enter a value
echo "Ecriture de la configuration actuelle" # available in a set of options.
slapadd -n 0 -l /tmp/schema -F /etc/ldap/slapd.d/ #
slapadd -n 1 -l /tmp/db # Parameters:
# * text: The text to display
echo "Reparation des permissions et redémarage de slapd" # * option#: A possible option for the user. If no option is specifed,
chown -R openldap:openldap /etc/ldap/slapd.d # all inputs are considered valid
chown -R openldap:openldap /var/lib/ldap #
service slapd start # Echo: The value entered by the user. Should be one of the choices if
# not ommited
###
shopt -s extglob
input_text="$1"
shift
if [ "$#" -ne 0 ]; then
choices="("
while [ "$#" -ne 1 ]; do
choices+="$1|"
shift
done
choices+="$1)"
input_text+=" $choices: "
choices="@$choices"
else
input_text+=": "
choices="@(*)"
fi
while true; do
read -p "$input_text" choice
case "$choice" in
$choices ) break;;
* ) echo "Invalid option";;
esac
done
VALUE="$choice"
}
install_requirements() {
### Usage: install_requirements
#
# This function will install the required packages from APT repository
# and Pypi repository. Those packages are all required for Re2o to work
# properly.
###
echo "Setting up the required packages ..."
cat $APT_REQ_FILE | xargs apt-get -y install
pip3 install -r $PIP_REQ_FILE
echo "Setting up the required packages: Done"
} }
install_re2o_server() {
echo "Installation de Re2o ! install_database() {
Cet utilitaire va procéder à l'installation initiale de re2o. Le serveur présent doit être vierge. ### Usage: install_database <engine_type> <local_setup> <db_name> <username> <password>
Preconfiguration..." #
# This function will install the database by downloading the correct APT packages
export DEBIAN_FRONTEND=noninteractive # and initiating the database schema.
#
apt-get -y install sudo dialog # Parameters:
# * engine_type: The DB engine to use.
HEIGHT=15 # 1 = mysql
WIDTH=40 # 2 = postgresql
init=$(dialog --clear \ # * local_setup: Should the database be installed locally
--title "Installation de Re2o !" \ # 1 = yes
--msgbox "Cet utilitaire va procéder à l'installation initiale de re2o. Le serveur présent doit être vierge de préférence. Preconfiguration..." \ # 2 = no
$HEIGHT $WIDTH \ # * db_name: The name of the database itself
2>&1 >/dev/tty) # * username: The username to access the database
# * password: The password of the user to access the database
###
HEIGHT=15
WIDTH=40 echo "Setting up the database ..."
CHOICE_HEIGHT=4
BACKTITLE="Preconfiguration re2o" engine_type="$1"
MENU="Choisir une option" local_setup="$2"
db_name="$3"
TITLE="Choix du moteur bdd" username="$4"
OPTIONS=(1 "mysql" password="$5"
2 "postgresql")
if [ "$engine_type" == 1 ]; then
sql_bdd_type=$(dialog --clear \
--backtitle "$BACKTITLE" \ echo "Installing MySQL client ..."
--title "$TITLE" \ apt-get -y install python3-mysqldb mysql-client
--menu "$MENU" \ echo "Installing MySQL client: Done"
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \ mysql_command="CREATE DATABASE $db_name collate='utf8_general_ci';
2>&1 >/dev/tty) CREATE USER '$username'@'localhost' IDENTIFIED BY '$password';
GRANT ALL PRIVILEGES ON $db_name.* TO '$username'@'localhost';
clear FLUSH PRIVILEGES;"
if [ "$local_setup" == 1 ]; then
TITLE="Extension locale (ex : example.org)" echo "Setting up local MySQL server ..."
apt-get -y install mysql-server
extension_locale=$(dialog --title "$TITLE" \ mysql -u root --execute="$mysql_command"
--backtitle "$BACKTITLE" \ echo "Setting up local MySQL server: Done"
--inputbox "$TITLE" $HEIGHT $WIDTH \ else
2>&1 >/dev/tty) echo "Please execute the following command on the remote SQL server and then continue"
clear echo "$mysql_command"
_ask_value "Continue" "yes" "no"; if [ "$VALUE" == "no" ]; then exit; fi
IFS='.' read -a extension_locale_array <<< $extension_locale fi
for i in "${extension_locale_array[@]}"
do
ldap_dn+="dc=$i,"
done
ldap_dn=${ldap_dn::-1}
echo $ldap_dn
TITLE="Emplacement de la bdd"
OPTIONS=(1 "Local"
2 "Distant")
sql_is_local=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
TITLE="Mot de passe sql"
sql_password=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
if [ $sql_is_local == 2 ]
then
TITLE="Login sql"
sql_login=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
TITLE="Nom de la bdd sql"
sql_name=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
TITLE="Hote de la base de donnée"
sql_host=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
else
sql_name="re2o"
sql_login="re2o"
sql_host="localhost"
fi
mysql_command="CREATE DATABASE $sql_name collate='utf8_general_ci';
CREATE USER '$sql_login'@'localhost' IDENTIFIED BY '$sql_password';
GRANT ALL PRIVILEGES ON $sql_name.* TO '$sql_login'@'localhost';
FLUSH PRIVILEGES;"
pgsql_command1="CREATE DATABASE $sql_name ENCODING 'UTF8' LC_COLLATE='fr_FR.UTF-8' LC_CTYPE='fr_FR.UTF-8';"
pgsql_command2="CREATE USER $sql_login with password '$sql_password';"
pgsql_command3="ALTER DATABASE $sql_name owner to $sql_login;"
TITLE="Emplacement du ldap"
OPTIONS=(1 "Local"
2 "Distant")
ldap_is_local=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
HEIGHT=15
WIDTH=40
instal_ldap=$(dialog --clear \
--title "Installation de Re2o !" \
--msgbox "Vous devrez fournir un login/host dans le cas où le ldap est non local" \
$HEIGHT $WIDTH \
2>&1 >/dev/tty)
TITLE="Mot de passe ldap"
ldap_password=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
if [ $ldap_is_local == 2 ]
then
TITLE="Cn ldap admin"
ldap_cn=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
TITLE="Hote ldap"
ldap_host=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
else
ldap_cn="cn=admin,"
ldap_cn+=$ldap_dn
ldap_host="localhost"
fi
TITLE="Hôte pour l'envoi de mail"
email_host=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
TITLE="Port du serveur mail"
OPTIONS=(25 "25 (SMTP)"
465 "465 (SMTPS)"
587 "587 (Submission)")
email_port=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
if [ $ldap_is_local == 2 ]
then
TITLE="Cn ldap admin"
ldap_cn=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
TITLE="Hote ldap"
ldap_host=$(dialog --title "$TITLE" \
--backtitle "$BACKTITLE" \
--inputbox "$TITLE" $HEIGHT $WIDTH \
2>&1 >/dev/tty)
clear
else
ldap_cn="cn=admin,"
ldap_cn+=$ldap_dn
ldap_host="localhost"
fi
HEIGHT=15
WIDTH=40
install_base=$(dialog --clear \
--title "Installation de Re2o !" \
--msgbox "Installation des paquets de base" \
$HEIGHT $WIDTH \
2>&1 >/dev/tty)
echo "Installation des paquets de base"
apt-get -y install python3-django python3-dateutil texlive-latex-base texlive-fonts-recommended python3-djangorestframework python3-django-reversion python3-pip libsasl2-dev libldap2-dev libssl-dev python3-crypto python3-git
pip3 install django-bootstrap3
pip3 install django-ldapdb
pip3 install django-macaddress
if [ $sql_bdd_type == 1 ]
then
apt-get -y install python3-mysqldb mysql-client
if [ $sql_is_local == 1 ]
then
apt-get -y install mysql-server
mysql -u root --execute="$mysql_command"
else else
echo "Veuillez saisir la commande suivante sur le serveur sql distant, puis validez"
echo $mysql_command echo "Installing PostgreSQL client ..."
while true; do apt-get -y install postgresql-client python3-psycopg2
read -p "Continue (y/n)?" choice echo "Installing PostgreSQL client: Done"
case "$choice" in
y|Y ) break;; pgsql_command1="CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='fr_FR.UTF-8' LC_CTYPE='fr_FR.UTF-8';"
n|N ) exit;; pgsql_command2="CREATE USER $username with password '$password';"
* ) echo "invalid";; pgsql_command3="ALTER DATABASE $db_name owner to $username;"
esac
done if [ "$local_setup" == 1 ]; then
echo "Setting up local PostgreSQL server ..."
apt-get -y install postgresql
sudo -u postgres psql --command="$pgsql_command1"
sudo -u postgres psql --command="$pgsql_command2"
sudo -u postgres psql --command="$pgsql_command3"
echo "Setting up local PostgreSQL server: Done"
else
echo "Please execute the following commands on the remote SQL server and then continue"
echo "sudo -u postgres psql $pgsql_command1"
echo "sudo -u postgres psql $pgsql_command2"
echo "sudo -u postgres psql $pgsql_command3"
_ask_value "Continue" "yes" "no"; if [ "$VALUE" == "no" ]; then exit; fi
fi
fi
echo "Setting up the database: Done"
}
install_ldap() {
### Usage: install_ldap <local_setup> <password> <domain>
#
# This function will install the LDAP
#
# Parameters:
# * local_setup: Should the LDAP be installed locally ?
# 1 = yes
# 2 = no
# * password: the clear password for the admin user of the LDAP
# * domain: the domain extension to use for the LDAP structure in LDAP notation
###
echo "Setting up the LDAP ..."
local_setup="$1"
password="$2"
domain="$3"
if [ "$local_setup" == 1 ]; then
echo "Installing slapd package ..."
apt-get -y install slapd
echo "Installing slapd package: Done"
echo "Hashing the LDAP password ..."
hashed_ldap_passwd="$(slappasswd -s $password)"
echo "Hash of the password: $hashed_ldap_passwd"
echo "Building the LDAP config files ..."
sed 's|dc=example,dc=net|'"$domain"'|g' $LDIF_DB_FILE | sed 's|FILL_IT|'"$hashed_ldap_passwd"'|g' > /tmp/db
sed 's|dc=example,dc=net|'"$domain"'|g' $LDIF_SCHEMA_FILE | sed 's|FILL_IT|'"$hashed_ldap_passwd"'|g' > /tmp/schema
echo "Building the LDAP config files: Done"
echo "Stopping slapd service ..."
service slapd stop
echo "Stopping slapd service: Done"
echo "Deleting exisitng LDAP configuration ..."
rm -rf /etc/ldap/slapd.d/*
rm -rf /var/lib/ldap/*
echo "Deleting existing LDAP configuration: Done"
echo "Setting up the new LDAP configuration ..."
slapadd -n 0 -l /tmp/schema -F /etc/ldap/slapd.d/
slapadd -n 1 -l /tmp/db
echo "Setting up the new LDAP configuration: Done"
echo "Fixing the LDAP files permissions ..."
chown -R openldap:openldap /etc/ldap/slapd.d
chown -R openldap:openldap /var/lib/ldap
echo "Fixing the LDAP files permissions: Done"
echo "Starting slapd service ..."
service slapd start
echo "Starting slapd service: Done"
else
echo "Please execute the following command on the remote LDAP server and then continue"
echo "./install_re2o.sh setup-ldap $password $domain"
_ask_value "Continue" "yes" "no"; if [ "$VALUE" == "no" ]; then exit; fi
fi fi
else
apt-get -y install postgresql-client echo "Setting up the LDAP: Done"
apt-get -y install python3-psycopg2 }
if [ $sql_is_local == 1 ]
then
apt-get -y install postgresql
sudo -u postgres psql --command="$pgsql_command1" write_settings_file() {
sudo -u postgres psql --command="$pgsql_command2" ### Usage: write_settings_file <db_engine_type> <sql_hostname> <sql_db_name> <sql_username> <sql_password>
sudo -u postgres psql --command="$pgsql_command3" # <ldap_cn> <ldap_tls> <ldap_password> <ldap_hostname> <ldap_domain>
# <email_hostname> <email_port> <extension> <url>
#
# This function will write a clean local settings file based on the example.
#
# Parameters:
# * db_engine_type: The engine for the database
# 1 = MySQL
# 2 = PostgreSQL
# * sql_hostname: The hostname for contacting the database
# * sql_db_name: The name of the database itself
# * sql_username: The user to use to access the database
# * sql_password: The password to use to access the database
# * ldap_cn: The CN entry for the LDAP admin in LDAP notation
# * ldap_tls: Should the TLS be activated to contact the LDAP
# 1 = yes
# 2 = no
# * ldap_password: The password to use to connect to the LDAP
# * ldap_hostname: The hostname for contacting the LDAP
# * ldap_domain: The local domain for the LDAP in LDAP notation
# * email_hostname: The hostname for contacting the mail server
# * email_port: The port for contacting the mail server
# * extension: The extension to use
# * url: The main URL to use for Re2o
###
echo "Writing of the settings_local.py file ..."
db_engine_type="$1"
sql_hostname="$2"
sql_db_name="$3"
sql_username="$4"
sql_password="$5"
ldap_cn="$6"
ldap_tls="$7"
ldap_password="$8"
ldap_hostname="$9"
ldap_domain="${10}"
email_hostname="${11}"
email_port="${12}"
extension="${13}"
url="${14}"
cp "$SETTINGS_EXAMPLE_FILE" "$SETTINGS_LOCAL_FILE"
django_secret_key="$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(50)]))")"
aes_key="$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(32)]))")"
if [ "$db_engine_type" == 1 ]; then
sed -i 's/db_engine/django.db.backends.mysql/g' "$SETTINGS_LOCAL_FILE"
else else
echo "Veuillez saisir la commande suivante sur le serveur sql distant, puis validez" sed -i 's/db_engine/django.db.backends.postgresql_psycopg2/g' "$SETTINGS_LOCAL_FILE"
echo sudo -u postgres psql $pgsql_command1 fi
echo sudo -u postgres psql $pgsql_command2 sed -i 's/SUPER_SECRET_KEY/'"$django_secret_key"'/g' "$SETTINGS_LOCAL_FILE"
echo sudo -u postgres psql $pgsql_command3 sed -i 's/SUPER_SECRET_DB/'"$sql_password"'/g' "$SETTINGS_LOCAL_FILE"
while true; do sed -i 's/A_SECRET_AES_KEY/'"$aes_key"'/g' "$SETTINGS_LOCAL_FILE"