slitaz-dev-tools annotate tazu/tazu @ rev 263

tazu: dont clean all DB at once, can be dangerous...
author Christophe Lincoln <pankso@slitaz.org>
date Mon Dec 12 19:56:25 2016 +0100 (2016-12-12)
parents 4b4df41dc0fe
children b8d41d8263f2
rev   line source
pankso@214 1 #!/bin/sh
pankso@214 2 #
pankso@214 3 # TazU - SliTaz Users account utility
pankso@214 4 #
pankso@259 5 # This tool is used to mange SliTaz users accounts on bugs.slitaz.org
pankso@259 6 # and scn.slitaz.org. It can also be used to admin TinyCM users DB.
pankso@259 7 #
pankso@259 8 # Copyright 2016 (C) SliTaz GNU/Linux - BSD License
pankso@214 9 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@214 10 #
pankso@214 11 . /lib/libtaz.sh
pankso@214 12 check_root
pankso@214 13
pankso@214 14 authfile="/var/lib/slitaz/auth/people"
pankso@214 15 people="/var/lib/slitaz/people"
pankso@214 16 user="$1"
pankso@214 17
pankso@214 18 #
pankso@214 19 # Functions
pankso@214 20 #
pankso@214 21
pankso@214 22 usage() {
pankso@214 23 cat << EOT
pankso@214 24
pankso@214 25 Usage: $(basename $0) [user|command] [--option]
pankso@214 26
pankso@214 27 Commands:
pankso@214 28 count Count all users
pankso@214 29 list List all users
pankso@259 30 check Check accounts integrity
pankso@214 31
pankso@214 32 Options:
pankso@214 33 --admin Make user admin
pankso@263 34 --del Delete a user account
pankso@214 35
pankso@214 36 EOT
pankso@214 37 }
pankso@214 38
pankso@214 39 no_account() {
pankso@214 40 echo "No user account for: $user"
pankso@214 41 }
pankso@214 42
pankso@262 43 deluser() {
pankso@263 44 if [ -d ]; then
pankso@263 45 rm -rf "${people}/${user}"
pankso@263 46 fi
pankso@262 47 sed -i "/^${user}:/"d $authfile
pankso@262 48 }
pankso@262 49
pankso@214 50 #
pankso@214 51 # Commands
pankso@214 52 #
pankso@214 53
pankso@214 54 case "$1" in
pankso@214 55 "") usage ;;
pankso@214 56 count)
pankso@214 57 echo -n "Users: "
pankso@214 58 colorize 34 "$(ls $people | wc -l)" ;;
pankso@214 59 list)
pankso@214 60 # List all users
pankso@214 61 newline
pankso@214 62 boldify "SliTaz users list"
pankso@214 63 separator
pankso@214 64 for user in $(ls $people)
pankso@214 65 do
pankso@259 66 if ! [ -f "$people/$user/account.conf" ]; then
pankso@259 67 echo -n "$(colorize 31 "$user")"
pankso@259 68 echo -e "\\033[16GCORRUPTED" && continue
pankso@259 69 fi
pankso@214 70 . $people/$user/account.conf
pankso@214 71 echo -n "$(colorize 34 "$user")"
pankso@214 72 echo -e "\\033[16G${NAME}"
pankso@214 73 done
pankso@214 74 separator && newline ;;
pankso@259 75 check)
pankso@259 76 # Check accounts and auth file
pankso@259 77 newline
pankso@259 78 boldify "SliTaz accounts integrity"
pankso@259 79 separator
pankso@259 80 echo "$(colorize 33 "Checking account.conf files...")"
pankso@259 81 for user in $(ls $people)
pankso@259 82 do
pankso@259 83 if ! [ -f "$people/$user/account.conf" ]; then
pankso@259 84 echo -n "$(colorize 30 "$user")"
pankso@259 85 echo -e "\\033[16GMissing account.conf"
pankso@262 86 else # check empty VALUES
pankso@262 87 . "$people/$user/account.conf"
pankso@262 88 if [ -z "$NAME" ]; then
pankso@262 89 echo -n "$(colorize 30 "$user")"
pankso@262 90 echo -e "\\033[16GMissing NAME"
pankso@259 91 fi
pankso@262 92 if [ -z "$MAIL" ]; then
pankso@262 93 echo -n "$(colorize 30 "$user")"
pankso@262 94 echo -e "\\033[16GMissing MAIL"
pankso@262 95 fi
pankso@262 96 if [ -z "$KEY" ]; then
pankso@262 97 echo -n "$(colorize 30 "$user")"
pankso@262 98 echo -e "\\033[16GMissing KEY"
pankso@262 99 fi
pankso@262 100 unset NAME MAIL KEY
pankso@259 101 fi
pankso@260 102 done
pankso@260 103 echo "$(colorize 33 "Checking auth file...")"
pankso@262 104 for user in $(cat $authfile | cut -d : -f 1)
pankso@260 105 do
pankso@260 106 if ! [ -d "$people/$user" ]; then
pankso@260 107 echo -n "$(colorize 30 "$user")"
pankso@260 108 echo -e "\\033[16GMissing in DB"
pankso@260 109 fi
pankso@260 110 done
pankso@263 111 separator
pankso@263 112 echo "Use 'tazu user --del' to remove a corrupted account" && newline ;;
pankso@214 113 *)
pankso@214 114 # Handle general: --options
pankso@214 115 case " $@ " in
pankso@214 116 *\ --admin\ *)
pankso@214 117 # Admin user
pankso@214 118 if fgrep -q ADMIN_USER= ${people}/${user}/account.conf; then
pankso@214 119 echo -n "User is already admin: " && colorize 34 "$user"
pankso@214 120 else
pankso@214 121 echo -n "Adding $user to admin users..."
pankso@214 122 echo 'ADMIN_USER="yes"' >> ${people}/${user}/account.conf
pankso@214 123 status
pankso@214 124 fi ;;
pankso@214 125
pankso@214 126 *\ --del\ *)
pankso@214 127 # Delete a user
pankso@214 128 if [ -d "${people}/${user}" ]; then
pankso@214 129 echo -n "Deleting user: $(colorize 34 "$user")"
pankso@262 130 deluser && status
pankso@214 131 else
pankso@214 132 no_account
pankso@214 133 fi ;;
pankso@214 134
pankso@214 135 *)
pankso@214 136 # Show user info
pankso@214 137 if [ -d "${people}/${user}" ]; then
pankso@214 138 newline
pankso@214 139 echo "$(boldify "User:") $(colorize 34 "$user")"
pankso@214 140 separator
pankso@214 141 cat $people/$user/account.conf | grep "="
pankso@214 142 separator && newline
pankso@214 143 else
pankso@214 144 no_account
pankso@214 145 fi ;;
pankso@214 146 esac ;;
pankso@214 147 esac
pankso@214 148
pankso@214 149 exit 0