#!/bin/bash
phone_addr=$1
own_name=$(basename $0)
dir=$(mktemp -d)/$phone_addr
browser=${browser:-"xdg-open"}
# Check for kdialog
if which kdialog &>/dev/null; then
messagetype="kdialog2"
else
messagetype="gtkdialog"
fi
# gtkdialog stuff
function gtkbox1() {
export messagebox='
'
}
function gtkbox2() {
export messagebox='
'
}
function gtkmessage() {
I=$IFS; IFS=""
for STATEMENT in $(gtkdialog --center --program=messagebox); do
eval $STATEMENT
done
IFS=$I
}
#mount function
mount_phone ()
{
i=0
LIMIT=5
while [ $i -lt $LIMIT ]
do
printf "$i "
logger -i -t $own_name "Perform $i try to mount phone $phone_addr to $dir using obexfs"
logger -i -t $own_name "Execute: obexfs -b $phone_addr -B 10 $dir"
out=$(obexfs -b $phone_addr $dir 2>&1)
logger -i -t $own_name "$out"
mounts=$(grep $dir /proc/mounts | wc -l)
logger -i -t $own_name "Found $mounts mounted $dir inside /proc/mounts"
if [ $mounts -ne 0 ] ;then
progress=99
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "Successfully mounted $phone_addr to $dir" 2
else
gtkbox2 $"Successfully mounted $phone_addr to $dir"
gtkmessage
fi
logger -i -t $own_name "Open $dir with $browser"
out=$($browser $dir 2>&1)
logger -i -t $own_name "$out"
exit 0
else
logger -i -t $own_name "Failed to mount $phone_addr to $dir from the $i try"
fi
sleep 1
((i += 1))
done
if [ $mounts -eq 0 ] ;then
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "Failed to mount $phone_addr to $dir.\nCheck /var/log/messages for errors." 4
else
gtkbox2 $"Failed to mount $phone_addr to $dir. Check /var/log/messages for errors."
gtkmessage
fi
killall gtkdialog
fi
}
#unmount function
umount_phone ()
{
mounts=$(grep $dir /proc/mounts | wc -l)
if [ $mounts -ne 0 ] ;then
logger -i -t $own_name "Perform umount of $dir if it's already mounted."
out=$(fusermount -uz $dir 2>&1)
logger -i -t $own_name "$out"
mounts=$(cat /proc/mounts |grep $dir|wc -l)
if [ $mounts -eq 0 ] ;then
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."
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "Failed to umount $dir - check /var/log/messages for errors" 4
else
gtkbox2 $"Failed to umount $dir - check /var/log/messages for errors"
gtkmessage
fi
exit
fi
else
logger -i -t $own_name "$dir is not mounted - no need to perform umount..."
fi
}
#mkdir function
create_dir ()
{
progress=1
logger -i -t $own_name "Create directory $dir to mount the phone by bluetooth..."
out=$(mkdir -p $dir 2>&1)
logger -i -t $own_name "$out"
}
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "Mount phone is in progress... Please wait..." 4
else
gtkbox1 $"Mount phone is in progress... Please wait..."
gtkmessage&
fi
create_dir
umount_phone
mount_phone