diff --git a/Marechai.Database/Models/MarechaiContext.cs b/Marechai.Database/Models/MarechaiContext.cs index bd752cba..687d19cd 100644 --- a/Marechai.Database/Models/MarechaiContext.cs +++ b/Marechai.Database/Models/MarechaiContext.cs @@ -30,6 +30,7 @@ using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; namespace Marechai.Database.Models { @@ -102,11 +103,9 @@ namespace Marechai.Database.Models if(optionsBuilder.IsConfigured) return; - #warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http: //go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings. - optionsBuilder. - UseMySql("server=zeus.claunia.com;port=3306;user=marechai;password=marechaipass;database=marechai"); - - optionsBuilder.UseLazyLoadingProxies(); + IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); + IConfigurationRoot configuration = builder.Build(); + optionsBuilder.UseMySql(configuration.GetConnectionString("DefaultConnection")).UseLazyLoadingProxies(); } protected override void OnModelCreating(ModelBuilder modelBuilder) diff --git a/Marechai/Marechai.csproj b/Marechai/Marechai.csproj index c95d001c..db035f5d 100644 --- a/Marechai/Marechai.csproj +++ b/Marechai/Marechai.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 3.0.99.1526 + 3.0.99.1529 Canary Islands Computer Museum Copyright © 2003-2020 Natalia Portillo Canary Islands Computer Museum Website diff --git a/Marechai/Program.cs b/Marechai/Program.cs index 998e0fd1..ae8fca9c 100644 --- a/Marechai/Program.cs +++ b/Marechai/Program.cs @@ -37,6 +37,7 @@ using Marechai.Helpers; using Markdig; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Version = DiscImageChef.Interop.Version; @@ -114,12 +115,54 @@ namespace Marechai Console.WriteLine("\u001b[31;1mUpdating MySQL database without Entity Framework if it exists...\u001b[0m"); Database = new Mysql(); - bool res = Database.OpenDb("zeus.claunia.com", "marechai", "marechai", "marechaipass", 3306); - if(res) + IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); + IConfigurationRoot configuration = builder.Build(); + string connectionString = configuration.GetConnectionString("DefaultConnection"); + + if(connectionString is null) + Console.WriteLine("\u001b[31;1mCould not find a correct connection string...\u001b[0m"); + else { - Console.WriteLine("\u001b[31;1mClosing database...\u001b[0m"); - Database.CloseDb(); + string server = null, user = null, database = null, password = null; + ushort port = 0; + string[] pieces = connectionString.Split(";"); + + foreach(string piece in pieces) + { + if(piece.StartsWith("server=", StringComparison.Ordinal)) + server = piece.Substring(7); + else if(piece.StartsWith("user=", StringComparison.Ordinal)) + user = piece.Substring(5); + else if(piece.StartsWith("password=", StringComparison.Ordinal)) + password = piece.Substring(9); + else if(piece.StartsWith("database=", StringComparison.Ordinal)) + database = piece.Substring(9); + else if(piece.StartsWith("port=", StringComparison.Ordinal)) + { + string portString = piece.Substring(5); + + ushort.TryParse(portString, out port); + } + } + + if(server is null || + user is null || + database is null || + password is null || + port == 0) + Console.WriteLine("\u001b[31;1mCould not find a correct connection string...\u001b[0m"); + + else + { + bool res = Database.OpenDb(server, user, database, password, port); + + if(res) + { + Console.WriteLine("\u001b[31;1mClosing database...\u001b[0m"); + Database.CloseDb(); + } + } } DateTime start = DateTime.Now;