BlackList/Untangle/dataTransfter/dataTransfert.sh

90 lines
3.0 KiB
Bash

#!/bin/bash
#
# Nom : dataTransfert
# Autheur : ERGY13
# Propriétaire : Liberodark
# But : convertir un fichier d'entrée raw en tableau json
#
# format json
# exemple : [{"blocked":true,"flagged":true,"string":"torrent9.biz","javaClass":"com.untangle.uvm.node.GenericRule","name":null,"description":"","readOnly":null,"id":17,"category":null,"enabled":true}]
#
# récupération de l'entrée
# fichier source
if [ -z "$1" ]; then
echo "Sytaxe : $0 <fichier d'entrée> [fichier de sortie] [itération à reprendre]"
exit 1
else
inputFile="$1"
if [ ! -e "$inputFile" ]; then
echo "Le fichier d'entrée '$inputFile' n'a pas été trouvé."
exit 1
fi ;
fi ;
# fichier cible (ou stdout)
if [ -z "$2" ]; then
outfile=""
else
outfile="$2"
if [ -e "$outfile" ]; then
echo "Faut-il supprimer le fichier '$outfile' déjà existant ? Il contient $( cat $outfile | wc -l ) lignes. (y/n)"
read reponse
if [ "$reponse" = "y" ]; then
rm -vf "$outfile"
else
echo "Écriture à la suite du fichier..."
fi ;
fi ;
fi ;
# reprises en cours en cas de besoin
if [ -z "$3" ]; then
id=0
else
id=$3
fi ;
# balises pour mettre ou pas les crochets
first_line=0
last_line=$(( $( cat $inputFile | wc -l ) - 1 ))
if [ -z "$outfile" ]; then
# sortie dans la console
while read line ; do
if [ $id -eq $first_line ]; then
# first line
echo "[{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true},"
elif [ $id -eq $last_line ]; then
# last line
echo "{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true}]"
else
# normal line
printf "{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true},"
fi ;
id=$(( $id + 1 ))
done < "$inputFile"
else
# sortie dans un fichier
while read line ; do
if [ "$id" = "$first_line" ]; then
# first line
echo "[{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true}," >> $outfile
elif [ "$id" = "$last_line" ]; then
# last line
printf "{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true}]" >> $outfile
else
# normal line
echo "{\"blocked\":true,\"flagged\":true,\"string\":\"$line\",\"javaClass\":\"com.untangle.uvm.node.GenericRule\",\"name\":null,\"description\":\"\",\"readOnly\":null,\"id\":$id,\"category\":null,\"enabled\":true}," >> $outfile
fi ;
id=$(( $id + 1 ))
done < "$inputFile"
fi ;