slink/slink-keys.fish

34 lines
1.0 KiB
Fish
Executable File

#!/usr/bin/fish
# Automatically create and distribute slink API keys to local users
# Regenerate their api key if the file containing them was deleted.
set users_file users.txt
set key_len 40
set key_file '.slink'
for user in (find /home -mindepth 1 -maxdepth 1 -type d)
set user (basename $user)
if test \! -f /home/$user/$key_file
printf "user %s has no key file... " "$user"
printf "%s\n" "checking users.txt"
if test (grep $user $users_file)
printf "%s has existing api key, will clear\n" "$user"
sed -i "/^$user|.*/d" $users_file
printf "%s|%s\n" $user (pwgen -ns $key_len 1) >> $users_file
else
printf "%s doesn't have a key already, will generate\n" "$user"
printf "%s|%s\n" $user (pwgen -ns $key_len 1) >> $users_file
end
end
end
for line in (cat $users_file)
set line (string split "|" $line)
set user $line[1]
set key $line[2]
touch "/home/$user/$key_file"
chown $user "/home/$user/$key_file"
chmod 600 "/home/$user/$key_file"
printf "%s\n" "$key" > "/home/$user/$key_file"
end