#!/bin/bash # goLinuxDC++ - Script LinuxDC++ - by ompolicy # # Email: ompolicy@gmail.com # Site: http://ompolicy.altervista.org which zenity if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ]; then sudo -S apt-get install -y zenity fi namedir="" title="goLinuxDC++:" ver_linuxdc="1.4" author_ompo="ompolicy" email_ompo="ompolicy@gmail.com" log_install="$HOME/.nude/log/linuxdcpp_log_install" log_apt="$HOME/.nude/log/linuxdcpp_log_apt" log_bzr="$HOME/.nude/log/linuxdcpp_log_bzr" name_prog="linuxdcpp" function Error100 { zenity --info --text="Errore #100 APT-GET / DPKG nell'installazione dei pacchetti!" zenity --text-info --filename="$log_apt" --text="Errore!" sudo -k exit } function MessageLog { zenity --info --text="Errore durante la compilazione!" zenity --text-info --filename="$log_install" --text="Se verificato un errore!" sudo -k exit } function ChooseDirectory { if [ ! -f $HOME/.nude/dirprog ] then touch $HOME/.nude/dirprog fi namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` if [ "$namedir" != "" ] then if [ -d "$namedir/$name_prog" ] then zenity --warning --text="Il programma è già installato!" Start sudo -k exit 0 else Install $namedir fi fi zenity --info --text="Scegli la directory per l'installazione! La directory del programma \"$name_prog\" verrà creata nel percorso specificato" namedir=`zenity --file-selection --directory --title="Scegli la directory di installazione"` if [ "$namedir" == "" ] then Start sudo -k exit 0 fi if [ -O "$namedir" ] then echo $namedir | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then cat $HOME/.nude/dirprog | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then echo "$name_prog $namedir" >> $HOME/.nude/dirprog else sed -e "s%^$name_prog\ .*%$name_prog\ $namedir%" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog fi Install $namedir else namedir=`dirname $namedir` cat $HOME/.nude/dirprog | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then echo "$name_prog $namedir" >> $HOME/.nude/dirprog else sed -e "s%^$name_prog\ .*%$name_prog\ $namedir%" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog fi #echo "$name_prog $namedir" >> $HOME/.nude/dirprog fi else zenity --error --text="La cartella non è scrivibile dall'utente" --title="$title" ChooseDirectory fi } function Password { if [ "$pass" == "" ] then pass=`zenity --entry --hide-text --text="Insert Root Password .:"` if [ $? -eq 1 ] then sudo -k exit 1 fi echo "$pass" | sudo -S -l if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then pass="" Password fi export $pass fi } function ControllOther { namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` ## Controllo se esiste il PATH su dirprog! if [ "$namedir" == "" ] then choose=`zenity --list --text="Il programma sembra non essere installato con NuDe, vuoi importarlo?" --column="Scelta" Si No` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$choose" in "Si") ChooseDirectory ;; "No") Start sudo -k exit 0 ;; esac else ## Controllo se il PATH esiste fisicamente! if [ ! -d "$namedir/$name_prog" ] then zenity --warning --text="Attenzione! Il programma non è installato per procedere avanti bisogna installarlo!" Start sudo -k exit 0 fi fi } function Dev { echo $pass | sudo -S apt-get install -y --force-yes build-essential libglade2-0 libglade2.0-cil libglade2-dev scons g++ libstdc++6 libstdc++6-4.2-dev pkg-config libpthread-stubs0 libpthread-stubs0-dev zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libssl0.9.8 libssl-dev 2> $log_apt | zenity --progress --auto-close --pulsate --text="Download ed installazione delle librerie e dei compilatori" --title="$title" if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then Error100 else ChooseDirectory fi } function Install { bzr checkout lp:linuxdcpp $namedir/$name_prog 2> $log_bzr | zenity --progress --auto-close --auto-kill --pulsate --text="Downloading.." --title="$title" # if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] # then # Error104 # fi Compile cat << .end > $HOME/linuxdcpp.desktop [Desktop Entry] Name=LinuxDC++ GenericName=LinuxDC++ Comment=DirectConnect Client Exec=linuxdcpp StartupNotify=false Icon=/usr/share/$name_prog/pixmaps/linuxdcpp.png Terminal=false Type=Application Categories=Network;P2P; .end echo $pass | sudo -S mv $HOME/linuxdcpp.desktop /usr/share/applications/ zenity --info --title="$title" --text="Installazione completata!" } function Compile { cd $namedir/$name_prog scons PREFIX=/usr 2> $log_install | zenity --progress --auto-close --percentage="50" --text="Costruzione.." --title="$title" if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then MessageLog fi echo $pass | sudo -S scons install | zenity --progress --auto-close --percentage="99" --text="Installazione.." --title="$title" if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then MessageLog fi } function Update { namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` bzr update Compile $namedir Start } function CaseUninstall { uninstall=`zenity --title="$title Uninstall Linux DC++" --text="Sei sicuro?" --list --column="Scegli" Si No` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$uninstall" in "Si") Uninstall | zenity --progress --text="Uninstall In Corso.." --title="$title" --auto-close ;; "No") Start ;; esac } function Uninstall { echo "20" namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` echo "40" cd $namedir/$name_prog scons -c 2> $log_install | zenity --progress --text="Uninstall in corso.." --pulsate if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then MessageLog fi echo "60" rm -fr $namedir/$name_prog sudo -S rm /usr/share/applications/linuxdcpp.desktop echo "80" sed -e "/^$name_prog\ .*/d" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog echo "100" sleep 1 zenity --info --text="Rimozione completata!" --title="$title" } function Start { choose=`zenity --height=230 --width=260 --title="$title Menù principale" --text="Fai la tua scelta:" --list --column= Installa Aggiorna Rimuovi Esci ` case "$choose" in "Installa") Password Dev ;; "Aggiorna") ControllOther Password Update ;; "Rimuovi") ControllOther Password CaseUninstall ;; "Esci") sudo -k exit ;; esac } #Controllo esecuzione script con sudo o da root if [ "$(id -u)" == "0" ]; then zenity --info --text="Lancia lo script senza SUDO!" --title=$title exit 1 fi if [ -d "$HOME/.nude" ]; then echo "" else mkdir $HOME/.nude mkdir $HOME/.nude/svn mkdir $HOME/.nude/log touch $HOME/.nude/control fi if [ -d "$HOME/.nude/log" ]; then echo "" else mkdir $HOME/.nude/log fi if [ -d "$HOME/.nude/svn" ]; then echo "" else mkdir $HOME/.nude/svn fi zenity --info --text="goLinuxDC++ [by $author_ompo]\n\n Installazione facilitata per\n LinuxDC++ - Client DirectConnect\n\n $email_ompo\n\n Versione: $ver_linuxdc" --title="$title Info" Start