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()
{
accountingRadius= new RadiusServer(new IPEndPoint(IPAddress.Any,1812));
.LookupSecret = LookupRadiusSecret;
radiusServer.MessageReceived = RadiusMessageReceived;
locatorRadius = new RadiusServer(new IPEndPoint(IPAddress.Any, 1816));
accountingRadius.LookupSecret = (endPoint) => SecretsStore.LookupSecret(endPoint);
locatorRadius.LookupSecret = (endPoint) => SecretsStore.LookupSecret(endPoint);
locatorRadius.MessageReceived = LocatorMessageReceived;
accountingRadius.MessageReceived = AccountingMessageReceived;
}
byte[] LookupRadiusSecret(IPEndPoint remoteEndpoint)
{
return defaultSecret;
}
void RadiusMessageReceived(RadiusServer radiusServer, RadiusMessage radiusMessage)
/**
* Locator Service
*
**/
void LocatorMessageReceived(RadiusServer radiusServer, RadiusMessage radiusMessage)
{
Logging.Log(LogLevel.INFO, "Radius Message received: {0}", radiusMessage);
switch ( radiusMessage.Code)
switch (radiusMessage.Code)
{
case RadiusCode.AccessRequest:
AccessRequest(radiusServer, radiusMessage);
LocatorAccessRequest(radiusServer, radiusMessage);
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()