Browse Source

v0.6.1: bugfixes for greenlock express v3

v4 v0.6.1
AJ ONeal 5 years ago
parent
commit
51f0838539
  1. 8
      .prettierrc
  2. 155
      manager.js
  3. 18
      package-lock.json
  4. 2
      package.json

8
.prettierrc

@ -0,0 +1,8 @@
{
"bracketSpacing": true,
"printWidth": 80,
"singleQuote": true,
"tabWidth": 4,
"trailingComma": "none",
"useTabs": true
}

155
manager.js

@ -23,13 +23,9 @@ Manage.create = function(opts) {
var manage = {};
manage.ping = function() {
return Manage._ping(manage, opts);
};
manage._txPromise = Promise.resolve();
manage.config = function(conf) {
manage.defaults = manage.config = function(conf) {
// get / set default site settings such as
// subscriberEmail, store, challenges, renewOffset, renewStagger
return Manage._getLatest(manage, opts).then(function(config) {
@ -87,39 +83,6 @@ Manage.create = function(opts) {
});
};
manage._lastStat = {
size: 0,
mtimeMs: 0
};
manage._config = {};
manage._save = function(config) {
return mkdirp(path.dirname(opts.configFile)).then(function() {
return sfs
.writeFileAsync(
opts.configFile,
// pretty-print the config file
JSON.stringify(config, null, 2),
'utf8'
)
.then(function() {
// this file may contain secrets, so keep it safe
return chmodFile(opts.configFile, parseInt('0600', 8))
.catch(function() {
/*ignore for Windows */
})
.then(function() {
return statFile(opts.configFile).then(function(
stat
) {
manage._lastStat.size = stat.size;
manage._lastStat.mtimeMs = stat.mtimeMs;
});
});
});
});
};
manage.add = function(args) {
manage._txPromise = manage._txPromise.then(function() {
// if the fs has changed since we last wrote, get the lastest from disk
@ -128,7 +91,8 @@ Manage.create = function(opts) {
var subscriberEmail = args.subscriberEmail;
var subject = args.subject || args.domain;
var primary = subject;
var altnames = args.altnames || args.domains;
var altnames =
args.servernames || args.altnames || args.domains;
if ('string' !== typeof primary) {
if (!Array.isArray(altnames) || !altnames.length) {
throw new Error('there needs to be a subject');
@ -203,6 +167,14 @@ Manage.create = function(opts) {
};
manage.find = function(args) {
var some = _find(args);
if (!opts.find) {
return some;
}
// TODO function to always add
throw new Error('TODO: use the given find');
};
function _find(args) {
return Manage._getLatest(manage, opts).then(function(config) {
// i.e. find certs more than 30 days old
//args.issuedBefore = Date.now() - 30 * 24 * 60 * 60 * 1000;
@ -252,27 +224,10 @@ Manage.create = function(opts) {
return sites;
});
};
manage.remove = function(args) {
if (!args.subject) {
throw new Error('should have a subject for sites to remove');
}
manage._txPromise = manage.txPromise.then(function() {
return Manage._getLatest(manage, opts).then(function(config) {
var site = config.sites[args.subject];
if (!site) {
return {};
}
site.deletedAt = Date.now();
return JSON.parse(JSON.stringify(site));
});
});
return manage._txPromise;
};
}
manage.notify = manage.notifications = function(ev, args) {
manage.notify = opts.notify || _notify;
function _notify(ev, args) {
if (!args) {
args = ev;
ev = args.event;
@ -292,7 +247,7 @@ Manage.create = function(opts) {
case 'warning':
console.error(
'Error%s:',
args.context ? ' ' + args.context : ''
(' ' + (args.context || '')).trimRight()
);
console.error(args.message);
if (args.description) {
@ -310,7 +265,7 @@ Manage.create = function(opts) {
args.status || ''
);
if (!args.status) {
console.log(args);
console.info(args);
}
break;
}
@ -319,17 +274,7 @@ Manage.create = function(opts) {
'(more info available: ' + Object.keys(args).join(' ') + ')'
);
}
};
manage.errors = function(err) {
// err.subject
// err.altnames
// err.challenge
// err.challengeOptions
// err.store
// err.storeOptions
console.error('Failure with ', err.subject);
};
}
manage.update = function(args) {
manage._txPromise = manage.txPromise.then(function() {
@ -344,6 +289,57 @@ Manage.create = function(opts) {
return manage._txPromise;
};
manage.remove = function(args) {
if (!args.subject) {
throw new Error('should have a subject for sites to remove');
}
manage._txPromise = manage.txPromise.then(function() {
return Manage._getLatest(manage, opts).then(function(config) {
var site = config.sites[args.subject];
if (!site) {
return {};
}
site.deletedAt = Date.now();
return JSON.parse(JSON.stringify(site));
});
});
return manage._txPromise;
};
manage._lastStat = {
size: 0,
mtimeMs: 0
};
manage._config = {};
manage._save = function(config) {
return mkdirp(path.dirname(opts.configFile)).then(function() {
return sfs
.writeFileAsync(
opts.configFile,
// pretty-print the config file
JSON.stringify(config, null, 2),
'utf8'
)
.then(function() {
// this file may contain secrets, so keep it safe
return chmodFile(opts.configFile, parseInt('0600', 8))
.catch(function() {
/*ignore for Windows */
})
.then(function() {
return statFile(opts.configFile).then(function(
stat
) {
manage._lastStat.size = stat.size;
manage._lastStat.mtimeMs = stat.mtimeMs;
});
});
});
});
};
return manage;
};
@ -373,18 +369,3 @@ Manage._getLatest = function(mng, opts) {
});
});
};
Manage._ping = function(mng, opts) {
if (mng._pingPromise) {
return mng._pingPromise;
}
mng._pringPromise = Promise.resolve().then(function() {
// TODO file permissions
if (!opts.configFile) {
throw new Error('no config file location provided');
}
JSON.parse(fs.readFileSync(opts.configFile, 'utf8'));
});
return mng._pingPromise;
};

18
package-lock.json

@ -0,0 +1,18 @@
{
"name": "greenlock-manager-fs",
"version": "0.6.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@root/mkdirp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@root/mkdirp/-/mkdirp-1.0.0.tgz",
"integrity": "sha512-hxGAYUx5029VggfG+U9naAhQkoMSXtOeXtbql97m3Hi6/sQSRL/4khKZPyOF6w11glyCOU38WCNLu9nUcSjOfA=="
},
"safe-replace": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.1.0.tgz",
"integrity": "sha512-9/V2E0CDsKs9DWOOwJH7jYpSl9S3N05uyevNjvsnDauBqRowBPOyot1fIvV5N2IuZAbYyvrTXrYFVG0RZInfFw=="
}
}
}

2
package.json

@ -1,6 +1,6 @@
{
"name": "greenlock-manager-fs",
"version": "0.6.0",
"version": "0.6.1",
"description": "A simple file-based management strategy for Greenlock",
"main": "manager.js",
"scripts": {

Loading…
Cancel
Save