2017-03-11 21:46:33 +00:00
|
|
|
/*!
|
|
|
|
* le-acme-core
|
|
|
|
* Author: Kelly Johnson
|
|
|
|
* Copyright 2017
|
|
|
|
* Apache-2.0 OR MIT (and hence also MPL 2.0)
|
|
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const request = require('request');
|
|
|
|
const pkgJSON = require('../package.json');
|
|
|
|
const version = pkgJSON.version;
|
|
|
|
const os = require('os');
|
|
|
|
|
|
|
|
const uaDefaults = {
|
2018-11-20 21:39:54 +00:00
|
|
|
pkg: `Greenlock/${version}`
|
2017-03-11 21:46:33 +00:00
|
|
|
, os: ` (${os.type()}; ${process.arch} ${os.platform()} ${os.release()})`
|
|
|
|
, node: ` Node.js/${process.version}`
|
|
|
|
, user: ''
|
|
|
|
}
|
|
|
|
|
|
|
|
let currentUAProps;
|
|
|
|
|
|
|
|
function getUaString() {
|
|
|
|
let userAgent = '';
|
|
|
|
for (let key in currentUAProps) {
|
|
|
|
userAgent += currentUAProps[key];
|
|
|
|
}
|
|
|
|
return userAgent.trim();
|
|
|
|
}
|
|
|
|
|
|
|
|
function getRequest() {
|
|
|
|
return request.defaults({
|
|
|
|
headers: {
|
|
|
|
'User-Agent': getUaString()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function resetUa() {
|
|
|
|
currentUAProps = {};
|
|
|
|
for (let key in uaDefaults) {
|
|
|
|
currentUAProps[key] = uaDefaults[key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function addUaString(string) {
|
|
|
|
currentUAProps.user += ` ${string}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
function omitUaProperties(opts) {
|
|
|
|
if (opts.all) {
|
|
|
|
currentUAProps = {};
|
|
|
|
} else {
|
|
|
|
for (let key in opts) {
|
|
|
|
currentUAProps[key] = '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set our UA to begin with
|
|
|
|
resetUa();
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
create: function create() {
|
|
|
|
// get deps and modify here if need be
|
|
|
|
return getRequest();
|
|
|
|
}
|
|
|
|
, addUaString: addUaString
|
|
|
|
, omitUaProperties: omitUaProperties
|
|
|
|
, resetUa: resetUa
|
|
|
|
, getUaString: getUaString
|
|
|
|
};
|