Re-updated the fixes and implementation

pull/1/head
Anthony 2025-04-08 01:47:19 +08:00
parent cda9073a77
commit 8f95682389
2 changed files with 13 additions and 23 deletions

View File

@ -27,8 +27,8 @@ log_debug() {
# Validate username format
validate_username() {
local username=$1
if ! [[ "$username" =~ ^[a-zA-Z0-9_]{3,32}$ ]]; then
log_error "Invalid username format: $username"
if ! [[ $username =~ ^[a-zA-Z0-9_]{3,32}$ ]]; then
log_error "Invalid username format. Username must be 3-32 characters long and contain only letters, numbers, and underscores."
return 1
fi
return 0
@ -40,9 +40,8 @@ SSH_ENABLED=$3
log "Script started"
# Validate username
# Validate username format
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

View File

@ -13,21 +13,16 @@ settings:
fields:
- type: displayfield
name: infoField
caption: Root Directory
value: /var/www/webroot/ROOT/
caption: Root Directory /var/www/webroot/ROOT/
description: "A user-specific directory will be created under /home/username"
required: false
- type: string
inputType: text
name: username
caption: SFTP Username
placeholder: "Enter username"
description: "Enter the desired username (3-32 characters, letters, numbers, and underscores only)"
- type: textfield
name: custom_username
caption: Custom Username
description: "Enter a custom username (3-32 characters, alphanumeric + underscore 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"
hideLabel: false
hidden: false
- type: checkbox
name: allow
caption: Accept User Creation
@ -72,11 +67,10 @@ settings:
globals:
username: "${settings.sfpform.username}"
username: ${settings.custom_username}
password: ${fn.password(min)}
sftpHost: ${env.domain}
sftpPort: 22
enable_ssh: ${settings.sfpform.enable_ssh:false}
onInstall:
- cmd [cp]:
@ -90,10 +84,10 @@ onInstall:
- cmd[cp]:
user: root
commands: |-
if grep -qE "^Match User [a-zA-Z0-9_]*$" /etc/ssh/sshd_config; then
sed -i '/^Match User [a-zA-Z0-9_]*/!b;n;c\ PasswordAuthentication yes' /etc/ssh/sshd_config
if grep -qE "^Match User user[0-9]*$" /etc/ssh/sshd_config; then
sed -i '/^Match User user[0-9]*/!b;n;c\ PasswordAuthentication yes' /etc/ssh/sshd_config
else
echo -e "\n# Added by SFTP addon\nMatch User *\n\tPasswordAuthentication yes" >> /etc/ssh/sshd_config
echo -e "\n# Added by SFTP addon\nMatch User user*\n\tPasswordAuthentication yes" >> /etc/ssh/sshd_config
fi
awk '!seen[$0]++' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp && mv /etc/ssh/sshd_config.tmp /etc/ssh/sshd_config
systemctl restart sshd
@ -116,12 +110,9 @@ menu:
actions:
add_sftp_user:
- setGlobals:
enable_ssh: ${settings.sfpform.enable_ssh:false}
- cmd[cp]:
user: root
commands: |-
bash /home/jelastic/add-sftp-user-addon/add-sftp.sh "${globals.username}" "${globals.password}" "${globals.enable_ssh}"
commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password}
- cmd[cp]:
user: root
commands: echo $CREATED_USERNAME