Fix SignalR paths if RootPath is used

This commit is contained in:
nicolas.dorier
2019-03-09 16:08:31 +09:00
parent e8a346182b
commit 75974037bc
10 changed files with 32 additions and 7 deletions

View File

@@ -109,11 +109,13 @@ namespace BTCPayServer.Controllers
return NotFound("A Target Currency must be set for this app in order to be loadable."); return NotFound("A Target Currency must be set for this app in order to be loadable.");
} }
if (settings.Enabled) return View(await _AppService.GetAppInfo(appId)); var appInfo = (ViewCrowdfundViewModel)(await _AppService.GetAppInfo(appId));
appInfo.HubPath = AppHub.GetHubPath(this.Request);
if (settings.Enabled) return View(appInfo);
if(!isAdmin) if(!isAdmin)
return NotFound(); return NotFound();
return View(await _AppService.GetAppInfo(appId)); return View(appInfo);
} }
[HttpPost] [HttpPost]
@@ -137,7 +139,7 @@ namespace BTCPayServer.Controllers
} }
var info = (ViewCrowdfundViewModel)await _AppService.GetAppInfo(appId); var info = (ViewCrowdfundViewModel)await _AppService.GetAppInfo(appId);
info.HubPath = AppHub.GetHubPath(this.Request);
if (!isAdmin && if (!isAdmin &&
((settings.StartDate.HasValue && DateTime.Now < settings.StartDate) || ((settings.StartDate.HasValue && DateTime.Now < settings.StartDate) ||
(settings.EndDate.HasValue && DateTime.Now > settings.EndDate) || (settings.EndDate.HasValue && DateTime.Now > settings.EndDate) ||

View File

@@ -215,6 +215,7 @@ namespace BTCPayServer.Controllers
public async Task<IActionResult> ViewPaymentRequest(string id) public async Task<IActionResult> ViewPaymentRequest(string id)
{ {
var result = await _PaymentRequestService.GetPaymentRequest(id, GetUserId()); var result = await _PaymentRequestService.GetPaymentRequest(id, GetUserId());
result.HubPath = PaymentRequestHub.GetHubPath(this.Request);
if (result == null) if (result == null)
{ {
return NotFound(); return NotFound();

View File

@@ -174,8 +174,8 @@ namespace BTCPayServer.Hosting
app.UseAuthentication(); app.UseAuthentication();
app.UseSignalR(route => app.UseSignalR(route =>
{ {
route.MapHub<AppHub>("/apps/hub"); AppHub.Register(route);
route.MapHub<PaymentRequestHub>("/payment-requests/hub"); PaymentRequestHub.Register(route);
}); });
app.UseWebSockets(); app.UseWebSockets();
app.UseStatusCodePages(); app.UseStatusCodePages();

View File

@@ -10,6 +10,7 @@ namespace BTCPayServer.Models.AppViewModels
{ {
public class ViewCrowdfundViewModel public class ViewCrowdfundViewModel
{ {
public string HubPath { get; set; }
public string StatusMessage{ get; set; } public string StatusMessage{ get; set; }
public string StoreId { get; set; } public string StoreId { get; set; }
public string AppId { get; set; } public string AppId { get; set; }

View File

@@ -134,6 +134,7 @@ namespace BTCPayServer.Models.PaymentRequestViewModels
public string AmountCollectedFormatted { get; set; } public string AmountCollectedFormatted { get; set; }
public string AmountFormatted { get; set; } public string AmountFormatted { get; set; }
public bool AnyPendingInvoice { get; set; } public bool AnyPendingInvoice { get; set; }
public string HubPath { get; set; }
public class PaymentRequestInvoice public class PaymentRequestInvoice
{ {

View File

@@ -12,6 +12,7 @@ using BTCPayServer.Services.PaymentRequests;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using BTCPayServer.Services.Apps; using BTCPayServer.Services.Apps;
using Microsoft.AspNetCore.Http;
namespace BTCPayServer.PaymentRequest namespace BTCPayServer.PaymentRequest
{ {
@@ -59,6 +60,15 @@ namespace BTCPayServer.PaymentRequest
break; break;
} }
} }
public static string GetHubPath(HttpRequest request)
{
return request.GetRelativePathOrAbsolute("/payment-requests/hub");
}
public static void Register(HubRouteBuilder route)
{
route.MapHub<PaymentRequestHub>("/payment-requests/hub");
}
} }
public class PaymentRequestStreamer : EventHostedServiceBase public class PaymentRequestStreamer : EventHostedServiceBase

View File

@@ -34,6 +34,7 @@
"BTCPAY_BTCEXTERNALCHARGE": "server=https://127.0.0.1:53280/mycharge/btc/;cookiefilepath=fake", "BTCPAY_BTCEXTERNALCHARGE": "server=https://127.0.0.1:53280/mycharge/btc/;cookiefilepath=fake",
"BTCPAY_BTCEXPLORERURL": "http://127.0.0.1:32838/", "BTCPAY_BTCEXPLORERURL": "http://127.0.0.1:32838/",
"BTCPAY_DISABLE-REGISTRATION": "false", "BTCPAY_DISABLE-REGISTRATION": "false",
"BTCPAY_ROOTPATH": "/test",
"ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_ENVIRONMENT": "Development",
"BTCPAY_CHAINS": "btc,ltc", "BTCPAY_CHAINS": "btc,ltc",
"BTCPAY_POSTGRES": "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver", "BTCPAY_POSTGRES": "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver",

View File

@@ -2,6 +2,7 @@ using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using BTCPayServer.Controllers; using BTCPayServer.Controllers;
using BTCPayServer.Models.AppViewModels; using BTCPayServer.Models.AppViewModels;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@@ -62,5 +63,13 @@ namespace BTCPayServer.Services.Apps
} }
public static string GetHubPath(HttpRequest request)
{
return request.GetRelativePathOrAbsolute("/apps/hub");
}
public static void Register(HubRouteBuilder route)
{
route.MapHub<AppHub>("/apps/hub");
}
} }
} }

View File

@@ -1,7 +1,7 @@
var hubListener = function(){ var hubListener = function(){
var connection = new signalR.HubConnectionBuilder().withUrl("/apps/hub").build(); var connection = new signalR.HubConnectionBuilder().withUrl(srvModel.hubPath).build();
connection.onclose(function(){ connection.onclose(function(){
eventAggregator.$emit("connection-lost"); eventAggregator.$emit("connection-lost");

View File

@@ -1,6 +1,6 @@
var hubListener = function () { var hubListener = function () {
var connection = new signalR.HubConnectionBuilder().withUrl("/payment-requests/hub").build(); var connection = new signalR.HubConnectionBuilder().withUrl(srvModel.hubPath).build();
connection.onclose(function () { connection.onclose(function () {
eventAggregator.$emit("connection-lost"); eventAggregator.$emit("connection-lost");