#!/bin/sh

# Script pour transformer des contacts au format LDIF
# en de multiples fichier VCARD pour les importer
# dans un téléphone mobile
# /!\ Necessiter d'installer la commande unix2dos
# (sous Debian, paquet tofrodos)
#
# Ce script prend en argument un fichier LDIF
# par exemple /localhome/root/annuaire.ldif
# resultat de la commande :
# ldapsearch -x -LLL -b "dc=example,dc=com" "(|(telephoneNumber=*)(homePhone=*))" uid telephoneNumber homePhone o
#
# Cela va mettre les fichier *.vcf dans le repertoire /tmp/ldif2vcard/
# Ces fichiers pourront être copiés sur la carte mémoire d'un téléphone
# mobile en vue de leur importation
# Sur un telephone Nokia E65, les copier dans "Others/contacts/"
# puis faire "Contacts> Options > Copier> Depuis carte memoire"


mkdir -p /tmp/ldif2vcard/

cd /tmp/ldif2vcard/

IFS=$'\n'
VAR1=/dev/null

for i in $(cat $1); do

    if ( echo $i | sed 's/^dn/BINGO/' | grep BINGO > /dev/null ); then
        echo END:VCARD >> $VAR1.vcf
        unix2dos $VAR1.vcf
        VAR1=$(echo $i | sed 's/^dn:.*=\(.*\),ou.*/\1/');
        echo BEGIN:VCARD > $VAR1.vcf
        echo VERSION:2.1 >> $VAR1.vcf
    fi

    if ( echo $i | sed 's/^uid/BINGO/' | grep BINGO > /dev/null ); then
        VAR2=$(echo $i | sed 's/^uid: \(.*\)/\1/');
        echo "N:;$VAR2" >> $VAR1.vcf
    fi

    if ( echo $i | sed 's/^o/BINGO/' | grep BINGO > /dev/null ); then
        VAR3=$(echo $i | sed 's/^o: \(.*\)/\1/');
        echo "ORG:$VAR3" >> $VAR1.vcf
    fi

    if ( echo $i | sed 's/^telephoneNumber/BINGO/' | grep BINGO > /dev/null ); then
        VAR4=$(echo $i | sed 's/^telephoneNumber: \(.*\)/\1/');
        echo "TEL;VOICE:$VAR4" >> $VAR1.vcf
    fi

    if ( echo $i | sed 's/^homePhone/BINGO/' | grep BINGO > /dev/null ); then
        VAR5=$(echo $i | sed 's/^homePhone: \(.*\)/\1/');
        echo "TEL;VOICE:$VAR5" >> $VAR1.vcf
    fi

done

