2
0

Compare commits

..

2 Commits

Author SHA1 Message Date
99df9a9dfd Fix #248
Move contents of old DownloadLocation and WorkingDirectory to new paths. Overwrite existing files, and add from oldPath.
2024-09-16 20:10:38 +02:00
77bb309dfa Fix #248 double closing OutputStream in response 2024-09-16 19:58:26 +02:00
2 changed files with 30 additions and 9 deletions

View File

@ -208,7 +208,6 @@ public partial class Server : GlobalBase, IDisposable
response.ContentType = "image/jpeg"; response.ContentType = "image/jpeg";
response.AddHeader("Cache-Control", "max-age=600"); response.AddHeader("Cache-Control", "max-age=600");
stream.CopyTo(response.OutputStream); stream.CopyTo(response.OutputStream);
response.OutputStream.Close();
stream.Close(); stream.Close();
} }
else else

View File

@ -98,13 +98,12 @@ public static class TrangaSettings
public static void UpdateDownloadLocation(string newPath, bool moveFiles = true) public static void UpdateDownloadLocation(string newPath, bool moveFiles = true)
{ {
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
Directory.CreateDirectory(newPath, Directory.CreateDirectory(newPath, GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite);
GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite);
else else
Directory.CreateDirectory(newPath); Directory.CreateDirectory(newPath);
if (moveFiles && Directory.Exists(TrangaSettings.downloadLocation)) if (moveFiles)
Directory.Move(TrangaSettings.downloadLocation, newPath); MoveContentsOfDirectoryTo(TrangaSettings.downloadLocation, newPath);
TrangaSettings.downloadLocation = newPath; TrangaSettings.downloadLocation = newPath;
ExportSettings(); ExportSettings();
@ -113,15 +112,38 @@ public static class TrangaSettings
public static void UpdateWorkingDirectory(string newPath) public static void UpdateWorkingDirectory(string newPath)
{ {
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
Directory.CreateDirectory(newPath, Directory.CreateDirectory(newPath, GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite);
GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite);
else else
Directory.CreateDirectory(newPath); Directory.CreateDirectory(newPath);
Directory.Move(TrangaSettings.workingDirectory, newPath);
MoveContentsOfDirectoryTo(TrangaSettings.workingDirectory, newPath);
TrangaSettings.workingDirectory = newPath; TrangaSettings.workingDirectory = newPath;
ExportSettings(); ExportSettings();
} }
private static void MoveContentsOfDirectoryTo(string oldDir, string newDir)
{
string[] directoryPaths = Directory.GetDirectories(oldDir);
string[] filePaths = Directory.GetFiles(oldDir);
foreach (string file in filePaths)
{
string newPath = Path.Join(newDir, Path.GetFileName(file));
File.Move(file, newPath, true);
}
foreach(string directory in directoryPaths)
{
string? dirName = Path.GetDirectoryName(directory);
if(dirName is null)
continue;
string newPath = Path.Join(newDir, dirName);
if(Directory.Exists(newPath))
MoveContentsOfDirectoryTo(directory, newPath);
else
Directory.Move(directory, newPath);
}
}
public static void UpdateUserAgent(string? customUserAgent) public static void UpdateUserAgent(string? customUserAgent)
{ {
TrangaSettings.userAgent = customUserAgent ?? DefaultUserAgent; TrangaSettings.userAgent = customUserAgent ?? DefaultUserAgent;