@@ -27,14 +27,15 @@ inherits(Server, EventEmitter)
2727 * metrics from clients that help the tracker keep overall statistics about the torrent.
2828 * Responses include a peer list that helps the client participate in the torrent.
2929 *
30- * @param {Object } opts options object
31- * @param {Number } opts.interval tell clients to announce on this interval (ms)
32- * @param {Number } opts.trustProxy trust 'x-forwarded-for' header from reverse proxy
33- * @param {boolean } opts.http start an http server? (default: true)
34- * @param {boolean } opts.udp start a udp server? (default: true)
35- * @param {boolean } opts.ws start a websocket server? (default: true)
36- * @param {boolean } opts.stats enable web-based statistics? (default: true)
37- * @param {function } opts.filter black/whitelist fn for disallowing/allowing torrents
30+ * @param {Object } opts options object
31+ * @param {Number } opts.interval tell clients to announce on this interval (ms)
32+ * @param {Number } opts.trustProxy trust 'x-forwarded-for' header from reverse proxy
33+ * @param {boolean } opts.http start an http server? (default: true)
34+ * @param {boolean } opts.udp start a udp server? (default: true)
35+ * @param {boolean } opts.ws start a websocket server? (default: true)
36+ * @param {boolean } opts.stats enable web-based statistics? (default: true)
37+ * @param {function } opts.filter black/whitelist fn for disallowing/allowing torrents
38+ * @param {function } opts.requestHandler functions to handle params / response
3839 */
3940function Server ( opts ) {
4041 var self = this
@@ -64,6 +65,18 @@ function Server (opts) {
6465 self . udp6 = null
6566 self . ws = null
6667
68+ self . _reqHandler = opts . requestHandler || { }
69+ if ( ! self . _reqHandler . getParams ) {
70+ self . _reqHandler . getParams = function ( params ) {
71+ return params
72+ }
73+ }
74+ if ( ! self . _reqHandler . getResponse ) {
75+ self . _reqHandler . getResponse = function ( params , cb ) {
76+ return cb
77+ }
78+ }
79+
6780 // start an http tracker unless the user explictly says no
6881 if ( opts . http !== false ) {
6982 self . http = http . createServer ( )
@@ -636,6 +649,8 @@ Server.prototype._onWebSocketError = function (socket, err) {
636649
637650Server . prototype . _onRequest = function ( params , cb ) {
638651 var self = this
652+ params = self . _reqHandler . getParams ( params )
653+ cb = self . _reqHandler . getResponse ( params , cb )
639654 if ( params && params . action === common . ACTIONS . CONNECT ) {
640655 cb ( null , { action : common . ACTIONS . CONNECT } )
641656 } else if ( params && params . action === common . ACTIONS . ANNOUNCE ) {
0 commit comments