source: lliurex-emblemador/trunk/fuentes/lliurex-emblemador.install/usr/bin/emblemador @ 2658

Last change on this file since 2658 was 2658, checked in by Juanma, 3 years ago

Replaced mount with findmnt for bind mounts detection

  • Property svn:executable set to *
File size: 4.6 KB
Line 
1#!/bin/bash
2EMBLEM_CMD=`type -fp gvfs-set-attribute`
3if [ "x$EMBLEM_CMD" = "x" ]; then
4    echo "Package gvfs-bin not found, aborting..."
5    exit 1
6fi
7
8EMBLEM_SRC="shared-symbolic"
9
10if [ "x$1" = "xclear" ];then
11    EMBLEM_SRC="none"
12fi
13
14# Test if we are on a server
15TIPO=""
16
17test_server=`lliurex-version|grep server|wc -l`
18if [ $test_server -gt 0 ]; then
19    TIPO=server
20fi
21
22if [ "x$TIPO" = "x" ]; then
23
24# Server always is PESADO
25#
26# Calculation of boot type:
27# PESADO (mounted folders with bind, into /run),
28# LIGERO (mounted folders with bind,into /net/server-sync),
29# SEMI-LIGERO (linked dirs from /net/server-sync).
30
31#test_fat=`mount |grep -i desktop|egrep '^/run'|wc -l`
32test_semi=`ls -l ${HOME}|grep -i desktop|egrep '^lrwx'|wc -l`
33test_fat=`findmnt -l |grep -i desktop|egrep '^/run'|wc -l`
34#test_lig=`mount |grep -i desktop|egrep '^/net/server'|wc -l`
35test_lig=`finmnt -l |grep -i desktop|egrep '^/net/server'|wc -l`
36
37if [ $test_fat -gt 0 ]; then
38    TIPO=fat$TIPO
39fi
40if [ $test_semi -gt 0 ]; then
41    TIPO=semi$TIPO
42fi
43if [ $test_lig -gt 0 ]; then
44    TIPO=lig$TIPO
45fi
46
47fi
48
49echo $TIPO
50
51if [ "x$TIPO" != "xfat" -a "x$TIPO" != "xsemi" -a "x$TIPO" != "xlig" -a "x$TIPO" != "xserver" ]; then
52    echo "Error type detected, aborting... "
53    exit 1
54fi
55# Calculation for teachers or students or local user
56
57US=""
58test_local=`cat /etc/passwd|grep ${HOME}|wc -l`
59test_local2=`mount |grep '/dev/nbd0 on /rofs'|wc -l`
60
61if [ $test_local -gt 0 -a $test_local2 -eq 0 ]; then
62    US=local
63else
64#    test_student=`mount|grep -i desktop|grep -i student|wc -l`
65    test_student=`findmnt -l |grep -i desktop|grep -i student|wc -l`
66    if [ $test_student -gt 0 ]; then
67        US=students
68    else
69#       test_teacher=`mount|grep -i desktop|grep -i teacher|wc -l`
70        test_teacher=`findmnt -l|grep -i desktop|grep -i teacher|wc -l`
71        if [ $test_teacher -gt 0 ]; then
72            US=teachers
73        fi
74        # if type = semi, we've to test the link not the mount
75        if [ $TIPO = 'semi' ]; then
76            test_student=`ls -l ${HOME}|grep -i desktop|egrep '^lrwx'|grep -i student|wc -l`
77            if [ $test_student -gt 0 ]; then
78                US=students
79            else
80                test_teacher=`ls -l ${HOME}|grep -i desktop|egrep '^lrwx'|grep -i teacher|wc -l`
81                if [ $test_teacher -gt 0 ]; then
82                    US=teachers
83                fi
84            fi
85        fi
86    fi
87fi
88
89if [ "x$TIPO" = "x" -o "x$US" = "x" ]; then
90    echo $TIPO - $US
91    echo "Error user detected, aborting..."
92    exit 1
93fi
94
95
96PARAMS_CMD="-t stringv metadata::emblems"
97
98# Calculation for dirs
99DIRS=""
100if [ -f ${HOME}/.config/user-dirs.created ]; then
101    . ${HOME}/.config/user-dirs.created
102fi
103
104USERNAME=`basename ${HOME}`
105
106echo Detected $USERNAME type $US into $TIPO
107
108if [ "$US" = "teachers" ]; then
109        case "$TIPO" in
110            fat)
111                DIRS="$DIRS /run/$USERNAME/home/students"
112                DIRS="$DIRS ${HOME}/alum"
113                DIRS="$DIRS /run/$USERNAME/teachers_share"
114                DIRS="$DIRS ${HOME}/$TOKEN_SHARETEACHERS"
115                            ;;
116            semi)
117                DIRS="$DIRS /net/server-sync/home/students"
118                DIRS="$DIRS ${HOME}/alum"
119                DIRS="$DIRS /net/server-sync/teachers_share"
120                DIRS="$DIRS ${HOME}/$TOKEN_SHARETEACHERS"
121                            ;;
122            lig | server)
123                DIRS="$DIRS /net/server-sync/home/students"
124                DIRS="$DIRS ${HOME}/alum"
125                DIRS="$DIRS /net/server-sync/teachers_share"
126                DIRS="$DIRS ${HOME}/$TOKEN_SHARETEACHERS"
127            ;;
128        esac
129fi
130if [ "$US" != "local" ]; then
131        case "$TIPO" in
132            fat)
133                DIRS="$DIRS /run/$USERNAME/share"
134                DIRS="$DIRS ${HOME}/$TOKEN_SHARE"
135                DIRS="$DIRS /run/$USERNAME/groups_share"
136                DIRS="$DIRS ${HOME}/$TOKEN_GROUPSSHARE"
137                DIRS="$DIRS /run/$USERNAME/home/$US/$USERNAME/Documents"
138                DIRS="$DIRS ${HOME}/$TOKEN_DOCUMENTS"
139                DIRS="$DIRS /run/$USERNAME/home/$US/$USERNAME/Desktop"
140                DIRS="$DIRS ${HOME}/$TOKEN_DESKTOP"
141            ;;
142            semi)
143                DIRS="$DIRS /net/server-sync/share"
144                DIRS="$DIRS ${HOME}/$TOKEN_SHARE"
145                DIRS="$DIRS /net/server-sync/groups_share"
146                DIRS="$DIRS ${HOME}/$TOKEN_GROUPSSHARE"
147                DIRS="$DIRS /net/server-sync/home/$US/$USERNAME/Documents"
148                DIRS="$DIRS ${HOME}/$TOKEN_DOCUMENTS"
149                DIRS="$DIRS /net/server-sync/home/$US/$USERNAME/Desktop"
150                DIRS="$DIRS ${HOME}/$TOKEN_DESKTOP"
151            ;;
152            lig | server)
153                DIRS="$DIRS /net/server-sync/share"
154                DIRS="$DIRS ${HOME}/$TOKEN_SHARE"
155                DIRS="$DIRS /net/server-sync/groups_share"
156                DIRS="$DIRS ${HOME}/$TOKEN_GROUPSSHARE"
157                DIRS="$DIRS /net/server-sync/home/$US/$USERNAME/Documents"
158                DIRS="$DIRS ${HOME}/$TOKEN_DOCUMENTS"
159                DIRS="$DIRS /net/server-sync/home/$US/$USERNAME/Desktop"
160                DIRS="$DIRS ${HOME}/$TOKEN_DESKTOP"
161            ;;
162        esac
163fi
164
165# Execution
166i=0
167for one_dir in $DIRS; do 
168    if [ -d $one_dir -o -h $one_dir ]; then
169        i=$(($i+1))
170        CMD="$EMBLEM_CMD $one_dir $PARAMS_CMD $EMBLEM_SRC"
171        $CMD
172        if [ $? -eq 0 ]; then
173            echo $i: OK! $one_dir 
174        else
175            echo $i: FAIL! $one_dir
176        fi
177       
178    fi
179done;
180if [ $i -eq 0 ]; then
181    echo "Nothing to do"
182fi
183exit 0
Note: See TracBrowser for help on using the repository browser.