Initial commit

This commit is contained in:
administrator 2026-04-17 00:00:02 +02:00
commit 3808f2247a
1088 changed files with 12591 additions and 0 deletions

Binary file not shown.

Binary file not shown.

BIN
.vs/MailPrint/v18/.suo Normal file

Binary file not shown.

View file

@ -0,0 +1,23 @@
{
"Version": 1,
"WorkspaceRootPath": "Z:\\Programmierung\\MailPrint\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
}
]
}
]
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

25
MailPrint.sln Normal file
View file

@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MailPrint", "MailPrint\MailPrint.csproj", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MailPrintConfig", "MailPrintConfig\MailPrintConfig.csproj", "{B2C3D4E5-F6A7-8901-BCDE-F12345678901}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.Build.0 = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,51 @@
using Microsoft.Extensions.Options;
namespace MailPrint;
/// <summary>
/// Schützt alle /api/* Routen mit einem statischen API-Key.
/// Header: X-Api-Key: <key>
/// Wenn kein Key konfiguriert ist, wird die Middleware übersprungen.
/// </summary>
public class ApiKeyMiddleware
{
private const string HeaderName = "X-Api-Key";
private readonly RequestDelegate _next;
private readonly string _apiKey;
private readonly ILogger<ApiKeyMiddleware> _logger;
public ApiKeyMiddleware(RequestDelegate next, IOptions<MailPrintOptions> options, ILogger<ApiKeyMiddleware> logger)
{
_next = next;
_apiKey = options.Value.WebApi.ApiKey;
_logger = logger;
}
public async Task InvokeAsync(HttpContext context)
{
// Kein API-Key konfiguriert → durchlassen (Entwicklung / lokales Netz)
if (string.IsNullOrEmpty(_apiKey))
{
await _next(context);
return;
}
// Swagger UI immer erlauben
if (context.Request.Path.StartsWithSegments("/swagger"))
{
await _next(context);
return;
}
if (!context.Request.Headers.TryGetValue(HeaderName, out var provided) ||
provided != _apiKey)
{
_logger.LogWarning("Ungültiger API-Key von {IP}", context.Connection.RemoteIpAddress);
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
await context.Response.WriteAsJsonAsync(new { error = "Ungültiger oder fehlender API-Key." });
return;
}
await _next(context);
}
}

View file

@ -0,0 +1,131 @@
using MailPrint.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using System.ComponentModel.DataAnnotations;
namespace MailPrint.Controllers;
[ApiController]
[Route("api/[controller]")]
public class PrintController : ControllerBase
{
private readonly PrintService _printService;
private readonly MailPrintOptions _options;
private readonly ILogger<PrintController> _logger;
public PrintController(PrintService printService, IOptions<MailPrintOptions> options, ILogger<PrintController> logger)
{
_printService = printService;
_options = options.Value;
_logger = logger;
}
/// <summary>
/// PDF hochladen und drucken.
/// POST /api/print/upload
/// Form-Data: file, printer (opt), paperSource (opt), copies (opt)
/// </summary>
[HttpPost("upload")]
[Consumes("multipart/form-data")]
public async Task<IActionResult> PrintUpload(
IFormFile file,
[FromForm] string? printer = null,
[FromForm] string? paperSource = null,
[FromForm] int copies = 0)
{
if (file is null || file.Length == 0)
return BadRequest(new { error = "Keine Datei." });
var ext = Path.GetExtension(file.FileName).ToLower();
if (!_options.AllowedExtensions.Contains(ext))
return BadRequest(new { error = $"Dateityp '{ext}' nicht erlaubt." });
Directory.CreateDirectory(_options.TempDirectory);
var tempFile = Path.Combine(_options.TempDirectory, $"{Guid.NewGuid()}{ext}");
try
{
await using (var fs = System.IO.File.Create(tempFile))
await file.CopyToAsync(fs);
_printService.PrintPdf(new PrintJob
{
FilePath = tempFile,
MailSubject = file.FileName,
MailFrom = "WebAPI",
PrinterOverride = printer,
PaperSourceOverride = paperSource,
CopiesOverride = copies > 0 ? copies : null
});
return Ok(new { success = true, file = file.FileName, printer, paperSource });
}
catch (Exception ex)
{
_logger.LogError(ex, "WebAPI Druckfehler: {File}", file.FileName);
return StatusCode(500, new { error = ex.Message });
}
}
/// <summary>
/// PDF per URL drucken.
/// POST /api/print/url
/// </summary>
[HttpPost("url")]
public async Task<IActionResult> PrintUrl([FromBody] PrintUrlRequest request)
{
if (!Uri.TryCreate(request.Url, UriKind.Absolute, out var uri))
return BadRequest(new { error = "Ungültige URL." });
Directory.CreateDirectory(_options.TempDirectory);
var tempFile = Path.Combine(_options.TempDirectory, $"{Guid.NewGuid()}.pdf");
try
{
using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
await System.IO.File.WriteAllBytesAsync(tempFile, await http.GetByteArrayAsync(uri));
_printService.PrintPdf(new PrintJob
{
FilePath = tempFile,
MailSubject = uri.Segments.LastOrDefault() ?? "download.pdf",
MailFrom = "WebAPI/URL",
PrinterOverride = request.Printer,
PaperSourceOverride = request.PaperSource,
CopiesOverride = request.Copies > 0 ? request.Copies : null
});
return Ok(new { success = true, url = request.Url, printer = request.Printer, paperSource = request.PaperSource });
}
catch (Exception ex)
{
_logger.LogError(ex, "WebAPI URL-Druckfehler: {Url}", request.Url);
return StatusCode(500, new { error = ex.Message });
}
}
/// <summary>
/// Alle Drucker mit Papierfächern.
/// GET /api/print/printers
/// </summary>
[HttpGet("printers")]
public IActionResult GetPrinters()
{
var infos = _printService.GetPrinterInfos();
var defaultPrinter = _options.PrinterProfiles.FirstOrDefault()?.PrinterName
?? infos.FirstOrDefault()?.Name;
return Ok(new { defaultPrinter, profiles = _options.PrinterProfiles, printers = infos });
}
[HttpGet("health")]
public IActionResult Health() =>
Ok(new { status = "ok", service = "MailPrint", timestamp = DateTime.UtcNow });
}
public class PrintUrlRequest
{
[Required] public string Url { get; set; } = "";
public string? Printer { get; set; }
public string? PaperSource { get; set; }
public int Copies { get; set; } = 0;
}

View file

@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>mailprint-service</UserSecretsId>
<RootNamespace>MailPrint</RootNamespace>
<AssemblyName>MailPrint</AssemblyName>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MailKit" Version="4.7.1.1" />
<PackageReference Include="MimeKit" Version="4.7.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.0-preview.3.25171.5" />
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.EventLog" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.3.1" />
<PackageReference Include="System.Drawing.Common" Version="9.0.4" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,56 @@
namespace MailPrint;
public class MailPrintOptions
{
public int PollIntervalSeconds { get; set; } = 60;
public string SubjectFilter { get; set; } = "";
public bool DeleteAfterPrint { get; set; } = true;
public bool MarkAsRead { get; set; } = true;
public string SumatraPath { get; set; } = "";
public string TempDirectory { get; set; } = Path.Combine(Path.GetTempPath(), "MailPrint");
public List<string> AllowedExtensions { get; set; } = new() { ".pdf" };
/// <summary>Drucker-Profile: Name → Drucker + Fach + Kopien</summary>
public List<PrinterProfile> PrinterProfiles { get; set; } = new();
/// <summary>Postfächer: jedes hat eigene Credentials + zeigt auf ein PrinterProfile</summary>
public List<MailAccount> Accounts { get; set; } = new();
/// <summary>Global wird verwendet wenn das Profil keine eigene Liste hat.</summary>
public List<string> AllowedSenders { get; set; } = new();
public List<string> BlockedSenders { get; set; } = new();
public WebApiOptions WebApi { get; set; } = new();
}
public class PrinterProfile
{
public string Name { get; set; } = "";
public string PrinterName { get; set; } = "";
public string PaperSource { get; set; } = "";
public int Copies { get; set; } = 1;
/// <summary>Leer = globale Liste verwenden. Gesetzt = überschreibt globale Liste.</summary>
public List<string> AllowedSenders { get; set; } = new();
public List<string> BlockedSenders { get; set; } = new();
}
public class MailAccount
{
public string Name { get; set; } = "";
public string Protocol { get; set; } = "IMAP";
public string Host { get; set; } = "";
public int Port { get; set; } = 993;
public bool UseSsl { get; set; } = true;
public string Username { get; set; } = "";
public string Password { get; set; } = "";
public string Folder { get; set; } = "INBOX";
/// <summary>Name eines PrinterProfile leer = erstes Profil</summary>
public string PrinterProfileName { get; set; } = "";
}
public class WebApiOptions
{
public int Port { get; set; } = 5100;
public bool BindAllInterfaces { get; set; } = false;
public string ApiKey { get; set; } = "";
}

View file

@ -0,0 +1,61 @@
using MailPrint.Services;
using Microsoft.Extensions.Options;
namespace MailPrint;
public class MailPrintWorker : BackgroundService
{
private readonly ILogger<MailPrintWorker> _logger;
private readonly MailFetchService _mailService;
private readonly PrintService _printService;
private readonly MailPrintOptions _options;
public MailPrintWorker(ILogger<MailPrintWorker> logger, MailFetchService mailService,
PrintService printService, IOptions<MailPrintOptions> options)
{
_logger = logger;
_mailService = mailService;
_printService = printService;
_options = options.Value;
}
protected override async Task ExecuteAsync(CancellationToken ct)
{
if (_options.Accounts.Count == 0)
{
_logger.LogWarning("Keine Postfächer konfiguriert Mail-Polling deaktiviert.");
return;
}
_logger.LogInformation("{Count} Postfach/Postfächer konfiguriert, Intervall: {Interval}s",
_options.Accounts.Count, _options.PollIntervalSeconds);
// Pro Account einen eigenen Poll-Loop starten
var tasks = _options.Accounts.Select(account => PollAccountAsync(account, ct));
await Task.WhenAll(tasks);
}
private async Task PollAccountAsync(MailAccount account, CancellationToken ct)
{
_logger.LogInformation("Starte Polling für [{Account}] ({Protocol}://{Host})",
account.Name, account.Protocol, account.Host);
while (!ct.IsCancellationRequested)
{
try
{
var jobs = await _mailService.FetchJobsForAccountAsync(account, ct);
foreach (var job in jobs)
{
if (ct.IsCancellationRequested) break;
try { _printService.PrintPdf(job); }
catch (Exception ex) { _logger.LogError(ex, "[{Account}] Druckfehler", account.Name); }
}
}
catch (OperationCanceledException) { break; }
catch (Exception ex) { _logger.LogError(ex, "[{Account}] Fehler beim Mail-Abruf", account.Name); }
await Task.Delay(TimeSpan.FromSeconds(_options.PollIntervalSeconds), ct);
}
}
}

73
MailPrint/Program.cs Normal file
View file

@ -0,0 +1,73 @@
using MailPrint;
using MailPrint.Services;
using Serilog;
using Serilog.Events;
// Working directory auf EXE-Verzeichnis setzen
Directory.SetCurrentDirectory(AppContext.BaseDirectory);
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}")
.WriteTo.File(
Path.Combine(AppContext.BaseDirectory, "logs", "mailprint-.log"),
rollingInterval: RollingInterval.Day,
retainedFileCountLimit: 30)
.CreateLogger();
try
{
Log.Information("MailPrint gestartet. Beenden mit Ctrl+C.");
var builder = WebApplication.CreateBuilder(args);
// Als Windows Service UND als Konsole nutzbar
builder.Host.UseWindowsService(options => options.ServiceName = "MailPrint");
builder.Host.UseSerilog();
builder.Configuration
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
builder.WebHost.ConfigureKestrel(kestrel =>
{
var port = builder.Configuration.GetValue<int>("MailPrint:WebApi:Port", 5100);
var bindAll = builder.Configuration.GetValue<bool>("MailPrint:WebApi:BindAllInterfaces", false);
if (bindAll)
kestrel.ListenAnyIP(port);
else
kestrel.ListenLocalhost(port);
});
builder.Services.Configure<MailPrintOptions>(builder.Configuration.GetSection("MailPrint"));
builder.Services.AddSingleton<PrintService>();
builder.Services.AddSingleton<MailFetchService>();
builder.Services.AddHostedService<MailPrintWorker>();
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
c.SwaggerDoc("v1", new() { Title = "MailPrint API", Version = "v1" }));
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.UseMiddleware<ApiKeyMiddleware>();
app.MapControllers();
await app.RunAsync();
}
catch (Exception ex) when (ex is not OperationCanceledException)
{
Log.Fatal(ex, "Unbehandelter Fehler");
return 1;
}
finally
{
Log.CloseAndFlush();
}
return 0;

View file

@ -0,0 +1,12 @@
{
"profiles": {
"MailPrint": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:56813;http://localhost:56814"
}
}
}

View file

@ -0,0 +1,159 @@
using MailKit;
using MailKit.Net.Imap;
using MailKit.Net.Pop3;
using MailKit.Search;
using Microsoft.Extensions.Options;
using MimeKit;
namespace MailPrint.Services;
public class MailFetchService
{
private readonly ILogger<MailFetchService> _logger;
private readonly MailPrintOptions _options;
public MailFetchService(ILogger<MailFetchService> logger, IOptions<MailPrintOptions> options)
{
_logger = logger;
_options = options.Value;
}
public async Task<List<PrintJob>> FetchJobsForAccountAsync(MailAccount account, CancellationToken ct)
{
return account.Protocol.ToUpper() == "POP3"
? await FetchViaPop3Async(account, ct)
: await FetchViaImapAsync(account, ct);
}
private async Task<List<PrintJob>> FetchViaImapAsync(MailAccount account, CancellationToken ct)
{
var jobs = new List<PrintJob>();
using var client = new ImapClient();
await client.ConnectAsync(account.Host, account.Port, account.UseSsl, ct);
await client.AuthenticateAsync(account.Username, account.Password, ct);
var folder = await client.GetFolderAsync(account.Folder, ct);
await folder.OpenAsync(FolderAccess.ReadWrite, ct);
var uids = await folder.SearchAsync(SearchQuery.NotSeen, ct);
_logger.LogInformation("[{Account}] IMAP: {Count} ungelesene Nachrichten", account.Name, uids.Count);
foreach (var uid in uids)
{
if (ct.IsCancellationRequested) break;
var message = await folder.GetMessageAsync(uid, ct);
var extracted = ExtractJobs(message, account);
if (extracted.Count > 0)
{
jobs.AddRange(extracted);
if (_options.MarkAsRead)
await folder.AddFlagsAsync(uid, MessageFlags.Seen, true, ct);
if (_options.DeleteAfterPrint)
await folder.AddFlagsAsync(uid, MessageFlags.Deleted, true, ct);
}
}
if (_options.DeleteAfterPrint) await folder.ExpungeAsync(ct);
await client.DisconnectAsync(true, ct);
return jobs;
}
private async Task<List<PrintJob>> FetchViaPop3Async(MailAccount account, CancellationToken ct)
{
var jobs = new List<PrintJob>();
using var client = new Pop3Client();
await client.ConnectAsync(account.Host, account.Port, account.UseSsl, ct);
await client.AuthenticateAsync(account.Username, account.Password, ct);
int count = await client.GetMessageCountAsync(ct);
_logger.LogInformation("[{Account}] POP3: {Count} Nachrichten", account.Name, count);
var toDelete = new List<int>();
for (int i = 0; i < count; i++)
{
if (ct.IsCancellationRequested) break;
var message = await client.GetMessageAsync(i, ct);
var extracted = ExtractJobs(message, account);
if (extracted.Count > 0)
{
jobs.AddRange(extracted);
if (_options.DeleteAfterPrint) toDelete.Add(i);
}
}
foreach (var idx in toDelete) await client.DeleteMessageAsync(idx, ct);
await client.DisconnectAsync(true, ct);
return jobs;
}
private List<PrintJob> ExtractJobs(MimeMessage message, MailAccount account)
{
var jobs = new List<PrintJob>();
// Profil für Filter-Lookup
var profile = _options.PrinterProfiles.FirstOrDefault(p =>
p.Name.Equals(account.PrinterProfileName, StringComparison.OrdinalIgnoreCase));
var from = message.From.Mailboxes.Select(m => m.Address.ToLower()).ToList();
// Whitelist: Profil-Liste hat Vorrang, Fallback global
var allowed = profile?.AllowedSenders.Count > 0
? profile.AllowedSenders
: _options.AllowedSenders;
if (allowed.Count > 0 && !from.Any(f => allowed.Any(a => a.ToLower() == f)))
{
_logger.LogDebug("[{Account}] Absender {From} nicht in Whitelist", account.Name, string.Join(",", from));
return jobs;
}
// Blacklist: Profil-Liste hat Vorrang, Fallback global
var blocked = profile?.BlockedSenders.Count > 0
? profile.BlockedSenders
: _options.BlockedSenders;
if (blocked.Count > 0 && from.Any(f => blocked.Any(b => b.ToLower() == f)))
{
_logger.LogDebug("[{Account}] Absender {From} in Blacklist", account.Name, string.Join(",", from));
return jobs;
}
if (!string.IsNullOrEmpty(_options.SubjectFilter) &&
!message.Subject.Contains(_options.SubjectFilter, StringComparison.OrdinalIgnoreCase))
return jobs;
Directory.CreateDirectory(_options.TempDirectory);
foreach (var attachment in message.Attachments.OfType<MimePart>())
{
var ext = Path.GetExtension(attachment.FileName ?? "").ToLower();
if (!_options.AllowedExtensions.Contains(ext)) continue;
var tempFile = Path.Combine(_options.TempDirectory, $"{Guid.NewGuid()}{ext}");
using (var stream = File.Create(tempFile))
attachment.Content.DecodeTo(stream);
jobs.Add(new PrintJob
{
FilePath = tempFile,
MailSubject = message.Subject,
MailFrom = message.From.ToString(),
PrinterProfileName = account.PrinterProfileName
});
_logger.LogInformation("[{Account}] Job: {File}", account.Name, tempFile);
}
return jobs;
}
}
public record PrintJob
{
public string FilePath { get; init; } = "";
public string MailSubject { get; init; } = "";
public string MailFrom { get; init; } = "";
public string PrinterProfileName { get; init; } = "";
// Direkte Overrides für WebAPI
public string? PrinterOverride { get; init; }
public string? PaperSourceOverride { get; init; }
public int? CopiesOverride { get; init; }
}

View file

@ -0,0 +1,140 @@
using Microsoft.Extensions.Options;
using System.Diagnostics;
using System.Drawing.Printing;
namespace MailPrint.Services;
public class PrintService
{
private readonly ILogger<PrintService> _logger;
private readonly MailPrintOptions _options;
private static readonly string[] SumatraCandidates =
[
@"C:\Program Files\SumatraPDF\SumatraPDF.exe",
@"C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe",
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SumatraPDF", "SumatraPDF.exe"),
Path.Combine(AppContext.BaseDirectory, "SumatraPDF.exe"),
];
public PrintService(ILogger<PrintService> logger, IOptions<MailPrintOptions> options)
{
_logger = logger;
_options = options.Value;
}
public void PrintPdf(PrintJob job)
{
// Profil auflösen: direkte Overrides > benanntes Profil > erstes Profil > Defaults
var profile = ResolveProfile(job);
var printerName = !string.IsNullOrEmpty(job.PrinterOverride) ? job.PrinterOverride : profile.PrinterName;
var paperSource = !string.IsNullOrEmpty(job.PaperSourceOverride) ? job.PaperSourceOverride : profile.PaperSource;
var copies = job.CopiesOverride ?? profile.Copies;
if (string.IsNullOrEmpty(printerName))
printerName = GetDefaultPrinter();
_logger.LogInformation("Drucke '{Subject}' → {Printer} | Fach: {Fach} | {Copies}x",
job.MailSubject, printerName, string.IsNullOrEmpty(paperSource) ? "Standard" : paperSource, copies);
try
{
for (int i = 0; i < copies; i++)
PrintOnce(job.FilePath, printerName, paperSource);
_logger.LogInformation("Druck OK: {File}", job.FilePath);
}
catch (Exception ex)
{
_logger.LogError(ex, "Druckfehler: {File}", job.FilePath);
throw;
}
finally
{
TryDelete(job.FilePath);
}
}
private PrinterProfile ResolveProfile(PrintJob job)
{
if (!string.IsNullOrEmpty(job.PrinterProfileName))
{
var p = _options.PrinterProfiles.FirstOrDefault(x =>
x.Name.Equals(job.PrinterProfileName, StringComparison.OrdinalIgnoreCase));
if (p != null) return p;
}
return _options.PrinterProfiles.FirstOrDefault() ?? new PrinterProfile();
}
private void PrintOnce(string pdfPath, string printerName, string paperSource)
{
if (string.IsNullOrEmpty(paperSource))
{
if (TryPrintViaSumatra(pdfPath, printerName)) return;
}
else
{
// SumatraPDF mit bin=<FachName>
var sumatra = ResolveSumatra();
if (sumatra != null)
{
RunAndWait(sumatra,
$"-print-to \"{printerName}\" -print-settings \"bin={paperSource},noscale\" -silent \"{pdfPath}\"");
return;
}
}
// Fallback Shell-Print
_logger.LogWarning("Kein SumatraPDF Shell-Print (kein Papierfach-Support)");
var psi = new ProcessStartInfo { FileName = pdfPath, Verb = "print", UseShellExecute = true, WindowStyle = ProcessWindowStyle.Hidden };
using var p = Process.Start(psi)!;
p.WaitForExit(30_000);
}
private bool TryPrintViaSumatra(string pdfPath, string printerName)
{
var s = ResolveSumatra();
if (s == null) return false;
RunAndWait(s, $"-print-to \"{printerName}\" -print-settings \"noscale\" -silent \"{pdfPath}\"");
return true;
}
private string? ResolveSumatra()
{
if (!string.IsNullOrEmpty(_options.SumatraPath) && File.Exists(_options.SumatraPath))
return _options.SumatraPath;
return Array.Find(SumatraCandidates, File.Exists);
}
private void RunAndWait(string exe, string args)
{
_logger.LogDebug("Exec: {Exe} {Args}", exe, args);
var psi = new ProcessStartInfo(exe, args) { UseShellExecute = false, CreateNoWindow = true };
using var p = Process.Start(psi) ?? throw new InvalidOperationException($"Nicht startbar: {exe}");
if (!p.WaitForExit(60_000)) { p.Kill(); throw new TimeoutException($"Timeout: {exe}"); }
if (p.ExitCode != 0) _logger.LogWarning("ExitCode {Code}: {Exe}", p.ExitCode, exe);
}
public List<PrinterInfo> GetPrinterInfos()
{
var result = new List<PrinterInfo>();
foreach (string name in PrinterSettings.InstalledPrinters)
{
var ps = new PrinterSettings { PrinterName = name };
var sources = new List<string>();
foreach (PaperSource src in ps.PaperSources)
sources.Add(src.SourceName);
result.Add(new PrinterInfo(name, sources));
}
return result;
}
public IEnumerable<string> GetAvailablePrinters() => GetPrinterInfos().Select(p => p.Name);
private static string GetDefaultPrinter() => new PrinterSettings().PrinterName;
private void TryDelete(string path)
{
try { if (File.Exists(path)) File.Delete(path); }
catch (Exception ex) { _logger.LogWarning(ex, "Temp nicht löschbar: {Path}", path); }
}
}
public record PrinterInfo(string Name, List<string> PaperSources);

View file

@ -0,0 +1,38 @@
{
"MailPrint": {
"Protocol": "IMAP",
"Host": "imap.example.com",
"Port": 993,
"UseSsl": true,
"Username": "druck@example.com",
"Password": "IHR_PASSWORT",
"Folder": "INBOX",
"PollIntervalSeconds": 60,
"AllowedSenders": [],
"SubjectFilter": "",
"PrinterName": "",
"Copies": 1,
"DeleteAfterPrint": true,
"MarkAsRead": true,
"TempDirectory": "C:\\ProgramData\\MailPrint\\Temp",
"AllowedExtensions": [ ".pdf" ],
"WebApi": {
"Port": 5100,
"BindAllInterfaces": true,
"ApiKey": "SICHERER_ZUFAELLIGER_KEY"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.AspNetCore": "Warning"
}
}
}
}

Binary file not shown.

View file

@ -0,0 +1,451 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {
"MailPrint/1.0.0": {
"dependencies": {
"MailKit": "4.7.1.1",
"Microsoft.Extensions.Hosting.WindowsServices": "10.0.0-preview.3.25171.5",
"MimeKit": "4.7.1",
"Serilog.AspNetCore": "9.0.0",
"Serilog.Sinks.Console": "6.0.0",
"Serilog.Sinks.EventLog": "4.0.0",
"Serilog.Sinks.File": "6.0.0",
"Swashbuckle.AspNetCore": "7.3.1",
"System.Drawing.Common": "9.0.4"
},
"runtime": {
"MailPrint.dll": {}
}
},
"BouncyCastle.Cryptography/2.4.0": {
"runtime": {
"lib/net6.0/BouncyCastle.Cryptography.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.4.0.33771"
}
}
},
"MailKit/4.7.1.1": {
"dependencies": {
"MimeKit": "4.7.1"
},
"runtime": {
"lib/net8.0/MailKit.dll": {
"assemblyVersion": "4.7.0.0",
"fileVersion": "4.7.1.1"
}
}
},
"Microsoft.Extensions.DependencyModel/9.0.0": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.24.52809"
}
}
},
"Microsoft.Extensions.Hosting.WindowsServices/10.0.0-preview.3.25171.5": {
"dependencies": {
"System.ServiceProcess.ServiceController": "10.0.0-preview.3.25171.5"
},
"runtime": {
"lib/net10.0/Microsoft.Extensions.Hosting.WindowsServices.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.25.17105"
}
}
},
"Microsoft.OpenApi/1.6.22": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.6.22.0",
"fileVersion": "1.6.22.0"
}
}
},
"Microsoft.Win32.SystemEvents/9.0.4": {
"runtime": {
"lib/net9.0/Microsoft.Win32.SystemEvents.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16305"
}
},
"runtimeTargets": {
"runtimes/win/lib/net9.0/Microsoft.Win32.SystemEvents.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16305"
}
}
},
"MimeKit/4.7.1": {
"dependencies": {
"BouncyCastle.Cryptography": "2.4.0"
},
"runtime": {
"lib/net8.0/MimeKit.dll": {
"assemblyVersion": "4.7.0.0",
"fileVersion": "4.7.1.0"
}
}
},
"Serilog/4.2.0": {
"runtime": {
"lib/net9.0/Serilog.dll": {
"assemblyVersion": "4.2.0.0",
"fileVersion": "4.2.0.0"
}
}
},
"Serilog.AspNetCore/9.0.0": {
"dependencies": {
"Serilog": "4.2.0",
"Serilog.Extensions.Hosting": "9.0.0",
"Serilog.Formatting.Compact": "3.0.0",
"Serilog.Settings.Configuration": "9.0.0",
"Serilog.Sinks.Console": "6.0.0",
"Serilog.Sinks.Debug": "3.0.0",
"Serilog.Sinks.File": "6.0.0"
},
"runtime": {
"lib/net9.0/Serilog.AspNetCore.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Extensions.Hosting/9.0.0": {
"dependencies": {
"Serilog": "4.2.0",
"Serilog.Extensions.Logging": "9.0.0"
},
"runtime": {
"lib/net9.0/Serilog.Extensions.Hosting.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Extensions.Logging/9.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net9.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Formatting.Compact/3.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Formatting.Compact.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.0.0.0"
}
}
},
"Serilog.Settings.Configuration/9.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyModel": "9.0.0",
"Serilog": "4.2.0"
},
"runtime": {
"lib/net9.0/Serilog.Settings.Configuration.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Sinks.Console/6.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.0.0"
}
}
},
"Serilog.Sinks.Debug/3.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.Debug.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.0.0.0"
}
}
},
"Serilog.Sinks.EventLog/4.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.EventLog.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.0.0.0"
}
}
},
"Serilog.Sinks.File/6.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.0.0"
}
}
},
"Swashbuckle.AspNetCore/7.3.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "7.3.1",
"Swashbuckle.AspNetCore.SwaggerGen": "7.3.1",
"Swashbuckle.AspNetCore.SwaggerUI": "7.3.1"
}
},
"Swashbuckle.AspNetCore.Swagger/7.3.1": {
"dependencies": {
"Microsoft.OpenApi": "1.6.22"
},
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/7.3.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "7.3.1"
},
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/7.3.1": {
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"System.Drawing.Common/9.0.4": {
"dependencies": {
"Microsoft.Win32.SystemEvents": "9.0.4"
},
"runtime": {
"lib/net9.0/System.Drawing.Common.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16312"
},
"lib/net9.0/System.Private.Windows.Core.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16312"
}
}
},
"System.ServiceProcess.ServiceController/10.0.0-preview.3.25171.5": {
"runtime": {
"lib/net10.0/System.ServiceProcess.ServiceController.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.25.17105"
}
},
"runtimeTargets": {
"runtimes/win/lib/net10.0/System.ServiceProcess.ServiceController.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.25.17105"
}
}
}
}
},
"libraries": {
"MailPrint/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle.Cryptography/2.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==",
"path": "bouncycastle.cryptography/2.4.0",
"hashPath": "bouncycastle.cryptography.2.4.0.nupkg.sha512"
},
"MailKit/4.7.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==",
"path": "mailkit/4.7.1.1",
"hashPath": "mailkit.4.7.1.1.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==",
"path": "microsoft.extensions.dependencymodel/9.0.0",
"hashPath": "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.WindowsServices/10.0.0-preview.3.25171.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kL3TeKTEnkpQNuAxR5/CSi+7vQwKGXHl/pz+szetFjN8M39zWe5ECDHkcGk9xwcyhLv2aiuBQ1DqV45qXsfLag==",
"path": "microsoft.extensions.hosting.windowsservices/10.0.0-preview.3.25171.5",
"hashPath": "microsoft.extensions.hosting.windowsservices.10.0.0-preview.3.25171.5.nupkg.sha512"
},
"Microsoft.OpenApi/1.6.22": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==",
"path": "microsoft.openapi/1.6.22",
"hashPath": "microsoft.openapi.1.6.22.nupkg.sha512"
},
"Microsoft.Win32.SystemEvents/9.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kHgtAkXhNEP8oGuAVe3Q5admxsdMlSdWE2rXcA9FfeGDZJQawPccmZgnOswgW3ugUPSJt7VH+TMQPz65mnhGSQ==",
"path": "microsoft.win32.systemevents/9.0.4",
"hashPath": "microsoft.win32.systemevents.9.0.4.nupkg.sha512"
},
"MimeKit/4.7.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==",
"path": "mimekit/4.7.1",
"hashPath": "mimekit.4.7.1.nupkg.sha512"
},
"Serilog/4.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gmoWVOvKgbME8TYR+gwMf7osROiWAURterc6Rt2dQyX7wtjZYpqFiA/pY6ztjGQKKV62GGCyOcmtP1UKMHgSmA==",
"path": "serilog/4.2.0",
"hashPath": "serilog.4.2.0.nupkg.sha512"
},
"Serilog.AspNetCore/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JslDajPlBsn3Pww1554flJFTqROvK9zz9jONNQgn0D8Lx2Trw8L0A8/n6zEQK1DAZWXrJwiVLw8cnTR3YFuYsg==",
"path": "serilog.aspnetcore/9.0.0",
"hashPath": "serilog.aspnetcore.9.0.0.nupkg.sha512"
},
"Serilog.Extensions.Hosting/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-u2TRxuxbjvTAldQn7uaAwePkWxTHIqlgjelekBtilAGL5sYyF3+65NWctN4UrwwGLsDC7c3Vz3HnOlu+PcoxXg==",
"path": "serilog.extensions.hosting/9.0.0",
"hashPath": "serilog.extensions.hosting.9.0.0.nupkg.sha512"
},
"Serilog.Extensions.Logging/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NwSSYqPJeKNzl5AuXVHpGbr6PkZJFlNa14CdIebVjK3k/76kYj/mz5kiTRNVSsSaxM8kAIa1kpy/qyT9E4npRQ==",
"path": "serilog.extensions.logging/9.0.0",
"hashPath": "serilog.extensions.logging.9.0.0.nupkg.sha512"
},
"Serilog.Formatting.Compact/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==",
"path": "serilog.formatting.compact/3.0.0",
"hashPath": "serilog.formatting.compact.3.0.0.nupkg.sha512"
},
"Serilog.Settings.Configuration/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4/Et4Cqwa+F88l5SeFeNZ4c4Z6dEAIKbu3MaQb2Zz9F/g27T5a3wvfMcmCOaAiACjfUb4A6wrlTVfyYUZk3RRQ==",
"path": "serilog.settings.configuration/9.0.0",
"hashPath": "serilog.settings.configuration.9.0.0.nupkg.sha512"
},
"Serilog.Sinks.Console/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==",
"path": "serilog.sinks.console/6.0.0",
"hashPath": "serilog.sinks.console.6.0.0.nupkg.sha512"
},
"Serilog.Sinks.Debug/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==",
"path": "serilog.sinks.debug/3.0.0",
"hashPath": "serilog.sinks.debug.3.0.0.nupkg.sha512"
},
"Serilog.Sinks.EventLog/4.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Cmfr5v407xVc0GA0Sk+RQCCBNvxvwY1lV5/k2bqLi3ksTvLx/KbGTVM2rA5Z/e2ZEZ12HOCvBviQ9Er9GsMjXQ==",
"path": "serilog.sinks.eventlog/4.0.0",
"hashPath": "serilog.sinks.eventlog.4.0.0.nupkg.sha512"
},
"Serilog.Sinks.File/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==",
"path": "serilog.sinks.file/6.0.0",
"hashPath": "serilog.sinks.file.6.0.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6u8w+UXp/sF89xQjfydWw6znQrUpbpFOmEIs8ODE+S0bV+mCQ9dNP4mk+HRsGHylpDaP5KSYSCEfFSgluLXHsA==",
"path": "swashbuckle.aspnetcore/7.3.1",
"hashPath": "swashbuckle.aspnetcore.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jQuJ8kVbq+YE8WsJE3RwWHlF1kasp0QkA9Gl6NeNLICrhcgN8IQIthMufYW6t/4hpcN5cBIdES5jCEV81WjHbA==",
"path": "swashbuckle.aspnetcore.swagger/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swagger.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xs7Pznb3SSjZy7HpThE0ILqECfQFsGDHOrRoIYD/j67ktdRR1juDG4AMyidXXCOipgzHanZoF+nFrc+Nmjqjyw==",
"path": "swashbuckle.aspnetcore.swaggergen/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swaggergen.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hs6C+lmNEzipOA1WPQpIaGvvoXjUbnoevbv6l7o9ZQE8SNF8ggjOmK6NB6cYdMcEvk0uBeKl4Qq/BnRt5MFVqg==",
"path": "swashbuckle.aspnetcore.swaggerui/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swaggerui.7.3.1.nupkg.sha512"
},
"System.Drawing.Common/9.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SbtusMUT1bCxZ14904ZPo2GZyelze0rwUni9wXrp8KX9Zlsda8idqpxra1RBvOA85WM0wW+fCI4GLrlCTYiE6A==",
"path": "system.drawing.common/9.0.4",
"hashPath": "system.drawing.common.9.0.4.nupkg.sha512"
},
"System.ServiceProcess.ServiceController/10.0.0-preview.3.25171.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/Co2ApycIZx6M9tXQQNgk0g/JE3mYCP2HI5/VdCb48ZNbC52Tcgapej+DdWZn24ejfWwq6mavY7YMnsFm9nVEQ==",
"path": "system.serviceprocess.servicecontroller/10.0.0-preview.3.25171.5",
"hashPath": "system.serviceprocess.servicecontroller.10.0.0-preview.3.25171.5.nupkg.sha512"
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,21 @@
{
"runtimeOptions": {
"tfm": "net10.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "10.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
"CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
}
}
}

View file

@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,38 @@
{
"MailPrint": {
"Protocol": "IMAP",
"Host": "imap.example.com",
"Port": 993,
"UseSsl": true,
"Username": "druck@example.com",
"Password": "IHR_PASSWORT",
"Folder": "INBOX",
"PollIntervalSeconds": 60,
"AllowedSenders": [],
"SubjectFilter": "",
"PrinterName": "",
"Copies": 1,
"DeleteAfterPrint": true,
"MarkAsRead": true,
"TempDirectory": "C:\\ProgramData\\MailPrint\\Temp",
"AllowedExtensions": [ ".pdf" ],
"WebApi": {
"Port": 5100,
"BindAllInterfaces": true,
"ApiKey": "SICHERER_ZUFAELLIGER_KEY"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.AspNetCore": "Warning"
}
}
}
}

View file

@ -0,0 +1,436 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0/win-x64",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {},
".NETCoreApp,Version=v10.0/win-x64": {
"MailPrint/1.0.0": {
"dependencies": {
"MailKit": "4.7.1.1",
"Microsoft.Extensions.Hosting.WindowsServices": "10.0.0-preview.3.25171.5",
"MimeKit": "4.7.1",
"Serilog.AspNetCore": "9.0.0",
"Serilog.Sinks.Console": "6.0.0",
"Serilog.Sinks.EventLog": "4.0.0",
"Serilog.Sinks.File": "6.0.0",
"Swashbuckle.AspNetCore": "7.3.1",
"System.Drawing.Common": "9.0.4"
},
"runtime": {
"MailPrint.dll": {}
}
},
"BouncyCastle.Cryptography/2.4.0": {
"runtime": {
"lib/net6.0/BouncyCastle.Cryptography.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.4.0.33771"
}
}
},
"MailKit/4.7.1.1": {
"dependencies": {
"MimeKit": "4.7.1"
},
"runtime": {
"lib/net8.0/MailKit.dll": {
"assemblyVersion": "4.7.0.0",
"fileVersion": "4.7.1.1"
}
}
},
"Microsoft.Extensions.DependencyModel/9.0.0": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.24.52809"
}
}
},
"Microsoft.Extensions.Hosting.WindowsServices/10.0.0-preview.3.25171.5": {
"dependencies": {
"System.ServiceProcess.ServiceController": "10.0.0-preview.3.25171.5"
},
"runtime": {
"lib/net10.0/Microsoft.Extensions.Hosting.WindowsServices.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.25.17105"
}
}
},
"Microsoft.OpenApi/1.6.22": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.6.22.0",
"fileVersion": "1.6.22.0"
}
}
},
"Microsoft.Win32.SystemEvents/9.0.4": {
"runtime": {
"runtimes/win/lib/net9.0/Microsoft.Win32.SystemEvents.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16305"
}
}
},
"MimeKit/4.7.1": {
"dependencies": {
"BouncyCastle.Cryptography": "2.4.0"
},
"runtime": {
"lib/net8.0/MimeKit.dll": {
"assemblyVersion": "4.7.0.0",
"fileVersion": "4.7.1.0"
}
}
},
"Serilog/4.2.0": {
"runtime": {
"lib/net9.0/Serilog.dll": {
"assemblyVersion": "4.2.0.0",
"fileVersion": "4.2.0.0"
}
}
},
"Serilog.AspNetCore/9.0.0": {
"dependencies": {
"Serilog": "4.2.0",
"Serilog.Extensions.Hosting": "9.0.0",
"Serilog.Formatting.Compact": "3.0.0",
"Serilog.Settings.Configuration": "9.0.0",
"Serilog.Sinks.Console": "6.0.0",
"Serilog.Sinks.Debug": "3.0.0",
"Serilog.Sinks.File": "6.0.0"
},
"runtime": {
"lib/net9.0/Serilog.AspNetCore.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Extensions.Hosting/9.0.0": {
"dependencies": {
"Serilog": "4.2.0",
"Serilog.Extensions.Logging": "9.0.0"
},
"runtime": {
"lib/net9.0/Serilog.Extensions.Hosting.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Extensions.Logging/9.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net9.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Formatting.Compact/3.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Formatting.Compact.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.0.0.0"
}
}
},
"Serilog.Settings.Configuration/9.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyModel": "9.0.0",
"Serilog": "4.2.0"
},
"runtime": {
"lib/net9.0/Serilog.Settings.Configuration.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.0.0"
}
}
},
"Serilog.Sinks.Console/6.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.0.0"
}
}
},
"Serilog.Sinks.Debug/3.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.Debug.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.0.0.0"
}
}
},
"Serilog.Sinks.EventLog/4.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.EventLog.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.0.0.0"
}
}
},
"Serilog.Sinks.File/6.0.0": {
"dependencies": {
"Serilog": "4.2.0"
},
"runtime": {
"lib/net8.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.0.0"
}
}
},
"Swashbuckle.AspNetCore/7.3.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "7.3.1",
"Swashbuckle.AspNetCore.SwaggerGen": "7.3.1",
"Swashbuckle.AspNetCore.SwaggerUI": "7.3.1"
}
},
"Swashbuckle.AspNetCore.Swagger/7.3.1": {
"dependencies": {
"Microsoft.OpenApi": "1.6.22"
},
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/7.3.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "7.3.1"
},
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/7.3.1": {
"runtime": {
"lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "7.3.1.0",
"fileVersion": "7.3.1.1111"
}
}
},
"System.Drawing.Common/9.0.4": {
"dependencies": {
"Microsoft.Win32.SystemEvents": "9.0.4"
},
"runtime": {
"lib/net9.0/System.Drawing.Common.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16312"
},
"lib/net9.0/System.Private.Windows.Core.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.425.16312"
}
}
},
"System.ServiceProcess.ServiceController/10.0.0-preview.3.25171.5": {
"runtime": {
"runtimes/win/lib/net10.0/System.ServiceProcess.ServiceController.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.25.17105"
}
}
}
}
},
"libraries": {
"MailPrint/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle.Cryptography/2.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==",
"path": "bouncycastle.cryptography/2.4.0",
"hashPath": "bouncycastle.cryptography.2.4.0.nupkg.sha512"
},
"MailKit/4.7.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==",
"path": "mailkit/4.7.1.1",
"hashPath": "mailkit.4.7.1.1.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==",
"path": "microsoft.extensions.dependencymodel/9.0.0",
"hashPath": "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.WindowsServices/10.0.0-preview.3.25171.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kL3TeKTEnkpQNuAxR5/CSi+7vQwKGXHl/pz+szetFjN8M39zWe5ECDHkcGk9xwcyhLv2aiuBQ1DqV45qXsfLag==",
"path": "microsoft.extensions.hosting.windowsservices/10.0.0-preview.3.25171.5",
"hashPath": "microsoft.extensions.hosting.windowsservices.10.0.0-preview.3.25171.5.nupkg.sha512"
},
"Microsoft.OpenApi/1.6.22": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==",
"path": "microsoft.openapi/1.6.22",
"hashPath": "microsoft.openapi.1.6.22.nupkg.sha512"
},
"Microsoft.Win32.SystemEvents/9.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kHgtAkXhNEP8oGuAVe3Q5admxsdMlSdWE2rXcA9FfeGDZJQawPccmZgnOswgW3ugUPSJt7VH+TMQPz65mnhGSQ==",
"path": "microsoft.win32.systemevents/9.0.4",
"hashPath": "microsoft.win32.systemevents.9.0.4.nupkg.sha512"
},
"MimeKit/4.7.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==",
"path": "mimekit/4.7.1",
"hashPath": "mimekit.4.7.1.nupkg.sha512"
},
"Serilog/4.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gmoWVOvKgbME8TYR+gwMf7osROiWAURterc6Rt2dQyX7wtjZYpqFiA/pY6ztjGQKKV62GGCyOcmtP1UKMHgSmA==",
"path": "serilog/4.2.0",
"hashPath": "serilog.4.2.0.nupkg.sha512"
},
"Serilog.AspNetCore/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JslDajPlBsn3Pww1554flJFTqROvK9zz9jONNQgn0D8Lx2Trw8L0A8/n6zEQK1DAZWXrJwiVLw8cnTR3YFuYsg==",
"path": "serilog.aspnetcore/9.0.0",
"hashPath": "serilog.aspnetcore.9.0.0.nupkg.sha512"
},
"Serilog.Extensions.Hosting/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-u2TRxuxbjvTAldQn7uaAwePkWxTHIqlgjelekBtilAGL5sYyF3+65NWctN4UrwwGLsDC7c3Vz3HnOlu+PcoxXg==",
"path": "serilog.extensions.hosting/9.0.0",
"hashPath": "serilog.extensions.hosting.9.0.0.nupkg.sha512"
},
"Serilog.Extensions.Logging/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NwSSYqPJeKNzl5AuXVHpGbr6PkZJFlNa14CdIebVjK3k/76kYj/mz5kiTRNVSsSaxM8kAIa1kpy/qyT9E4npRQ==",
"path": "serilog.extensions.logging/9.0.0",
"hashPath": "serilog.extensions.logging.9.0.0.nupkg.sha512"
},
"Serilog.Formatting.Compact/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==",
"path": "serilog.formatting.compact/3.0.0",
"hashPath": "serilog.formatting.compact.3.0.0.nupkg.sha512"
},
"Serilog.Settings.Configuration/9.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4/Et4Cqwa+F88l5SeFeNZ4c4Z6dEAIKbu3MaQb2Zz9F/g27T5a3wvfMcmCOaAiACjfUb4A6wrlTVfyYUZk3RRQ==",
"path": "serilog.settings.configuration/9.0.0",
"hashPath": "serilog.settings.configuration.9.0.0.nupkg.sha512"
},
"Serilog.Sinks.Console/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==",
"path": "serilog.sinks.console/6.0.0",
"hashPath": "serilog.sinks.console.6.0.0.nupkg.sha512"
},
"Serilog.Sinks.Debug/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==",
"path": "serilog.sinks.debug/3.0.0",
"hashPath": "serilog.sinks.debug.3.0.0.nupkg.sha512"
},
"Serilog.Sinks.EventLog/4.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Cmfr5v407xVc0GA0Sk+RQCCBNvxvwY1lV5/k2bqLi3ksTvLx/KbGTVM2rA5Z/e2ZEZ12HOCvBviQ9Er9GsMjXQ==",
"path": "serilog.sinks.eventlog/4.0.0",
"hashPath": "serilog.sinks.eventlog.4.0.0.nupkg.sha512"
},
"Serilog.Sinks.File/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==",
"path": "serilog.sinks.file/6.0.0",
"hashPath": "serilog.sinks.file.6.0.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6u8w+UXp/sF89xQjfydWw6znQrUpbpFOmEIs8ODE+S0bV+mCQ9dNP4mk+HRsGHylpDaP5KSYSCEfFSgluLXHsA==",
"path": "swashbuckle.aspnetcore/7.3.1",
"hashPath": "swashbuckle.aspnetcore.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jQuJ8kVbq+YE8WsJE3RwWHlF1kasp0QkA9Gl6NeNLICrhcgN8IQIthMufYW6t/4hpcN5cBIdES5jCEV81WjHbA==",
"path": "swashbuckle.aspnetcore.swagger/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swagger.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xs7Pznb3SSjZy7HpThE0ILqECfQFsGDHOrRoIYD/j67ktdRR1juDG4AMyidXXCOipgzHanZoF+nFrc+Nmjqjyw==",
"path": "swashbuckle.aspnetcore.swaggergen/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swaggergen.7.3.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/7.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hs6C+lmNEzipOA1WPQpIaGvvoXjUbnoevbv6l7o9ZQE8SNF8ggjOmK6NB6cYdMcEvk0uBeKl4Qq/BnRt5MFVqg==",
"path": "swashbuckle.aspnetcore.swaggerui/7.3.1",
"hashPath": "swashbuckle.aspnetcore.swaggerui.7.3.1.nupkg.sha512"
},
"System.Drawing.Common/9.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SbtusMUT1bCxZ14904ZPo2GZyelze0rwUni9wXrp8KX9Zlsda8idqpxra1RBvOA85WM0wW+fCI4GLrlCTYiE6A==",
"path": "system.drawing.common/9.0.4",
"hashPath": "system.drawing.common.9.0.4.nupkg.sha512"
},
"System.ServiceProcess.ServiceController/10.0.0-preview.3.25171.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/Co2ApycIZx6M9tXQQNgk0g/JE3mYCP2HI5/VdCb48ZNbC52Tcgapej+DdWZn24ejfWwq6mavY7YMnsFm9nVEQ==",
"path": "system.serviceprocess.servicecontroller/10.0.0-preview.3.25171.5",
"hashPath": "system.serviceprocess.servicecontroller.10.0.0-preview.3.25171.5.nupkg.sha512"
}
}
}

View file

@ -0,0 +1,21 @@
{
"runtimeOptions": {
"tfm": "net10.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "10.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
"CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
}
}
}

View file

@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}

View file

@ -0,0 +1,38 @@
{
"MailPrint": {
"Protocol": "IMAP",
"Host": "imap.example.com",
"Port": 993,
"UseSsl": true,
"Username": "druck@example.com",
"Password": "IHR_PASSWORT",
"Folder": "INBOX",
"PollIntervalSeconds": 60,
"AllowedSenders": [],
"SubjectFilter": "",
"PrinterName": "",
"Copies": 1,
"DeleteAfterPrint": true,
"MarkAsRead": true,
"TempDirectory": "C:\\ProgramData\\MailPrint\\Temp",
"AllowedExtensions": [ ".pdf" ],
"WebApi": {
"Port": 5100,
"BindAllInterfaces": true,
"ApiKey": "SICHERER_ZUFAELLIGER_KEY"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.AspNetCore": "Warning"
}
}
}
}

Binary file not shown.

View file

@ -0,0 +1,986 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"MailPrint/1.0.0": {
"dependencies": {
"MailKit": "4.3.0",
"Microsoft.Extensions.Hosting.WindowsServices": "6.0.1",
"MimeKit": "4.3.0",
"Serilog.AspNetCore": "6.1.0",
"Serilog.Sinks.EventLog": "3.1.0",
"Serilog.Sinks.File": "5.0.0",
"Swashbuckle.AspNetCore": "6.5.0",
"System.Drawing.Common": "6.0.0"
},
"runtime": {
"MailPrint.dll": {}
}
},
"BouncyCastle.Cryptography/2.2.1": {
"runtime": {
"lib/net6.0/BouncyCastle.Cryptography.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.2.1.47552"
}
}
},
"MailKit/4.3.0": {
"dependencies": {
"MimeKit": "4.3.0"
},
"runtime": {
"lib/net6.0/MailKit.dll": {
"assemblyVersion": "4.3.0.0",
"fileVersion": "4.3.0.0"
}
}
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {},
"Microsoft.Extensions.Configuration/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.CommandLine/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Physical": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.Json/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"System.Text.Json": "6.0.0"
}
},
"Microsoft.Extensions.Configuration.UserSecrets/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Json": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Physical": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"Microsoft.Extensions.DependencyInjection/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {},
"Microsoft.Extensions.DependencyModel/3.0.0": {
"dependencies": {
"System.Text.Json": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.0.19.46305"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.FileProviders.Physical/6.0.0": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.FileSystemGlobbing/6.0.0": {},
"Microsoft.Extensions.Hosting/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "6.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1",
"Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
"Microsoft.Extensions.Configuration.Json": "6.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "6.0.1",
"Microsoft.Extensions.DependencyInjection": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Physical": "6.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Configuration": "6.0.0",
"Microsoft.Extensions.Logging.Console": "6.0.0",
"Microsoft.Extensions.Logging.Debug": "6.0.0",
"Microsoft.Extensions.Logging.EventLog": "6.0.0",
"Microsoft.Extensions.Logging.EventSource": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.Extensions.Hosting.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"Microsoft.Extensions.Hosting.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Hosting.WindowsServices/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Hosting": "6.0.1",
"Microsoft.Extensions.Logging.EventLog": "6.0.0",
"System.ServiceProcess.ServiceController": "6.0.0"
},
"runtime": {
"lib/netstandard2.1/Microsoft.Extensions.Hosting.WindowsServices.dll": {
"assemblyVersion": "6.0.0.1",
"fileVersion": "6.0.1022.47605"
}
}
},
"Microsoft.Extensions.Logging/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"System.Diagnostics.DiagnosticSource": "6.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {},
"Microsoft.Extensions.Logging.Configuration/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0"
}
},
"Microsoft.Extensions.Logging.Console/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Configuration": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"System.Text.Json": "6.0.0"
}
},
"Microsoft.Extensions.Logging.Debug/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0"
}
},
"Microsoft.Extensions.Logging.EventLog/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"System.Diagnostics.EventLog": "6.0.0"
}
},
"Microsoft.Extensions.Logging.EventSource/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Json": "6.0.0"
}
},
"Microsoft.Extensions.Options/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
}
},
"Microsoft.Extensions.Primitives/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"Microsoft.OpenApi/1.2.3": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.2.3.0",
"fileVersion": "1.2.3.0"
}
}
},
"Microsoft.Win32.SystemEvents/6.0.0": {
"runtime": {
"lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"MimeKit/4.3.0": {
"dependencies": {
"BouncyCastle.Cryptography": "2.2.1",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Security.Cryptography.Pkcs": "7.0.3",
"System.Text.Encoding.CodePages": "7.0.0"
},
"runtime": {
"lib/net6.0/MimeKit.dll": {
"assemblyVersion": "4.3.0.0",
"fileVersion": "4.3.0.0"
}
}
},
"Serilog/2.10.0": {
"runtime": {
"lib/netstandard2.1/Serilog.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.10.0.0"
}
}
},
"Serilog.AspNetCore/6.1.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Serilog": "2.10.0",
"Serilog.Extensions.Hosting": "5.0.1",
"Serilog.Formatting.Compact": "1.1.0",
"Serilog.Settings.Configuration": "3.3.0",
"Serilog.Sinks.Console": "4.0.1",
"Serilog.Sinks.Debug": "2.0.0",
"Serilog.Sinks.File": "5.0.0"
},
"runtime": {
"lib/net5.0/Serilog.AspNetCore.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "6.1.0.0"
}
}
},
"Serilog.Extensions.Hosting/5.0.1": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Serilog": "2.10.0",
"Serilog.Extensions.Logging": "3.1.0"
},
"runtime": {
"lib/netstandard2.1/Serilog.Extensions.Hosting.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "5.0.1.0"
}
}
},
"Serilog.Extensions.Logging/3.1.0": {
"dependencies": {
"Microsoft.Extensions.Logging": "6.0.0",
"Serilog": "2.10.0"
},
"runtime": {
"lib/netstandard2.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "3.1.0.0"
}
}
},
"Serilog.Formatting.Compact/1.1.0": {
"dependencies": {
"Serilog": "2.10.0"
},
"runtime": {
"lib/netstandard2.0/Serilog.Formatting.Compact.dll": {
"assemblyVersion": "1.1.0.0",
"fileVersion": "1.1.0.0"
}
}
},
"Serilog.Settings.Configuration/3.3.0": {
"dependencies": {
"Microsoft.Extensions.DependencyModel": "3.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0",
"Serilog": "2.10.0"
},
"runtime": {
"lib/netstandard2.0/Serilog.Settings.Configuration.dll": {
"assemblyVersion": "3.3.0.0",
"fileVersion": "3.3.0.0"
}
}
},
"Serilog.Sinks.Console/4.0.1": {
"dependencies": {
"Serilog": "2.10.0"
},
"runtime": {
"lib/net5.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.0.1.0"
}
}
},
"Serilog.Sinks.Debug/2.0.0": {
"dependencies": {
"Serilog": "2.10.0"
},
"runtime": {
"lib/netstandard2.1/Serilog.Sinks.Debug.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.0.0.0"
}
}
},
"Serilog.Sinks.EventLog/3.1.0": {
"dependencies": {
"Serilog": "2.10.0",
"System.Diagnostics.EventLog": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Serilog.Sinks.EventLog.dll": {
"assemblyVersion": "3.0.0.0",
"fileVersion": "3.1.0.0"
}
}
},
"Serilog.Sinks.File/5.0.0": {
"dependencies": {
"Serilog": "2.10.0"
},
"runtime": {
"lib/net5.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"Swashbuckle.AspNetCore/6.5.0": {
"dependencies": {
"Microsoft.Extensions.ApiDescription.Server": "6.0.5",
"Swashbuckle.AspNetCore.Swagger": "6.5.0",
"Swashbuckle.AspNetCore.SwaggerGen": "6.5.0",
"Swashbuckle.AspNetCore.SwaggerUI": "6.5.0"
}
},
"Swashbuckle.AspNetCore.Swagger/6.5.0": {
"dependencies": {
"Microsoft.OpenApi": "1.2.3"
},
"runtime": {
"lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/6.5.0": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.5.0"
},
"runtime": {
"lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/6.5.0": {
"runtime": {
"lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"System.Diagnostics.DiagnosticSource/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Diagnostics.EventLog/6.0.0": {},
"System.Drawing.Common/6.0.0": {
"dependencies": {
"Microsoft.Win32.SystemEvents": "6.0.0"
},
"runtime": {
"lib/net6.0/System.Drawing.Common.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
},
"runtimeTargets": {
"runtimes/unix/lib/net6.0/System.Drawing.Common.dll": {
"rid": "unix",
"assetType": "runtime",
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
},
"runtimes/win/lib/net6.0/System.Drawing.Common.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"System.Formats.Asn1/7.0.0": {
"runtime": {
"lib/net6.0/System.Formats.Asn1.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51805"
}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Security.Cryptography.Pkcs/7.0.3": {
"dependencies": {
"System.Formats.Asn1": "7.0.0"
},
"runtime": {
"lib/net6.0/System.Security.Cryptography.Pkcs.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.823.31807"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/System.Security.Cryptography.Pkcs.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.823.31807"
}
}
},
"System.ServiceProcess.ServiceController/6.0.0": {
"dependencies": {
"System.Diagnostics.EventLog": "6.0.0"
},
"runtime": {
"lib/net6.0/System.ServiceProcess.ServiceController.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/System.ServiceProcess.ServiceController.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"System.Text.Encoding.CodePages/7.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net6.0/System.Text.Encoding.CodePages.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51805"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51805"
}
}
},
"System.Text.Encodings.Web/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Json/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "6.0.0"
}
}
}
},
"libraries": {
"MailPrint/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle.Cryptography/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-A6Zr52zVqJKt18ZBsTnX0qhG0kwIQftVAjLmszmkiR/trSp8H+xj1gUOzk7XHwaKgyREMSV1v9XaKrBUeIOdvQ==",
"path": "bouncycastle.cryptography/2.2.1",
"hashPath": "bouncycastle.cryptography.2.2.1.nupkg.sha512"
},
"MailKit/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jVmB3Nr0JpqhyMiXOGWMin+QvRKpucGpSFBCav9dG6jEJPdBV+yp1RHVpKzxZPfT+0adaBuZlMFdbIciZo1EWA==",
"path": "mailkit/4.3.0",
"hashPath": "mailkit.4.3.0.nupkg.sha512"
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==",
"path": "microsoft.extensions.apidescription.server/6.0.5",
"hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tq2wXyh3fL17EMF2bXgRhU7JrbO3on93MRKYxzz4JzzvuGSA1l0W3GI9/tl8EO89TH+KWEymP7bcFway6z9fXg==",
"path": "microsoft.extensions.configuration/6.0.0",
"hashPath": "microsoft.extensions.configuration.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
"path": "microsoft.extensions.configuration.abstractions/6.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
"path": "microsoft.extensions.configuration.binder/6.0.0",
"hashPath": "microsoft.extensions.configuration.binder.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.CommandLine/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3nL1qCkZ1Oxx14ZTzgo4MmlO7tso7F+TtMZAY2jUAtTLyAcDp+EDjk3RqafoKiNaePyPvvlleEcBxh3b2Hzl1g==",
"path": "microsoft.extensions.configuration.commandline/6.0.0",
"hashPath": "microsoft.extensions.configuration.commandline.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==",
"path": "microsoft.extensions.configuration.environmentvariables/6.0.1",
"hashPath": "microsoft.extensions.configuration.environmentvariables.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==",
"path": "microsoft.extensions.configuration.fileextensions/6.0.0",
"hashPath": "microsoft.extensions.configuration.fileextensions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==",
"path": "microsoft.extensions.configuration.json/6.0.0",
"hashPath": "microsoft.extensions.configuration.json.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.UserSecrets/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Fy8yr4V6obi7ZxvKYI1i85jqtwMq8tqyxQVZpRSkgeA8enqy/KvBIMdcuNdznlxQMZa72mvbHqb7vbg4Pyx95w==",
"path": "microsoft.extensions.configuration.usersecrets/6.0.1",
"hashPath": "microsoft.extensions.configuration.usersecrets.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
"path": "microsoft.extensions.dependencyinjection/6.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Iaectmzg9Dc4ZbKX/FurrRjgO/I8rTumL5UU+Uube6vZuGetcnXoIgTA94RthFWePhdMVm8MMhVFJZdbzMsdyQ==",
"path": "microsoft.extensions.dependencymodel/3.0.0",
"hashPath": "microsoft.extensions.dependencymodel.3.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
"path": "microsoft.extensions.fileproviders.abstractions/6.0.0",
"hashPath": "microsoft.extensions.fileproviders.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==",
"path": "microsoft.extensions.fileproviders.physical/6.0.0",
"hashPath": "microsoft.extensions.fileproviders.physical.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw==",
"path": "microsoft.extensions.filesystemglobbing/6.0.0",
"hashPath": "microsoft.extensions.filesystemglobbing.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hbmizc9KPWOacLU8Z8YMaBG6KWdZFppczYV/KwnPGU/8xebWxQxdDeJmLOgg968prb7g2oQgnp6JVLX6lgby8g==",
"path": "microsoft.extensions.hosting/6.0.1",
"hashPath": "microsoft.extensions.hosting.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
"path": "microsoft.extensions.hosting.abstractions/6.0.0",
"hashPath": "microsoft.extensions.hosting.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.WindowsServices/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0vaOeMeDpVUqvOJ0pHugoOqTZULdq7c0kZLzzlrQwUZ7ScUat27d8hrK3IxJ7FWF3OBZXSjA2nWYRcdA5WG9wg==",
"path": "microsoft.extensions.hosting.windowsservices/6.0.1",
"hashPath": "microsoft.extensions.hosting.windowsservices.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Logging/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
"path": "microsoft.extensions.logging/6.0.0",
"hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
"path": "microsoft.extensions.logging.abstractions/6.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==",
"path": "microsoft.extensions.logging.configuration/6.0.0",
"hashPath": "microsoft.extensions.logging.configuration.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==",
"path": "microsoft.extensions.logging.console/6.0.0",
"hashPath": "microsoft.extensions.logging.console.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Debug/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-M9g/JixseSZATJE9tcMn9uzoD4+DbSglivFqVx8YkRJ7VVPmnvCEbOZ0AAaxsL1EKyI4cz07DXOOJExxNsUOHw==",
"path": "microsoft.extensions.logging.debug/6.0.0",
"hashPath": "microsoft.extensions.logging.debug.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventLog/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rlo0RxlMd0WtLG3CHI0qOTp6fFn7MvQjlrCjucA31RqmiMFCZkF8CHNbe8O7tbBIyyoLGWB1he9CbaA5iyHthg==",
"path": "microsoft.extensions.logging.eventlog/6.0.0",
"hashPath": "microsoft.extensions.logging.eventlog.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventSource/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BeDyyqt7nkm/nr+Gdk+L8n1tUT/u33VkbXAOesgYSNsxDM9hJ1NOBGoZfj9rCbeD2+9myElI6JOVVFmnzgeWQA==",
"path": "microsoft.extensions.logging.eventsource/6.0.0",
"hashPath": "microsoft.extensions.logging.eventsource.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
"path": "microsoft.extensions.options/6.0.0",
"hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==",
"path": "microsoft.extensions.options.configurationextensions/6.0.0",
"hashPath": "microsoft.extensions.options.configurationextensions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
"path": "microsoft.extensions.primitives/6.0.0",
"hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
},
"Microsoft.OpenApi/1.2.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==",
"path": "microsoft.openapi/1.2.3",
"hashPath": "microsoft.openapi.1.2.3.nupkg.sha512"
},
"Microsoft.Win32.SystemEvents/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==",
"path": "microsoft.win32.systemevents/6.0.0",
"hashPath": "microsoft.win32.systemevents.6.0.0.nupkg.sha512"
},
"MimeKit/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-39KDXuERDy5VmHIn7NnCWvIVp/Ar4qnxZWg9m06DfRqDbW1B6zFv9o3Tdoa4CCu71tE/0SRqRCN5Z+bbffw6uw==",
"path": "mimekit/4.3.0",
"hashPath": "mimekit.4.3.0.nupkg.sha512"
},
"Serilog/2.10.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==",
"path": "serilog/2.10.0",
"hashPath": "serilog.2.10.0.nupkg.sha512"
},
"Serilog.AspNetCore/6.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-iMwFUJDN+/yWIPz4TKCliagJ1Yn//SceCYCzgdPwe/ECYUwb5/WUL8cTzRKV+tFwxGjLEV/xpm0GupS5RwbhSQ==",
"path": "serilog.aspnetcore/6.1.0",
"hashPath": "serilog.aspnetcore.6.1.0.nupkg.sha512"
},
"Serilog.Extensions.Hosting/5.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-o0VUyt3npAqOJaZ6CiWLFeLYs3CYJwfcAqaUqprzsmj7qYIvorcn8cZLVR8AQX6vzX7gee2bD0sQeA17iO2/Aw==",
"path": "serilog.extensions.hosting/5.0.1",
"hashPath": "serilog.extensions.hosting.5.0.1.nupkg.sha512"
},
"Serilog.Extensions.Logging/3.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IWfem7wfrFbB3iw1OikqPFNPEzfayvDuN4WP7Ue1AVFskalMByeWk3QbtUXQR34SBkv1EbZ3AySHda/ErDgpcg==",
"path": "serilog.extensions.logging/3.1.0",
"hashPath": "serilog.extensions.logging.3.1.0.nupkg.sha512"
},
"Serilog.Formatting.Compact/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pNroKVjo+rDqlxNG5PXkRLpfSCuDOBY0ri6jp9PLe505ljqwhwZz8ospy2vWhQlFu5GkIesh3FcDs4n7sWZODA==",
"path": "serilog.formatting.compact/1.1.0",
"hashPath": "serilog.formatting.compact.1.1.0.nupkg.sha512"
},
"Serilog.Settings.Configuration/3.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7GNudISZwqaT902hqEL2OFGTZeUFWfnrNLupJkOqeF41AR3GjcxX+Hwb30xb8gG2/CDXsCMVfF8o0+8KY0fJNg==",
"path": "serilog.settings.configuration/3.3.0",
"hashPath": "serilog.settings.configuration.3.3.0.nupkg.sha512"
},
"Serilog.Sinks.Console/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
"path": "serilog.sinks.console/4.0.1",
"hashPath": "serilog.sinks.console.4.0.1.nupkg.sha512"
},
"Serilog.Sinks.Debug/2.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==",
"path": "serilog.sinks.debug/2.0.0",
"hashPath": "serilog.sinks.debug.2.0.0.nupkg.sha512"
},
"Serilog.Sinks.EventLog/3.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NZukSBsuyGqcA8h6VI4SC84vmwjw08OKJUEXFktSx7wPokWIwx/Mk9cdqSvadwLIC+2Stmpz1vG6EP5OZ5indQ==",
"path": "serilog.sinks.eventlog/3.1.0",
"hashPath": "serilog.sinks.eventlog.3.1.0.nupkg.sha512"
},
"Serilog.Sinks.File/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
"path": "serilog.sinks.file/5.0.0",
"hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FK05XokgjgwlCI6wCT+D4/abtQkL1X1/B9Oas6uIwHFmYrIO9WUD5aLC9IzMs9GnHfUXOtXZ2S43gN1mhs5+aA==",
"path": "swashbuckle.aspnetcore/6.5.0",
"hashPath": "swashbuckle.aspnetcore.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XWmCmqyFmoItXKFsQSwQbEAsjDKcxlNf1l+/Ki42hcb6LjKL8m5Db69OTvz5vLonMSRntYO1XLqz0OP+n3vKnA==",
"path": "swashbuckle.aspnetcore.swagger/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y/qW8Qdg9OEs7V013tt+94OdPxbRdbhcEbw4NiwGvf4YBcfhL/y7qp/Mjv/cENsQ2L3NqJ2AOu94weBy/h4KvA==",
"path": "swashbuckle.aspnetcore.swaggergen/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OvbvxX+wL8skxTBttcBsVxdh73Fag4xwqEU2edh4JMn7Ws/xJHnY/JB1e9RoCb6XpDxUF3hD9A0Z1lEUx40Pfw==",
"path": "swashbuckle.aspnetcore.swaggerui/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
"path": "system.diagnostics.diagnosticsource/6.0.0",
"hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
},
"System.Diagnostics.EventLog/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==",
"path": "system.diagnostics.eventlog/6.0.0",
"hashPath": "system.diagnostics.eventlog.6.0.0.nupkg.sha512"
},
"System.Drawing.Common/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==",
"path": "system.drawing.common/6.0.0",
"hashPath": "system.drawing.common.6.0.0.nupkg.sha512"
},
"System.Formats.Asn1/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-+nfpV0afLmvJW8+pLlHxRjz3oZJw4fkyU9MMEaMhCsHi/SN9bGF9q79ROubDiwTiCHezmK0uCWkPP7tGFP/4yg==",
"path": "system.formats.asn1/7.0.0",
"hashPath": "system.formats.asn1.7.0.0.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Security.Cryptography.Pkcs/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yhwEHH5Gzl/VoADrXtt5XC95OFoSjNSWLHNutE7GwdOgefZVRvEXRSooSpL8HHm3qmdd9epqzsWg28UJemt22w==",
"path": "system.security.cryptography.pkcs/7.0.3",
"hashPath": "system.security.cryptography.pkcs.7.0.3.nupkg.sha512"
},
"System.ServiceProcess.ServiceController/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qMBvG8ZFbkXoe0Z5/D7FAAadfPkH2v7vSuh2xsLf3U6jNoejpIdeV18A0htiASsLK1CCAc/p59kaLXlt2yB1gw==",
"path": "system.serviceprocess.servicecontroller/6.0.0",
"hashPath": "system.serviceprocess.servicecontroller.6.0.0.nupkg.sha512"
},
"System.Text.Encoding.CodePages/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==",
"path": "system.text.encoding.codepages/7.0.0",
"hashPath": "system.text.encoding.codepages.7.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
"path": "system.text.encodings.web/6.0.0",
"hashPath": "system.text.encodings.web.6.0.0.nupkg.sha512"
},
"System.Text.Json/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==",
"path": "system.text.json/6.0.0",
"hashPath": "system.text.json.6.0.0.nupkg.sha512"
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,20 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "6.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more