Browse Source

fix conflict

Daiyuu Nobori 9 years ago
parent
commit
c9cd73d906
3 changed files with 15 additions and 1 deletions
  1. 1 0
      src/Cedar/Hub.h
  2. 12 1
      src/Cedar/Sam.c
  3. 2 0
      src/Cedar/Server.c

+ 1 - 0
src/Cedar/Hub.h

@@ -440,6 +440,7 @@ struct HUB
 	char RadiusSuffixFilter[MAX_SIZE];	// Radius suffix filter
 	bool RadiusConvertAllMsChapv2AuthRequestToEap;	// Convert all MS-CHAPv2 auth request to EAP
 	bool RadiusUsePeapInsteadOfEap;			// Use PEAP instead of EAP
+	char RadiusRealm[MAX_SIZE];		// Radius realm (optional)
 	volatile bool Halt;					// Halting flag
 	bool Offline;						// Offline
 	bool BeingOffline;					// Be Doing Offline

+ 12 - 1
src/Cedar/Sam.c

@@ -211,7 +211,18 @@ bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *p
 					AUTHRADIUS *auth = (AUTHRADIUS *)u->AuthData;
 					if (ast || auth->RadiusUsername == NULL || UniStrLen(auth->RadiusUsername) == 0)
 					{
-						name = CopyStrToUni(username);
+						if( IsEmptyStr(h->RadiusRealm) == false )
+						{	
+							char name_and_realm[MAX_SIZE];
+							StrCpy(name_and_realm, MAX_SIZE, username);
+							StrCat(name_and_realm, (MAX_SIZE - StrLen(name_and_realm)), "@");
+							StrCat(name_and_realm, (MAX_SIZE - StrLen(name_and_realm)), h->RadiusRealm);
+							name = CopyStrToUni(name_and_realm);
+						}
+						else
+						{
+							name = CopyStrToUni(username);
+						}
 					}
 					else
 					{

+ 2 - 0
src/Cedar/Server.c

@@ -5022,6 +5022,7 @@ void SiWriteHubCfg(FOLDER *f, HUB *h)
 
 		CfgAddBool(f, "RadiusConvertAllMsChapv2AuthRequestToEap", h->RadiusConvertAllMsChapv2AuthRequestToEap);
 		CfgAddBool(f, "RadiusUsePeapInsteadOfEap", h->RadiusUsePeapInsteadOfEap);
+		CfgAddStr(f, "RadiusRealm", h->RadiusRealm);
 	}
 	Unlock(h->RadiusOptionLock);
 
@@ -5187,6 +5188,7 @@ void SiLoadHubCfg(SERVER *s, FOLDER *f, char *name)
 			interval = CfgGetInt(f, "RadiusRetryInterval");
 
 			CfgGetStr(f, "RadiusSuffixFilter", h->RadiusSuffixFilter, sizeof(h->RadiusSuffixFilter));
+			CfgGetStr(f, "RadiusRealm", h->RadiusRealm, sizeof(h->RadiusRealm));
 
 			h->RadiusConvertAllMsChapv2AuthRequestToEap = CfgGetBool(f, "RadiusConvertAllMsChapv2AuthRequestToEap");
 			h->RadiusUsePeapInsteadOfEap = CfgGetBool(f, "RadiusUsePeapInsteadOfEap");