Skip to content

Commit

Permalink
Merge 8705c9f into 400a436
Browse files Browse the repository at this point in the history
  • Loading branch information
piranna committed Mar 31, 2021
2 parents 400a436 + 8705c9f commit 5b68b18
Show file tree
Hide file tree
Showing 5 changed files with 6,096 additions and 643 deletions.
2 changes: 2 additions & 0 deletions lib/fast-tracker.ts
Expand Up @@ -37,6 +37,7 @@ export class FastTracker implements Tracker {

// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility
readonly #swarms = new Map<string, Swarm>();

// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility
readonly #peers = new Map<string, PeerContext>();

Expand Down Expand Up @@ -367,6 +368,7 @@ class Swarm {

// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility
readonly #peers: PeerContext[] = [];

private completedPeers?: Set<string>;

public constructor(public readonly infoHash: string) { }
Expand Down
39 changes: 37 additions & 2 deletions lib/run-uws-tracker.ts
Expand Up @@ -16,11 +16,16 @@
*/

import { readFileSync } from "fs";
import { HttpResponse, HttpRequest } from "uWebSockets.js";
import { extname } from "path";

import * as Debug from "debug";
import { UWebSocketsTracker } from "./uws-tracker";
import { contentType } from "mime-types";
import { HttpResponse, HttpRequest } from "uWebSockets.js";

import { FastTracker } from "./fast-tracker";
import { Tracker } from "./tracker";
import { UWebSocketsTracker } from "./uws-tracker";


// eslint-disable-next-line new-cap
const debugRequests = Debug("wt-tracker:uws-tracker-requests");
Expand Down Expand Up @@ -203,6 +208,7 @@ function buildServer(
const status = "404 Not Found";
response.writeStatus(status).end(status);
} else {
response.writeHeader("Content-Type", "text/html; charset=utf-8");
response.end(indexHtml);
}
},
Expand Down Expand Up @@ -235,6 +241,35 @@ function buildServer(
memory: process.memoryUsage(),
}));
},
).get(
"/*",
(response: HttpResponse, request: HttpRequest) => {
debugRequest(server, request);

const path = request.getUrl();

let data = undefined;

try {
data = readFileSync(`${process.cwd()}${path}`);
} catch (err) {
console.warn(err);
}

if (data === undefined) {
const status = "404 Not Found";
response.writeStatus(status).end(status);
} else {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const type = contentType(extname(path)) as string | false;

if (type !== false) {
response.writeHeader("Content-Type", type);
}

response.end(data);
}
},
).any(
"/*",
(response: HttpResponse, request: HttpRequest) => {
Expand Down
26 changes: 15 additions & 11 deletions lib/uws-tracker.ts
Expand Up @@ -53,7 +53,9 @@ export class UWebSocketsTracker {
readonly #app: TemplatedApp;

private webSocketsCount = 0;

private validateOrigin = false;

private readonly maxConnections: number;

public get app(): TemplatedApp {
Expand Down Expand Up @@ -174,17 +176,21 @@ export class UWebSocketsTracker {
private readonly onOpen = (ws: WebSocket, request: HttpRequest): void => {
this.webSocketsCount++;

const url = request.getUrl();
const query = request.getQuery();
const origin = request.getHeader("origin");

if ((this.maxConnections !== 0) && (this.webSocketsCount > this.maxConnections)) {
if (debugRequestsEnabled) {
debugRequests(
this.settings.server.host,
this.settings.server.port,
"ws-denied-max-connections url:",
request.getUrl(),
url,
"query:",
request.getQuery(),
query,
"origin:",
request.getHeader("origin"),
origin,
"total:",
this.webSocketsCount,
);
Expand All @@ -194,12 +200,10 @@ export class UWebSocketsTracker {
}

if (debugWebSocketsEnabled) {
debugWebSockets("connected via URL", request.getUrl());
debugWebSockets("connected via URL", url);
}

if (this.validateOrigin) {
const origin = request.getHeader("origin");

const shoulDeny = (
(this.settings.access.denyEmptyOrigin && (origin.length === 0))
|| (this.settings.access.denyOrigins?.includes(origin) === true)
Expand All @@ -212,9 +216,9 @@ export class UWebSocketsTracker {
this.settings.server.host,
this.settings.server.port,
"ws-denied url:",
request.getUrl(),
url,
"query:",
request.getQuery(),
query,
"origin:",
origin,
"total:",
Expand All @@ -231,11 +235,11 @@ export class UWebSocketsTracker {
this.settings.server.host,
this.settings.server.port,
"ws-open url:",
request.getUrl(),
url,
"query:",
request.getQuery(),
query,
"origin:",
request.getHeader("origin"),
origin,
"total:",
this.webSocketsCount,
);
Expand Down

0 comments on commit 5b68b18

Please sign in to comment.