version: 0.1 id: newsshuser type: update description: An addon to add new SSH users. name: Add SSH User targetNodes: nodeGroup: cp settings: sfpform: submitUnchanged: true fields: - type: displayfield name: infoField caption: Root Directory /var/www/webroot/ROOT/ description: "A user-specific directory will be created under /home/username" required: false - type: checkbox name: allow caption: Accept User Creation default: false required: false globals: username: "user${fn.random(10000,99999)}" password: ${fn.password(min)} sftpHost: ${env.domain} sftpPort: 22 onInstall: - cmd [cp]: user: root commands: |- mkdir -p /home/jelastic/add-sftp-user-addon/ mkdir -p /home/jelastic/add-sftp-user-addon/logs touch /home/jelastic/add-sftp-user-addon/logs/script_output.log 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 chmod +x /home/jelastic/add-sftp-user-addon/*.sh - cmd[cp]: user: root commands: - echo -e "\nMatch User user*\nPasswordAuthentication yes" >> /etc/ssh/sshd_config - cmd[cp]: user: root commands: - systemctl restart sshd - api: environment.control.RestartContainer nodeGroup: cp nodeid: ${nodes.cp.id} - return: installSuccess actions: add_sftp_user: - cmd[cp]: user: root commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password} - cmd[cp]: user: root commands: echo $CREATED_USERNAME - setGlobals: username: ${response.out} - cmd[cp]: user: root commands: echo $CREATED_PASSWORD - setGlobals: password: ${response.out} - return: type: info message: "Connection Details\n\nSFTP Host: ${globals.sftpHost}\n\nPort: ${globals.sftpPort}\n\nLogin Credentials\n\nUsername: ${globals.username}\n\nPassword: ${globals.password}" - cmd[cp]: user: root 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 - if ("${response.exitStatus}" != "0"): return: passwordChangeError - return: passwordChangeSuccess delete_user: - cmd[cp]: user: root commands: - userdel ${settings.manage_username} - rm -rf /home/sftpusers/${settings.manage_username} - echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log - 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}" 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." noUsersFound: type: error message: "No SFTP users have been created yet." buttons: - settings: sfpform action: add_sftp_user caption: SSH User confirmText: "Are you sure you want to add this SFTP user?" submitButtonText: Add User - settings: manageUserForm action: delete_user caption: Delete User confirmText: "Are you sure you want to delete this user?" onUninstall: - cmd[cp]: user: root commands: - rm -rf /home/jelastic/add-sftp-user-addon/