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",
|
||||
"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",
|
||||
|
@ -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
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