2
0
mirror of https://github.com/cderche/greenlock-challenge-s3 synced 2025-05-10 15:36:33 +00:00

Created core files

This commit is contained in:
Cyrille 2019-05-08 17:43:45 +01:00
parent f7b8d826d8
commit d89a1c8b2a
7 changed files with 113 additions and 1 deletions

40
index.js Normal file
View File

@ -0,0 +1,40 @@
const AWS = require('aws-sdk');
const defaultOptions = {
accessKeyId: null
, secretAccessKey: null
, bucketName: null
, bucketRegion: null
, directory: ''
}
const s3 = new AWS.S3({ apiVersion: '2006-03-01' });
module.exports.create = (createOptions) => {
const options = Object.assign({}, defaultOptions, createOptions);
AWS.config.update({
region: options.bucketRegion
, credentials: new AWS.Credentials({
accessKeyId: options.accessKeyId
, secretAccessKey: options.secretAccessKey
})
});
const handlers = {
set: (opts) => {
return require('./lib/set').set(opts, options, s3);
},
get: (opts) => {
return require('./lib/get').get(opts, options, s3);
},
remove: (opts) => {
return require('./lib/remove').remove(opts, options, s3);
}
};
return handlers;
};

12
lib/get.js Normal file
View File

@ -0,0 +1,12 @@
module.exports.get = (opts, options, s3) => {
let challengeKey = options.directory + opts.challenge.token;
return s3.getObject({ Key: challengeKey, Bucket: options.bucketName }).promise().then(function (data) {
console.log('Successfully retrieved challenge.' + data.Body.toString());
return {
keyAuthorization: data.Body.toString()
}
}).catch(function (err) {
console.error(err.message);
return null;
});
}

10
lib/remove.js Normal file
View File

@ -0,0 +1,10 @@
module.exports.remove = (opts, options, s3) => {
challengeKey = options.directory + opts.challenge.token;
return s3.deleteObject({ Key: challengeKey, Bucket: options.bucketName }).promise().then(function (data) {
console.log('Successfully deleted challenge.');
return data;
}).catch(function (err) {
console.error('There was an error deleting your challenge: ', err.message);
throw err;
});
}

14
lib/set.js Normal file
View File

@ -0,0 +1,14 @@
const path = require('path');
module.exports.set = (opts, options, s3) => {
var challengeKey = path.join(options.directory, opts.challenge.token);
console.log(challengeKey);
return s3.putObject({ Key: challengeKey, Body: opts.challenge.keyAuthorization, Bucket: options.bucketName }).promise().then(function (data) {
console.log('Successfully created challenge.');
return null;
}).catch(function (err) {
console.error('There was an error creating your challenge: ' + err.message);
throw err;
});
}

6
package-lock.json generated
View File

@ -46,6 +46,12 @@
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
},
"greenlock-challenge-test": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/greenlock-challenge-test/-/greenlock-challenge-test-3.0.2.tgz",
"integrity": "sha512-0C4R6ETUrmBKxjsV9r8HsL+5DRpfoNR4LaGngNsznXr6MyZQBPEojpGECObkalRHN4qkLkq8qP7eusXyXXOj0Q==",
"dev": true
},
"ieee754": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",

View File

@ -27,7 +27,8 @@
},
"homepage": "https://github.com/cderche/greenlock-challenge-s3#readme",
"devDependencies": {
"dotenv": "^8.0.0"
"dotenv": "^8.0.0",
"greenlock-challenge-test": "^3.0.2"
},
"dependencies": {
"aws-sdk": "^2.451.0"

29
test.js Normal file
View File

@ -0,0 +1,29 @@
console.log('Testing the challenge.');
require('dotenv').config();
let accessKeyId = process.env.AWS_ACCESS_KEY_ID
secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY
regionName = process.env.AWS_BUCKET_REGION
bucketName = process.env.AWS_BUCKET_NAME
let tester = require('greenlock-challenge-test');
let challenger = require('./index').create({
accessKeyId: accessKeyId
, secretAccessKey: secretAccessKey
, regionName: regionName
, bucketName: bucketName
, directory: ''
, debug: true
});
let domain = 'example.com';
// All of these tests can pass locally, standalone without any ACME integration.
tester.test('http-01', domain, challenger).then(() => {
console.info("Test completed successfully.");
}).catch((err) => {
console.error(err.message);
throw err;
});