mirror of
				https://github.com/therootcompany/greenlock.js.git
				synced 2024-11-16 17:29:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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);
 | |
| }
 |