34 lines
1.0 KiB
Fish
Executable File
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
|