master
Harald Wolff 2019-05-09 09:53:48 +02:00
parent 98e39c8a26
commit dd1cbcfb86
2 changed files with 57 additions and 11 deletions

View File

@ -39,30 +39,76 @@ namespace skyspot.session
private void InitializeRadius() private void InitializeRadius()
{ {
accountingRadius= new RadiusServer(new IPEndPoint(IPAddress.Any,1812)); accountingRadius= new RadiusServer(new IPEndPoint(IPAddress.Any,1812));
.LookupSecret = LookupRadiusSecret; locatorRadius = new RadiusServer(new IPEndPoint(IPAddress.Any, 1816));
radiusServer.MessageReceived = RadiusMessageReceived;
accountingRadius.LookupSecret = (endPoint) => SecretsStore.LookupSecret(endPoint);
locatorRadius.LookupSecret = (endPoint) => SecretsStore.LookupSecret(endPoint);
locatorRadius.MessageReceived = LocatorMessageReceived;
accountingRadius.MessageReceived = AccountingMessageReceived;
} }
byte[] LookupRadiusSecret(IPEndPoint remoteEndpoint) /**
{ * Locator Service
return defaultSecret; *
} **/
void RadiusMessageReceived(RadiusServer radiusServer, RadiusMessage radiusMessage) void LocatorMessageReceived(RadiusServer radiusServer, RadiusMessage radiusMessage)
{ {
Logging.Log(LogLevel.INFO, "Radius Message received: {0}", radiusMessage); Logging.Log(LogLevel.INFO, "Radius Message received: {0}", radiusMessage);
switch ( radiusMessage.Code) switch (radiusMessage.Code)
{ {
case RadiusCode.AccessRequest: case RadiusCode.AccessRequest:
AccessRequest(radiusServer, radiusMessage); LocatorAccessRequest(radiusServer, radiusMessage);
break; break;
} }
} }
void AccessRequest(RadiusServer radiusServer, RadiusMessage radiusMessage) void LocatorAccessRequest(RadiusServer radiusServer, RadiusMessage radiusMessage)
{ {
} }
/**
*
* Accounting Service
*
**/
void AccountingMessageReceived(RadiusServer radiusServer, RadiusMessage radiusMessage)
{
Logging.Log(LogLevel.INFO, "Radius Message received: {0}", radiusMessage);
switch (radiusMessage.Code)
{
case RadiusCode.AccessRequest:
AccountingAccessRequest(radiusServer, radiusMessage);
break;
}
}
void AccountingAccessRequest(RadiusServer radiusServer, RadiusMessage radiusMessage)
{
RadiusAttribute.UserName userName = radiusMessage.GetAttribute<RadiusAttribute.UserName>();
RadiusAttribute.UserPassword userPassword = radiusMessage.GetAttribute<RadiusAttribute.UserPassword>();
RadiusAttribute.CalledStationID calledStationID = radiusMessage.GetAttribute<RadiusAttribute.CalledStationID>();
if ((userName == null) || (calledStationID == null))
{
Logging.Log(LogLevel.WARNING, "InvalidRequest: UserName={0} CalledStationID={1}",userName,calledStationID);
return;
}
MAC clientMac = new MAC(userName.AsText);
String instanceName = calledStationID.AsText;
Logging.Log(LogLevel.INFO, "Accounting: Session start for client {0} on Network {1}",clientMac, instanceName);
RadiusMessage reply = new RadiusMessage(radiusMessage.EndPoint, RadiusCode.AccessAccept);
reply.Identifier = radiusMessage.Identifier;
reply.Authenticate(SecretsStore.LookupSecret(reply.EndPoint));
radiusServer.Send(reply);
}
} }
} }

View File

@ -34,7 +34,7 @@ namespace skyspot.users
} }
} }
public IEnumerable<HotspotSession> ActiveSessions { get; } //public IEnumerable<HotspotSession> ActiveSessions { get; }
public HotspotUser() public HotspotUser()