Verified Commit 1cced6ee authored by Marco Marinello's avatar Marco Marinello
Browse files

Aggiunto copyright statement, utilizzo di stdin invece di echo + pipe,...

Aggiunto copyright statement, utilizzo di stdin invece di echo + pipe, verifica diretta su if invece di $?
parent b9c04561
#! /bin/bash
#!/bin/bash
# This file is part of the FUSS Utility project.
# Copyright (C) 2022 The FUSS Project <info@fuss.bz.it>
# Author: Claudio Cavalli <ccavalli@fuss.bz.it>
# Author: Marco Marinello <contact-nohuman@marinello.bz.it>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
while true
do
OLD=$(zenity --entry --text "Immetti la password vecchia" --title "Cambio password" --hide-text "" --width 500)
#Controllo che OLD sia la password vecchia corretta
if echo -e "$OLD" | su $USER &> /dev/null ; then
:
else
zenity --error --width 500 --text "\nNon hai inserito la password vecchia corretta!"
zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100
if [ $? -eq 0 ]; then
continue
# Chiedo all'utente la vecchia password
OLD=$(zenity --entry --text "Immetti la vecchia password" --title "Cambio password" --hide-text "" --width 500)
# Controllo che OLD sia la password vecchia corretta
if ! su - -c 'echo ok' "$(whoami)" <<EOF
$OLD
EOF
then
zenity --error --width 500 --text "\nLa (vecchia) password inserita non è corretta!"
if zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100; then
continue
else
break
fi
fi
NEW1=$(zenity --entry --text "Immetti la password nuova! \n\nLa lunghezza dev'essere di almeno 8 caratteri. \n\nNon può essere troppo simile alla vecchia o contenere parole del vocabolario. \n\n\Inserisci almeno una maiuscola, una minuscola ed una cifra. \n\nNon sono consentiti accenti o Umlaut. \n" --title "Cambio password" --hide-text "" --width 500)
NEW2=$(zenity --entry --text "Conferma la password nuova" --title "Cambio password" --hide-text "" --width 500)
NEW1=$(zenity --entry
--text "Immetti la nuova password! \n\nLa lunghezza dev'essere di almeno 8 caratteri. \n\nNon può essere troppo simile alla vecchia o contenere intere parole del vocabolario. \n\n\Inserisci almeno una maiuscola, una minuscola ed una cifra. \n\nNon sono consentiti accenti o Umlaut. \n"
--title "Cambio password" --hide-text "" --width 500)
NEW2=$(zenity --entry --text "Conferma la nuova password" --title "Cambio password" --hide-text "" --width 500)
#Controllo che NEW1 sia uguale a NEW2
# Controllo che NEW1 sia uguale a NEW2
if [ "$NEW1" != "$NEW2" ]; then
zenity --error --width 500 --text "\nLe due password non coincidono!"
zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100
if [ $? -eq 0 ]; then
continue
if zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100; then
continue
else
break
fi
fi
#Controllo che la password nuova contenga solo caratteri ASCII
# Controllo che la password nuova contenga solo caratteri ASCII
NEW3=$(echo $NEW2 | iconv -c -f utf8 -t ascii)
if [ "$NEW3" != "$NEW2" ]; then
zenity --error --text "\nLa password non può essere vuota \n\no contenere accenti, umlaut,...! \n" --width 500
zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100
if [ $? -eq 0 ]; then
continue
if zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100; then
continue
else
break
fi
fi
# Modifico la password
if passwd "$(whoami)" <<EOF
$OLD
$NEW2
$NEW2
EOF
then
# Versione non recente di fuss-client, manca il supporto PAM a
# gnome keyting. Procedo manualmente.
if ! grep 'pam_gnome_keyring.so' /etc/pam.d/common-password > /dev/null; then
gnome-keyring-daemon --replace --unlock <<EOF
$NEW1
EOF
gnome-keyring-daemon --replace <<EOF
$OLD
EOF
fi
echo -e "$OLD\n$NEW1\n$NEW2" | passwd
if [ $? -eq 0 ]; then
zenity --info --width 500 --text "\n\nPassword cambiata con successo!"
echo -n $OLD | gnome-keyring-daemon --replace
echo -n $NEW1 | gnome-keyring-daemon --replace --unlock
# Pw cambiata, esco dal while
break
else
zenity --error --text "Password non cambiata!!! \n\nForse la password nuova è troppo semplice? " --width 500
zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100
if [ $? -eq 0 ]; then
continue
else
if ! zenity --question --title="Cambio password" --text="\n\nVuoi riprovare?\n" --width=400 --height=100
then
break
fi
fi
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment