X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Ftracker.ts;h=1deb8c40292f6ae997eb77004b858c1165481e56;hb=73471b1a52f242e86364ffb077ea6cadb3b07ae2;hp=53f1653b5bcd5fea221917feb2221ea4fa82bd74;hpb=cef534ed53e4518fe0acf581bfe880788d42fc36;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/tracker.ts b/server/controllers/tracker.ts index 53f1653b5..1deb8c402 100644 --- a/server/controllers/tracker.ts +++ b/server/controllers/tracker.ts @@ -6,6 +6,7 @@ import * as proxyAddr from 'proxy-addr' import { Server as WebSocketServer } from 'ws' import { CONFIG, TRACKER_RATE_LIMITS } from '../initializers/constants' import { VideoFileModel } from '../models/video/video-file' +import { parse } from 'url' const TrackerServer = bitTorrentTracker.Server @@ -61,14 +62,24 @@ trackerRouter.get('/tracker/scrape', (req, res) => onHttpRequest(req, res, { act function createWebsocketTrackerServer (app: express.Application) { const server = http.createServer(app) - const wss = new WebSocketServer({ server: server, path: '/tracker/socket' }) + const wss = new WebSocketServer({ noServer: true }) + wss.on('connection', function (ws, req) { - const ip = proxyAddr(req, CONFIG.TRUST_PROXY) - ws['ip'] = ip + ws['ip'] = proxyAddr(req, CONFIG.TRUST_PROXY) trackerServer.onWebSocketConnection(ws) }) + server.on('upgrade', (request, socket, head) => { + const pathname = parse(request.url).pathname + + if (pathname === '/tracker/socket') { + wss.handleUpgrade(request, socket, head, ws => wss.emit('connection', ws, request)) + } + + // Don't destroy socket, we have Socket.IO too + }) + return server }