Add project files.
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
|
||||
WORKDIR /src
|
||||
COPY ["Elsa.Studio.ServerApp/Elsa.Studio.ServerApp.csproj", "Elsa.Studio.ServerApp/"]
|
||||
RUN dotnet restore "Elsa.Studio.ServerApp/Elsa.Studio.ServerApp.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/Elsa.Studio.ServerApp"
|
||||
RUN dotnet build "Elsa.Studio.ServerApp.csproj" -c Release -o /app/build
|
||||
|
||||
FROM build AS publish
|
||||
RUN dotnet publish "Elsa.Studio.ServerApp.csproj" -c Release -o /app/publish
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "Elsa.Studio.ServerApp.dll"]
|
||||
@@ -0,0 +1,27 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="..\.dockerignore">
|
||||
<Link>.dockerignore</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\bundles\Elsa.Studio\Elsa.Studio.csproj" />
|
||||
<ProjectReference Include="..\..\framework\Elsa.Studio.Core.BlazorServer\Elsa.Studio.Core.BlazorServer.csproj" />
|
||||
<ProjectReference Include="..\..\framework\Elsa.Studio.Translations\Elsa.Studio.Translations.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Dashboard\Elsa.Studio.Dashboard.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Localization.BlazorServer\Elsa.Studio.Localization.BlazorServer.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Login.BlazorServer\Elsa.Studio.Login.BlazorServer.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Login\Elsa.Studio.Login.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Secrets\Elsa.Studio.Secrets.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Webhooks\Elsa.Studio.Webhooks.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.WorkflowContexts\Elsa.Studio.WorkflowContexts.csproj" />
|
||||
<ProjectReference Include="..\..\modules\Elsa.Studio.Workflows\Elsa.Studio.Workflows.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,56 @@
|
||||
@page "/"
|
||||
@using Elsa.Studio.Shell
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@namespace Elsa.Studio.Host.Server.Pages
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<base href="~/"/>
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="_content/Elsa.Studio.Shell/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="_content/Elsa.Studio.Shell/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="_content/Elsa.Studio.Shell/favicon-16x16.png">
|
||||
<link rel="manifest" href="_content/Elsa.Studio.Shell/site.webmanifest">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"/>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Grandstander:wght@100&display=swap" rel="stylesheet">
|
||||
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet"/>
|
||||
<link href="_content/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css" rel="stylesheet"/>
|
||||
<link href="_content/Radzen.Blazor/css/material-base.css" rel="stylesheet">
|
||||
<link href="_content/Elsa.Studio.Shell/css/shell.css" rel="stylesheet">
|
||||
<link href="_content/Elsa.Studio.Workflows.Designer/designer.css" rel="stylesheet">
|
||||
|
||||
@* Use designer.v1.css for the old designer (and comment out the previous designer.css style reference).*@
|
||||
@* <link href="_content/Elsa.Studio.Workflows.Designer/designer.css" rel="stylesheet"> *@
|
||||
|
||||
<link href="Elsa.Studio.Host.Server.styles.css" rel="stylesheet">
|
||||
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered"/>
|
||||
</head>
|
||||
<body>
|
||||
<component type="typeof(App)" render-mode="ServerPrerendered" />
|
||||
|
||||
<div id="blazor-error-ui">
|
||||
<environment include="Staging,Production">
|
||||
An error has occurred. This application may no longer respond until reloaded.
|
||||
</environment>
|
||||
<environment include="Development">
|
||||
An unhandled exception has occurred. See browser dev tools for details.
|
||||
</environment>
|
||||
<a href="" class="reload">Reload</a>
|
||||
<a class="dismiss">🗙</a>
|
||||
</div>
|
||||
<script src="_content/BlazorMonaco/jsInterop.js"></script>
|
||||
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/loader.js"></script>
|
||||
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/editor/editor.main.js"></script>
|
||||
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
|
||||
<script src="_content/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js"></script>
|
||||
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>
|
||||
<script src="_framework/blazor.server.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,122 @@
|
||||
using Elsa.Studio.Core.BlazorServer.Extensions;
|
||||
using Elsa.Studio.Dashboard.Extensions;
|
||||
using Elsa.Studio.Extensions;
|
||||
using Elsa.Studio.Localization.Time;
|
||||
using Elsa.Studio.Localization.Time.Providers;
|
||||
using Elsa.Studio.Login.BlazorServer.Extensions;
|
||||
using Elsa.Studio.Login.HttpMessageHandlers;
|
||||
using Elsa.Studio.Models;
|
||||
using Elsa.Studio.Secrets;
|
||||
using Elsa.Studio.Shell.Extensions;
|
||||
using Elsa.Studio.Webhooks.Extensions;
|
||||
using Elsa.Studio.Workflows.Extensions;
|
||||
using Elsa.Studio.Workflows.Designer.Extensions;
|
||||
using Elsa.Studio.Localization.BlazorServer.Extensions;
|
||||
using Elsa.Studio.Localization.Models;
|
||||
using Elsa.Studio.Localization.Options;
|
||||
using Elsa.Studio.Translations;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Elsa.Studio.Branding;
|
||||
using Elsa.Studio.Host.Server;
|
||||
using Elsa.Studio.Login.Extensions;
|
||||
|
||||
// Build the host.
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
var configuration = builder.Configuration;
|
||||
|
||||
// Register Razor services.
|
||||
builder.Services.AddRazorPages();
|
||||
builder.Services.AddServerSideBlazor(options =>
|
||||
{
|
||||
// Register the root components.
|
||||
// V2 activity wrapper by default.
|
||||
options.RootComponents.RegisterCustomElsaStudioElements();
|
||||
|
||||
// To use V1 activity wrapper layout, specify the V1 component instead:
|
||||
//options.RootComponents.RegisterCustomElsaStudioElements(typeof(Elsa.Studio.Workflows.Designer.Components.ActivityWrappers.V1.EmbeddedActivityWrapper));
|
||||
|
||||
options.RootComponents.MaxJSRootComponents = 1000;
|
||||
});
|
||||
|
||||
// Register shell services and modules.
|
||||
var backendApiConfig = new BackendApiConfig
|
||||
{
|
||||
ConfigureBackendOptions = options => configuration.GetSection("Backend").Bind(options),
|
||||
ConfigureHttpClientBuilder = options =>
|
||||
{
|
||||
options.AuthenticationHandler = typeof(AuthenticatingApiHttpMessageHandler);
|
||||
options.ConfigureHttpClient = (_, client) =>
|
||||
{
|
||||
// Set a long time out to simplify debugging both Elsa Studio and the Elsa Server backend.
|
||||
client.Timeout = TimeSpan.FromHours(1);
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
var localizationConfig = new LocalizationConfig
|
||||
{
|
||||
ConfigureLocalizationOptions = options =>
|
||||
{
|
||||
configuration.GetSection(LocalizationOptions.LocalizationSection).Bind(options);
|
||||
options.SupportedCultures = new[] { options?.DefaultCulture ?? new LocalizationOptions().DefaultCulture }
|
||||
.Concat(options?.SupportedCultures.Where(culture => culture != options?.DefaultCulture) ?? []) .ToArray();
|
||||
}
|
||||
};
|
||||
|
||||
builder.Services.AddScoped<IBrandingProvider, StudioBrandingProvider>();
|
||||
builder.Services.AddCore().Replace(new(typeof(IBrandingProvider), typeof(StudioBrandingProvider), ServiceLifetime.Scoped));
|
||||
builder.Services.AddShell(options => configuration.GetSection("Shell").Bind(options));
|
||||
builder.Services.AddRemoteBackend(backendApiConfig);
|
||||
builder.Services.AddLoginModule();
|
||||
builder.Services.UseElsaIdentity();
|
||||
// builder.Services.UseOAuth2(options =>
|
||||
// {
|
||||
// options.ClientId = "ElsaStudio";
|
||||
// options.TokenEndpoint = "https://localhost:44366/connect/token";
|
||||
// options.Scope = "YourSite offline_access";
|
||||
// });
|
||||
builder.Services.AddDashboardModule();
|
||||
builder.Services.AddWorkflowsModule();
|
||||
builder.Services.AddWebhooksModule();
|
||||
builder.Services.AddSecretsModule(backendApiConfig);
|
||||
builder.Services.AddLocalizationModule(localizationConfig);
|
||||
builder.Services.AddTranslations();
|
||||
|
||||
// Replace some services with other implementations.
|
||||
builder.Services.AddScoped<ITimeZoneProvider, LocalTimeZoneProvider>();
|
||||
|
||||
// Uncomment for V1 designer theme (default is V2).
|
||||
// builder.Services.Configure<DesignerOptions>(options =>
|
||||
// {
|
||||
// options.DesignerCssClass = "elsa-flowchart-diagram-designer-v1";
|
||||
// options.GraphSettings.Grid.Type = "mesh";
|
||||
// });
|
||||
|
||||
// Configure SignalR.
|
||||
builder.Services.AddSignalR(options =>
|
||||
{
|
||||
// Set MaximumReceiveMessageSize:
|
||||
options.MaximumReceiveMessageSize = 5 * 1024 * 1000; // 5MB
|
||||
});
|
||||
|
||||
// Build the application.
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (!app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseResponseCompression();
|
||||
|
||||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
app.UseElsaLocalization();
|
||||
app.UseHttpsRedirection();
|
||||
app.UseStaticFiles();
|
||||
app.UseRouting();
|
||||
app.UseAuthorization();
|
||||
app.MapControllers();
|
||||
app.MapBlazorHub();
|
||||
app.MapFallbackToPage("/_Host");
|
||||
app.Run();
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"iisSettings": {
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:50413",
|
||||
"sslPort": 44382
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "http://localhost:5010",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "https://localhost:7113;http://localhost:5010",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using Elsa.Studio.Branding;
|
||||
|
||||
namespace Elsa.Studio.Host.Server
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public class StudioBrandingProvider : DefaultBrandingProvider
|
||||
{
|
||||
public override string AppName => "Elsa Studio 3.5";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using Microsoft.AspNetCore.Components.Routing
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@using Microsoft.JSInterop
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"Shell": {
|
||||
"DisableAuthorization": false
|
||||
},
|
||||
"Backend": {
|
||||
"Url": "https://localhost:5001/elsa/api"
|
||||
},
|
||||
"Localization": {
|
||||
"DefaultCulture": "fa-IR",
|
||||
"SupportedCultures": [
|
||||
"fa-IR",
|
||||
"en-US"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user