blob: f51a881fc9cc76b644252f9c64a36d548caac180 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
#!/bin/sh
# varables
DEBUG=${DEBUG:-""}
if [ ! -z $DEBUG ];then
dbg_msg="Check /var/log/messages for errors."
else
dbg_msg="Enable *DEBUG* for error log."
fi
device_addr=$1
own_name=$(basename $0)
basedir=${basedir:-/mnt}
dir=${basedir}/$device_addr
browser=${browser:-"xdg-open"}
count=0
# Check for kdialog
if which kdialog 1>/dev/null 2>/dev/null; then
messagetype="kdialog"
else
messagetype="gtkdialog"
export p_file="progress.tmp"
export m_file="message.tmp"
touch $p_file
touch $m_file
echo "0" > $p_file
fi
#gtkdialog abstraction
gtkbox_interactive() {
export messagebox='
<vbox>
<frame Blueman Open Device.>
<text>
<label>Mounting Bluetooth Devive ..</label>
</text>
<progressbar>
<input>progress p_file</input>
<action type="exit">Done.</action>
</progressbar>
</frame>
</vbox>
'
}
gtkmessage() {
I=$IFS; IFS=""
for STATEMENT in $(gtkdialog --center --program=messagebox); do
eval $STATEMENT
done
IFS=$I
}
#gtkdialog progress counter
if [ "$messagetype" = "gtkdialog" ]; then
progress(){
while :
do
sleep 0.3
percentage=$(cat $p_file)
text=$(cat $m_file)
echo $percentage
echo $text
if [ $percentage = 100 ]; then
rm *.tmp
exit 0
fi
done
}
message(){
echo $MSG_TXT > $m_file
}
fi
export -f progress
# End gtkdialog abstraction
# mount function
mount_device ()
{
i=0
LIMIT=5
while [ $i -lt $LIMIT ]
do
let count=$count+17
echo "$count" > $p_file
printf "$i "
[ ! -z $DEBUG ] && logger -i -t $own_name "Perform $i try to mount device $device_addr to $dir using obexfs"
[ ! -z $DEBUG ] && logger -i -t $own_name "Execute: obexfs -b $device_addr -B 10 $dir"
out=$(obexfs -b $device_addr $dir 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
mounts=$(grep $dir /proc/mounts | wc -l)
[ ! -z $DEBUG ] && logger -i -t $own_name "Found $mounts mounted $dir inside /proc/mounts"
if [ $mounts -ne 0 ] ;then
MSG_TXT="Successfully mounted $device_addr to $dir"
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 2
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
echo "99" > $p_file
sleep 2
echo "100" > $p_file
fi
[ ! -z $DEBUG ] && logger -i -t $own_name "Open $dir with $browser"
out=$($browser $dir 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
exit 0
else
logger -i -t $own_name "Failed to mount $device_addr to $dir from try $i "
fi
sleep 1
((i += 1))
done
if [ $mounts -eq 0 ] ;then
MSG_TXT="Failed to mount $device_addr to $dir. $dbg_msg"
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 4
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
echo "99" > $p_file
sleep 4
echo "100" > $p_file
fi
fi
}
# unmount function
umount_device ()
{
mounts=$(grep $dir /proc/mounts | wc -l)
if [ $mounts -ne 0 ] ;then
[ ! -z $DEBUG ] && logger -i -t $own_name "Perform umount of $dir if it's already mounted."
out=$(fusermount -uz $dir 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
mounts=$(cat /proc/mounts |grep $dir|wc -l)
if [ $mounts -eq 0 ] ;then
[ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $dir."
else
logger -i -t $own_name "$dir is already mounted. Failed to umount $dir.$out. Please perform its umount manually."
MSG_TXT="Failed to umount $dir - $dbg_msg"
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 4
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
echo "99" > $p_file
sleep 4
count=5
fi
exit
fi
else
[ ! -z $DEBUG ] && logger -i -t $own_name "$dir is not mounted - no need to perform umount..."
fi
}
# mkdir function
create_dir ()
{
[ ! -z $DEBUG ] && logger -i -t $own_name "Create directory $dir to mount the device by bluetooth..."
out=$(mkdir -p $dir 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
}
#main
MSG_TXT="Mount device is in progress... Please wait..."
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 4
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
gtkbox_interactive
gtkmessage&
fi
create_dir
umount_device
mount_device
|