feat: add account enforcement background service and radius management service for automated session control and user configuration
Build and Push Docker Image to Gitea Container Registry / build-and-push (push) Successful in 1m3s
Build and Push Docker Image to Gitea Container Registry / build-and-push (push) Successful in 1m3s
This commit is contained in:
@@ -107,7 +107,7 @@ public class AccountEnforcementService : BackgroundService
|
||||
// Find active sessions to disconnect them instantly via RADIUS CoA (PoD)
|
||||
var activeSessions = await db.RadAcct
|
||||
.Where(ra => ra.Username == profile.Username && ra.AcctStopTime == null)
|
||||
.Select(ra => new { ra.NasIpAddress, ra.CallingStationId, ra.AcctSessionId })
|
||||
.Select(ra => new { ra.NasIpAddress, ra.CallingStationId, ra.AcctSessionId, ra.CalledStationId })
|
||||
.ToListAsync(ct);
|
||||
|
||||
var radiusSecret = Environment.GetEnvironmentVariable("RADIUS_SECRET") ?? "radpass";
|
||||
@@ -118,7 +118,9 @@ public class AccountEnforcementService : BackgroundService
|
||||
|
||||
try
|
||||
{
|
||||
var payload = $"User-Name=\\\"{profile.Username}\\\"\\nCalling-Station-Id=\\\"{session.CallingStationId}\\\"\\nAcct-Session-Id=\\\"{session.AcctSessionId}\\\"\\nNAS-IP-Address=\\\"{session.NasIpAddress}\\\"\\nMessage-Authenticator=0x00\\n";
|
||||
var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||
var nasIdentifier = string.IsNullOrWhiteSpace(session.CalledStationId) ? "" : session.CalledStationId.Split(':')[0].Replace("-", "").ToLowerInvariant();
|
||||
var payload = $"User-Name=\\\"{profile.Username}\\\"\\nCalling-Station-Id=\\\"{session.CallingStationId}\\\"\\nAcct-Session-Id=\\\"{session.AcctSessionId}\\\"\\nNAS-IP-Address=\\\"{session.NasIpAddress}\\\"\\nNAS-Identifier=\\\"{nasIdentifier}\\\"\\nEvent-Timestamp={timestamp}\\n";
|
||||
var process = new System.Diagnostics.Process
|
||||
{
|
||||
StartInfo = new System.Diagnostics.ProcessStartInfo
|
||||
|
||||
Reference in New Issue
Block a user