42 lines
1.4 KiB
JavaScript
Executable File
42 lines
1.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
const fs = require('fs');
|
|
|
|
const MINIO_CONFIG = '/app/data/data/.minio.sys/config/config.json';
|
|
|
|
function usage() {
|
|
console.log('Usage:\n');
|
|
console.log('\tminio-credentials get');
|
|
console.log('\tminio-credentials set <access key> <secret key>');
|
|
console.log();
|
|
}
|
|
|
|
let config = JSON.parse(fs.readFileSync(MINIO_CONFIG, 'utf8'));
|
|
let adminCredentials = config['credentials']['_'];
|
|
let accessKey = adminCredentials.filter(kv => kv.key === 'access_key')[0];
|
|
let secretKey = adminCredentials.filter(kv => kv.key === 'secret_key')[0];
|
|
|
|
if (process.argv[2] === 'get') {
|
|
console.log('Access Key:', accessKey.value);
|
|
console.log('Secret Key:', secretKey.value);
|
|
} else if (process.argv[2] === 'set') {
|
|
if (process.argv.length !== 5) return usage();
|
|
|
|
// https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html
|
|
if (process.argv[4].length < 5) return console.log('secret key must be atleast 5 characters');
|
|
if (!/^[\w+=,.@-]+$/.test(process.argv[3])) return console.log('access key has invalid characters');
|
|
|
|
accessKey.value = process.argv[3];
|
|
if (process.argv[4].length < 8) return console.log('secret key must be atleast 8 characters');
|
|
|
|
secretKey.value = process.argv[4];
|
|
|
|
fs.writeFileSync(MINIO_CONFIG, JSON.stringify(config), 'utf8');
|
|
console.log('Credentials updated. Restart minio app for new credentials to take effect.\n');
|
|
} else {
|
|
usage();
|
|
}
|
|
|