Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

195 lines
4.7 KiB

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name :
gdconf.hxx
Abstract:
This file defines functions and types required for
Gopher server configuration.
Author:
Murali R. Krishnan ( MuraliK ) 30-Sept-1994
Revision History:
--*/
# ifndef _GDCONF_HXX_
# define _GDCONF_HXX_
//
// Include Types declaration
//
# include "gdpriv.h"
# include "inetinfo.h"
# include "string.hxx"
/***********************************************************
* Type Definitions
************************************************************/
//
// Forward declaration for client connections
//
class ICLIENT_CONNECTION;
/**********************************************************
* GSERVER_CONFIG
* o Includes all the configuration information
* for server.
*
* At startup configuration is read from registries
* or used from the default configuration encoded in the program.
*
* Generally speaking, we can put all the values here as
* global variables. But that would just complicate
* code and lead to too many globals.
* Defining this class for encapsulating configuration data
* makes code more simple and maintainable.
*
**********************************************************/
class GSERVER_CONFIG {
private:
//
// Connections related data
//
// m_cMaxConnections: max connections permitted by config
// m_cCurrentConnections: count of currently connected users
// m_cMaxCurrentConnections: max connections seen in this session
// Always m_cCurrentConnections
// <= m_cMaxCurrentConnections
// <= m_cMaxConnections;
//
// DWORD m_cMaxConnections;
// replaced by TSVC_INFO::QueryMaxConnections()
DWORD m_cCurrentConnections;
DWORD m_cMaxCurrentConnections;
LIST_ENTRY m_ConnectionsList; // list of all connections
BOOL m_fCheckForWaisDb;
//
// Administrator Information
//
STR m_strSite; // Site Description
STR m_strOrganization; // Organization Name
STR m_strLocation; // Location of site
STR m_strLanguage; // Default Language of server
STR m_strGeography; // Geographical location
// (latitude and longitude)
STR m_strLocalHostName; // name of local host (from WinSock)
//
// Other data related to configuration load and store
//
BOOL m_fValid;
CRITICAL_SECTION m_csLock; // used for updating this object
public:
GSERVER_CONFIG( VOID);
~GSERVER_CONFIG( VOID);
//
// Initialize the configuration data from registry information
//
// Arguments
// hkeyReg key to the registry entry for parameters
// FieldsToRead bitmapped flags indicating which data to be read.
//
// Returns:
// NO_ERROR on success
// Win32 error code otherwise
//
DWORD InitFromRegistry( IN HKEY hkeyReg , IN FIELD_CONTROL FieldsToRead);
BOOL IsValid( VOID) const {
return ( m_fValid);
}
BOOL IsCheckForWaisDb(VOID) const {
return (m_fCheckForWaisDb);
}
VOID LockConfig( VOID)
{ EnterCriticalSection( &m_csLock); }
VOID UnLockConfig( VOID)
{ LeaveCriticalSection( &m_csLock); }
DWORD
GetConfigInformation( OUT LPGOPHERD_CONFIG_INFO pConfigInfo);
DWORD
SetConfigInformation( IN LPGOPHERD_CONFIG_INFO pConfigInfo);
BOOL ConvertGrPathToFullPath(
IN STR & strGrPath,
OUT STR * pstrFullPath,
OUT HANDLE * phImpersonationToken = NULL,
OUT LPDWORD lpdwFileSystem = NULL) const;
DWORD GetCurrentConnectionsCount( VOID) const
{ return m_cCurrentConnections; }
DWORD GetMaxCurrentConnectionsCount( VOID) const
{ return m_cMaxCurrentConnections; }
BOOL InsertNewConnection( IN OUT ICLIENT_CONNECTION * pcc);
VOID DisconnectAllConnections( VOID);
VOID RemoveConnection( IN OUT ICLIENT_CONNECTION * pcc);
//
// Following functions
// SetLocalHostName() & QueryLocalHostName()
// are not multi-thread safe!!
// The value set once only and then completely used till end of server.
//
BOOL SetLocalHostName(IN LPCSTR pszHost)
{ return m_strLocalHostName.Copy(pszHost); }
LPCSTR QueryLocalHostName(VOID) const
{ return (m_strLocalHostName.QueryStr()); }
# if DBG
VOID PrintConfiguration( VOID);
# endif // DBG
}; // GSERVER_CONFIG
# endif // _GDCONF_HXX_
/************************ End of File ***********************/