acme-http-01-s3.js/lib/index.js

127 satır
2.9 KiB
JavaScript
Ham Normal Görünüm Geçmiş

2019-11-01 06:23:19 +00:00
'use strict';
var promisify = require('util').promisify;
var request = require('@root/request');
request = promisify(request);
var aws4 = require('aws4');
var defaults = {
awsAccessKey: 'TQ6UOPROD626SWV5KIP5',
awsSecretAccessKey: 'Tm3dNht5QMKxu7EU44ZLflDeE7sFbqQy3Q+XE+MY',
awsRegion: 'us-east-1',
awsBucket: 'hy8',
awsHost:'s3.switch.lxc'
};
module.exports.create = function(config) {
var awsAccessKey = config.awsAccessKey || defaults.awsAccessKey;
var awsSecretAccessKey = config.awsSecretAccessKey || defaults.awsSecretAccessKey;
var awsRegion = config.awsRegion || defaults.awsRegion;
var awsBucket = config.awsBucket || defaults.awsBucket;
var awsHost = config.awsHost || defaults.awsHost;
var AWSCredentials = {
accessKeyId: awsAccessKey,
secretAccessKey: awsSecretAccessKey
};
return {
init: function(opts) {
console.log('init');
return null;
},
set: function(data) {
// console.log('Add Key Auth URL', data);
var ch = data.challenge;
var signed = aws4.sign({
host: awsHost,
service: 's3',
region: awsRegion,
path: '/' + awsBucket + '/' + ch.identifier.value +'/'+ ch.token,
headers: {
'Content-Type': 'text/plain;charset=UTF-8'
},
method: 'PUT',
body: ch.keyAuthorization,
signQuery: true
},
AWSCredentials
);
console.log(signed);
return request({
// debug: true,
method: 'PUT',
url: 'http://' +signed.host+ signed.path,
headers: { 'Content-Type': 'text/plain;charset=UTF-8' },
body: ch.keyAuthorization
}).then(function(resp) {
// console.log(resp.statusCode);
if (200 !== resp.statusCode) {
console.error(resp.statusCode);
console.error(resp.body);
throw new Error('Could not PUT.');
}
return true;
})
.catch(function(err) {
throw err;
// return null;
});
},
get: function(data) {
// console.log('List Key Auth URL', data);
var ch = data.challenge;
var signed = aws4.sign({
host: awsHost,
service: 's3',
region: awsRegion,
path: '/' + awsBucket + '/' + ch.identifier.value +'/'+ ch.token,
headers: {
'Content-Type': 'text/plain;charset=UTF-8'
},
method: 'GET',
signQuery: true
},
AWSCredentials
);
console.log(signed);
return request({
// debug: true,
method: 'GET',
url: 'http://' +signed.host+ signed.path,
headers: { 'Content-Type': 'text/plain;charset=UTF-8' }
}).then(function(resp) {
// console.log(resp.statusCode);
if (200 !== resp.statusCode) {
console.error(resp.statusCode);
console.error(resp.body);
throw new Error('Could not GET');
}
return {
keyAuthorization: resp.body
};
})
.catch(function(err) {
throw err;
// return null;
});
},
remove: function(data) {
// console.log('Remove Key Auth URL', data);
var ch = data.challenge;
}
};
};