56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
|
|
|
|
using StellaOps.Auth.ServerIntegration;
|
|
using Npgsql;
|
|
using StellaOps.OpsMemory.Playbook;
|
|
using StellaOps.OpsMemory.Similarity;
|
|
using StellaOps.OpsMemory.Storage;
|
|
using StellaOps.OpsMemory.WebService.Endpoints;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Add PostgreSQL data source
|
|
var connectionString = builder.Configuration.GetConnectionString("OpsMemory")
|
|
?? "Host=localhost;Port=5432;Database=stellaops;Username=stellaops;Password=stellaops";
|
|
builder.Services.AddSingleton<NpgsqlDataSource>(_ => NpgsqlDataSource.Create(connectionString));
|
|
|
|
// Add OpsMemory services
|
|
builder.Services.AddSingleton<IOpsMemoryStore, PostgresOpsMemoryStore>();
|
|
builder.Services.AddSingleton<SimilarityVectorGenerator>();
|
|
builder.Services.AddSingleton<PlaybookSuggestionService>();
|
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddSwaggerGen(options =>
|
|
{
|
|
options.SwaggerDoc("v1", new()
|
|
{
|
|
Title = "StellaOps OpsMemory API",
|
|
Version = "v1",
|
|
Description = "Decision ledger and playbook suggestions API for security operations learning"
|
|
});
|
|
});
|
|
|
|
builder.Services.AddHealthChecks();
|
|
|
|
builder.Services.AddStellaOpsCors(builder.Environment, builder.Configuration);
|
|
|
|
builder.TryAddStellaOpsLocalBinding("opsmemory");
|
|
var app = builder.Build();
|
|
app.LogStellaOpsLocalHostname("opsmemory");
|
|
|
|
// Configure the HTTP request pipeline
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
}
|
|
|
|
app.UseStellaOpsCors();
|
|
app.UseHttpsRedirection();
|
|
|
|
// Map endpoints
|
|
app.MapOpsMemoryEndpoints();
|
|
app.MapHealthChecks("/health");
|
|
|
|
app.Run();
|