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 Microsoft.AspNet.SignalR.Infrastructure;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
namespace NzbDrone.SignalR namespace NzbDrone.SignalR
{ {
@ -12,9 +14,28 @@ namespace NzbDrone.SignalR
{ {
private IPersistentConnectionContext Context => ((ConnectionManager)GlobalHost.ConnectionManager).GetConnection(GetType()); 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) public void BroadcastMessage(SignalRMessage message)
{ {
Context.Connection.Broadcast(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 tryingToReconnect = false;
var messengerId = 'signalR'; 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) { this.signalRconnection.stateChanged(function(change) {
console.debug('SignalR: [{0}]'.format(getStatus(change.newState))); console.debug('SignalR: [{0}]'.format(getStatus(change.newState)));
@ -73,4 +73,4 @@ module.exports = {
return this; return this;
} }
}; };

Loading…
Cancel
Save