Add setting to store added torrents and magnets to a directory.

This commit is contained in:
Roger Far 2024-01-05 09:24:02 -07:00
parent 32dfca5fb1
commit f4e7a9bcf7
2 changed files with 35 additions and 4 deletions

View file

@ -70,6 +70,10 @@ Supports the following parameters:
[DisplayName("Authentication Type")]
[Description("How to authenticate with the client. WARNING: when set to None anyone with access to the URL can use the client without any credentials.")]
public AuthenticationType AuthenticationType { get; set; } = AuthenticationType.UserNamePassword;
[DisplayName("Copy added torrent files")]
[Description("When a torrent file or magnet is added, create a copy in this directory.")]
public String? CopyAddedTorrents { get; set; } = null;
}
public class DbSettingsDownloadClient

View file

@ -1,7 +1,6 @@
using System.Diagnostics;
using System.Globalization;
using System.Text;
using System.IO;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using MonoTorrent;
@ -134,6 +133,23 @@ public class Torrents
Log($"Adding {hash} magnet link {magnetLink}", newTorrent);
if (!String.IsNullOrWhiteSpace(Settings.Get.General.CopyAddedTorrents))
{
try
{
if (!Directory.Exists(Settings.Get.General.CopyAddedTorrents))
{
Directory.CreateDirectory(Settings.Get.General.CopyAddedTorrents);
}
await File.WriteAllTextAsync(Path.Combine(Settings.Get.General.CopyAddedTorrents, $"{torrent.Hash}.magnet"), magnetLink);
}
catch (Exception ex)
{
_logger.LogError(ex, $"Unable to create torrent blackhole directory: {Settings.Get.General.CopyAddedTorrents}: {ex.Message}");
}
}
return newTorrent;
}
@ -159,11 +175,22 @@ public class Torrents
var newTorrent = await Add(id, hash, fileAsBase64, true, torrent);
if (!Directory.Exists("/data/db/blackhole/"))
if (!String.IsNullOrWhiteSpace(Settings.Get.General.CopyAddedTorrents))
{
Directory.CreateDirectory("/data/db/blackhole/");
try
{
if (!Directory.Exists(Settings.Get.General.CopyAddedTorrents))
{
Directory.CreateDirectory(Settings.Get.General.CopyAddedTorrents);
}
await File.WriteAllBytesAsync(Path.Combine(Settings.Get.General.CopyAddedTorrents, $"{torrent.Hash}.torrent"), bytes);
}
catch (Exception ex)
{
_logger.LogError(ex, $"Unable to create torrent blackhole directory: {Settings.Get.General.CopyAddedTorrents}: {ex.Message}");
}
}
File.WriteAllBytes ("/data/db/blackhole/" + hash + ".torrent", bytes);
return newTorrent;
}