root/branches/licq/website/trillian.licqconvert

Revision 4129, 4.3 kB (checked in by anonymous, 4 years ago)

This commit was manufactured by cvs2svn to create branch 'licq'.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1#!/bin/bash
2#
3#####################################################################
4#
5# This script converts a LICQ user database into a Trillian
6# user buddies.xml file
7#
8####################################################################
9#
10# You might want to adjust the default group name, as well as the
11# replacements (sed-batchfile) to fit your needs.
12#
13# by default a file named buddies.xml is generated in your current
14# directory. If one is already present, it will be overwritten!
15# Just replace your buddies.xml on your trillian machine
16# and you're all set.
17#
18####################################################################
19
20# Licq Dirs -- change if applicable
21
22LICQ_DIR=$HOME/.licq/
23LICQ_USER_DIR=${LICQ_DIR}users/
24
25# Licq Files -- change if applicable
26
27LICQ_CONF=$LICQ_DIR/licq.conf
28# LICQ_USERS=$LICQ_DIR/users.conf
29
30# output file
31OUT_FILE="buddies.xml"
32
33#Default Group for users that don't belong to a group
34GRUPPEN[0]="Andere user"
35
36#Filename for a temporary sed batch-file
37SED_TMP=sed.tmp
38
39#generate sed batchfile for stripping leading blanks and replacing Umlauts in Alias-names
40#
41# adjust for special Characters in your language
42#
43echo "s/^ *//"    > $SED_TMP  #leading blanks
44echo "s/Ä/%C4/g" >> $SED_TMP  #Ä
45echo "s/Ö/%D6/g" >> $SED_TMP  #Ö
46echo "s/Ü/%DC/g" >> $SED_TMP  #Ü
47echo "s/ä/%E4/g" >> $SED_TMP  #ä
48echo "s/ö/%F6/g" >> $SED_TMP  #ö
49echo "s/ü/%FC/g" >> $SED_TMP  #ü
50
51GROUP_COUNT=`awk -F = '/NumOfGroups/ {printf "%i",$2}' < $LICQ_CONF`
52
53echo "Parsing Group Names"
54
55#Parsing group names into Array
56for ((j=1;$j<=$GROUP_COUNT;j++))
57do
58    GRUPPEN[$j]="`cat $LICQ_CONF | grep Group$j\.name | awk -F = '{ print $2 }' | sed "s/^ *//"`"
59done
60
61
62echo "Analyzing Group Memberships"
63
64#Determine group memberships
65for DATEI in `ls -1 $LICQ_USER_DIR/*`
66do
67    DAT=`basename "$DATEI"`
68
69    #is user on ignore list? -- don't add
70    SYSTEM_GROUP=`cat $DATEI | awk -F = '/Groups\.System/ {print $2}'`
71    if  ([ -n "$SYSTEM_GROUP" ] && ! [ $SYSTEM_GROUP -eq 8 ])
72    then
73
74        #determine group membership
75        GROUP_CODE=`cat $DATEI | awk -F = '/Groups\.User/ {print $2}' | sed "s/^ *//"`
76        if ([ -z "$GROUP_CODE" ] || [ "$GROUP_CODE" -eq 0 ] )
77        then
78            MEMBERS[0]=`echo "${MEMBERS[0]} $DAT"`
79        else
80            for ((j=0;$j<=$GROUP_COUNT;j++))
81            do
82                TEST_GROUP=$((2**($GROUP_COUNT - $j) ))
83                TEST_ERG=$(( $GROUP_CODE / $TEST_GROUP ))
84                if [ $TEST_ERG -eq 1 ]
85                then
86                    #member of group group_count - j + 1
87                    GROUP_NUM=$(($GROUP_COUNT - $j + 1))
88                    MEMBERS[$GROUP_NUM]=`echo "${MEMBERS[$GROUP_NUM]} $DAT"`
89                    if [ ! $TEST_GROUP -eq 1 ]
90                    then
91                        GROUP_CODE=$(($GROUP_CODE % $TEST_GROUP ))
92                    fi
93                fi
94            done
95        fi
96    fi
97done
98
99echo "Writing File Header"
100
101#old output file will be overwritten!!!
102#Write Header
103
104echo "<?xml version=\"1.0\"?>" > $OUT_FILE
105echo "<!DOCTYPE buddies">> $OUT_FILE
106echo "     PUBLIC \"-//IETF//DTD RFCxxxx XBUDDY 1.0 //EN\" \"xbuddy.dtd\">" >> $OUT_FILE
107echo >> $OUT_FILE
108echo "<!-- some warning from Trillian here :-) -->" >> $OUT_FILE
109echo >> $OUT_FILE
110
111#End of Header
112
113echo "Writing Data"
114
115#genereate entries in OUT_FILE
116
117echo "<buddies>" >> $OUT_FILE
118echo "  <title>Buddies for Trillian User</title>" >> $OUT_FILE
119echo "  <version>1.2</version>" >> $OUT_FILE
120
121TMP=0
122for ((COUNT=1;$COUNT <= $GROUP_COUNT; COUNT++))
123do
124    echo "Adding Group ${GRUPPEN[$COUNT]}"
125    echo "    <group expanded=\"1\">" >> $OUT_FILE
126    echo "      <title>${GRUPPEN[$COUNT]}</title>" >> $OUT_FILE
127
128    for BUDDY in ${MEMBERS[$COUNT]}
129    do
130        TMP=$(($TMP + 1))
131        #add entries for buddies
132        UIN=`basename "$BUDDY" ".Licq"`
133        ALIAS=`awk -F = '/^Alias\ / {print $2}' < $LICQ_USER_DIR/$BUDDY | sed -f $SED_TMP`
134        echo "adding buddy $ALIAS ($UIN)"
135        echo "        <buddy uri=\"ICQ:1%3A${UIN}%3A${ALIAS}\">${ALIAS}</buddy>"  >> $OUT_FILE
136
137    done
138    echo "    </group>" >> $OUT_FILE
139done
140
141COUNT=0
142#Lets add the default group last :-)
143echo "Adding Group ${GRUPPEN[$COUNT]}"
144echo "    <group expanded=\"1\">" >> $OUT_FILE
145echo "      <title>${GRUPPEN[$COUNT]}</title>" >> $OUT_FILE
146
147for BUDDY in ${MEMBERS[$COUNT]}
148do
149    TMP=$(($TMP + 1))
150    #add entries for buddies
151    UIN=`basename "$BUDDY" ".Licq"`
152    ALIAS=`awk -F = '/^Alias\ / {print $2}' < $LICQ_USER_DIR/$BUDDY | sed -f $SED_TMP`
153    echo "adding buddy $ALIAS ($UIN)"
154    echo "        <buddy uri=\"ICQ:1%3A${UIN}%3A${ALIAS}\">${ALIAS}</buddy>"  >> $OUT_FILE
155done
156echo "    </group>" >> $OUT_FILE
157echo "</buddies>" >> $OUT_FILE
158
159rm -f $SED_TMP
160
161echo "added $TMP Buddies"
Note: See TracBrowser for help on using the browser.