diff --git a/add-sftp.sh b/add-sftp.sh index c89662b..ade4dee 100644 --- a/add-sftp.sh +++ b/add-sftp.sh @@ -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 diff --git a/manifest.jps b/manifest.jps index 2170950..47e1fd5 100644 --- a/manifest.jps +++ b/manifest.jps @@ -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