//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: R A S D A T A . C P P // // Contents: Implementation of data structure persistence. // // Notes: // // Author: shaunco 13 Mar 1997 // //---------------------------------------------------------------------------- #include "pch.h" #pragma hdrstop #include "bindobj.h" #include "ncreg.h" #include "ncutil.h" #include "rasdata.h" #include "mprapip.h" static const BOOL c_fDefAllowNetworkAccess = TRUE; static const BOOL c_fDefEnableIn = TRUE; //------------------------------------------------------------------------ // // DATA_SRV_CFG // static const BOOL c_fDefMultilink = TRUE; static const DWORD c_fDefAuthLevel = 2; static const DWORD c_fDefDataEnc = FALSE; static const DWORD c_fDefStrongDataEnc = FALSE; static const DWORD c_fDefSecureVPN = 0; // server flags copied from routing\ras\inc\rasppp.h // #define PPPCFG_NegotiateSPAP 0x00000040 #define PPPCFG_RequireEncryption 0x00000080 #define PPPCFG_NegotiateMSCHAP 0x00000100 #define PPPCFG_NegotiateMultilink 0x00000400 #define PPPCFG_RequireStrongEncryption 0x00001000 #define PPPCFG_NegotiatePAP 0x00010000 #define PPPCFG_NegotiateMD5CHAP 0x00020000 #define PPPCFG_NegotiateStrongMSCHAP 0x00800000 #define PPPCFG_DisableEncryption 0x00080000 VOID DATA_SRV_CFG::SaveToReg () const { HRESULT hr; HKEY hkey; DWORD dwServerFlags = 0; // Save off the router type // hr = HrRegOpenKeyEx ( HKEY_LOCAL_MACHINE, L"System\\CurrentControlSet\\Services\\RemoteAccess\\Parameters", KEY_ALL_ACCESS, &hkey); if (SUCCEEDED(hr)) { (VOID) HrRegSetDword (hkey, L"RouterType", dwRouterType); hr = HrRegQueryDword (hkey, L"ServerFlags", &dwServerFlags); if (SUCCEEDED(hr)) { if (fMultilink) { dwServerFlags |= PPPCFG_NegotiateMultilink; } else { dwServerFlags &= ~PPPCFG_NegotiateMultilink; } dwServerFlags &= ~PPPCFG_RequireEncryption; dwServerFlags &= ~PPPCFG_RequireStrongEncryption; if (fDataEnc) { dwServerFlags |= PPPCFG_RequireEncryption; } if (fStrongDataEnc) { dwServerFlags |= PPPCFG_RequireStrongEncryption; } if (dwSecureVPN) { dwServerFlags |= PPPCFG_NegotiateStrongMSCHAP; dwServerFlags &= ~PPPCFG_NegotiateSPAP; dwServerFlags &= ~PPPCFG_NegotiateMSCHAP; dwServerFlags &= ~PPPCFG_NegotiatePAP; dwServerFlags &= ~PPPCFG_NegotiateMD5CHAP; } else { dwServerFlags |= PPPCFG_NegotiateMSCHAP; dwServerFlags |= PPPCFG_NegotiateStrongMSCHAP; dwServerFlags &= ~PPPCFG_NegotiateSPAP; dwServerFlags &= ~PPPCFG_NegotiatePAP; dwServerFlags &= ~PPPCFG_NegotiateMD5CHAP; if (dwAuthLevel < 2) { dwServerFlags |= PPPCFG_NegotiateSPAP; dwServerFlags |= PPPCFG_NegotiateMD5CHAP; } if (dwAuthLevel < 1) { dwServerFlags |= PPPCFG_NegotiatePAP; } } // pmay: 382389 // // Part of the fix to this should be to clear the disable encryption // flag // dwServerFlags &= ~PPPCFG_DisableEncryption; (VOID) HrRegSetDword (hkey, L"ServerFlags", dwServerFlags); } RegCloseKey (hkey); } // Read in the } VOID DATA_SRV_CFG::CheckAndDefault () { DATA_SRV_CFG def; def.GetDefault(); if (dwRouterType >= RT_INVALID) { dwRouterType = def.dwRouterType; } } VOID DATA_SRV_CFG::GetDefault () { dwRouterType = RT_RAS; fMultilink = c_fDefMultilink; dwAuthLevel = c_fDefAuthLevel; fDataEnc = c_fDefDataEnc; fStrongDataEnc = c_fDefStrongDataEnc; dwSecureVPN = c_fDefSecureVPN; } //------------------------------------------------------------------------ // // DATA_SRV_IP // static const WCHAR c_szSubkeySrvIp [] = L"RemoteAccess\\Parameters\\Ip"; static const WCHAR c_szSubkeySrvIpPool [] = L"RemoteAccess\\Parameters\\Ip\\StaticAddressPool\\0"; static const BOOL c_fDefUseDhcp = TRUE; static const BOOL c_fDefAllowClientAddr = FALSE; static const DWORD c_dwDefIpAddr = 0; static const REGBATCH c_rbDataSrvIp [] = { { HKLM_SVCS, c_szSubkeySrvIp, L"EnableIn", REG_BOOL, offsetof(DATA_SRV_IP, fEnableIn), (BYTE*)&c_fDefEnableIn }, { HKLM_SVCS, c_szSubkeySrvIp, L"AllowNetworkAccess", REG_BOOL, offsetof(DATA_SRV_IP, fAllowNetworkAccess), (BYTE*)&c_fDefAllowNetworkAccess }, { HKLM_SVCS, c_szSubkeySrvIp, L"UseDhcpAddressing", REG_BOOL, offsetof(DATA_SRV_IP, fUseDhcp), (BYTE*)&c_fDefUseDhcp }, { HKLM_SVCS, c_szSubkeySrvIp, L"AllowClientIpAddresses", REG_BOOL, offsetof(DATA_SRV_IP, fAllowClientAddr), (BYTE*)&c_fDefAllowClientAddr }, { HKLM_SVCS, c_szSubkeySrvIpPool, L"From", REG_DWORD,offsetof(DATA_SRV_IP, dwIpStart), (BYTE*)&c_dwDefIpAddr }, { HKLM_SVCS, c_szSubkeySrvIpPool, L"To", REG_DWORD,offsetof(DATA_SRV_IP, dwIpEnd), (BYTE*)&c_dwDefIpAddr }, }; VOID DATA_SRV_IP::SaveToReg () const { (VOID) HrRegWriteValues (celems(c_rbDataSrvIp), c_rbDataSrvIp, (const BYTE*)this, REG_OPTION_NON_VOLATILE, KEY_WRITE); } VOID DATA_SRV_IP::CheckAndDefault () { } VOID DATA_SRV_IP::GetDefault () { fEnableIn = c_fDefEnableIn; fAllowNetworkAccess = c_fDefAllowNetworkAccess; fUseDhcp = c_fDefUseDhcp; fAllowClientAddr = c_fDefAllowClientAddr; dwIpStart = 0; dwIpEnd = 0; }; //------------------------------------------------------------------------ // // DATA_SRV_IPX // static const WCHAR c_szSubkeySrvIpx [] = L"RemoteAccess\\Parameters\\Ipx"; static const BOOL c_fDefUseAutoAddr = TRUE; static const BOOL c_fDefUseSameNetNum = TRUE; static const BOOL c_fDefAllowClientNetNum = TRUE; static const DWORD c_dwDefIpxNetFirst = 0; static const DWORD c_dwDefIpxWanPoolSize = 1000; static const REGBATCH c_rbDataSrvIpx [] = { { HKLM_SVCS, c_szSubkeySrvIpx, L"EnableIn", REG_BOOL, offsetof(DATA_SRV_IPX, fEnableIn), (BYTE*)&c_fDefEnableIn }, { HKLM_SVCS, c_szSubkeySrvIpx, L"AllowNetworkAccess", REG_BOOL, offsetof(DATA_SRV_IPX, fAllowNetworkAccess), (BYTE*)&c_fDefAllowNetworkAccess }, { HKLM_SVCS, c_szSubkeySrvIpx, L"AutoWanNetAllocation", REG_BOOL, offsetof(DATA_SRV_IPX, fUseAutoAddr), (BYTE*)&c_fDefUseAutoAddr }, { HKLM_SVCS, c_szSubkeySrvIpx, L"GlobalWanNet", REG_BOOL, offsetof(DATA_SRV_IPX, fUseSameNetNum), (BYTE*)&c_fDefUseSameNetNum }, { HKLM_SVCS, c_szSubkeySrvIpx, L"AcceptRemoteNodeNumber", REG_BOOL, offsetof(DATA_SRV_IPX, fAllowClientNetNum), (BYTE*)&c_fDefAllowClientNetNum }, { HKLM_SVCS, c_szSubkeySrvIpx, L"FirstWanNet", REG_DWORD, offsetof(DATA_SRV_IPX, dwIpxNetFirst), (BYTE*)&c_dwDefIpxNetFirst }, { HKLM_SVCS, c_szSubkeySrvIpx, L"WanNetPoolSize", REG_DWORD, offsetof(DATA_SRV_IPX, dwIpxWanPoolSize), (BYTE*)&c_dwDefIpxWanPoolSize }, }; VOID DATA_SRV_IPX::SaveToReg () const { (VOID) HrRegWriteValues (celems(c_rbDataSrvIpx), c_rbDataSrvIpx, (const BYTE*)this, REG_OPTION_NON_VOLATILE, KEY_WRITE); } VOID DATA_SRV_IPX::CheckAndDefault () { } VOID DATA_SRV_IPX::GetDefault () { fEnableIn = c_fDefEnableIn; fAllowNetworkAccess = c_fDefAllowNetworkAccess; fUseAutoAddr = c_fDefUseAutoAddr; fUseSameNetNum = c_fDefUseSameNetNum; fAllowClientNetNum = c_fDefAllowClientNetNum; dwIpxNetFirst = c_dwDefIpxNetFirst; dwIpxWanPoolSize = c_dwDefIpxWanPoolSize; }; //------------------------------------------------------------------------ // // DATA_SRV_NBF // static const WCHAR c_szSubkeySrvNbf [] = L"RemoteAccess\\Parameters\\Nbf"; static const REGBATCH c_rbDataSrvNbf [] = { { HKLM_SVCS, c_szSubkeySrvNbf, L"EnableIn", REG_BOOL, offsetof(DATA_SRV_NBF, fEnableIn), (BYTE*)&c_fDefEnableIn }, { HKLM_SVCS, c_szSubkeySrvNbf, L"AllowNetworkAccess", REG_BOOL, offsetof(DATA_SRV_NBF, fAllowNetworkAccess), (BYTE*)&c_fDefAllowNetworkAccess }, }; VOID DATA_SRV_NBF::SaveToReg () const { (VOID) HrRegWriteValues (celems(c_rbDataSrvNbf), c_rbDataSrvNbf, (const BYTE*)this, REG_OPTION_NON_VOLATILE, KEY_WRITE); } VOID DATA_SRV_NBF::CheckAndDefault () { } VOID DATA_SRV_NBF::GetDefault () { fEnableIn = c_fDefEnableIn; fAllowNetworkAccess = c_fDefAllowNetworkAccess; }