Update username creation

pull/1/head
Anthony 2025-04-08 01:00:14 +08:00
parent d2870fd1d5
commit cf5397c9a7
2 changed files with 27 additions and 9 deletions

View File

@ -24,9 +24,14 @@ log_debug() {
fi
}
# Generate random username
generate_username() {
echo "user$(shuf -i 10000-99999 -n 1)"
# Validate username format
validate_username() {
local username=$1
if ! [[ "$username" =~ ^[a-zA-Z0-9_]{3,32}$ ]]; then
log_error "Invalid username format: $username"
return 1
fi
return 0
}
USERNAME=$1
@ -35,11 +40,17 @@ SSH_ENABLED=$3
log "Script started"
# Check if user already exists, if yes generate a new one
while id "$USERNAME" &>/dev/null; do
USERNAME=$(generate_username)
log_warning "Username $USERNAME already exists, generating a new username."
done
# Validate username
if ! validate_username "$USERNAME"; then
log_error "Invalid username format. Username must be 3-32 characters long and contain only letters, numbers, and underscores."
exit 1
fi
# Check if user already exists
if id "$USERNAME" &>/dev/null; then
log_error "Username $USERNAME already exists. Please choose a different username."
exit 1
fi
USER_HOME="/home/sftpusers/$USERNAME"
ROOT_DIRECTORY="/var/www/webroot/ROOT"

View File

@ -16,6 +16,13 @@ settings:
caption: Root Directory /var/www/webroot/ROOT/
description: "A user-specific directory will be created under /home/username"
required: false
- type: textfield
name: username
caption: SFTP Username
description: "Enter the desired username (3-32 characters, letters, numbers, and underscores only)"
required: true
regex: ^[a-zA-Z0-9_]{3,32}$
regexText: "Username must be 3-32 characters long and contain only letters, numbers, and underscores"
- type: checkbox
name: allow
caption: Accept User Creation
@ -60,7 +67,7 @@ settings:
globals:
username: "user${fn.random(10000,99999)}"
username: ${settings.username}
password: ${fn.password(min)}
sftpHost: ${env.domain}
sftpPort: 22