WIP
parent
98e39c8a26
commit
dd1cbcfb86
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace skyspot.users
|
|||
}
|
||||
}
|
||||
|
||||
public IEnumerable<HotspotSession> ActiveSessions { get; }
|
||||
//public IEnumerable<HotspotSession> ActiveSessions { get; }
|
||||
|
||||
|
||||
public HotspotUser()
|
||||
|
|
Loading…
Reference in New Issue