slitaz-dev-tools view 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
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 account
36 EOT
37 }
39 no_account() {
40 echo "No user account for: $user"
41 }
43 deluser() {
44 if [ -d ]; then
45 rm -rf "${people}/${user}"
46 fi
47 sed -i "/^${user}:/"d $authfile
48 }
50 #
51 # Commands
52 #
54 case "$1" in
55 "") usage ;;
56 count)
57 echo -n "Users: "
58 colorize 34 "$(ls $people | wc -l)" ;;
59 list)
60 # List all users
61 newline
62 boldify "SliTaz users list"
63 separator
64 for user in $(ls $people)
65 do
66 if ! [ -f "$people/$user/account.conf" ]; then
67 echo -n "$(colorize 31 "$user")"
68 echo -e "\\033[16GCORRUPTED" && continue
69 fi
70 . $people/$user/account.conf
71 echo -n "$(colorize 34 "$user")"
72 echo -e "\\033[16G${NAME}"
73 done
74 separator && newline ;;
75 check)
76 # Check accounts and auth file
77 newline
78 boldify "SliTaz accounts integrity"
79 separator
80 echo "$(colorize 33 "Checking account.conf files...")"
81 for user in $(ls $people)
82 do
83 if ! [ -f "$people/$user/account.conf" ]; then
84 echo -n "$(colorize 30 "$user")"
85 echo -e "\\033[16GMissing account.conf"
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 unset NAME MAIL KEY
101 fi
102 done
103 echo "$(colorize 33 "Checking auth file...")"
104 for user in $(cat $authfile | cut -d : -f 1)
105 do
106 if ! [ -d "$people/$user" ]; then
107 echo -n "$(colorize 30 "$user")"
108 echo -e "\\033[16GMissing in DB"
109 fi
110 done
111 separator
112 echo "Use 'tazu user --del' to remove a corrupted account" && newline ;;
113 *)
114 # Handle general: --options
115 case " $@ " in
116 *\ --admin\ *)
117 # Admin user
118 if fgrep -q ADMIN_USER= ${people}/${user}/account.conf; then
119 echo -n "User is already admin: " && colorize 34 "$user"
120 else
121 echo -n "Adding $user to admin users..."
122 echo 'ADMIN_USER="yes"' >> ${people}/${user}/account.conf
123 status
124 fi ;;
126 *\ --del\ *)
127 # Delete a user
128 if [ -d "${people}/${user}" ]; then
129 echo -n "Deleting user: $(colorize 34 "$user")"
130 deluser && status
131 else
132 no_account
133 fi ;;
135 *)
136 # Show user info
137 if [ -d "${people}/${user}" ]; then
138 newline
139 echo "$(boldify "User:") $(colorize 34 "$user")"
140 separator
141 cat $people/$user/account.conf | grep "="
142 separator && newline
143 else
144 no_account
145 fi ;;
146 esac ;;
147 esac
149 exit 0