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 |