Skip to content

Commit 88255b9

Browse files
authored
Merge pull request #12 from overleaf/td-origins-setting
Extend origins option to allow a function
2 parents 7ac322c + fb0f698 commit 88255b9

12 files changed

+53
-1109
lines changed

History.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
0.9.19-overleaf-11 / 2025-01-24
2+
===============================
3+
4+
* Overleaf: Extend origins option to allow a function
5+
* Overleaf: Remove htmlfile transport
6+
* Overleaf: Remove flashsocket transport
7+
18
0.9.19-overleaf-10 / 2023-04-25
29
===============================
310

Readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ Configuration in socket.io is TJ-style:
329329
var io = require('socket.io').listen(80);
330330

331331
io.configure(function () {
332-
io.set('transports', ['websocket', 'flashsocket', 'xhr-polling']);
332+
io.set('transports', ['websocket', 'xhr-polling']);
333333
});
334334

335335
io.configure('development', function () {

lib/manager.js

+32-20
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ exports = module.exports = Manager;
3434

3535
var defaultTransports = exports.defaultTransports = [
3636
'websocket'
37-
, 'htmlfile'
3837
, 'xhr-polling'
3938
, 'jsonp-polling'
4039
];
@@ -76,8 +75,6 @@ function Manager (server, options) {
7675
, 'heartbeat interval': 25
7776
, 'heartbeat timeout': 60
7877
, 'polling duration': 20
79-
, 'flash policy server': true
80-
, 'flash policy port': 10843
8178
, 'destroy upgrade': true
8279
, 'destroy buffer size': 10E7
8380
, 'browser client': true
@@ -159,7 +156,7 @@ function Manager (server, options) {
159156
});
160157

161158
this.sequenceNumber = Date.now() | 0;
162-
159+
163160
this.log.info('socket.io started');
164161
};
165162

@@ -873,30 +870,30 @@ Manager.prototype.handshakeData = function (data, connection) {
873870
};
874871
};
875872

876-
/**
877-
* Verifies the origin of a request.
878-
*
879-
* @api private
880-
*/
881-
882-
Manager.prototype.verifyOrigin = function (request) {
883-
var origin = request.headers.origin || request.headers.referer
884-
, origins = this.get('origins');
873+
Manager.prototype.isOriginAllowed = function (origin, request) {
874+
var origins = this.get('origins');
885875

886876
if (origin === 'null') origin = '*';
887877

888-
if (origins.indexOf('*:*') !== -1) {
878+
var originsIsFunction = typeof origins === 'function';
879+
880+
if (!originsIsFunction && origins.indexOf('*:*') !== -1) {
889881
return true;
890882
}
891883

892884
if (origin) {
893885
try {
894-
var parts = url.parse(origin);
895-
parts.port = parts.port || 80;
896-
var ok =
897-
~origins.indexOf(parts.hostname + ':' + parts.port) ||
898-
~origins.indexOf(parts.hostname + ':*') ||
899-
~origins.indexOf('*:' + parts.port);
886+
var ok = false;
887+
if (originsIsFunction) {
888+
ok = origins(origin, request);
889+
} else {
890+
var parts = url.parse(origin);
891+
parts.port = parts.port || 80;
892+
ok =
893+
~origins.indexOf(parts.hostname + ':' + parts.port) ||
894+
~origins.indexOf(parts.hostname + ':*') ||
895+
~origins.indexOf('*:' + parts.port);
896+
}
900897
if (!ok) this.log.warn('illegal origin: ' + origin);
901898
return ok;
902899
} catch (ex) {
@@ -909,6 +906,21 @@ Manager.prototype.verifyOrigin = function (request) {
909906
return false;
910907
};
911908

909+
/**
910+
* Verifies the origin of a request.
911+
*
912+
* @api private
913+
*/
914+
915+
Manager.prototype.verifyOrigin = function (request) {
916+
var origin = request.headers.origin || request.headers.referer;
917+
var allowed = this.isOriginAllowed(origin, request);
918+
if (!origin && !allowed) {
919+
this.log.warn('origin missing from handshake, yet required by config', { headers: request.headers });
920+
}
921+
return allowed;
922+
};
923+
912924
/**
913925
* Handles an incoming packet.
914926
*

lib/transports/flashsocket.js

-149
This file was deleted.

lib/transports/htmlfile.js

-83
This file was deleted.

lib/transports/index.js

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
module.exports = {
77
websocket: require('./websocket')
8-
, flashsocket: require('./flashsocket')
9-
, htmlfile: require('./htmlfile')
108
, 'xhr-polling': require('./xhr-polling')
119
, 'jsonp-polling': require('./jsonp-polling')
1210
};

0 commit comments

Comments
 (0)