
# Misc utilities for ScoDoc install shell scripts

to_lower() {
  echo $1 | tr "[:upper:]" "[:lower:]" 
} 

to_upper() {
  echo $1 | tr "[:lower:]" "[:upper:]" 
} 

norm_ans() {
  x=$(to_upper $1 | tr O Y)
  echo ${x:0:1}
}

check_uid_root() {
  if [ "$UID" != "0" ] 
  then
    echo "Erreur: le script $1 doit etre lance par root"
    exit 1
  fi
}

terminate() {
  echo 
  echo "Erreur: $1"
  echo
  exit 1
}

# Start/stop scodoc, using sysv or systemd
scodocctl() {
  if [ "$1" = "start" ]; then
    echo "Starting ScoDoc..."
  elif [ "$1" = "stop" ]; then
    echo "Stopping ScoDoc"
  else
    echo "Error: invalid argument for scodocctl"
    exit 1
  fi
  if [ -e  /etc/systemd/system/scodoc.service ]
  then
     systemctl $1 scodoc
  else
    echo "(using legacy SystemV)"
    /etc/init.d/scodoc $1
  fi
}

# --- Ensure postgres user www-data exists
init_postgres_user() { # run as root
  if [ -z $(echo "select usename from pg_user;" | su -c "$PSQL -d template1  -p $POSTGRES_PORT" $POSTGRES_SUPERUSER | grep $POSTGRES_USER) ]
  then
   # add database user
   echo "Creating postgresql user $POSTGRES_USER"
   su -c "createuser  -p $POSTGRES_PORT --no-superuser --no-createdb --no-adduser --no-createrole ${POSTGRES_USER}" $POSTGRES_SUPERUSER
  fi
}


# XXX inutilise 
gen_passwd() { 
  PASSWORD_LENGTH="8"
  ALLOWABLE_ASCII="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@#$%^&*()_+=-?><"
  SEED=$(head -c4 /dev/urandom | od -t u4 | awk '{ print $2 }')
  RANDOM=$SEED
  n=1
  password=""
  while [ "$n" -le "$PASSWORD_LENGTH" ]
  do
    password="$password${ALLOWABLE_ASCII:$(($RANDOM%${#ALLOWABLE_ASCII})):1}"
  n=$((n+1))
  done
  echo $password
}
