You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
6.0 KiB
140 lines
6.0 KiB
"use strict"; |
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { |
|
if (k2 === undefined) k2 = k; |
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); |
|
}) : (function(o, m, k, k2) { |
|
if (k2 === undefined) k2 = k; |
|
o[k2] = m[k]; |
|
})); |
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { |
|
Object.defineProperty(o, "default", { enumerable: true, value: v }); |
|
}) : function(o, v) { |
|
o["default"] = v; |
|
}); |
|
var __importStar = (this && this.__importStar) || function (mod) { |
|
if (mod && mod.__esModule) return mod; |
|
var result = {}; |
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); |
|
__setModuleDefault(result, mod); |
|
return result; |
|
}; |
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { |
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |
|
return new (P || (P = Promise))(function (resolve, reject) { |
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } |
|
step((generator = generator.apply(thisArg, _arguments || [])).next()); |
|
}); |
|
}; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.KeyVaultHelper = exports.AzureKeyVaultSecret = void 0; |
|
const core = __importStar(require("@actions/core")); |
|
const KeyVaultClient_1 = require("./KeyVaultClient"); |
|
const util = require("util"); |
|
class AzureKeyVaultSecret { |
|
} |
|
exports.AzureKeyVaultSecret = AzureKeyVaultSecret; |
|
class KeyVaultHelper { |
|
constructor(handler, timeOut, keyVaultActionParameters) { |
|
this.keyVaultActionParameters = keyVaultActionParameters; |
|
this.keyVaultClient = new KeyVaultClient_1.KeyVaultClient(handler, timeOut, keyVaultActionParameters.keyVaultUrl); |
|
} |
|
initKeyVaultClient() { |
|
return __awaiter(this, void 0, void 0, function* () { |
|
yield this.keyVaultClient.init(); |
|
}); |
|
} |
|
downloadSecrets() { |
|
var downloadAllSecrets = false; |
|
if (this.keyVaultActionParameters.secretsFilter && this.keyVaultActionParameters.secretsFilter.length === 1 && this.keyVaultActionParameters.secretsFilter[0] === "*") { |
|
downloadAllSecrets = true; |
|
} |
|
if (downloadAllSecrets) { |
|
return this.downloadAllSecrets(); |
|
} |
|
else { |
|
return this.downloadSelectedSecrets(this.keyVaultActionParameters.secretsFilter); |
|
} |
|
} |
|
downloadAllSecrets() { |
|
return new Promise((resolve, reject) => { |
|
this.keyVaultClient.getSecrets("", (error, listOfSecrets) => { |
|
if (error) { |
|
return reject(core.debug(util.format("Get Secrets Failed \n%s", this.getError(error)))); |
|
} |
|
if (listOfSecrets.length == 0) { |
|
core.debug(util.format("No secrets found in the vault %s", this.keyVaultActionParameters.keyVaultName)); |
|
return resolve(); |
|
} |
|
console.log(util.format("Number of secrets found in keyvault %s: %s", this.keyVaultActionParameters.keyVaultName, listOfSecrets.length)); |
|
listOfSecrets = this.filterDisabledAndExpiredSecrets(listOfSecrets); |
|
console.log(util.format("Number of enabled secrets found in keyvault %s: %s", this.keyVaultActionParameters.keyVaultName, listOfSecrets.length)); |
|
var getSecretValuePromises = []; |
|
listOfSecrets.forEach((secret, index) => { |
|
getSecretValuePromises.push(this.downloadSecretValue(secret.name)); |
|
}); |
|
Promise.all(getSecretValuePromises).then(() => { |
|
return resolve(); |
|
}); |
|
}); |
|
}); |
|
} |
|
downloadSelectedSecrets(secretsFilter) { |
|
let selectedSecrets = []; |
|
if (secretsFilter) { |
|
selectedSecrets = secretsFilter.split(','); |
|
} |
|
return new Promise((resolve, reject) => { |
|
var getSecretValuePromises = []; |
|
selectedSecrets.forEach((secretName) => { |
|
getSecretValuePromises.push(this.downloadSecretValue(secretName)); |
|
}); |
|
Promise.all(getSecretValuePromises).then(() => { |
|
return resolve(); |
|
}, error => { |
|
return reject(new Error("Downloading selected secrets failed")); |
|
}); |
|
}); |
|
} |
|
downloadSecretValue(secretName) { |
|
secretName = secretName.trim(); |
|
return new Promise((resolve, reject) => { |
|
this.keyVaultClient.getSecretValue(secretName, (error, secretValue) => { |
|
if (error) { |
|
core.setFailed(util.format("Could not download the secret %s", secretName)); |
|
} |
|
else { |
|
this.setVaultVariable(secretName, secretValue); |
|
} |
|
return resolve(); |
|
}); |
|
}); |
|
} |
|
setVaultVariable(secretName, secretValue) { |
|
if (!secretValue) { |
|
return; |
|
} |
|
core.setSecret(secretValue); |
|
core.exportVariable(secretName, secretValue); |
|
core.setOutput(secretName, secretValue); |
|
} |
|
filterDisabledAndExpiredSecrets(listOfSecrets) { |
|
var result = []; |
|
var now = new Date(); |
|
listOfSecrets.forEach((value, index) => { |
|
if (value.enabled && (!value.expires || value.expires > now)) { |
|
result.push(value); |
|
} |
|
}); |
|
return result; |
|
} |
|
getError(error) { |
|
core.debug(JSON.stringify(error)); |
|
if (error && error.message) { |
|
return error.message; |
|
} |
|
return error; |
|
} |
|
} |
|
exports.KeyVaultHelper = KeyVaultHelper;
|
|
|