Skip to content

Commit 179cca9

Browse files
committed
multiftp support
1 parent d083b12 commit 179cca9

File tree

2 files changed

+31
-16
lines changed

2 files changed

+31
-16
lines changed

bin/v-list-user

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ is_object_valid 'user' 'USER' "$user"
7070

7171
# Defining config
7272
conf=$USER_DATA/user.conf
73+
HOME=$HOMEDIR/$user
7374

7475
# Defining fileds to select
7576
fields='$USER $FNAME $LNAME $PACKAGE $WEB_TEMPLATE $PROXY_TEMPLATE
@@ -81,7 +82,7 @@ fields='$USER $FNAME $LNAME $PACKAGE $WEB_TEMPLATE $PROXY_TEMPLATE
8182
$U_DISK_DIRS $U_DISK_WEB $U_DISK_MAIL $U_DISK_DB $U_BANDWIDTH
8283
$U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS $U_DNS_RECORDS
8384
$U_MAIL_DOMAINS $U_MAIL_DKIM $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS
84-
$U_BACKUPS $LANGUAGE $TIME $DATE'
85+
$U_BACKUPS $LANGUAGE $HOME $TIME $DATE'
8586

8687
# Listing user
8788
case $format in

func/rebuild.sh

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -318,37 +318,51 @@ rebuild_web_domain_conf() {
318318
$WEBTPL/$PROXY_SYSTEM/$PROXY.sh $user $domain $ip $HOMEDIR $docroot
319319
fi
320320

321-
# Checking ftp
322-
if [ ! -z "$FTP_USER" ]; then
323-
if [ -z "$(grep ^$FTP_USER: /etc/passwd)" ]; then
324-
shell='/sbin/nologin'
325-
if [ -e "/usr/bin/rssh" ]; then
326-
shell='/usr/bin/rssh'
327-
fi
328-
/usr/sbin/useradd $FTP_USER \
321+
# Defining ftp user shell
322+
if [ -z "$FTP_SHELL" ]; then
323+
shell='/sbin/nologin'
324+
if [ -e "/usr/bin/rssh" ]; then
325+
shell='/usr/bin/rssh'
326+
fi
327+
else
328+
shell=$FTP_SHELL
329+
fi
330+
331+
# Checking ftp users
332+
for ftp_user in ${FTP_USER//:/ }; do
333+
if [ -z "$(grep ^$ftp_user: /etc/passwd)" ]; then
334+
# Parsing ftp user variables
335+
position=$(echo $FTP_USER | tr ':' '\n' | grep -n '' |\
336+
grep ":$ftp_user$" | cut -f 1 -d:)
337+
ftp_path=$(echo $FTP_PATH | tr ':' '\n' | grep -n '' |\
338+
grep "^$position:" | cut -f 2 -d :)
339+
ftp_md5=$(echo $FTP_MD5 | tr ':' '\n' | grep -n '' |\
340+
grep "^$position:" | cut -f 2 -d :)
341+
342+
# Adding ftp user
343+
/usr/sbin/useradd $ftp_user \
329344
-s $shell \
330345
-o -u $(id -u $user) \
331346
-g $(id -u $user) \
332-
-M -d "$HOMEDIR/$user/web/$domain" > /dev/null 2>&1
347+
-M -d "$HOMEDIR/$user/web/$domain${ftp_path}" >/dev/null 2>&1
333348

334-
# Update password
335-
shadow=$(grep "^$FTP_USER:" /etc/shadow)
349+
# Updating ftp user password
350+
shadow=$(grep "^$ftp_user:" /etc/shadow)
336351
shdw3=$(echo "$shadow" | cut -f3 -d :)
337352
shdw4=$(echo "$shadow" | cut -f4 -d :)
338353
shdw5=$(echo "$shadow" | cut -f5 -d :)
339354
shdw6=$(echo "$shadow" | cut -f6 -d :)
340355
shdw7=$(echo "$shadow" | cut -f7 -d :)
341356
shdw8=$(echo "$shadow" | cut -f8 -d :)
342357
shdw9=$(echo "$shadow" | cut -f9 -d :)
343-
shadow_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6"
358+
shadow_str="$ftp_user:$ftp_md5:$shdw3:$shdw4:$shdw5:$shdw6"
344359
shadow_str="$shadow_str:$shdw7:$shdw8:$shdw9"
345-
346360
chmod u+w /etc/shadow
347-
sed -i "/^$FTP_USER:*/d" /etc/shadow
361+
sed -i "/^$ftp_user:*/d" /etc/shadow
348362
echo "$shadow_str" >> /etc/shadow
349363
chmod u-w /etc/shadow
350364
fi
351-
fi
365+
done
352366
}
353367

354368
# DNS domain rebuild

0 commit comments

Comments
 (0)