#!/bin/bash

# Copyright 2023, Sam Hartman
# This code may be redistributed under the same terms as Linux Pam
# itself, or at your pution, under the GNU General Public License,
# version 3. 

set -x

fail() {
    echo "$@" 2>&1
    exit 1
}


# Confirm enabling pam_mkhomedir updates common-session
grep mkhomedir /etc/pam.d/* && fail pam_mkhomedir already enabled
pam-auth-update --enable mkhomedir ||fail pam-auth-update enable failed
grep mkhomedir /etc/pam.d/common-session ||fail pam_mkhomedir was not enabled

# and confirm that it makes a home directory
useradd -s /bin/bash pam_test
su -c date pam_test
test -d ~pam_test || fail pam_test home directory not made

# confirm added options are preserved
grep -i rounds /etc/pam.d/common-password &&fail rounds parameter already specified
sed -i -e 's/obscure yescrypt/obscure yescrypt rounds=3/' /etc/pam.d/common-password
grep rounds /etc/pam.d/common-password ||fail sed did not update common password

( echo get libpam-runtime/profiles |debconf-communicate  |grep mkhomedir) || fail mkhomedir not in enabled profiles

# Confirm removing mkhomedir preserves  rounds parameter
pam-auth-update --disable mkhomedir ||fail pam-auth-update disable failed
( echo get libpam-runtime/profiles |debconf-communicate |grep mkhomedir) && fail mkhomedir still in profiles
grep mkhomedir /var/lib/pam/seen || fail mkhomedir removed from seen after disable
grep  mkhomedir /etc/pam.d/common-session &&fail pam_mkhomedir not removed
grep rounds  /etc/pam.d/common-password || fail rounds parameter not preserved
