diff --git a/Kyoo/Extensions.cs b/Kyoo/Extensions.cs
new file mode 100644
index 00000000..b5ae5faa
--- /dev/null
+++ b/Kyoo/Extensions.cs
@@ -0,0 +1,17 @@
+using System.Data.Common;
+using Microsoft.Extensions.Configuration;
+
+namespace Kyoo
+{
+ public static class Extensions
+ {
+ public static string GetDatabaseConnection(this IConfiguration config)
+ {
+ DbConnectionStringBuilder builder = new();
+ IConfigurationSection section = config.GetSection("Database");
+ foreach (IConfigurationSection child in section.GetChildren())
+ builder[child.Key] = child.Value;
+ return builder.ConnectionString;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Kyoo/Kyoo.csproj b/Kyoo/Kyoo.csproj
index b0630342..5be7ba1d 100644
--- a/Kyoo/Kyoo.csproj
+++ b/Kyoo/Kyoo.csproj
@@ -98,7 +98,7 @@
-
+
diff --git a/Kyoo/Startup.cs b/Kyoo/Startup.cs
index 0ff5577f..dc28f787 100644
--- a/Kyoo/Startup.cs
+++ b/Kyoo/Startup.cs
@@ -58,14 +58,14 @@ namespace Kyoo
services.AddDbContext(options =>
{
- options.UseNpgsql(_configuration.GetConnectionString("Database"));
+ options.UseNpgsql(_configuration.GetDatabaseConnection());
// .EnableSensitiveDataLogging()
// .UseLoggerFactory(LoggerFactory.Create(builder => builder.AddConsole()));
}, ServiceLifetime.Transient);
services.AddDbContext(options =>
{
- options.UseNpgsql(_configuration.GetConnectionString("Database"));
+ options.UseNpgsql(_configuration.GetDatabaseConnection());
});
string assemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
@@ -89,13 +89,13 @@ namespace Kyoo
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
- builder.UseNpgsql(_configuration.GetConnectionString("Database"),
+ builder.UseNpgsql(_configuration.GetDatabaseConnection(),
sql => sql.MigrationsAssembly(assemblyName));
})
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder =>
- builder.UseNpgsql(_configuration.GetConnectionString("Database"),
+ builder.UseNpgsql(_configuration.GetDatabaseConnection(),
sql => sql.MigrationsAssembly(assemblyName));
options.EnableTokenCleanup = true;
})
diff --git a/Kyoo/appsettings.json b/Kyoo/appsettings.json
index 3cc8f735..c49df121 100644
--- a/Kyoo/appsettings.json
+++ b/Kyoo/appsettings.json
@@ -3,6 +3,18 @@
"public_url": "http://localhost:5000/",
"http_port": 5000,
"https_port": 44300,
+
+ "Database": {
+ "Server": "127.0.0.1",
+ "Port": "5432",
+ "Database": "kyooDB",
+ "User Id": "kyoo",
+ "Password": "kyooPassword",
+ "Pooling": "true",
+ "MaxPoolSize": "95",
+ "Timeout": "30"
+ },
+
"Logging": {
"LogLevel": {
"Default": "Warning",
@@ -15,9 +27,6 @@
},
"AllowedHosts": "*",
- "ConnectionStrings": {
- "Database": "Server=127.0.0.1; Port=5432; Database=kyooDB; User Id=kyoo; Password=kyooPassword; Pooling=true; MaxPoolSize=95; Timeout=30;"
- },
"parallelTasks": "1",
"scheduledTasks": {
@@ -36,4 +45,4 @@
"newUserPermissions": "read,play,write,admin",
"regex": "(?:\\/(?.*?))?\\/(?.*?)(?: \\(\\d+\\))?\\/\\k(?: \\(\\d+\\))?(?:(?: S(?\\d+)E(?\\d+))| (?\\d+))?.*$",
"subtitleRegex": "^(?.*)\\.(?\\w{1,3})\\.(?default\\.)?(?forced\\.)?.*$"
-}
\ No newline at end of file
+}
diff --git a/Kyoo/regexTester.sh b/Kyoo/regexTester.sh
deleted file mode 100755
index 2b5317cb..00000000
--- a/Kyoo/regexTester.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /usr/bin/bash
-
-REGEX="(?:\/(?.*?))?\/(?.*)(?: \(\d+\))?\/\k(?: \(\d+\))?(?:(?: S(?\d+)E(?\d+))| (?\d+))?.*$"
-
-find "$1" -type f \( -name '*.mp4' -o -name '*.mkv' \) | cut -c $((${#1} + 1))- | grep -viP "$REGEX"
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..12f4f0ea
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,26 @@
+version: "3.8"
+
+services:
+ kyoo:
+ build: "."
+ restart: on-failure
+ environment:
+ - Database__Server=postgres
+ ports:
+ - 80:5000
+ depends_on:
+ - postgres
+ volumes:
+ - kyoo:/var/lib/kyoo
+ postgres:
+ image: "postgres"
+ restart: on-failure
+ environment:
+ - POSTGRES_USER=kyoo
+ - POSTGRES_PASSWORD=kyooPassword
+ volumes:
+ - db:/var/lib/postgresql/data
+
+volumes:
+ kyoo:
+ db: