1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-23 01:49:53 +03:00

Add configuration option and code to implement using the Hub name as the Radius realm

This commit is contained in:
Sacha J Bernstein 2014-07-25 11:21:28 -04:00
parent 16b713b98d
commit 2e231be197
3 changed files with 15 additions and 1 deletions

View File

@ -424,6 +424,7 @@ struct HUB
UINT RadiusRetryInterval; // Radius retry interval UINT RadiusRetryInterval; // Radius retry interval
BUF *RadiusSecret; // Radius shared key BUF *RadiusSecret; // Radius shared key
char RadiusSuffixFilter[MAX_SIZE]; // Radius suffix filter char RadiusSuffixFilter[MAX_SIZE]; // Radius suffix filter
bool RadiusIncludeRealm; // Radius - Should be use hub name as realm
volatile bool Halt; // Halting flag volatile bool Halt; // Halting flag
bool Offline; // Offline bool Offline; // Offline
bool BeingOffline; // Be Doing Offline bool BeingOffline; // Be Doing Offline

View File

@ -210,9 +210,20 @@ bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *p
// Radius authentication // Radius authentication
AUTHRADIUS *auth = (AUTHRADIUS *)u->AuthData; AUTHRADIUS *auth = (AUTHRADIUS *)u->AuthData;
if (ast || auth->RadiusUsername == NULL || UniStrLen(auth->RadiusUsername) == 0) if (ast || auth->RadiusUsername == NULL || UniStrLen(auth->RadiusUsername) == 0)
{
if( h->RadiusIncludeRealm )
{
char name_and_realm[MAX_SIZE];
name_and_realm = StrCpy(name_and_realm, MAX_SIZE, username);
name_and_realm = StrCpy(name_and_realm, (MAX_SIZE - StrLen(name_and_realm)), "@");
name_and_realm = StrCpy(name_and_realm, (MAX_SIZE - StrLen(name_and_realm)), hub.name);
name = CopyStrToUni(name_and_realm);
}
else
{ {
name = CopyStrToUni(username); name = CopyStrToUni(username);
} }
}
else else
{ {
name = CopyUniStr(auth->RadiusUsername); name = CopyUniStr(auth->RadiusUsername);

View File

@ -4926,6 +4926,7 @@ void SiWriteHubCfg(FOLDER *f, HUB *h)
CfgAddInt(f, "RadiusServerPort", h->RadiusServerPort); CfgAddInt(f, "RadiusServerPort", h->RadiusServerPort);
CfgAddInt(f, "RadiusRetryInterval", h->RadiusRetryInterval); CfgAddInt(f, "RadiusRetryInterval", h->RadiusRetryInterval);
CfgAddStr(f, "RadiusSuffixFilter", h->RadiusSuffixFilter); CfgAddStr(f, "RadiusSuffixFilter", h->RadiusSuffixFilter);
CfgAddBool(f, "RadiusIncludeRealm", h->RadiusIncludeRealm);
} }
Unlock(h->RadiusOptionLock); Unlock(h->RadiusOptionLock);
@ -5091,6 +5092,7 @@ void SiLoadHubCfg(SERVER *s, FOLDER *f, char *name)
interval = CfgGetInt(f, "RadiusRetryInterval"); interval = CfgGetInt(f, "RadiusRetryInterval");
CfgGetStr(f, "RadiusSuffixFilter", h->RadiusSuffixFilter, sizeof(h->RadiusSuffixFilter)); CfgGetStr(f, "RadiusSuffixFilter", h->RadiusSuffixFilter, sizeof(h->RadiusSuffixFilter));
h->RadiusIncludeRealm = CfgGetBool(f, "RadiusIncludeRealm");
if (interval == 0) if (interval == 0)
{ {