API Key for signalR connections

This commit is contained in:
Mark McDowall 2017-07-26 07:09:22 -07:00
parent 5c4dc9ccb1
commit d257b926dc
No known key found for this signature in database
GPG Key ID: D4CEFA9A718052E0
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 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;
}
} }
} }

View File

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