Skip to content

Commit dd0b604

Browse files
committed
ref
1 parent eda26ce commit dd0b604

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4289
-2012
lines changed

.eslintrc.json

-19
This file was deleted.

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ results
1414
node_modules
1515
npm-debug.log
1616

17-
.idea
17+
.idea
18+
.cache
19+
.vscode

bin/peerjs

+32-31
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,70 @@
11
#!/usr/bin/env node
2+
// tslint:disable
23

3-
const path = require('path');
4-
const pkg = require('../package.json');
5-
const fs = require('fs');
4+
const path = require("path");
5+
const pkg = require("../package.json");
6+
const fs = require("fs");
67
const version = pkg.version;
7-
const PeerServer = require('../src').PeerServer;
8-
const opts = require('optimist')
9-
.usage('Usage: $0')
8+
const { PeerServer } = require("../dist/src");
9+
const opts = require("optimist")
10+
.usage("Usage: $0")
1011
.options({
1112
expire_timeout: {
1213
demand: false,
13-
alias: 't',
14-
description: 'timeout (milliseconds)',
14+
alias: "t",
15+
description: "timeout (milliseconds)",
1516
default: 5000
1617
},
1718
concurrent_limit: {
1819
demand: false,
19-
alias: 'c',
20-
description: 'concurrent limit',
20+
alias: "c",
21+
description: "concurrent limit",
2122
default: 5000
2223
},
2324
alive_timeout: {
2425
demand: false,
25-
description: 'broken connection check timeout (milliseconds)',
26+
description: "broken connection check timeout (milliseconds)",
2627
default: 60000
2728
},
2829
key: {
2930
demand: false,
30-
alias: 'k',
31-
description: 'connection key',
32-
default: 'peerjs'
31+
alias: "k",
32+
description: "connection key",
33+
default: "peerjs"
3334
},
3435
sslkey: {
3536
demand: false,
36-
description: 'path to SSL key'
37+
description: "path to SSL key"
3738
},
3839
sslcert: {
3940
demand: false,
40-
description: 'path to SSL certificate'
41+
description: "path to SSL certificate"
4142
},
4243
port: {
4344
demand: true,
44-
alias: 'p',
45-
description: 'port'
45+
alias: "p",
46+
description: "port"
4647
},
4748
path: {
4849
demand: false,
49-
description: 'custom path',
50-
default: '/'
50+
description: "custom path",
51+
default: "/"
5152
},
5253
allow_discovery: {
5354
demand: false,
54-
description: 'allow discovery of peers'
55+
description: "allow discovery of peers"
5556
},
5657
proxied: {
5758
demand: false,
58-
description: 'Set true if PeerServer stays behind a reverse proxy',
59+
description: "Set true if PeerServer stays behind a reverse proxy",
5960
default: false
6061
}
6162
})
62-
.boolean('allow_discovery')
63+
.boolean("allow_discovery")
6364
.argv;
6465

65-
process.on('uncaughtException', function (e) {
66-
console.error('Error: ' + e);
66+
process.on("uncaughtException", function (e) {
67+
console.error("Error: " + e);
6768
});
6869

6970
if (opts.sslkey || opts.sslcert) {
@@ -76,8 +77,8 @@ if (opts.sslkey || opts.sslcert) {
7677
delete opts.sslkey;
7778
delete opts.sslcert;
7879
} else {
79-
console.error('Warning: PeerServer will not run because either ' +
80-
'the key or the certificate has not been provided.');
80+
console.error("Warning: PeerServer will not run because either " +
81+
"the key or the certificate has not been provided.");
8182
process.exit(1);
8283
}
8384
}
@@ -88,15 +89,15 @@ const server = PeerServer(opts, server => {
8889
const port = server.address().port;
8990

9091
console.log(
91-
'Started PeerServer on %s, port: %s, path: %s (v. %s)',
92-
host, port, userPath || '/', version
92+
"Started PeerServer on %s, port: %s, path: %s (v. %s)",
93+
host, port, userPath || "/", version
9394
);
9495
});
9596

96-
server.on('connection', client => {
97+
server.on("connection", client => {
9798
console.log(`Client connected: ${client.getId()}`);
9899
});
99100

100-
server.on('disconnect', client => {
101+
server.on("disconnect", client => {
101102
console.log(`Client disconnected: ${client.getId()}`);
102103
});

config/index.js

-15
This file was deleted.

config/index.ts

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
export interface IConfig {
2+
readonly port: number;
3+
readonly expire_timeout: number;
4+
readonly alive_timeout: number;
5+
readonly key: string;
6+
readonly path: string;
7+
readonly concurrent_limit: number;
8+
readonly allow_discovery: boolean;
9+
readonly proxied: boolean | string;
10+
readonly cleanup_out_msgs: number;
11+
readonly ssl: {
12+
key: string;
13+
cert: string;
14+
};
15+
}
16+
17+
const defaultConfig: IConfig = {
18+
port: 9000,
19+
expire_timeout: 5000,
20+
alive_timeout: 60000,
21+
key: "peerjs",
22+
path: "/myapp",
23+
concurrent_limit: 5000,
24+
allow_discovery: false,
25+
proxied: false,
26+
cleanup_out_msgs: 1000,
27+
ssl: {
28+
key: "",
29+
cert: ""
30+
}
31+
};
32+
33+
export default defaultConfig;

dist/app.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "PeerJS Server",
3+
"description": "A server side element to broker connections between PeerJS clients.",
4+
"website": "http://peerjs.com/"
5+
}

dist/config/index.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
const defaultConfig = {
4+
port: 9000,
5+
expire_timeout: 5000,
6+
alive_timeout: 60000,
7+
key: "peerjs",
8+
path: "/myapp",
9+
concurrent_limit: 5000,
10+
allow_discovery: false,
11+
proxied: false,
12+
cleanup_out_msgs: 1000,
13+
ssl: {
14+
key: "",
15+
cert: ""
16+
}
17+
};
18+
exports.default = defaultConfig;

dist/src/api/index.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const body_parser_1 = __importDefault(require("body-parser"));
7+
const cors_1 = __importDefault(require("cors"));
8+
const express_1 = __importDefault(require("express"));
9+
const app_json_1 = __importDefault(require("../../app.json"));
10+
const auth_1 = require("./middleware/auth");
11+
const calls_1 = __importDefault(require("./v1/calls"));
12+
const public_1 = __importDefault(require("./v1/public"));
13+
exports.Api = ({ config, realm, messageHandler }) => {
14+
const authMiddleware = new auth_1.AuthMiddleware(config, realm);
15+
const app = express_1.default.Router();
16+
const jsonParser = body_parser_1.default.json();
17+
app.use(cors_1.default());
18+
app.get("/", (_, res) => {
19+
res.send(app_json_1.default);
20+
});
21+
app.use("/:key", public_1.default({ config, realm }));
22+
app.use("/:key/:id/:token", authMiddleware.handle, jsonParser, calls_1.default({ realm, messageHandler }));
23+
return app;
24+
};

dist/src/api/middleware/auth/index.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
const enums_1 = require("../../../enums");
4+
class AuthMiddleware {
5+
constructor(config, realm) {
6+
this.config = config;
7+
this.realm = realm;
8+
}
9+
handle(req, res, next) {
10+
const { id, token, key } = req.params;
11+
if (key !== this.config.key) {
12+
return res.status(401).send(enums_1.Errors.INVALID_KEY);
13+
}
14+
if (!id) {
15+
return res.sendStatus(401);
16+
}
17+
const client = this.realm.getClientById(id);
18+
if (!client) {
19+
return res.sendStatus(401);
20+
}
21+
if (client.getToken() && token !== client.getToken()) {
22+
return res.status(401).send(enums_1.Errors.INVALID_TOKEN);
23+
}
24+
next();
25+
}
26+
}
27+
exports.AuthMiddleware = AuthMiddleware;

dist/src/api/middleware/middleware.js

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });

dist/src/api/v1/calls/index.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
exports.default = ({ realm, messageHandler }) => {
8+
const app = express_1.default.Router();
9+
const handle = (req, res, next) => {
10+
const { id } = req.params;
11+
if (!id) {
12+
return next();
13+
}
14+
const client = realm.getClientById(id);
15+
const { type, dst, payload } = req.body;
16+
const message = {
17+
type,
18+
src: id,
19+
dst,
20+
payload
21+
};
22+
messageHandler.handle(client, message);
23+
res.sendStatus(200);
24+
};
25+
app.post("/offer", handle);
26+
app.post("/candidate", handle);
27+
app.post("/answer", handle);
28+
app.post("/leave", handle);
29+
return app;
30+
};

dist/src/api/v1/public/index.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
exports.default = ({ config, realm }) => {
8+
const app = express_1.default.Router();
9+
// Retrieve guaranteed random ID.
10+
app.get("/id", (_, res) => {
11+
res.contentType("html");
12+
res.send(realm.generateClientId());
13+
});
14+
// Get a list of all peers for a key, enabled by the `allowDiscovery` flag.
15+
app.get("/peers", (_, res) => {
16+
if (config.allow_discovery) {
17+
const clientsIds = realm.getClientsIds();
18+
return res.send(clientsIds);
19+
}
20+
res.sendStatus(401);
21+
});
22+
return app;
23+
};

dist/src/enums.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var Errors;
4+
(function (Errors) {
5+
Errors["INVALID_KEY"] = "Invalid key provided";
6+
Errors["INVALID_TOKEN"] = "Invalid token provided";
7+
Errors["INVALID_WS_PARAMETERS"] = "No id, token, or key supplied to websocket server";
8+
Errors["CONNECTION_LIMIT_EXCEED"] = "Server has reached its concurrent user limit";
9+
})(Errors = exports.Errors || (exports.Errors = {}));
10+
var MessageType;
11+
(function (MessageType) {
12+
MessageType["OPEN"] = "OPEN";
13+
MessageType["LEAVE"] = "LEAVE";
14+
MessageType["CANDIDATE"] = "CANDIDATE";
15+
MessageType["OFFER"] = "OFFER";
16+
MessageType["ANSWER"] = "ANSWER";
17+
MessageType["EXPIRE"] = "EXPIRE";
18+
MessageType["HEARTBEAT"] = "HEARTBEAT";
19+
MessageType["ID_TAKEN"] = "ID-TAKEN";
20+
MessageType["ERROR"] = "ERROR";
21+
})(MessageType = exports.MessageType || (exports.MessageType = {}));

0 commit comments

Comments
 (0)