From b02542f3bed32130bfacfb9bd3bf38d8de5ffbd4 Mon Sep 17 00:00:00 2001 From: Kukks Date: Thu, 21 Jul 2022 11:09:51 +0200 Subject: [PATCH] Do not crash on bad language file --- BTCPayServer/Services/LanguageService.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/BTCPayServer/Services/LanguageService.cs b/BTCPayServer/Services/LanguageService.cs index f8d5165e1..2d9a8631a 100644 --- a/BTCPayServer/Services/LanguageService.cs +++ b/BTCPayServer/Services/LanguageService.cs @@ -7,6 +7,7 @@ using BTCPayServer.Client.Models; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; @@ -27,19 +28,29 @@ namespace BTCPayServer.Services public class LanguageService { + private readonly ILogger _logger; private readonly Language[] _languages; - public LanguageService(IWebHostEnvironment environment) + public LanguageService(IWebHostEnvironment environment, ILogger logger) { + _logger = logger; var path = environment.WebRootPath; path = Path.Combine(path, "locales"); var files = Directory.GetFiles(path, "*.json"); var result = new List(); foreach (var file in files) { - using var stream = new StreamReader(file); - var json = stream.ReadToEnd(); - result.Add(JObject.Parse(json).ToObject()); + try + { + + using var stream = new StreamReader(file); + var json = stream.ReadToEnd(); + result.Add(JObject.Parse(json).ToObject()); + } + catch (Exception e) + { + _logger.LogError(e, $"Could not parse language file {file}"); + } } _languages = result.ToArray();