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

View File

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