slitaz-dev-tools view tazu/tazu @ rev 262

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