Merge pull request #114 from Moonlight-Panel/DotnetRuntimeSettings
dotnet runtime settings
This commit is contained in:
commit
2de73f948f
|
@ -38,6 +38,17 @@ public static class ParseHelper
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ToDotnetVersionName(string raw)
|
||||||
|
{
|
||||||
|
var dockerImageTag = raw.Split(":").Last();
|
||||||
|
|
||||||
|
var name = dockerImageTag.Replace("_", ".")
|
||||||
|
.Replace("dotnetcore", ".NET Core ")
|
||||||
|
.Replace("dotnet", ".NET ");
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetHighestVersion(string[] versions)
|
public static string GetHighestVersion(string[] versions)
|
||||||
{
|
{
|
||||||
// Initialize the highest version to the first version in the array
|
// Initialize the highest version to the first version in the array
|
||||||
|
|
|
@ -58,12 +58,18 @@
|
||||||
if(Tags.Contains("javaversion"))
|
if(Tags.Contains("javaversion"))
|
||||||
Settings.Add("Java version", typeof(JavaRuntimeVersionSetting));
|
Settings.Add("Java version", typeof(JavaRuntimeVersionSetting));
|
||||||
|
|
||||||
|
if(Tags.Contains("dotnetversion"))
|
||||||
|
Settings.Add("Dotnet version", typeof(DotnetVersionSetting));
|
||||||
|
|
||||||
if(Tags.Contains("pythonfile"))
|
if(Tags.Contains("pythonfile"))
|
||||||
Settings.Add("Python file", typeof(PythonFileSetting));
|
Settings.Add("Python file", typeof(PythonFileSetting));
|
||||||
|
|
||||||
if(Tags.Contains("javafile"))
|
if(Tags.Contains("javafile"))
|
||||||
Settings.Add("Jar file", typeof(JavaFileSetting));
|
Settings.Add("Jar file", typeof(JavaFileSetting));
|
||||||
|
|
||||||
|
if(Tags.Contains("dotnetfile"))
|
||||||
|
Settings.Add("Dll file", typeof(DotnetFileSetting));
|
||||||
|
|
||||||
Settings.Add("Rename", typeof(ServerRenameSetting));
|
Settings.Add("Rename", typeof(ServerRenameSetting));
|
||||||
|
|
||||||
Settings.Add("Reset", typeof(ServerResetSetting));
|
Settings.Add("Reset", typeof(ServerResetSetting));
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
@using Task = System.Threading.Tasks.Task
|
||||||
|
@using Moonlight.App.Repositories.Servers
|
||||||
|
@using Moonlight.Shared.Components.FileManagerPartials
|
||||||
|
@using Moonlight.App.Database.Entities
|
||||||
|
@using Moonlight.App.Helpers
|
||||||
|
@using Moonlight.App.Helpers.Files
|
||||||
|
@using Moonlight.App.Services
|
||||||
|
|
||||||
|
@inject ServerRepository ServerRepository
|
||||||
|
@inject ServerService ServerService
|
||||||
|
@inject SmartTranslateService SmartTranslateService
|
||||||
|
|
||||||
|
<div class="col">
|
||||||
|
<div class="card card-body p-0">
|
||||||
|
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||||
|
<label class="me-2 form-label">
|
||||||
|
<TL>Dll file</TL>
|
||||||
|
</label>
|
||||||
|
<table class="w-100">
|
||||||
|
<tr>
|
||||||
|
<td class="w-100">
|
||||||
|
<input type="text" class="form-control disabled" disabled="" value="@(PathAndFile)"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button @onclick="Show" class="btn btn-primary ms-2"><TL>Change</TL></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</LazyLoader>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<FileSelectModal @ref="FileSelectModal"
|
||||||
|
Access="Access"
|
||||||
|
Filter="@(x => !x.IsFile || x.Name.EndsWith(".dll"))"
|
||||||
|
Title="@(SmartTranslateService.Translate("Select dll to execute on start"))"
|
||||||
|
OnlyFolder="false"
|
||||||
|
OnCancel="() => { return Task.CompletedTask; }"
|
||||||
|
OnSubmit="OnSubmit">
|
||||||
|
</FileSelectModal>
|
||||||
|
|
||||||
|
@code
|
||||||
|
{
|
||||||
|
[CascadingParameter]
|
||||||
|
public Server CurrentServer { get; set; }
|
||||||
|
|
||||||
|
private string PathAndFile;
|
||||||
|
private FileAccess Access;
|
||||||
|
|
||||||
|
private FileSelectModal FileSelectModal;
|
||||||
|
private LazyLoader LazyLoader;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
Access = await ServerService.CreateFileAccess(CurrentServer, null!);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Load(LazyLoader lazyLoader)
|
||||||
|
{
|
||||||
|
var v = CurrentServer.Variables.FirstOrDefault(x => x.Key == "MAIN_DLL");
|
||||||
|
|
||||||
|
PathAndFile = v != null ? v.Value : "";
|
||||||
|
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Show()
|
||||||
|
{
|
||||||
|
await FileSelectModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnSubmit(string path)
|
||||||
|
{
|
||||||
|
var v = CurrentServer.Variables.FirstOrDefault(x => x.Key == "MAIN_DLL");
|
||||||
|
|
||||||
|
if (v != null)
|
||||||
|
{
|
||||||
|
v.Value = path.TrimStart("/"[0]);
|
||||||
|
|
||||||
|
ServerRepository.Update(CurrentServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
await LazyLoader.Reload();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
@using Moonlight.App.Services
|
||||||
|
@using Moonlight.App.Helpers
|
||||||
|
@using Moonlight.App.Repositories
|
||||||
|
@using Moonlight.App.Repositories.Servers
|
||||||
|
@using Microsoft.EntityFrameworkCore
|
||||||
|
@using Moonlight.App.Database.Entities
|
||||||
|
|
||||||
|
@inject ServerRepository ServerRepository
|
||||||
|
@inject ImageRepository ImageRepository
|
||||||
|
@inject SmartTranslateService TranslationService
|
||||||
|
|
||||||
|
<div class="col">
|
||||||
|
<div class="card card-body p-0">
|
||||||
|
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||||
|
<label class="mb-2 form-label"><TL>Dotnet version</TL></label>
|
||||||
|
<table class="w-100">
|
||||||
|
<tr>
|
||||||
|
<td class="w-100">
|
||||||
|
<select @bind="ImageIndex" class="form-select">
|
||||||
|
@foreach (var image in DockerImages)
|
||||||
|
{
|
||||||
|
if (image.Id == SelectedImage.Id)
|
||||||
|
{
|
||||||
|
<option value="@(image.Id)" selected="selected">
|
||||||
|
@(ParseHelper.ToDotnetVersionName(image.Name))
|
||||||
|
</option>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<option value="@(image.Id)">
|
||||||
|
@(ParseHelper.ToDotnetVersionName(image.Name))
|
||||||
|
</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<WButton
|
||||||
|
OnClick="Save"
|
||||||
|
Text="@(TranslationService.Translate("Change"))"
|
||||||
|
WorkingText="@(TranslationService.Translate("Changing"))"
|
||||||
|
CssClasses="btn-primary ms-2">
|
||||||
|
</WButton>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</LazyLoader>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code
|
||||||
|
{
|
||||||
|
[CascadingParameter]
|
||||||
|
public Server CurrentServer { get; set; }
|
||||||
|
|
||||||
|
private LazyLoader LazyLoader;
|
||||||
|
private List<DockerImage> DockerImages;
|
||||||
|
private DockerImage SelectedImage;
|
||||||
|
|
||||||
|
private int ImageIndex
|
||||||
|
{
|
||||||
|
get => SelectedImage.Id;
|
||||||
|
set { SelectedImage = DockerImages.First(x => x.Id == value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private Task Load(LazyLoader lazyLoader)
|
||||||
|
{
|
||||||
|
var image = ImageRepository
|
||||||
|
.Get()
|
||||||
|
.Include(x => x.DockerImages)
|
||||||
|
.First(x => x.Id == CurrentServer.Image.Id);
|
||||||
|
|
||||||
|
DockerImages = image.DockerImages;
|
||||||
|
|
||||||
|
SelectedImage = DockerImages[CurrentServer.DockerImageIndex];
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Save()
|
||||||
|
{
|
||||||
|
CurrentServer.DockerImageIndex = DockerImages.IndexOf(SelectedImage);
|
||||||
|
|
||||||
|
ServerRepository.Update(CurrentServer);
|
||||||
|
|
||||||
|
await LazyLoader.Reload();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue