Skip to content

Commit

Permalink
Tag UA for GH requests (#1753)
Browse files Browse the repository at this point in the history
* Additional confirmation is needed when GH contacts us with a predefined secret
* New dep... synchronous git-rev *(forked by another)* ... needed because some of our code is too fast for the asynchronous return dep.
* Add missing UA in one request for the GH client ... pinging the certificate doesn't really need one but symmetry.

Applies to #1730

Auto-merge
  • Loading branch information
Martii committed Sep 9, 2020
1 parent 5f179ac commit 298afc9
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 10 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Repository | Reference | Recent Version
[font-awesome][font-awesomeGHUrl] | [Documentation][font-awesomeDOCUrl] | [![NPM version][font-awesomeNPMVersionImage]][font-awesomeNPMUrl]
[formidable][formidableGHUrl] | [Documentation][formidableDOCUrl] | [![NPM version][formidableNPMVersionImage]][formidableNPMUrl]
[git-rev][git-revGHUrl] | [Documentation][git-revDOCUrl] | [![NPM version][git-revNPMVersionImage]][git-revNPMUrl]
[git-rev-sync][git-rev-syncGHUrl] | [Documentation][git-rev-syncDOCUrl] | [![NPM version][git-rev-syncNPMVersionImage]][git-rev-syncNPMUrl]
[highlight.js][highlight.jsGHUrl] | [Documentation][highlight.jsDOCUrl][ᴸᴬᴺᴳ][highlight.jsLANGUrl] | [![NPM version][highlight.jsNPMVersionImage]][highlight.jsNPMUrl]
[image-size][image-sizeGHUrl] | [Documentation][image-sizeDOCUrl] | [![NPM version][image-sizeNPMVersionImage]][image-sizeNPMUrl]
[ip-range-check][ip-range-checkGHUrl] | [Documentation][ip-range-checkDOCUrl] | [![NPM version][ip-range-checkNPMVersionImage]][ip-range-checkNPMUrl]
Expand Down Expand Up @@ -227,6 +228,11 @@ Outdated dependencies list can also be achieved with `$ npm outdated`
[git-revNPMUrl]: https://www.npmjs.com/package/git-rev
[git-revNPMVersionImage]: https://img.shields.io/npm/v/git-rev.svg?style=flat

[git-rev-syncGHUrl]: https://github.com/kurttheviking/git-rev-sync-js
[git-rev-syncDOCUrl]: https://github.com/kurttheviking/git-rev-sync-js/blob/master/README.md
[git-rev-syncNPMUrl]: https://www.npmjs.com/package/git-rev-sync
[git-rev-syncNPMVersionImage]: https://img.shields.io/npm/v/git-rev-sync.svg?style=flat

[highlight.jsGHUrl]: https://github.com/isagalaev/highlight.js
[highlight.jsDOCUrl]: http://highlightjs.readthedocs.org
[highlight.jsNPMUrl]: https://www.npmjs.com/package/highlight.js
Expand Down
7 changes: 6 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ var isPro = require('./libs/debug').isPro;
var isDev = require('./libs/debug').isDev;
var isDbg = require('./libs/debug').isDbg;

var uaOUJS = require('./libs/debug').uaOUJS;

var isSecured = require('./libs/debug').isSecured;
var privkey = require('./libs/debug').privkey;
var fullchain = require('./libs/debug').fullchain;
Expand Down Expand Up @@ -524,7 +526,10 @@ function pingCert() {
(isPro && app.get('securePort')
? ':' + app.get('securePort')
: ':' + app.get('port'))
+ '/api'
+ '/api',
headers: {
'User-Agent': uaOUJS + '.' + process.env.UA_SECRET
}
}, function (aErr, aRes, aBody) {
if (aErr) {
if (aErr.cert) {
Expand Down
5 changes: 3 additions & 2 deletions controllers/scriptStorage.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var isPro = require('../libs/debug').isPro;
var isDev = require('../libs/debug').isDev;
var isDbg = require('../libs/debug').isDbg;
var isSecured = require('../libs/debug').isSecured;
var uaOUJS = require('../libs/debug').uaOUJS;
var statusError = require('../libs/debug').statusError;

//
Expand Down Expand Up @@ -193,7 +194,7 @@ if (isSecured) {
request({
url: 'https://api.github.com/meta',
headers: {
'User-Agent': 'OpenUserJS'
'User-Agent': uaOUJS + '.' + process.env.UA_SECRET
}
}, function (aErr, aRes, aBody) {
var meta = null;
Expand Down Expand Up @@ -1519,7 +1520,7 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) {
req = request.get({
url: icon,
headers: {
'User-Agent': 'request'
'User-Agent': 'request' // NOTE: Anonymous intended
}
})
.on('response', function (aRes) {
Expand Down
5 changes: 0 additions & 5 deletions dev/preinstall.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
'use strict';

// Define some pseudo module globals
var isPro = require('../libs/debug').isPro;
var isDev = require('../libs/debug').isDev;
var isDbg = require('../libs/debug').isDbg;

//
// NOTE: Only use native *node* `require`s in this file
// since dependencies may not be installed yet
Expand Down
19 changes: 19 additions & 0 deletions libs/debug.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
'use strict';

var fs = require('fs');
var os = require('os');

var git = require('git-rev-sync');

var pkg = require('../package.json');
pkg.org = pkg.name.substring(0, pkg.name.indexOf('.'));

var isPro = process.env.NODE_ENV === 'production';
var isDev = !isPro;
Expand All @@ -11,6 +17,11 @@ var privkey = null;
var fullchain = null;
var chain = null;


var uaOUJS = null;
var hash = null;


try {
// Check for primary keys
privkey = './keys/private.key';
Expand Down Expand Up @@ -55,6 +66,14 @@ exports.isPro = isPro;
exports.isDev = isDev;
exports.isDbg = isDbg;


hash = git.short(); // NOTE: Synchronous
uaOUJS = pkg.org + '/' + pkg.version
+ ' (' + os.type() + '; ' + os.arch() + '; rv:'
+ hash + ') ' + 'OUJS/20131106 ' + pkg.name + '/' + hash;
exports.uaOUJS = uaOUJS;


// ES6+ in use to eliminate extra property
class statusError extends Error {
constructor (aStatus, aCode) {
Expand Down
8 changes: 7 additions & 1 deletion libs/githubClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
var isPro = require('../libs/debug').isPro;
var isDev = require('../libs/debug').isDev;
var isDbg = require('../libs/debug').isDbg;
var uaOUJS = require('../libs/debug').uaOUJS;

//
var GitHubApi = require("github");
Expand Down Expand Up @@ -67,7 +68,12 @@ var githubUserContentGetBlobAsUtf8 = function (aMsg, aCallback) {
async.waterfall([
function (aCallback) {
var url = githubUserContentBuildUrl(aMsg.user, aMsg.repo, aMsg.path);
request.get(url, aCallback);
request.get({
url: url,
headers: {
'User-Agent': uaOUJS + '.' + process.env.UA_SECRET
}
}, aCallback);
},
function (aResponse, aBody, aCallback) {
if (aResponse.statusCode !== 200)
Expand Down
3 changes: 2 additions & 1 deletion libs/repoManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
var isPro = require('../libs/debug').isPro;
var isDev = require('../libs/debug').isDev;
var isDbg = require('../libs/debug').isDbg;
var uaOUJS = require('../libs/debug').uaOUJS;
var statusError = require('../libs/debug').statusError;

//--- Dependency inclusions
Expand Down Expand Up @@ -60,7 +61,7 @@ function fetchRaw(aHost, aPath, aCallback, aOptions) {
path: aPath,
method: 'GET',
headers: {
'User-Agent': 'Node.js'
'User-Agent': uaOUJS + '.' + process.env.UA_SECRET
}
};

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"font-awesome": "4.7.0",
"formidable": "1.2.2",
"git-rev": "0.2.1",
"git-rev-sync": "3.0.1",
"github": "git://github.com/octokit/rest.js.git#29dedb3",
"highlight.js": "10.1.2",
"image-size": "0.8.3",
Expand Down

0 comments on commit 298afc9

Please sign in to comment.