API Key for signalR connections (#54)

This commit is contained in:
Qstick 2017-08-17 21:29:20 -04:00 committed by GitHub
parent c02857963d
commit 3da6274211
2 changed files with 24 additions and 3 deletions

View File

@ -1,5 +1,7 @@
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Infrastructure;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
namespace NzbDrone.SignalR
{
@ -12,9 +14,28 @@ namespace NzbDrone.SignalR
{
private IPersistentConnectionContext Context => ((ConnectionManager)GlobalHost.ConnectionManager).GetConnection(GetType());
private static string API_KEY;
public NzbDronePersistentConnection(IConfigFileProvider configFileProvider)
{
API_KEY = configFileProvider.ApiKey;
}
public void BroadcastMessage(SignalRMessage message)
{
Context.Connection.Broadcast(message);
}
protected override bool AuthorizeRequest(IRequest request)
{
var apiKey = request.QueryString["apiKey"];
if (apiKey.IsNotNullOrWhiteSpace() && apiKey.Equals(API_KEY))
{
return true;
}
return false;
}
}
}

View File

@ -26,7 +26,7 @@ module.exports = {
var tryingToReconnect = false;
var messengerId = 'signalR';
this.signalRconnection = $.connection(StatusModel.get('urlBase') + '/signalr');
this.signalRconnection = $.connection(StatusModel.get('urlBase') + '/signalr', { apiKey: window.NzbDrone.ApiKey });
this.signalRconnection.stateChanged(function(change) {
console.debug('SignalR: [{0}]'.format(getStatus(change.newState)));
@ -73,4 +73,4 @@ module.exports = {
return this;
}
};
};