81 lines
2.0 KiB
JavaScript
81 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
function addCommunityMember(opts) {
|
|
// { name, version, email, domains, action, communityMember, telemetry }
|
|
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() {});
|
|
}
|
|
);
|
|
req.on('error', function(error) {
|
|
/* ignore */
|
|
});
|
|
var os = require('os');
|
|
var data = {
|
|
address: opts.email,
|
|
// greenlock-security is transactional and security only
|
|
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)
|
|
domain: (opts.domains || [])
|
|
.map(function(d) {
|
|
return require('crypto')
|
|
.createHash('sha1')
|
|
.update(d)
|
|
.digest('base64')
|
|
.replace(/\//g, '_')
|
|
.replace(/\+/g, '-')
|
|
.replace(/=/g, '');
|
|
})
|
|
.join(',')
|
|
};
|
|
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));
|
|
req.end();
|
|
}
|
|
|
|
function delay(ms) {
|
|
return new Promise(function(resolve) {
|
|
return setTimeout(resolve, ms);
|
|
});
|
|
}
|
|
|
|
module.exports.add = function(opts) {
|
|
return delay(50)
|
|
.then(() => {
|
|
return addCommunityMember(opts);
|
|
})
|
|
.catch(function(ex) {
|
|
/* ignore */
|
|
});
|
|
};
|
|
|
|
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);
|
|
}
|