API Key for signalR connections (#54)

pull/57/head
Qstick 7 years ago committed by GitHub
parent c02857963d
commit 3da6274211

@ -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;
}
}
}

@ -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)));

Loading…
Cancel
Save