#!/bin/bash ############################################################## # Crear carpetas compartidas en Linux (GTK) # # U. Modificacion: 03-08-2021 # # Autor: q3aql # # Contacto: q3aql@protonmail.ch # # Licencia: GPL v2.0 # ############################################################## VERSION="1.6.3 (GTK)" M_DATE="030821" # Variables iconPath="/usr/share/icons/easy-samba/easy-samba.png" imagesPath="/usr/share/icons/easy-samba/img" # Parametros globales linuxSambaFolder="/opt/easy-samba" sambaConfig="/etc/samba/smb.conf" sambaBackup="/etc/samba/smb.conf.orig" homeUsers="/home" homeUsersList="/tmp/easy-samba-users.list" sambaFoldersList="/tmp/easy-samba-folders.list" sambaSedFolder="/tmp/easy-samba/word/" # Funcion para comprobar permisos de administrador function rootMessage() { mkdir -p /etc/root &> /dev/null administrador=$? if [ ${administrador} -eq 0 ] ; then rm -rf /etc/root else zenity --title "easy-samba-gtk ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=340 --text "Son necesarios permisos de administrador" echo "" echo "* easy-samba-gtk ${VERSION} (${M_DATE}) (GPL v2.0)" echo "" echo "* Son necesarios permisos de administrador" echo "" exit fi } # Funcion para realizar copia del fichero smb.conf original function backupSmbConf() { if [ -f ${sambaBackup} ] ; then echo "OK" > /dev/null else echo "" >> ${sambaConfig} echo "" >> ${sambaConfig} cp -rf ${sambaConfig} ${sambaBackup} 2> /dev/null fi } # Funcion para eliminar espacios y simbolos # Sintaxis: convertText "" function convertText() { wordToConvert=${1} sambaSedFile="${sambaSedFolder}/easy-samba-${RANDOM}.txt" mkdir -p ${sambaSedFolder} && chmod 777 -R ${sambaSedFolder} 2> /dev/null echo "${wordToConvert}" > ${sambaSedFile} # Borrar espacios sed -i 's/ /_/g' "${sambaSedFile}" &> /dev/null # Borrar simbolos symbolsList="[ ] @ { } | \ / ~ # $ % & ? ¿ = ( ) < > ! ¡" for findSymbol in ${symbolsList} ; do sed -i "s/${findSymbol}//g" "${sambaSedFile}" &> /dev/null done # Borrar el resto de simbolos sed -i 's/*//g' "${sambaSedFile}" &> /dev/null sed -i 's/"//g' "${sambaSedFile}" &> /dev/null sed -i "s/^//g" "${sambaSedFile}" &> /dev/null # Cambiar algunos simbolos sed -i 's/+/_/g' "${sambaSedFile}" &> /dev/null sed -i 's/:/-/g' "${sambaSedFile}" &> /dev/null sed -i 's/;/-/g' "${sambaSedFile}" &> /dev/null # Mostrar texto convertido wordToConvert=$(cat ${sambaSedFile}) echo ${wordToConvert} } # Funcion para extraer el nombre de la carpeta de una ruta function extractFolder() { pathToExtract="${1}/" findFolder=0 count=1 nameFolder=$(echo ${pathToExtract} | cut -d "/" -f ${count}) count=$(expr $count + 1) while [ ${findFolder} -eq 0 ] ; do nameFolderTemp=$(echo ${pathToExtract} | cut -d "/" -f ${count}) if [ -z "${nameFolderTemp}" ] ; then findFolder=1 else nameFolder="${nameFolderTemp}" count=$(expr $count + 1) fi done echo "${nameFolder}" } # Funcion para crear enlace en el escritorio/home de los usuarios # Sintaxis: createFolderLink [carpeta] function createFolderLink() { zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --cancel-label="No" --ok-label="Si" --width=530 \ --text "Deseas crear un enlace en el escritorio/home para los usuarios locales?" createLink=$? if [ ${createLink} -eq 1 ] ; then echo "nule" > /dev/null else if [ "$(ls -A ${homeUsers})" ] ; then cd ${homeUsers} ls > ${homeUsersList} for userDetected in $(cat ${homeUsersList}) ; do if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Desktop/ 2> /dev/null ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null output=$? elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escritorio/ 2> /dev/null ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null output=$? elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escriptori/ 2> /dev/null ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null output=$? else ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null output=$? fi done if [ ${output} -eq 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=280 --text "Enlaces creados correctamente!" else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=280 --text "Error: Fallo al crear los enlaces!" fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=310 --text "Usuarios no encontrados en ${homeUsers}" fi fi } # Funcion para borrar los enlaces en el escritorio/home de los usuarios # Sintaxis: deleteFolderLink [carpeta] function deleteFolderLink() { zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --cancel-label="No" --ok-label="Si" --width=530 \ --text "Deseas borrar los enlaces en el escritorio/home de los usuarios locales?" deleteLink=$? if [ ${deleteLink} -eq 1 ] ; then echo "nule" > /dev/null else if [ "$(ls -A ${homeUsers})" ] ; then cd ${homeUsers} ls > ${homeUsersList} for userDetected in $(cat ${homeUsersList}) ; do if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then rm -f ${homeUsers}/${userDetected}/Desktop/${1} 2> /dev/null rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null output=$? elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then rm -f ${homeUsers}/${userDetected}/Escritorio/${1} 2> /dev/null rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null output=$? elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then rm -f ${homeUsers}/${userDetected}/Escriptori/${1} 2> /dev/null rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null output=$? else rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null output=$? fi done if [ ${output} -eq 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=280 --text "Enlaces borrados correctamente!" else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=290 --text "Error: Fallo al borrar los enlaces!" fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=310 --text "Usuarios no encontrados en ${homeUsers}" fi fi } # Funcion para corregir los permisos en la home de un usuario # Sintaxis: fixHomePermissions function fixHomePermissions() { homeFolder="${1}" checkHomeFolder=$(echo ${homeFolder} | grep "/home") if [ -z ${checkHomeFolder} ] ; then echo "null" > /dev/null else userFolder=$(echo ${homeFolder} | cut -d "/" -f 3) chmod o+rx "/home/${userFolder}" fi } # Funcion para agregar una carpeta a Samba function addNewFolder() { folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce la ruta absoluta de la carpeta a agregar:") pathExtracted=$(extractFolder "${folder}") endFolder=$(convertText "${pathExtracted}") if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=410 --text "Debes introducir la ruta absoluta de una carpeta!" elif [ -d "${folder}" ] ; then if [ -d ${linuxSambaFolder}/${endFolder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=530 --text "Una carpeta con el mismo nombre ya se encuentra agregada o creada!" else fixHomePermissions "${folder}" ln -s "${folder}" ${linuxSambaFolder}/${endFolder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=520 --text "Error: Fallo al agregar la carpeta '${folder}'" else echo "[${endFolder}]" >> ${sambaConfig} echo "# Folder to ${linuxSambaFolder}/${endFolder} # 00bc00" >> ${sambaConfig} echo "path = ${linuxSambaFolder}/${endFolder}" >> ${sambaConfig} echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig} echo "browseable = yes" >> ${sambaConfig} echo "writeable = yes" >> ${sambaConfig} echo "read only = no" >> ${sambaConfig} echo "guest ok = yes" >> ${sambaConfig} echo "" >> ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=390 --text "Carpeta '${folder}' agregada con exito!" createFolderLink ${endFolder} fi fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=300 --text "La carpeta introducida no existe!" fi } # Funcion para crear carpeta compartida con acceso para todos function newFolderEveryone() { folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):") formatText=$(convertText "${folder}") folder=${formatText} if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=350 --text "Debes introducir un nombre de carpeta!" elif [ -d ${linuxSambaFolder}/${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=530 --text "La carpeta '${folder}' ya esta creada, elige otro nombre" else mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=520 --text "Error: Fallo al crear la carpeta compartida '${folder}'" else chmod 777 -R ${linuxSambaFolder}/${folder} echo "[${folder}]" >> ${sambaConfig} echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig} echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig} echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig} echo "browseable = yes" >> ${sambaConfig} echo "writeable = yes" >> ${sambaConfig} echo "read only = no" >> ${sambaConfig} echo "guest ok = yes" >> ${sambaConfig} echo "" >> ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=530 --text "Carpeta compartida '${folder}' creada con exito!" createFolderLink ${folder} fi fi } # Funcion para crear carpeta compartida de solo lectura function newFolderReadOnly() { folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):") formatText=$(convertText "${folder}") folder=${formatText} if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=350 --text "Debes introducir un nombre de carpeta!" elif [ -d ${linuxSambaFolder}/${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=530 --text "La carpeta '${folder}' ya esta creada, elige otro nombre" else mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=520 --text "Error: Fallo al crear la carpeta compartida '${folder}'" else chmod 777 -R ${linuxSambaFolder}/${folder} echo "[${folder}]" >> ${sambaConfig} echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig} echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig} echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig} echo "browseable = yes" >> ${sambaConfig} echo "writeable = no" >> ${sambaConfig} echo "read only = yes" >> ${sambaConfig} echo "guest ok = yes" >> ${sambaConfig} echo "" >> ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=530 --text "Carpeta compartida '${folder}' (solo lectura) creada con exito!" createFolderLink ${folder} fi fi } # Crear carpeta compartida para un usuario function newFolderForUser() { folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):") formatText=$(convertText "${folder}") folder=${formatText} if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=350 --text "Debes introducir un nombre de carpeta!" elif [ -d ${linuxSambaFolder}/${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=530 --text "La carpeta '${folder}' ya esta creada, elige otro nombre" else mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=520 --text "Error: Fallo al crear la carpeta compartida '${folder}'" else forUser=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce el nombre del usuario:") randomFolder=/tmp/easy-samba/${RANDOM}-${RANDOM} mkdir -p ${randomFolder} chown ${forUser} ${randomFolder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then rm -rf ${linuxSambaFolder}/${folder} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=330 --text "Error: No existe el usuario especificado!" else chmod 755 -R ${linuxSambaFolder}/${folder} chown ${forUser} -R ${linuxSambaFolder}/${folder} echo "[${folder}]" >> ${sambaConfig} echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig} echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig} echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig} echo "browseable = yes" >> ${sambaConfig} echo "writeable = yes" >> ${sambaConfig} echo "read only = no" >> ${sambaConfig} echo "guest ok = yes" >> ${sambaConfig} echo "" >> ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=530 --text "Carpeta compartida '${folder}' (para ${forUser}) creada con exito!" createFolderLink ${folder} fi fi fi } # Crear carpeta compartida para imprimir function newFolderPrintable() { folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):") formatText=$(convertText "${folder}") folder=${formatText} if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=350 --text "Debes introducir un nombre de carpeta!" elif [ -d ${linuxSambaFolder}/${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=530 --text "La carpeta '${folder}' ya esta creada, elige otro nombre" else mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null output=$? if [ ${output} -ne 0 ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=520 --text "Error: Fallo al crear la carpeta compartida '${folder}'" else chmod 777 -R ${linuxSambaFolder}/${folder} echo "[${folder}]" >> ${sambaConfig} echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig} echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig} echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig} echo "browseable = yes" >> ${sambaConfig} echo "writeable = yes" >> ${sambaConfig} echo "printable = yes" >> ${sambaConfig} echo "guest ok = yes" >> ${sambaConfig} echo "" >> ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=530 --text "Carpeta compartida '${folder}' (printable) creada con exito!" createFolderLink ${folder} fi fi } # Funcion de reinicio de samba function reiniciandoSamba() { sleep 2 /etc/init.d/samba restart &> /dev/null systemctl restart smbd.service 2> /dev/null systemctl restart nmbd.service 2> /dev/null systemctl restart smb.service 2> /dev/null } # Funcion para reiniciar el servicio de Samba function restartSamba() { zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --cancel-label="No" --ok-label="Si" --width=320 --text "Deseas reiniciar los servicios de Samba?" sambaSN=$? if [ "${sambaSN}" == "1" ] ; then echo "nule" > /dev/null else reiniciandoSamba | zenity --progress --pulsate --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --auto-close --text "Reiniciando servicios de Samba" zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=300 --text "Servicios de Samba reiniciados" fi } # Funcion para borrar todas las carpetas compartidas function restoreSmb() { echo "" zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --cancel-label="No" --ok-label="Si" --width=530 \ --text "Nota: Se van a eliminar todas las carpetas compartidas y su contenido\n\nImportante: Se volvera al estado inicial del fichero 'smb.conf' antes de\nejecutar 'easy-samba' por primera vez\n\nDeseas continuar?" deleteFolder=$? if [ ${deleteFolder} -eq 0 ] ; then sleep 2 | zenity --progress --pulsate --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --auto-close --text "Borrando carpetas" rm -rf ${linuxSambaFolder}/* | zenity --progress --pulsate --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --auto-close --text "Finalizando proceso de borrado" output=$? if [ ${output} -eq 0 ] ; then cp -rf ${sambaBackup} ${sambaConfig} 2> /dev/null #rm -rf ${sambaBackup} 2> /dev/null zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=350 --text "Carpetas borradas con exito!" restartSamba else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=360 --text "Error al borrar las carpetas compartidas" fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=360 --text "Se ha anulado el proceso de restauracion" fi } # Funcion para mostrar carpetas compartidas function viewFolders() { if [ "$(ls -A ${linuxSambaFolder})" ] ; then cd ${linuxSambaFolder} ls > ${sambaFoldersList} folderList="" for folderDetected in $(cat ${sambaFoldersList}) ; do folderList="${folderList} ${folderDetected}" done folder=$(zenity --width=390 --height=300 --list --title "easy-samba ${VERSION} ($M_DATE)" \ --window-icon=${iconPath} --column "Lista de carpetas compartidas disponibles:" ${folderList}) if [ -z ${folder} ] ; then echo "nule" > /dev/null elif [ -d ${linuxSambaFolder}/${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=350 --text "Nombre de carpeta: ${folder}\n\nRuta: ${linuxSambaFolder}/${folder}" else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=400 --text "Error: La carpeta '${folder}' no existe!" fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=370 --text "Actualmente no hay carpetas compartidas!" fi } # Funcion para borrar una carpeta compartida function removeFolder() { if [ "$(ls -A ${linuxSambaFolder})" ] ; then cd ${linuxSambaFolder} ls > ${sambaFoldersList} folderList="" for folderDetected in $(cat ${sambaFoldersList}) ; do folderList="${folderList} ${folderDetected}" done folder=$(zenity --width=390 --height=300 --list --title "easy-samba ${VERSION} ($M_DATE)" \ --window-icon=${iconPath} --column "Selecciona una carpeta para borrar:" ${folderList}) if [ -z ${folder} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=350 --text "Debes seleccionar una carpeta de la lista" elif [ -d ${linuxSambaFolder}/${folder} ] ; then sleep 2 | zenity --progress --pulsate --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --auto-close --text "Borrando carpeta..." rm -rf ${linuxSambaFolder}/${folder} 2> /dev/null output=$? if [ ${output} -eq 0 ] ; then readLine=$(cat ${sambaConfig} | grep "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" -n | cut -d ":" -f 1) if [ -z ${readLine} ] ; then zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=530 --text "La carpeta '${folder}' ha sido borrada pero no se ha encontrado en 'smb.conf'" else initLine=$(expr ${readLine} - 1) endLine=$(expr ${readLine} + 7) totalLines=$(cat /etc/samba/smb.conf | wc -l) count=1 mkdir -p /tmp/easy-samba/ echo > /tmp/easy-samba/smb.conf while [ ${count} -lt $initLine ] ; do cat /etc/samba/smb.conf | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf count=$(expr ${count} + 1) done count=$(expr ${endLine} + 1) while [ ${count} -le ${totalLines} ] ; do cat ${sambaConfig} | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf count=$(expr ${count} + 1) done cp -rf /tmp/easy-samba/smb.conf ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=460 --text "La carpeta '${folder}' ha sido borrada con exito!" deleteFolderLink ${folder} restartSamba fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=450 --text "Error: No se ha podido borrar la carpeta '${folder}'" fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --error --width=410 --text "Error: La carpeta '${folder}' no existe o el enlace esta roto!" rm -rfv ${linuxSambaFolder}/${folder} readLine=$(cat ${sambaConfig} | grep "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" -n | cut -d ":" -f 1) if [ -z ${readLine} ] ; then echo "disabled" > /dev/null else initLine=$(expr ${readLine} - 1) endLine=$(expr ${readLine} + 7) totalLines=$(cat /etc/samba/smb.conf | wc -l) count=1 mkdir -p /tmp/easy-samba/ echo > /tmp/easy-samba/smb.conf while [ ${count} -lt $initLine ] ; do cat /etc/samba/smb.conf | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf count=$(expr ${count} + 1) done count=$(expr ${endLine} + 1) while [ ${count} -le ${totalLines} ] ; do cat ${sambaConfig} | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf count=$(expr ${count} + 1) done cp -rf /tmp/easy-samba/smb.conf ${sambaConfig} zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=460 --text "La carpeta '${folder}' ha sido borrada del smb.conf!" deleteFolderLink ${folder} restartSamba fi fi else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --info --width=350 --text "No hay carpetas disponibles para borrar!" fi } # Funcion para mostrar el "acerca" del programa function mostrarAcerca() { zenity --title "Acerca" --window-icon=${iconPath} --info --width=330 \ --text "Software: easy-samba ${VERSION} (${M_DATE})\nAutor: q3aql\nContacto: q3aql@protonmail.ch\nLicencia: GPL v2.0" } # Mostrar menu con todas las opciones mostrarMenu=0 rootMessage backupSmbConf while [ ${mostrarMenu} -eq 0 ] ; do clear opcion=$(zenity --width=380 --height=440 --list --title "easy-samba ${VERSION} ($M_DATE)" \ --window-icon=${iconPath} --imagelist --column "Icono" --column "Opcion" \ ${imagesPath}/add-folder-samba.png "Agregar carpeta a Samba" \ ${imagesPath}/create-shared-folder.png "Crear carpeta compartida" \ ${imagesPath}/create-shared-folder-read-only.png "Crear carpeta compartida (solo lectura)" \ ${imagesPath}/create-shared-folder-user.png "Crear carpeta compartida (para un usuario)" \ ${imagesPath}/create-shared-folder-printable.png "Crear carpeta compartida (printable)" \ ${imagesPath}/restart-samba-services.png "Reiniciar servicios de Samba" \ ${imagesPath}/view-shared-folders.png "Ver carpetas compartidas disponibles" ${imagesPath}/delete-shared-folder.png "Borrar carpeta compartida" \ ${imagesPath}/restore-smb-conf.png "Restaurar smb.conf" ${imagesPath}/about.png "Acerca" \ ${imagesPath}/exit.png "Salir") if [ "${opcion}" == "${imagesPath}/add-folder-samba.png" ] ; then addNewFolder restartSamba elif [ "${opcion}" == "${imagesPath}/create-shared-folder.png" ] ; then newFolderEveryone restartSamba elif [ "${opcion}" == "${imagesPath}/create-shared-folder-read-only.png" ] ; then newFolderReadOnly restartSamba elif [ "${opcion}" == "${imagesPath}/create-shared-folder-user.png" ] ; then newFolderForUser restartSamba elif [ "${opcion}" == "${imagesPath}/create-shared-folder-printable.png" ] ; then newFolderPrintable restartSamba elif [ "${opcion}" == "${imagesPath}/restart-samba-services.png" ] ; then restartSamba elif [ "${opcion}" == "${imagesPath}/view-shared-folders.png" ] ; then viewFolders elif [ "${opcion}" == "${imagesPath}/delete-shared-folder.png" ] ; then removeFolder elif [ "${opcion}" == "${imagesPath}/restore-smb-conf.png" ] ; then restoreSmb elif [ "${opcion}" == "${imagesPath}/about.png" ] ; then mostrarAcerca elif [ "${opcion}" == "${imagesPath}/exit.png" ] ; then mostrarMenu=1 else zenity --title "easy-samba ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning --width=300 --text "Elige una de las opciones del menu" fi done