Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions .vortex/tooling/src/deploy-artifact
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,18 @@ $deploy_ssh_fingerprint = getenv_default('VORTEX_DEPLOY_ARTIFACT_SSH_FINGERPRINT
// Falls back to VORTEX_DEPLOY_SSH_FILE, then VORTEX_SSH_FILE.
$deploy_ssh_file = getenv_default('VORTEX_DEPLOY_ARTIFACT_SSH_FILE', 'VORTEX_DEPLOY_SSH_FILE', 'VORTEX_SSH_FILE', getenv('HOME') . '/.ssh/id_rsa');

// Version of git-artifact to download.
$git_artifact_version = getenv_default('VORTEX_DEPLOY_ARTIFACT_GIT_ARTIFACT_VERSION', '1.4.0');

// SHA256 checksum of the git-artifact binary.
$git_artifact_sha256 = getenv_default('VORTEX_DEPLOY_ARTIFACT_GIT_ARTIFACT_SHA256', '1fa99ff2a6f8dc6c1a42bcfc87ce75d04b2eab375216b0e3195a0e3b51a47646');

// -----------------------------------------------------------------------------

info('Started ARTIFACT deployment.');

command_must_exist('curl');

// Configure global git settings, if they do not exist.
$global_git_name = trim((string) shell_exec('git config --global user.name'));
if (empty($global_git_name)) {
Expand All @@ -86,7 +94,20 @@ putenv('VORTEX_SSH_PREFIX=DEPLOY_ARTIFACT');
passthru_or_fail(__DIR__ . '/setup-ssh');

task('Installing artifact builder.');
passthru_or_fail('composer global require --dev -n --ansi --prefer-source --ignore-platform-reqs drevops/git-artifact:~1.2');
$tmp_dir = getenv('TMPDIR') ?: '/tmp';
$git_artifact_bin = $tmp_dir . '/git-artifact';
$git_artifact_url = sprintf('https://github.com/drevops/git-artifact/releases/download/%s/git-artifact', $git_artifact_version);
$dl_response = request($git_artifact_url, ['method' => 'GET', 'save_to' => $git_artifact_bin, 'timeout' => 120]);
if (!$dl_response['ok']) {
fail('Failed to download git-artifact binary.');
}

$actual_sha256 = hash_file('sha256', $git_artifact_bin);
if ($actual_sha256 !== $git_artifact_sha256) {
@unlink($git_artifact_bin);
fail('SHA256 checksum verification failed for git-artifact binary.');
}
chmod($git_artifact_bin, 0755);

$deploy_artifact_root = realpath($deploy_artifact_root);
$deploy_artifact_src = realpath($deploy_artifact_src);
Expand All @@ -106,7 +127,6 @@ if (file_exists($deploy_artifact_root . '/.gitignore.artifact')) {
}

task('Running artifact builder.');
$git_artifact_bin = getenv('HOME') . '/.composer/vendor/bin/git-artifact';
$git_artifact_args = [
escapeshellarg($git_artifact_bin),
escapeshellarg($deploy_git_remote),
Expand Down
59 changes: 34 additions & 25 deletions .vortex/tooling/src/download-db
Original file line number Diff line number Diff line change
Expand Up @@ -19,55 +19,64 @@ execute_override(basename(__FILE__));

// -----------------------------------------------------------------------------

// Database index suffix. When set (e.g., "2"), all DB-related variable lookups
// use the indexed variant (e.g., VORTEX_DOWNLOAD_DB2_SOURCE instead of
// VORTEX_DOWNLOAD_DB_SOURCE).
$db_index = getenv_default('VORTEX_DB_INDEX', '');

// Database download source.
$source = getenv_default('VORTEX_DOWNLOAD_DB_SOURCE', 'url');
$source = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_SOURCE', 'VORTEX_DOWNLOAD_DB_SOURCE', 'url'])));

// Force DB download even if the cache exists.
$force = getenv_default('VORTEX_DOWNLOAD_DB_FORCE', '');
$force = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FORCE', 'VORTEX_DOWNLOAD_DB_FORCE', ''])));

// Proceed with download.
$proceed = getenv_default('VORTEX_DOWNLOAD_DB_PROCEED', '1');
$proceed = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_PROCEED', 'VORTEX_DOWNLOAD_DB_PROCEED', '1'])));

// Database dump file name.
$db_file = getenv_default('VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql');
$db_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FILE', 'VORTEX_DB' . $db_index . '_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql'])));

// Directory with database dump file.
$db_dir = getenv_default('VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data');
$db_dir = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_DIR', 'VORTEX_DB' . $db_index . '_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data'])));

// Semaphore file to indicate download completion.
$semaphore = getenv_default('VORTEX_DOWNLOAD_DB_SEMAPHORE', '');

// -----------------------------------------------------------------------------

info('Started database download.');
info('Started database%s download.', $db_index !== '' ? ' ' . $db_index : '');

if ($proceed !== '1') {
pass('Skipping database download as VORTEX_DOWNLOAD_DB_PROCEED is not set to 1.');
quit(0);
}

// Check for existing dump files.
$db_file_basename = pathinfo($db_file, PATHINFO_FILENAME);
$found_db = '';
if (is_dir($db_dir)) {
$files = glob($db_dir . '/' . $db_file_basename . '.{sql,tar}', GLOB_BRACE);
if ($files !== FALSE && count($files) > 0) {
$found_db = implode("\n", $files);
// Skip file existence check for container_registry source as the database is
// stored as a Docker image, not a file.
if ($source !== 'container_registry') {
// Check for existing dump files.
$db_file_basename = pathinfo($db_file, PATHINFO_FILENAME);
$found_db = '';
if (is_dir($db_dir)) {
$files = glob($db_dir . '/' . $db_file_basename . '.{sql,tar}', GLOB_BRACE);
if ($files !== FALSE && count($files) > 0) {
$found_db = implode("\n", $files);
}
}
}

if ($found_db !== '') {
note('Found existing database dump file(s).');
passthru('ls -Alh ' . escapeshellarg($db_dir) . ' 2>/dev/null || true');
if ($found_db !== '') {
note('Found existing database dump file(s).');
passthru('ls -Alh ' . escapeshellarg($db_dir) . ' 2>/dev/null || true');

if ($force !== '1') {
note('Using existing database dump file(s).');
note('Download will not proceed.');
note('Remove existing database file or set VORTEX_DOWNLOAD_DB_FORCE value to 1 to force download.');
quit(0);
}
if ($force !== '1') {
note('Using existing database dump file(s).');
note('Download will not proceed.');
note('Remove existing database file or set VORTEX_DOWNLOAD_DB_FORCE value to 1 to force download.');
quit(0);
}

note('Will download a fresh copy of the database.');
note('Will download a fresh copy of the database.');
}
}

$sources = [
Expand All @@ -92,4 +101,4 @@ if ($semaphore !== '') {
touch($semaphore);
}

pass('Finished database download.');
pass('Finished database%s download.', $db_index !== '' ? ' ' . $db_index : '');
23 changes: 13 additions & 10 deletions .vortex/tooling/src/download-db-acquia
Original file line number Diff line number Diff line change
Expand Up @@ -21,35 +21,38 @@ execute_override(basename(__FILE__));

// -----------------------------------------------------------------------------

// Database index suffix.
$db_index = getenv_default('VORTEX_DB_INDEX', '');

// Acquia Cloud API key.
$acquia_key = getenv_required('VORTEX_DOWNLOAD_DB_ACQUIA_KEY', 'VORTEX_ACQUIA_KEY');
$acquia_key = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_KEY', 'VORTEX_DOWNLOAD_DB_ACQUIA_KEY', 'VORTEX_ACQUIA_KEY'])));

// Acquia Cloud API secret.
$acquia_secret = getenv_required('VORTEX_DOWNLOAD_DB_ACQUIA_SECRET', 'VORTEX_ACQUIA_SECRET');
$acquia_secret = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_SECRET', 'VORTEX_DOWNLOAD_DB_ACQUIA_SECRET', 'VORTEX_ACQUIA_SECRET'])));

// Application name. Used to discover UUID.
$app_name = getenv_required('VORTEX_DOWNLOAD_DB_ACQUIA_APP_NAME', 'VORTEX_ACQUIA_APP_NAME');
$app_name = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_APP_NAME', 'VORTEX_DOWNLOAD_DB_ACQUIA_APP_NAME', 'VORTEX_ACQUIA_APP_NAME'])));

// Source environment name used to download the database dump from.
$environment = getenv_required('VORTEX_DOWNLOAD_DB_ENVIRONMENT');
$environment = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ENVIRONMENT', 'VORTEX_DOWNLOAD_DB_ENVIRONMENT'])));

// Database name within source environment.
$db_name = getenv_required('VORTEX_DOWNLOAD_DB_ACQUIA_DB_NAME');
$db_name = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_DB_NAME', 'VORTEX_DOWNLOAD_DB_ACQUIA_DB_NAME'])));

// Directory where DB dumps are stored.
$db_dir = getenv_default('VORTEX_DOWNLOAD_DB_ACQUIA_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data');
$db_dir = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_DB_DIR', 'VORTEX_DOWNLOAD_DB' . $db_index . '_DIR', 'VORTEX_DB' . $db_index . '_DIR', 'VORTEX_DOWNLOAD_DB_ACQUIA_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data'])));

// Database dump file name.
$db_file = getenv_default('VORTEX_DOWNLOAD_DB_ACQUIA_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql');
$db_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_DB_FILE', 'VORTEX_DOWNLOAD_DB' . $db_index . '_FILE', 'VORTEX_DB' . $db_index . '_FILE', 'VORTEX_DOWNLOAD_DB_ACQUIA_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql'])));

// Flag to download a fresh copy by triggering a new backup.
$fresh = getenv_default('VORTEX_DOWNLOAD_DB_FRESH', '');
$fresh = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FRESH', 'VORTEX_DOWNLOAD_DB_FRESH', ''])));

// Interval in seconds to wait between backup status checks.
$backup_wait_interval = (int) getenv_default('VORTEX_DOWNLOAD_DB_ACQUIA_BACKUP_WAIT_INTERVAL', '10');
$backup_wait_interval = (int) getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_BACKUP_WAIT_INTERVAL', 'VORTEX_DOWNLOAD_DB_ACQUIA_BACKUP_WAIT_INTERVAL', '10'])));

// Maximum time in seconds to wait for backup completion.
$backup_max_wait = (int) getenv_default('VORTEX_DOWNLOAD_DB_ACQUIA_BACKUP_MAX_WAIT', '600');
$backup_max_wait = (int) getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ACQUIA_BACKUP_MAX_WAIT', 'VORTEX_DOWNLOAD_DB_ACQUIA_BACKUP_MAX_WAIT', '600'])));

// -----------------------------------------------------------------------------

Expand Down
15 changes: 9 additions & 6 deletions .vortex/tooling/src/download-db-container-registry
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,28 @@ execute_override(basename(__FILE__));

// -----------------------------------------------------------------------------

// Database index suffix.
$db_index = getenv_default('VORTEX_DB_INDEX', '');

// The container image containing database in a form of `<org>/<repository>`.
$image = getenv_required('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_IMAGE', 'VORTEX_DB_IMAGE');
$image = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY_IMAGE', 'VORTEX_DB' . $db_index . '_IMAGE', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_IMAGE', 'VORTEX_DB_IMAGE'])));

// Container registry name.
//
// Provide port, if required as `<server_name>:<port>`.
$registry = getenv_default('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY', 'VORTEX_CONTAINER_REGISTRY', 'docker.io');
$registry = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY', 'VORTEX_CONTAINER_REGISTRY', 'docker.io'])));

// The username to login into the container registry.
$registry_user = getenv_required('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_USER', 'VORTEX_CONTAINER_REGISTRY_USER');
$registry_user = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY_USER', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_USER', 'VORTEX_CONTAINER_REGISTRY_USER'])));

// The password to login into the container registry.
$registry_pass = getenv_required('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_PASS', 'VORTEX_CONTAINER_REGISTRY_PASS');
$registry_pass = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY_PASS', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_PASS', 'VORTEX_CONTAINER_REGISTRY_PASS'])));

// Directory with database dump file.
$db_dir = getenv_default('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data');
$db_dir = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY_DB_DIR', 'VORTEX_DOWNLOAD_DB' . $db_index . '_DIR', 'VORTEX_DB' . $db_index . '_DIR', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data'])));

// The base container image used as a fallback when the archive does not exist.
$image_base = getenv_default('VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_IMAGE_BASE', 'VORTEX_DB_IMAGE_BASE', '');
$image_base = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_CONTAINER_REGISTRY_IMAGE_BASE', 'VORTEX_DB' . $db_index . '_IMAGE_BASE', 'VORTEX_DOWNLOAD_DB_CONTAINER_REGISTRY_IMAGE_BASE', 'VORTEX_DB_IMAGE_BASE', ''])));

// -----------------------------------------------------------------------------

Expand Down
17 changes: 10 additions & 7 deletions .vortex/tooling/src/download-db-ftp
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,29 @@ execute_override(basename(__FILE__));

// -----------------------------------------------------------------------------

// Database index suffix.
$db_index = getenv_default('VORTEX_DB_INDEX', '');

// The FTP user.
$ftp_user = getenv_required('VORTEX_DOWNLOAD_DB_FTP_USER');
$ftp_user = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_USER', 'VORTEX_DOWNLOAD_DB_FTP_USER'])));

// The FTP password.
$ftp_pass = getenv_required('VORTEX_DOWNLOAD_DB_FTP_PASS');
$ftp_pass = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_PASS', 'VORTEX_DOWNLOAD_DB_FTP_PASS'])));

// The FTP host.
$ftp_host = getenv_required('VORTEX_DOWNLOAD_DB_FTP_HOST');
$ftp_host = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_HOST', 'VORTEX_DOWNLOAD_DB_FTP_HOST'])));

// The FTP port.
$ftp_port = getenv_required('VORTEX_DOWNLOAD_DB_FTP_PORT');
$ftp_port = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_PORT', 'VORTEX_DOWNLOAD_DB_FTP_PORT'])));

// The file name, including any directories.
$ftp_file = getenv_required('VORTEX_DOWNLOAD_DB_FTP_FILE');
$ftp_file = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_FILE', 'VORTEX_DOWNLOAD_DB_FTP_FILE'])));

// Directory with database dump file.
$db_dir = getenv_default('VORTEX_DOWNLOAD_DB_FTP_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data');
$db_dir = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_DB_DIR', 'VORTEX_DOWNLOAD_DB' . $db_index . '_DIR', 'VORTEX_DB' . $db_index . '_DIR', 'VORTEX_DOWNLOAD_DB_FTP_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data'])));

// Database dump file name.
$db_file = getenv_default('VORTEX_DOWNLOAD_DB_FTP_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql');
$db_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FTP_DB_FILE', 'VORTEX_DOWNLOAD_DB' . $db_index . '_FILE', 'VORTEX_DB' . $db_index . '_FILE', 'VORTEX_DOWNLOAD_DB_FTP_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql'])));

// -----------------------------------------------------------------------------

Expand Down
28 changes: 17 additions & 11 deletions .vortex/tooling/src/download-db-lagoon
Original file line number Diff line number Diff line change
Expand Up @@ -26,41 +26,47 @@ execute_override(basename(__FILE__));

// -----------------------------------------------------------------------------

// Database index suffix.
$db_index = getenv_default('VORTEX_DB_INDEX', '');

// Flag to download a fresh copy of the database.
$fresh = getenv_default('VORTEX_DOWNLOAD_DB_FRESH', '');
$fresh = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_FRESH', 'VORTEX_DOWNLOAD_DB_FRESH', ''])));

// Lagoon project name.
$lagoon_project = getenv_required('VORTEX_DOWNLOAD_DB_LAGOON_PROJECT', 'LAGOON_PROJECT');
$lagoon_project = getenv_required(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_PROJECT', 'VORTEX_DOWNLOAD_DB_LAGOON_PROJECT', 'LAGOON_PROJECT'])));

// The source environment branch for the database source.
$environment = getenv_default('VORTEX_DOWNLOAD_DB_ENVIRONMENT', 'main');
$environment = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_ENVIRONMENT', 'VORTEX_DOWNLOAD_DB_ENVIRONMENT', 'main'])));

// Remote DB dump directory location.
$remote_dir = '/tmp';

// Remote DB dump file name. Cached by the date suffix.
$remote_file = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_REMOTE_FILE', 'db_' . date('Ymd') . '.sql');
$remote_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_REMOTE_FILE', 'VORTEX_DOWNLOAD_DB_LAGOON_REMOTE_FILE', 'db_' . date('Ymd') . '.sql'])));

// Wildcard file name to cleanup previously created dump files.
$remote_file_cleanup = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_REMOTE_FILE_CLEANUP', 'db_*.sql');
$remote_file_cleanup = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_REMOTE_FILE_CLEANUP', 'VORTEX_DOWNLOAD_DB_LAGOON_REMOTE_FILE_CLEANUP', 'db_*.sql'])));

// SSH key fingerprint used to connect to a remote.
$ssh_fingerprint = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_SSH_FINGERPRINT', 'VORTEX_DOWNLOAD_DB_SSH_FINGERPRINT', ''])));
Comment on lines +50 to +51
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

VORTEX_DOWNLOAD_DB{index}_SSH_FINGERPRINT is a no-op here.

$ssh_fingerprint is never consumed after Line 51, and the later SSH call still uses UserKnownHostsFile=/dev/null plus StrictHostKeyChecking=no. As written, an indexed fingerprint cannot affect host verification, so this new config path does not work.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.vortex/tooling/src/download-db-lagoon around lines 50 - 51, The code reads
$ssh_fingerprint via getenv_default but never uses it, while the SSH invocation
still forces UserKnownHostsFile=/dev/null and StrictHostKeyChecking=no, so
indexed fingerprints are a no-op; fix by honoring $ssh_fingerprint in the SSH
flow: if $ssh_fingerprint (from getenv_default) is set, create a temporary
known_hosts file containing that fingerprint and update the SSH/scp command
options to use -o UserKnownHostsFile=/path/to/tmp_known_hosts and -o
StrictHostKeyChecking=yes (otherwise keep the current /dev/null + no checking
behavior), and ensure the temp file is cleaned up after use so the indexed
VORTEX_DOWNLOAD_DB{index}_SSH_FINGERPRINT actually affects host verification.


// Default SSH file used if custom fingerprint is not provided.
$ssh_file = getenv_default('VORTEX_DOWNLOAD_DB_SSH_FILE', getenv('HOME') . '/.ssh/id_rsa');
$ssh_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_SSH_FILE', 'VORTEX_DOWNLOAD_DB_SSH_FILE', getenv('HOME') . '/.ssh/id_rsa'])));

// The SSH host of the Lagoon environment.
$ssh_host = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_SSH_HOST', 'ssh.lagoon.amazeeio.cloud');
$ssh_host = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_SSH_HOST', 'VORTEX_DOWNLOAD_DB_LAGOON_SSH_HOST', 'ssh.lagoon.amazeeio.cloud'])));

// The SSH port of the Lagoon environment.
$ssh_port = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_SSH_PORT', '32222');
$ssh_port = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_SSH_PORT', 'VORTEX_DOWNLOAD_DB_LAGOON_SSH_PORT', '32222'])));

// The SSH user of the Lagoon environment.
$ssh_user = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_SSH_USER', $lagoon_project . '-' . $environment);
$ssh_user = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_SSH_USER', 'VORTEX_DOWNLOAD_DB_LAGOON_SSH_USER', $lagoon_project . '-' . $environment])));

// Directory where DB dumps are stored on the host.
$db_dir = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data');
$db_dir = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_DB_DIR', 'VORTEX_DOWNLOAD_DB' . $db_index . '_DIR', 'VORTEX_DB' . $db_index . '_DIR', 'VORTEX_DOWNLOAD_DB_LAGOON_DB_DIR', 'VORTEX_DOWNLOAD_DB_DIR', 'VORTEX_DB_DIR', './.data'])));

// Database dump file name on the host.
$db_file = getenv_default('VORTEX_DOWNLOAD_DB_LAGOON_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql');
$db_file = getenv_default(...array_values(array_unique(['VORTEX_DOWNLOAD_DB' . $db_index . '_LAGOON_DB_FILE', 'VORTEX_DOWNLOAD_DB' . $db_index . '_FILE', 'VORTEX_DB' . $db_index . '_FILE', 'VORTEX_DOWNLOAD_DB_LAGOON_DB_FILE', 'VORTEX_DOWNLOAD_DB_FILE', 'VORTEX_DB_FILE', 'db.sql'])));

// Name of the webroot directory with Drupal codebase.
$webroot = getenv_default('WEBROOT', 'web');
Expand Down
Loading
Loading