-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paths7ctl
74 lines (63 loc) · 1.92 KB
/
s7ctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
set -e
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DBNAME=ftp
STATIC_DOMAIN=static.domain.com
STATIC_ROOT=/srv/_.static
CONFIGURED=false # change to true when you finished configuring
if ! $CONFIGURED; then
echo "s7ctl: Not configured. Edit s7ctl executable to configure."
exit 1
fi
function execute_sql {
echo $1 | mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DBNAME
}
function print_usage {
echo "Usage: s7ctl [ create | remove | list | passwd ] [ username ] [ password ]"
exit 1
}
case $1 in
create)
[ "$#" -ne 3 ] && print_usage
STATIC_USER=$2
PASSWORD=$3
USER=$STATIC_USER.$STATIC_DOMAIN
USER_HOME=$STATIC_ROOT/$STATIC_USER
PASSWORD_HASH=$(/bin/echo "{md5}"`/bin/echo -n $PASSWORD | openssl dgst -binary -md5 | openssl enc -base64`)
execute_sql "INSERT INTO ftpuser \
(userid, passwd, uid, gid, homedir) \
VALUES ('$USER', '$PASSWORD_HASH', 8000, 8000, '$USER_HOME');"
mkdir -p $USER_HOME
chown 8000:8000 $USER_HOME
echo $USER successfully created
;;
remove)
[ "$#" -ne 2 ] && print_usage
STATIC_USER=$2
USER=$STATIC_USER.$STATIC_DOMAIN
USER_HOME=$STATIC_ROOT/$STATIC_USER
execute_sql "DELETE FROM ftpuser WHERE userid='$USER';"
mkdir -p $STATIC_ROOT/.removed/
mv $USER_HOME $STATIC_ROOT/.removed/`date +%Y%m%d%H%M%S`-$USER
echo $USER successfully removed
;;
passwd)
[ "$#" -ne 3 ] && print_usage
STATIC_USER=$2
PASSWORD=$3
USER=$STATIC_USER.$STATIC_DOMAIN
USER_HOME=$STATIC_ROOT/$STATIC_USER
PASSWORD_HASH=$(/bin/echo "{md5}"`/bin/echo -n $PASSWORD | openssl dgst -binary -md5 | openssl enc -base64`)
execute_sql "UPDATE ftpuser \
SET passwd='$PASSWORD_HASH' WHERE userid='$USER';"
echo Passwd for $USER changed successfully
;;
list)
execute_sql "SELECT userid AS __cut_colname__ FROM ftpuser ORDER BY userid" | grep -v __cut_colname__
;;
*)
print_usage
esac