-import * as bitTorrentTracker from 'bittorrent-tracker'
-import * as express from 'express'
-import * as http from 'http'
-import * as proxyAddr from 'proxy-addr'
-import { Server as WebSocketServer } from 'ws'
+import { Server as TrackerServer } from 'bittorrent-tracker'
+import express from 'express'
+import { createServer } from 'http'
+import proxyAddr from 'proxy-addr'
+import { WebSocketServer } from 'ws'
import { Redis } from '@server/lib/redis'
import { logger } from '../helpers/logger'
import { CONFIG } from '../initializers/config'
import { VideoFileModel } from '../models/video/video-file'
import { VideoStreamingPlaylistModel } from '../models/video/video-streaming-playlist'
-const TrackerServer = bitTorrentTracker.Server
-
const trackerRouter = express.Router()
let peersIps = {}
http: false,
udp: false,
ws: false,
- dht: false,
filter: async function (infoHash, params, cb) {
if (CONFIG.TRACKER.ENABLED === false) {
return cb(new Error('Tracker is disabled on this instance.'))
})
if (CONFIG.TRACKER.ENABLED !== false) {
-
trackerServer.on('error', function (err) {
logger.error('Error in tracker.', { err })
})
trackerServer.on('warning', function (err) {
+ const message = err.message || ''
+
+ if (CONFIG.LOG.LOG_TRACKER_UNKNOWN_INFOHASH === false && message.includes('Unknown infoHash')) {
+ return
+ }
+
logger.warn('Warning in tracker.', { err })
})
}
trackerRouter.get('/tracker/scrape', (req, res) => onHttpRequest(req, res, { action: 'scrape' }))
function createWebsocketTrackerServer (app: express.Application) {
- const server = http.createServer(app)
+ const server = createServer(app)
const wss = new WebSocketServer({ noServer: true })
wss.on('connection', function (ws, req) {
return
}
- return wss.handleUpgrade(request, socket, head, ws => wss.emit('connection', ws, request))
+ // FIXME: typings
+ return wss.handleUpgrade(request, socket as any, head, ws => wss.emit('connection', ws, request))
})
.catch(err => logger.error('Cannot check if tracker block ip exists.', { err }))
}