fix: Enrollment-Duplikate, IPv6-Adresse, Agent-Status
- Backend: Enroll-Upsert via MAC-Adresse (kein Duplikat bei Neustart) HeartbeatInterval auf 30s reduziert - Go collector: IPv4 bevorzugen, Loopback/Teredo/ISATAP überspringen, Link-Local IPv6 ignorieren - Go main.go: Enrollment nimmt beste IPv4-Schnittstelle statt Networks[0]
This commit is contained in:
@@ -29,6 +29,24 @@ public class AgentGrpcService : AgentService.AgentServiceBase
|
||||
|
||||
public override async Task<EnrollResponse> Enroll(EnrollRequest request, ServerCallContext context)
|
||||
{
|
||||
// Upsert via MAC-Adresse — verhindert Duplikate bei Agent-Neustart
|
||||
var existing = !string.IsNullOrEmpty(request.MacAddress)
|
||||
? await _db.Agents.FirstOrDefaultAsync(a => a.MacAddress == request.MacAddress)
|
||||
: null;
|
||||
|
||||
if (existing is not null)
|
||||
{
|
||||
existing.Hostname = request.Hostname;
|
||||
existing.OsVersion = request.OsVersion;
|
||||
existing.IpAddress = request.IpAddress;
|
||||
existing.AgentVersion = request.AgentVersion;
|
||||
existing.Status = AgentStatus.Online;
|
||||
existing.LastSeen = DateTime.UtcNow;
|
||||
await _db.SaveChangesAsync();
|
||||
_logger.LogInformation("Agent re-enrolled: {AgentId} ({Hostname})", existing.Id, existing.Hostname);
|
||||
return new EnrollResponse { AgentId = existing.Id.ToString(), HeartbeatInterval = 30 };
|
||||
}
|
||||
|
||||
var agent = new AgentModel
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
@@ -47,11 +65,7 @@ public class AgentGrpcService : AgentService.AgentServiceBase
|
||||
await _db.SaveChangesAsync();
|
||||
_logger.LogInformation("Agent enrolled: {AgentId} ({Hostname})", agent.Id, agent.Hostname);
|
||||
|
||||
return new EnrollResponse
|
||||
{
|
||||
AgentId = agent.Id.ToString(),
|
||||
HeartbeatInterval = 60
|
||||
};
|
||||
return new EnrollResponse { AgentId = agent.Id.ToString(), HeartbeatInterval = 30 };
|
||||
}
|
||||
|
||||
public override async Task<HeartbeatResponse> Heartbeat(HeartbeatRequest request, ServerCallContext context)
|
||||
|
||||
Reference in New Issue
Block a user