| 
									
										
										
										
											2018-05-10 02:08:20 -06:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:10:22 -07:00
										 |  |  | function addCommunityMember(opts) { | 
					
						
							| 
									
										
										
										
											2019-10-08 04:51:15 -06:00
										 |  |  | 	// { 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(); | 
					
						
							| 
									
										
										
										
											2018-05-10 02:08:20 -06:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-26 11:59:17 +10:00
										 |  |  | function delay(ms) { | 
					
						
							| 
									
										
										
										
											2019-10-08 04:51:15 -06:00
										 |  |  | 	return new Promise(function(resolve) { | 
					
						
							|  |  |  | 		return setTimeout(resolve, ms); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2019-06-26 11:59:17 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-08 04:51:15 -06:00
										 |  |  | module.exports.add = function(opts) { | 
					
						
							|  |  |  | 	return delay(50) | 
					
						
							|  |  |  | 		.then(() => { | 
					
						
							|  |  |  | 			return addCommunityMember(opts); | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		.catch(function(ex) { | 
					
						
							|  |  |  | 			/* ignore */ | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2018-09-17 01:16:27 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | if (require.main === module) { | 
					
						
							| 
									
										
										
										
											2019-10-08 04:51:15 -06:00
										 |  |  | 	//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);
 | 
					
						
							| 
									
										
										
										
											2018-09-17 01:16:27 -06:00
										 |  |  | } |