52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
function addCommunityMember(opts) {
 | 
						|
  // { name, version, email, domains, action, communityMember, telemetry }
 | 
						|
  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 () {});
 | 
						|
    });
 | 
						|
    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();
 | 
						|
  }, 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);
 | 
						|
}
 |