X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2FWINNT%2Fclient_config%2Fconfig.cpp;h=d39f24fc3dc9508316f319cadbc12d99c14f697a;hp=7a0435ac7daca03f14d08fc624e176e9ff4d3eeb;hb=aaed9b1a5a8799290b7063a173e5bb0a023cf3d0;hpb=fb5bcd00fc6f1560d7d02115a0b5beaa3014a0e7 diff --git a/src/WINNT/client_config/config.cpp b/src/WINNT/client_config/config.cpp index 7a0435a..d39f24f 100644 --- a/src/WINNT/client_config/config.cpp +++ b/src/WINNT/client_config/config.cpp @@ -34,14 +34,6 @@ extern "C" { #define PIOCTL_MAXSIZE 2048 -/* - * REGISTRY ___________________________________________________________________ - * - */ - -static TCHAR cszLANMANDEVICE[] = TEXT("\\Device\\LanmanRedirector\\"); -const TCHAR AFSConfigKeyName[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters"); - /* * ROUTINES ___________________________________________________________________ @@ -91,14 +83,14 @@ DWORD Config_GetServiceState (void) void Config_GetGatewayFlag (BOOL *pfFlag) { - if (!Config_ReadNum (TEXT("IsGateway"), (DWORD*)pfFlag)) + if (!Config_ReadGlobalNum (TEXT("IsGateway"), (DWORD*)pfFlag)) *pfFlag = FALSE; } BOOL Config_SetGatewayFlag (BOOL fFlag, ULONG *pStatus) { - Config_WriteNum (TEXT("IsGateway"), fFlag); + Config_WriteGlobalNum (TEXT("IsGateway"), fFlag); g.fNeedRestart = TRUE; return TRUE; } @@ -106,7 +98,7 @@ BOOL Config_SetGatewayFlag (BOOL fFlag, ULONG *pStatus) void Config_GetGatewayName (LPTSTR pszName) { - if (!Config_ReadString (TEXT("Gateway"), pszName, MAX_PATH)) + if (!Config_ReadGlobalString (TEXT("Gateway"), pszName, MAX_PATH)) GetString (pszName, IDS_GATEWAY_UNKNOWN); else if (!*pszName) GetString (pszName, IDS_GATEWAY_UNKNOWN); @@ -119,11 +111,11 @@ BOOL Config_SetGatewayName (LPCTSTR pszName, ULONG *pStatus) GetString (szBogus, IDS_GATEWAY_UNKNOWN); if (!lstrcmpi (szBogus, pszName)) { - Config_WriteString (TEXT("Gateway"), TEXT("")); + Config_WriteGlobalString (TEXT("Gateway"), TEXT("")); } else { - Config_WriteString (TEXT("Gateway"), pszName); + Config_WriteGlobalString (TEXT("Gateway"), pszName); } return TRUE; @@ -165,7 +157,7 @@ void Config_FixGatewayDrives (void) void Config_GetCellName (LPTSTR pszName) { - if (!Config_ReadString (TEXT("Cell"), pszName, MAX_PATH)) + if (!Config_ReadGlobalString (TEXT("Cell"), pszName, MAX_PATH)) GetString (pszName, IDS_CELL_UNKNOWN); else if (!*pszName) GetString (pszName, IDS_CELL_UNKNOWN); @@ -211,13 +203,21 @@ BOOL Config_SetCellName (LPCTSTR pszName, ULONG *pStatus) GetString (szBogus, IDS_CELL_UNKNOWN); if (lstrcmpi (szBogus, pszName)) { - Config_WriteString (TEXT("Cell"), pszName); + Config_WriteGlobalString (TEXT("Cell"), pszName); g.fNeedRestart = TRUE; } return TRUE; } +#if 0 +/* These two functions are not needed as of the 1.2.2a updates. + The old implementation used to 'bind' afslogon.dll to the credentials manager + when the Integrated Logon was selected. + With version 1.2.2a afslogon.dll is always 'bound' to the credentials manager; therefore, + the binding operation is done during installation. Note: the Integrated Logon is + selected by an entry in the registry (LogonOptions). +*/ void Config_GetAuthentFlag (BOOL *pfFlag) { *pfFlag = FALSE; @@ -335,18 +335,18 @@ BOOL Config_SetAuthentFlag (BOOL fFlag, ULONG *pStatus) Message (MB_ICONHAND, GetErrorTitle(), IDS_FAILCONFIG_AUTHENT, TEXT("%ld"), status); return rc; } - +#endif void Config_GetTrayIconFlag (BOOL *pfFlag) { - if (!Config_ReadNum (TEXT("ShowTrayIcon"), (DWORD*)pfFlag)) + if (!Config_ReadUserNum (TEXT("ShowTrayIcon"), (DWORD*)pfFlag)) *pfFlag = FALSE; } BOOL Config_SetTrayIconFlag (BOOL fFlag, ULONG *pStatus) { - Config_WriteNum (TEXT("ShowTrayIcon"), fFlag); + Config_WriteUserNum (TEXT("ShowTrayIcon"), fFlag); for (HWND hSearch = GetWindow (GetDesktopWindow(), GW_CHILD); hSearch && IsWindow(hSearch); @@ -513,7 +513,7 @@ void Config_FreeServerPrefs (PSERVERPREFS pPrefs) void Config_GetCacheSize (ULONG *pckCache) { - if (!Config_ReadNum (TEXT("CacheSize"), (DWORD*)pckCache)) + if (!Config_ReadGlobalNum (TEXT("CacheSize"), (DWORD*)pckCache)) *pckCache = CM_CONFIGDEFAULT_CACHESIZE; } @@ -547,7 +547,7 @@ BOOL Config_SetCacheSize (ULONG ckCache, ULONG *pStatus) if (rc) { - Config_WriteNum (TEXT("CacheSize"), ckCache); + Config_WriteGlobalNum (TEXT("CacheSize"), ckCache); } if (pStatus && !rc) @@ -561,7 +561,7 @@ BOOL Config_SetCacheSize (ULONG ckCache, ULONG *pStatus) void Config_GetChunkSize (ULONG *pckChunk) { - if (!Config_ReadNum (TEXT("ChunkSize"), (DWORD*)pckChunk)) + if (!Config_ReadGlobalNum (TEXT("ChunkSize"), (DWORD*)pckChunk)) *pckChunk = CM_CONFIGDEFAULT_CHUNKSIZE; *pckChunk = max (*pckChunk, 10); *pckChunk = (1 << ((*pckChunk)-10)); @@ -570,7 +570,7 @@ void Config_GetChunkSize (ULONG *pckChunk) BOOL Config_SetChunkSize (ULONG ckChunk, ULONG *pStatus) { - Config_WriteNum (TEXT("ChunkSize"), log2(ckChunk * 1024)); + Config_WriteGlobalNum (TEXT("ChunkSize"), log2(ckChunk * 1024)); g.fNeedRestart = TRUE; return TRUE; } @@ -579,14 +579,14 @@ BOOL Config_SetChunkSize (ULONG ckChunk, ULONG *pStatus) void Config_GetStatEntries (ULONG *pcEntries) { - if (!Config_ReadNum (TEXT("Stats"), (DWORD*)pcEntries)) + if (!Config_ReadGlobalNum (TEXT("Stats"), (DWORD*)pcEntries)) *pcEntries = CM_CONFIGDEFAULT_STATS; } BOOL Config_SetStatEntries (ULONG cEntries, ULONG *pStatus) { - Config_WriteNum (TEXT("Stats"), cEntries); + Config_WriteGlobalNum (TEXT("Stats"), cEntries); g.fNeedRestart = TRUE; return TRUE; } @@ -639,14 +639,14 @@ BOOL Config_SetProbeInt (ULONG csecProbe, ULONG *pStatus) void Config_GetNumThreads (ULONG *pcThreads) { - if (!Config_ReadNum (TEXT("ServerThreads"), (DWORD*)pcThreads)) + if (!Config_ReadGlobalNum (TEXT("ServerThreads"), (DWORD*)pcThreads)) *pcThreads = CM_CONFIGDEFAULT_SVTHREADS; } BOOL Config_SetNumThreads (ULONG cThreads, ULONG *pStatus) { - Config_WriteNum (TEXT("ServerThreads"), cThreads); + Config_WriteGlobalNum (TEXT("ServerThreads"), cThreads); g.fNeedRestart = TRUE; return TRUE; } @@ -655,14 +655,14 @@ BOOL Config_SetNumThreads (ULONG cThreads, ULONG *pStatus) void Config_GetNumDaemons (ULONG *pcDaemons) { - if (!Config_ReadNum (TEXT("Daemons"), (DWORD*)pcDaemons)) + if (!Config_ReadGlobalNum (TEXT("Daemons"), (DWORD*)pcDaemons)) *pcDaemons = CM_CONFIGDEFAULT_DAEMONS; } BOOL Config_SetNumDaemons (ULONG cDaemons, ULONG *pStatus) { - Config_WriteNum (TEXT("Daemons"), cDaemons); + Config_WriteGlobalNum (TEXT("Daemons"), cDaemons); g.fNeedRestart = TRUE; return TRUE; } @@ -671,7 +671,7 @@ BOOL Config_SetNumDaemons (ULONG cDaemons, ULONG *pStatus) void Config_GetSysName (LPTSTR pszName) { - if (!Config_ReadString (TEXT("SysName"), pszName, MAX_PATH)) + if (!Config_ReadGlobalString (TEXT("SysName"), pszName, MAX_PATH)) lstrcpy (pszName, TEXT("i386_nt40")); } @@ -708,7 +708,7 @@ BOOL Config_SetSysName (LPCTSTR pszName, ULONG *pStatus) if (rc) { - Config_WriteString (TEXT("SysName"), pszName); + Config_WriteGlobalString (TEXT("SysName"), pszName); } if (pStatus && !rc) @@ -722,14 +722,14 @@ BOOL Config_SetSysName (LPCTSTR pszName, ULONG *pStatus) void Config_GetRootVolume (LPTSTR pszName) { - if (!Config_ReadString (TEXT("RootVolume"), pszName, MAX_PATH)) + if (!Config_ReadGlobalString (TEXT("RootVolume"), pszName, MAX_PATH)) lstrcpy (pszName, TEXT("root.afs")); } BOOL Config_SetRootVolume (LPCTSTR pszName, ULONG *pStatus) { - Config_WriteString (TEXT("RootVolume"), pszName); + Config_WriteGlobalString (TEXT("RootVolume"), pszName); g.fNeedRestart = TRUE; return TRUE; } @@ -738,14 +738,14 @@ BOOL Config_SetRootVolume (LPCTSTR pszName, ULONG *pStatus) void Config_GetMountRoot (LPTSTR pszPath) { - if (!Config_ReadString (TEXT("MountRoot"), pszPath, MAX_PATH)) + if (!Config_ReadGlobalString (TEXT("MountRoot"), pszPath, MAX_PATH)) lstrcpy (pszPath, TEXT("/afs")); } BOOL Config_SetMountRoot (LPCTSTR pszPath, ULONG *pStatus) { - Config_WriteString (TEXT("MountRoot"), pszPath); + Config_WriteGlobalString (TEXT("MountRoot"), pszPath); g.fNeedRestart = TRUE; return TRUE; } @@ -791,7 +791,7 @@ BOOL Config_GetCacheInUse (ULONG *pckCacheInUse, ULONG *pStatus) void Config_GetCachePath (LPTSTR pszCachePath) { - if (!Config_ReadString (TEXT("CachePath"), pszCachePath, MAX_PATH)) { + if (!Config_ReadGlobalString (TEXT("CachePath"), pszCachePath, MAX_PATH)) { TCHAR szPath[MAX_PATH]; GetWindowsDirectory(szPath, sizeof(szPath)); szPath[2] = 0; /* get drive letter only */ @@ -803,206 +803,83 @@ void Config_GetCachePath (LPTSTR pszCachePath) BOOL Config_SetCachePath(LPCTSTR pszPath, ULONG *pStatus) { - Config_WriteString (TEXT("CachePath"), pszPath); + Config_WriteGlobalString (TEXT("CachePath"), pszPath); g.fNeedRestart = TRUE; return TRUE; } void Config_GetLanAdapter (ULONG *pnLanAdapter) { - if (!Config_ReadNum (TEXT("LANadapter"), (DWORD*)pnLanAdapter)) - *pnLanAdapter = 0; + if (!Config_ReadGlobalNum (TEXT("LANadapter"), (DWORD*)pnLanAdapter)) + *pnLanAdapter = -1; } BOOL Config_SetLanAdapter (ULONG nLanAdapter, ULONG *pStatus) { - Config_WriteNum (TEXT("LANadapter"), nLanAdapter); + Config_WriteGlobalNum (TEXT("LANadapter"), nLanAdapter); g.fNeedRestart = TRUE; return TRUE; } void Config_GetTrapOnPanic (BOOL *pfFlag) { - if (!Config_ReadNum (TEXT("TrapOnPanic"), (DWORD*)pfFlag)) + if (!Config_ReadGlobalNum (TEXT("TrapOnPanic"), (DWORD*)pfFlag)) *pfFlag = TRUE; } BOOL Config_SetTrapOnPanic (BOOL fFlag, ULONG *pStatus) { - Config_WriteNum (TEXT("TrapOnPanic"), fFlag); + Config_WriteGlobalNum (TEXT("TrapOnPanic"), fFlag); g.fNeedRestart = TRUE; return TRUE; } void Config_GetTraceBufferSize (ULONG *pnBufSize) { - if (!Config_ReadNum (TEXT("TraceBufferSize"), (DWORD*)pnBufSize)) + if (!Config_ReadGlobalNum (TEXT("TraceBufferSize"), (DWORD*)pnBufSize)) *pnBufSize = 5000; } BOOL Config_SetTraceBufferSize (ULONG nBufSize, ULONG *pStatus) { - Config_WriteNum (TEXT("TraceBufferSize"), nBufSize); + Config_WriteGlobalNum (TEXT("TraceBufferSize"), nBufSize); g.fNeedRestart = TRUE; return TRUE; } void Config_GetLoginRetryInterval (ULONG *pnInterval) { - if (!Config_ReadNum (TEXT("LoginRetryInterval"), (DWORD*)pnInterval)) + if (!Config_ReadGlobalNum (TEXT("LoginRetryInterval"), (DWORD*)pnInterval)) *pnInterval = 30; } BOOL Config_SetLoginRetryInterval (ULONG nInterval, ULONG *pStatus) { - Config_WriteNum (TEXT("LoginRetryInterval"), nInterval); + Config_WriteGlobalNum (TEXT("LoginRetryInterval"), nInterval); return TRUE; } void Config_GetFailLoginsSilently (BOOL *pfFlag) { - if (!Config_ReadNum (TEXT("FailLoginsSilently"), (DWORD*)pfFlag)) + if (!Config_ReadGlobalNum (TEXT("FailLoginsSilently"), (DWORD*)pfFlag)) *pfFlag = FALSE; } BOOL Config_SetFailLoginsSilently (BOOL fFlag, ULONG *pStatus) { - Config_WriteNum (TEXT("FailLoginsSilently"), fFlag); + Config_WriteGlobalNum (TEXT("FailLoginsSilently"), fFlag); return TRUE; } void Config_GetReportSessionStartups (BOOL *pfFlag) { - if (!Config_ReadNum (TEXT("ReportSessionStartups"), (DWORD*)pfFlag)) + if (!Config_ReadGlobalNum (TEXT("ReportSessionStartups"), (DWORD*)pfFlag)) *pfFlag = FALSE; } BOOL Config_SetReportSessionStartups (BOOL fFlag, ULONG *pStatus) { - Config_WriteNum (TEXT("ReportSessionStartups"), fFlag); + Config_WriteGlobalNum (TEXT("ReportSessionStartups"), fFlag); return TRUE; } -void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList) -{ - // Read the GlobalAutoMapper registry key - TCHAR szDriveToMapTo[5]; - DWORD dwResult; - TCHAR szKeyName[256]; - HKEY hKey; - DWORD dwIndex = 0; - DWORD dwDriveSize; - DWORD dwSubMountSize; - TCHAR szSubMount[256]; - DWORD dwType; - - if (!pDriveList) - return; - - memset(pDriveList, 0, sizeof(DRIVEMAPLIST)); - - lstrcpy(szKeyName, AFSConfigKeyName); - lstrcat(szKeyName, TEXT("\\GlobalAutoMapper")); - - dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_QUERY_VALUE, &hKey); - if (dwResult != ERROR_SUCCESS) - return; - - // Get the drive map list so we can lookup the paths that go with our submounts - DRIVEMAPLIST DriveMapList; - memset(&DriveMapList, 0, sizeof(DRIVEMAPLIST)); - QueryDriveMapList (&DriveMapList); - - while (1) { - dwDriveSize = sizeof(szDriveToMapTo); - dwSubMountSize = sizeof(szSubMount); - - dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, (BYTE*)szSubMount, &dwSubMountSize); - if (dwResult != ERROR_SUCCESS) - break; - - szDriveToMapTo[0] = _totupper(szDriveToMapTo[0]); - - int nCurDrive = szDriveToMapTo[0] - TEXT('A'); - - pDriveList->aDriveMap[nCurDrive].chDrive = szDriveToMapTo[0]; - lstrcpy(pDriveList->aDriveMap[nCurDrive].szSubmount, szSubMount); - - // Find the path that goes with this submount - SubmountToPath (&DriveMapList, pDriveList->aDriveMap[nCurDrive].szMapping, szSubMount, FALSE); - } - - FreeDriveMapList(&DriveMapList); - - RegCloseKey(hKey); -} - - -/* - * Configuration Read/Modify Functions ________________________________________ - * - * Temporarily these just modify the local Registry. - * In the near future, they will modify the Registry on the - * gateway, if a gateway is being used. - * - */ - -BOOL Config_ReadNum (LPCTSTR pszLHS, DWORD *pdwRHS) -{ - HKEY hk; - if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS) - return FALSE; - - DWORD dwSize = sizeof(*pdwRHS); - if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pdwRHS, &dwSize) != ERROR_SUCCESS) - { - RegCloseKey (hk); - return FALSE; - } - - RegCloseKey (hk); - return TRUE; -} - - -BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax) -{ - HKEY hk; - if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS) - return FALSE; - - DWORD dwSize = sizeof(TCHAR) * cchMax; - if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS) - { - RegCloseKey (hk); - return FALSE; - } - - RegCloseKey (hk); - return TRUE; -} - - -void Config_WriteNum (LPCTSTR pszLHS, DWORD dwRHS) -{ - HKEY hk; - DWORD dwDisp; - if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS) - { - RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS)); - RegCloseKey (hk); - } -} - - -void Config_WriteString (LPCTSTR pszLHS, LPCTSTR pszRHS) -{ - HKEY hk; - DWORD dwDisp; - if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS) - { - RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS))); - RegCloseKey (hk); - } -} -