diff --git a/manifest.jps b/manifest.jps index 50f8309..141db36 100644 --- a/manifest.jps +++ b/manifest.jps @@ -1,33 +1,129 @@ -version: 0.2 +version: 0.1 +id: newsshuser type: update -description: An addon to add new SSH users. +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)} - sshHost: ${env.domain} - sshPort: 22 + 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: - - useradd -m -s /bin/bash ${globals.username} - - echo "${globals.username}:${globals.password}" | chpasswd - - mkdir -p /home/${globals.username}/.ssh - - chmod 700 /home/${globals.username}/.ssh - - touch /home/${globals.username}/.ssh/authorized_keys - - chmod 600 /home/${globals.username}/.ssh/authorized_keys - - chown -R ${globals.username}:${globals.username} /home/${globals.username}/.ssh - - return: - type: info - message: "SSH account created successfully.\n\nSSH Host: ${globals.sshHost}\n\nPort: ${globals.sshPort}\n\nLogin Credentials\n\nUsername: ${globals.username}\n\nPassword: ${globals.password}" + - 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: "SSH account created successfully." + 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/ \ No newline at end of file