add index.js
This commit is contained in:
parent
f874de542e
commit
4fc2bee726
116
lib/index.js
Normal file
116
lib/index.js
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
'use strict';
|
||||||
|
var Client = require('pg').Client;
|
||||||
|
var promisify = require('util').promisify;
|
||||||
|
|
||||||
|
var defaults = {
|
||||||
|
tableName: 'acme_challenge'
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.create = function(config) {
|
||||||
|
|
||||||
|
var tableName = config.tableName || defaults.tableName;
|
||||||
|
var databaseUrl = config.databaseUrl;
|
||||||
|
var client;
|
||||||
|
|
||||||
|
return {
|
||||||
|
init: function(opts) {
|
||||||
|
console.log('init');
|
||||||
|
client = new Client({
|
||||||
|
connectionString: databaseUrl
|
||||||
|
});
|
||||||
|
|
||||||
|
var dropTableQuery = 'DROP TABLE IF EXISTS "' + tableName + '" CASCADE;';
|
||||||
|
var createTableQuery = 'CREATE TABLE IF NOT EXISTS "' + tableName + '" (' +
|
||||||
|
'"id" SERIAL , ' +
|
||||||
|
'"domain" VARCHAR(255) NOT NULL, ' +
|
||||||
|
'"tokenName" VARCHAR(255), ' +
|
||||||
|
'"keyAuthorization" VARCHAR(255), PRIMARY KEY ("id"));';
|
||||||
|
|
||||||
|
return client.connect().then(function() {
|
||||||
|
return client.query(dropTableQuery + createTableQuery)
|
||||||
|
.then(function(res) {
|
||||||
|
// console.log(res);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error(err.stack);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error('Unable to connect to the database:', err);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
set: function(data) {
|
||||||
|
// console.log('Add Key Auth URL', data);
|
||||||
|
|
||||||
|
var ch = data.challenge;
|
||||||
|
|
||||||
|
var setQuery = 'INSERT INTO "'+tableName+'" ("id","domain","tokenName","keyAuthorization") VALUES (DEFAULT,$1,$2,$3) RETURNING *;';
|
||||||
|
var setValues = [ch.identifier.value,ch.token,ch.keyAuthorization];
|
||||||
|
|
||||||
|
return client.query(setQuery,setValues)
|
||||||
|
.then(function(res) {
|
||||||
|
// console.log(res);
|
||||||
|
console.log(
|
||||||
|
'acmeChallenge auto-generated ID:',
|
||||||
|
res.rows[0].id
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error(err.stack);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
get: function(data) {
|
||||||
|
// console.log('List Key Auth URL', data);
|
||||||
|
|
||||||
|
var ch = data.challenge;
|
||||||
|
|
||||||
|
var getQuery = 'SELECT "id", "domain", "tokenName", "keyAuthorization" FROM "'+tableName+'" AS "acme_challenge" WHERE "acme_challenge"."domain" = $1 AND "acme_challenge"."tokenName" = $2 LIMIT 1;';
|
||||||
|
var getValues = [ch.identifier.value,ch.token];
|
||||||
|
|
||||||
|
return client.query(getQuery,getValues)
|
||||||
|
.then(function(res) {
|
||||||
|
// console.log(res);
|
||||||
|
var acmeChallenge = res.rows[0];
|
||||||
|
if (acmeChallenge) {
|
||||||
|
return {
|
||||||
|
keyAuthorization: acmeChallenge.keyAuthorization
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error(err.stack);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
remove: function(data) {
|
||||||
|
var ch = data.challenge;
|
||||||
|
|
||||||
|
var deleteQuery = 'DELETE FROM "'+tableName+'" WHERE "domain" = $1 AND "tokenName" = $2';
|
||||||
|
var deleteValues = [ch.identifier.value,ch.token];
|
||||||
|
|
||||||
|
return client.query(deleteQuery,deleteValues)
|
||||||
|
.then(function(res) {
|
||||||
|
// console.log(res);
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error(err.stack);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// close connection
|
||||||
|
// client.end();
|
Loading…
x
Reference in New Issue
Block a user