diff --git a/scripts/add-sftp-user.cs b/scripts/add-sftp-user.cs new file mode 100644 index 0000000..e51b10c --- /dev/null +++ b/scripts/add-sftp-user.cs @@ -0,0 +1,30 @@ +// Extract the provided details +var USERNAME = "${globals.username}"; +var PASSWORD = "${fn.password(min)}"; +var ROOT_DIRECTORY = "/var/www/webroot/ROOT"; +var ENABLE_SSH = false; +var EMAILS = "${user.email}"; + +// Check if user already exists +if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', 'id ' + USERNAME).result == 0) { + return { + result: 99, + error: "User " + USERNAME + " already exists." + }; +} + +// Create the user, set password, and configure SFTP +var cmd = [ + "GROUP=$(stat -c '%G' " + ROOT_DIRECTORY + ")", + "useradd -m -d " + ROOT_DIRECTORY + " -g $GROUP " + USERNAME, + "echo '" + USERNAME + ":" + PASSWORD + "' | chpasswd", + "chown " + USERNAME + ":$GROUP " + ROOT_DIRECTORY, + "chown -R root:$GROUP /var/www", + "echo 'Match Group $GROUP' >> /etc/ssh/sshd_config", + "echo ' ChrootDirectory " + ROOT_DIRECTORY + "' >> /etc/ssh/sshd_config", + "echo ' PasswordAuthentication yes' >> /etc/ssh/sshd_config", + "echo ' ForceCommand internal-sftp' >> /etc/ssh/sshd_config", + "systemctl restart sshd" +].join(" && "); + +return jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', cmd);