greenlock.js/lib/community.js

52 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2018-05-10 08:08:20 +00:00
'use strict';
2018-11-05 18:10:22 +00:00
function addCommunityMember(opts) {
// { name, version, email, domains, action, communityMember, telemetry }
2018-05-10 08:08:20 +00:00
setTimeout(function () {
var https = require('https');
var req = https.request({
hostname: 'api.ppl.family'
, port: 443
, path: '/api/ppl.family/public/list'
, method: 'POST'
, headers: {
'Content-Type': 'application/json'
}
}, function (err, resp) {
if (err) { return; }
resp.on('data', function () {});
});
2018-11-05 18:10:22 +00:00
var os = require('os');
var data = {
2018-11-05 18:10:22 +00:00
address: opts.email
// greenlock-security is transactional and security only
2018-11-05 18:10:22 +00:00
, list: opts.communityMember ? (opts.name + '@ppl.family') : 'greenlock-security@ppl.family'
, action: opts.action // reg | renew
, package: opts.name
// hashed for privacy, but so we can still get some telemetry and inform users
// if abnormal things are happening (like several registrations for the same domain each day)
2018-11-05 18:10:22 +00:00
, domain: (opts.domains||[]).map(function (d) {
2018-05-10 08:08:20 +00:00
return require('crypto').createHash('sha1').update(d).digest('base64')
.replace(/\//g, '_').replace(/\+/g, '-').replace(/=/g, '');
}).join(',')
};
2018-11-05 18:10:22 +00:00
if (false !== opts.telemetry) {
data.arch = process.arch || os.arch();
data.platform = process.platform || os.platform();
data.release = os.release();
data.version = opts.version;
data.node = process.version;
}
req.write(JSON.stringify(data, 2, null));
2018-05-10 08:08:20 +00:00
req.end();
}, 50);
}
module.exports.add = addCommunityMember;
if (require.main === module) {
//addCommunityMember('greenlock-express.js', 'reg', 'coolaj86+test42@gmail.com', ['coolaj86.com'], true);
//addCommunityMember('greenlock.js', 'reg', 'coolaj86+test37@gmail.com', ['oneal.im'], false);
//addCommunityMember('greenlock.js', 'reg', 'coolaj86+test11@gmail.com', ['ppl.family'], true);
}