Format popup message, email, change username format, updated SFTP creation
parent
98c21b1a75
commit
fd2eb5efdc
16
add-sftp.jps
16
add-sftp.jps
|
@ -7,17 +7,27 @@ targetNodes:
|
||||||
user: root
|
user: root
|
||||||
|
|
||||||
globals:
|
globals:
|
||||||
username: "user-${fn.random(10000,99999)}"
|
username: "user${fn.random(10000,99999)}"
|
||||||
password: ${fn.password(min)}
|
password: ${fn.password(min)}
|
||||||
|
sftpHost: ${env.domain}
|
||||||
|
sftpPort: 22
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
add_sftp_user:
|
add_sftp_user:
|
||||||
script: /scripts/add-sftp-user.cs?_r=${fn.random}
|
script: /scripts/add-sftp-user.cs?_r=${fn.random}
|
||||||
|
|
||||||
success:
|
success:
|
||||||
email: "Username: ${globals.username}, Password: ${globals.password}"
|
email: |
|
||||||
|
SFTP Host: ${globals.sftpHost}
|
||||||
|
Port: ${globals.sftpPort}
|
||||||
|
Username: ${globals.username}
|
||||||
|
Password: ${globals.password}
|
||||||
text:
|
text:
|
||||||
en: "Username: ${globals.username}, Password: ${globals.password}"
|
en: |
|
||||||
|
SFTP Host: ${globals.sftpHost}
|
||||||
|
Port: ${globals.sftpPort}
|
||||||
|
Username: ${globals.username}
|
||||||
|
Password: ${globals.password}
|
||||||
|
|
||||||
settings:
|
settings:
|
||||||
sftpForm:
|
sftpForm:
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
// Extract the provided details
|
// Extract the provided details
|
||||||
var USERNAME = "${globals.username}";
|
var USERNAME = "${globals.username}";
|
||||||
var PASSWORD = "${fn.password(min)}";
|
var PASSWORD = "${fn.password(12)}"; // Ensure a minimum length of 12 characters for the password
|
||||||
var ROOT_DIRECTORY = "/var/www/webroot/ROOT";
|
var ROOT_DIRECTORY = "/var/www/webroot/ROOT";
|
||||||
var ENABLE_SSH = false;
|
var ENABLE_SSH = "${request.enable_ssh}" == "true";
|
||||||
var EMAILS = "${user.email}";
|
|
||||||
|
|
||||||
// Check if user already exists
|
// Check if user already exists
|
||||||
if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', 'id ' + USERNAME).result == 0) {
|
if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', 'id ' + USERNAME).result == 0) {
|
||||||
|
@ -13,8 +12,15 @@ if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the user, set password, and configure SFTP
|
// Base commands for user creation and SFTP setup
|
||||||
var cmd = [
|
var cmd = [
|
||||||
|
// Install and configure fail2ban
|
||||||
|
"apt-get update",
|
||||||
|
"apt-get install -y fail2ban",
|
||||||
|
"systemctl enable fail2ban",
|
||||||
|
"systemctl start fail2ban",
|
||||||
|
|
||||||
|
// User creation and SFTP setup
|
||||||
"GROUP=$(stat -c '%G' " + ROOT_DIRECTORY + ")",
|
"GROUP=$(stat -c '%G' " + ROOT_DIRECTORY + ")",
|
||||||
"useradd -m -d " + ROOT_DIRECTORY + " -g $GROUP " + USERNAME,
|
"useradd -m -d " + ROOT_DIRECTORY + " -g $GROUP " + USERNAME,
|
||||||
"echo '" + USERNAME + ":" + PASSWORD + "' | chpasswd",
|
"echo '" + USERNAME + ":" + PASSWORD + "' | chpasswd",
|
||||||
|
@ -22,9 +28,32 @@ var cmd = [
|
||||||
"chown -R root:$GROUP /var/www",
|
"chown -R root:$GROUP /var/www",
|
||||||
"echo 'Match Group $GROUP' >> /etc/ssh/sshd_config",
|
"echo 'Match Group $GROUP' >> /etc/ssh/sshd_config",
|
||||||
"echo ' ChrootDirectory " + ROOT_DIRECTORY + "' >> /etc/ssh/sshd_config",
|
"echo ' ChrootDirectory " + ROOT_DIRECTORY + "' >> /etc/ssh/sshd_config",
|
||||||
"echo ' PasswordAuthentication yes' >> /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);
|
// If SSH is not enabled, restrict to SFTP only
|
||||||
|
if (!ENABLE_SSH) {
|
||||||
|
cmd.push("echo ' ForceCommand internal-sftp' >> /etc/ssh/sshd_config");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restart SSHD to apply changes
|
||||||
|
cmd.push("systemctl restart sshd");
|
||||||
|
|
||||||
|
return jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', cmd.join(" && "));
|
||||||
|
|
||||||
|
// If the command execution was successful, return the SFTP details
|
||||||
|
if (response && response.result == 0) {
|
||||||
|
return {
|
||||||
|
result: 0,
|
||||||
|
message: "SFTP User Created Successfully!\n\n" +
|
||||||
|
"Username: " + USERNAME + "\n" +
|
||||||
|
"Password: " + PASSWORD + "\n" +
|
||||||
|
"SFTP Host: " + "${env.domain}" + "\n" + // Assuming env.domain provides the domain of the environment
|
||||||
|
"Port: 22" // Standard SFTP port
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
result: response.result,
|
||||||
|
error: response.error || "An error occurred while creating the SFTP user."
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue