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:
parent
f7b8d826d8
commit
d89a1c8b2a
40
index.js
Normal file
40
index.js
Normal 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
12
lib/get.js
Normal 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
10
lib/remove.js
Normal 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
14
lib/set.js
Normal 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
6
package-lock.json
generated
@ -46,6 +46,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
||||||
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
|
"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": {
|
"ieee754": {
|
||||||
"version": "1.1.8",
|
"version": "1.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
|
||||||
|
@ -27,7 +27,8 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/cderche/greenlock-challenge-s3#readme",
|
"homepage": "https://github.com/cderche/greenlock-challenge-s3#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"dotenv": "^8.0.0"
|
"dotenv": "^8.0.0",
|
||||||
|
"greenlock-challenge-test": "^3.0.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aws-sdk": "^2.451.0"
|
"aws-sdk": "^2.451.0"
|
||||||
|
29
test.js
Normal file
29
test.js
Normal 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;
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user