#!/bin/sh

path=`which $0`
config_dir=/etc/opt/bukmmadm/
if [ ! $1 ]; then
  echo "Ошибка: Для запуска выполните команду \"pwd_mmuser <имя пользователя>\"";
  echo ""
  exit 1;
fi

id | grep "uid=0(" >/dev/null
if [ $? != "0" ]; then
  uname -a | grep -i CYGWIN >/dev/null
  if [ $? != "0" ]; then
    echo "Ошибка: Скрипт может выполня только пользователь root";
    echo ""
    exit 1;
  fi
fi

login=$1

echo "$login" | grep : >/dev/null
if [ "$?" = "0" ]; then
  echo "Ошибка: имя_пользователя содержит символ \":\"";
  echo ""
  exit 14
fi

echo $login | grep " " >/dev/null
if [ "$?" = "0" ]; then
  echo "Ошибка: имя_пользователя содержит пробел";
  echo ""
  exit 14
fi

ufile=$config_dir/mmadm.users
if [ `grep "$login:" "$ufile"| wc -l` -eq 0 ]; then
  echo "Ошибка: пользователь не существует";
  echo "";
  exit 15
fi

printf "Введите новый пароль пользователя: "
if [ "$password" = "" -a "$crypt" = "" ]; then
    stty -echo
    read password
    stty echo
    printf "\n"
    printf "Введите пароль еще раз: ";
    stty -echo
    read password2
    stty echo
    printf "\n"
    if [ "$password" != "$password2" ]; then
      echo "Ошибка: пароль не совпадает";
      echo ""
      exit 14
    fi
    echo $password | grep : >/dev/null
    if [ "$?" = "0" ]; then
      echo "Ошибка: пароль содержит символ \":\"";
      echo ""
      exit 14
    fi
fi

mv $ufile $ufile.bak
for line in `cat "$ufile.bak"`; do
  fl1=`echo $line |awk -F ":" '{print $1}'`;
  fl2=`echo $line |awk -F ":" '{print $2}'`;
  fl3=`echo $line |awk -F ":" '{print $3}'`;
  fl4=`echo $line |awk -F ":" '{print $4}'`;
  if [ "$fl1" = "$login" ]; then
    if [ "$crypt" != "" ]; then
      echo "$login:$fl2:$fl3:$fl4" >> $ufile
    else
      /usr/bin/perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "XX"),":$ARGV[2]:$ARGV[3]\n"' "$login" "$password" "$fl3" "$fl4" >> $ufile
    fi
  else
    echo "$line" >> $ufile
  fi
done
rm -f "$ufile.bak"
chown mmadm:mmadm $ufile
chmod 644 $ufile
echo "Пароль успешно изменён";
echo "";
exit 0;
