From 85b0b4ef7ad716ea8c5df9900d0928e43b13fa62 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 10 Apr 2025 21:49:25 +0800 Subject: [PATCH] Updated form --- manifest.jps | 57 ++++++++++++++++++---------------------------------- 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/manifest.jps b/manifest.jps index 04d774f..a81bc78 100644 --- a/manifest.jps +++ b/manifest.jps @@ -1,4 +1,4 @@ -version: 0.5 +version: 0.4 id: addsftp type: update description: An addon to add new SFTP users. It can also manage created user accounts. If SSH is enabled, WP-CLI will attempt to be installed if it is not yet installed. @@ -35,43 +35,19 @@ settings: required: false manageUserForm: fields: - - type: list + - type: string name: manage_username caption: Username to Manage - description: "Input the username you want to manage." + description: "Enter the username you want to manage." required: true - values: [] + regex: ^[a-zA-Z0-9_]{3,32}$ + regexText: "Username must be 3-32 characters long and contain only letters, numbers, and underscores" - type: string name: custom_password caption: New Password - description: "Enter a new password or leave empty to generate one automatically" + description: "Enter a new password for the user (leave empty to generate random password)" required: false - inputType: password - onBeforeInit: | - let cmd = 'ls -ld /home/sftpusers/* | awk \'{printf "%s,%s %s %s\\n", substr($9, 17), $6, $7, $8}\'' - let resp = api.env.control.ExecCmdByGroup({ envName: "${env.name}", nodeGroup: "cp", commandList: [{ command: cmd }] }) - api.marketplace.console.WriteLog("list users cmd resp: " + resp) - - if (resp.result == 0) { - let users = resp.responses[0].out.split('\n') - - for (let user of users) { - let userData = user.split(',') - let userName = userData[0] - let createdDate = userData[1] - - settings.fields[0].values.push({ - caption: userName + ' (' + createdDate + ')', - value: userName - }) - } - } - - api.marketplace.console.WriteLog("users: " + settings.fields[0].values) - return settings - - globals: username: ${settings.custom_username} password: ${fn.password(min)} @@ -133,17 +109,20 @@ actions: 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}" change_password: - - if (!${settings.custom_password:false}): + - if ('${settings.custom_password}' != ''): setGlobals: - custom_password: ${fn.password(min)} - else: - setGlobals: - custom_password: ${settings.custom_password} + password: ${settings.custom_password} + - cmd[cp]: + user: root + commands: id ${settings.manage_username} &>/dev/null || { echo "User does not exist"; exit 1; } + - if ("${response.exitStatus}" != "0"): + return: + type: error + message: "User ${settings.manage_username} does not exist." - cmd[cp]: user: root commands: - - id "${settings.manage_username}" &>/dev/null || { echo "User ${settings.manage_username} does not exist"; exit 1; } - - echo "${settings.manage_username}:${globals.custom_password}" | chpasswd + - 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 @@ -180,7 +159,7 @@ responses: 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.custom_password}" + 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." @@ -204,10 +183,12 @@ buttons: action: change_password caption: Change Password confirmText: "Are you sure you want to change the password for this user?" + submitButtonText: Change Password - settings: manageUserForm action: delete_user caption: Delete User confirmText: "Are you sure you want to delete this user?" + submitButtonText: Delete User onUninstall: - cmd[cp]: