type: update name: Add SFTP User targetNodes: nodeGroup: cp settings: sfpform: fields: - type: string inputType: text name: root_directory caption: Root Directory default: "/var/www/webroot/ROOT/" description: "A user-specific directory will be created under this path." required: false - type: checkbox name: enable_ssh caption: Also enable SSH access default: false manageUserForm: fields: - type: string inputType: text name: manage_username caption: Username to Manage description: "Input the username you want to manage." required: true globals: username: "user${fn.random(10000,99999)}" password: ${fn.password(min)} sftpHost: ${env.domain} sftpPort: 22 onInstall: - cmd[cp]: mkdir -p /home/jelastic/add-sftp-user-addon/ - cmd[cp]: mkdir -p /home/jelastic/add-sftp-user-addon/logs - cmd[cp]: wget https://deploy-proxy.mightybox.io/addons/add-sftp-user/raw/branch/main/add-sftp.sh -O /home/jelastic/add-sftp-user-addon/add-sftp.sh - cmd[cp]: chmod +x /home/jelastic/add-sftp-user-addon/*.sh - cmd[cp]: commands: - echo -e "\nMatch User user*\nPasswordAuthentication yes" >> /etc/ssh/sshd_config user: root - cmd[cp]: commands: - chown root:root /var/www/webroot/ROOT - chmod 775 /var/www/webroot/ROOT user: root - cmd[cp]: commands: - systemctl restart sshd user: root - api: environment.control.RestartContainer nodeGroup: cp nodeid: ${nodes.cp.id} - return: installSuccess actions: add_sftp_user: - cmd[cp]: commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password} user: root - if ("${response.exitStatus}" != "0"): return: sftpError - return: sftpSuccess change_password: - cmd[cp]: commands: - echo "${settings.manage_username}:${globals.password}" | chpasswd - echo "Password changed for ${settings.manage_username}" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log user: root - if ("${response.exitStatus}" != "0"): return: passwordChangeError - return: passwordChangeSuccess delete_user: - cmd[cp]: commands: - userdel ${settings.manage_username} - echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log user: root - if ("${response.exitStatus}" != "0"): return: deleteUserError - return: deleteUserSuccess responses: installSuccess: type: success message: "Installed Successfully" sftpError: type: error message: "Failed to add SFTP user. Please check the server logs for more details." sftpSuccess: type: success message: "Connection Details\n\nSFTP Host: ${globals.sftpHost}\n\nPort: ${globals.sftpPort}\n\nLogin Credentials\n\nUsername: ${globals.username}\n\nPassword: ${globals.password}" passwordChangeError: type: error message: "Failed to change password for ${settings.manage_username}. Check logs for details." passwordChangeSuccess: type: success message: "Password changed successfully for ${settings.manage_username}.\n\n New password: ${globals.password}" deleteUserError: type: error message: "Failed to delete user ${settings.manage_username}. Check logs for details." deleteUserSuccess: type: success message: "User ${settings.manage_username} deleted successfully." buttons: - settings: sfpform action: add_sftp_user caption: Add SFTP/SSH User confirmText: "Are you sure you want to add this SFTP user?" - settings: manageUserForm action: change_password caption: Change Password confirmText: "Are you sure you want to change the password for this user?" - settings: manageUserForm action: delete_user caption: Delete User confirmText: "Are you sure you want to delete this user?"