347 lines
8.7 KiB
C
347 lines
8.7 KiB
C
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corporation, 1998 - 1999 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
radcfg.h
|
||
|
Header file for RADIUS config obj.
|
||
|
|
||
|
FILE HISTORY:
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include "resource.h" // main symbols
|
||
|
|
||
|
#ifndef _DIALOG_H_
|
||
|
#include "dialog.h"
|
||
|
#endif
|
||
|
|
||
|
#ifndef _RADBAL_H_
|
||
|
#include "radbal.h"
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: RadiusServerDialog
|
||
|
|
||
|
Class for the RADIUS authentication server dialog.
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
class RadiusServerDialog : public CBaseDialog
|
||
|
{
|
||
|
public:
|
||
|
RadiusServerDialog(BOOL fAuth, UINT idsTitle);
|
||
|
~RadiusServerDialog();
|
||
|
|
||
|
void SetServer(LPCTSTR pszServerName);
|
||
|
|
||
|
// Dialog Data
|
||
|
//{{AFX_DATA(RadiusServerDialog)
|
||
|
enum { IDD = IDD_RADIUS_AUTH };
|
||
|
CListCtrl m_ListServers;
|
||
|
//}}AFX_DATA
|
||
|
|
||
|
|
||
|
// Overrides
|
||
|
// ClassWizard generate virtual function overrides
|
||
|
//{{AFX_VIRTUAL(RadiusServerDialog)
|
||
|
public:
|
||
|
virtual void OnOK();
|
||
|
protected:
|
||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
// Implementation
|
||
|
protected:
|
||
|
// Generated message map functions
|
||
|
//{{AFX_MSG(RadiusServerDialog)
|
||
|
virtual BOOL OnInitDialog();
|
||
|
afx_msg void OnBtnAdd();
|
||
|
afx_msg void OnBtnEdit();
|
||
|
afx_msg void OnBtnDelete();
|
||
|
afx_msg void OnListDblClk(NMHDR *pNMHdr, LRESULT *pResult);
|
||
|
afx_msg void OnNotifyListItemChanged(NMHDR *pNMHdr, LRESULT *pResult);
|
||
|
// afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
|
||
|
// afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
||
|
//}}AFX_MSG
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
private:
|
||
|
CRadiusServers m_ServerList;
|
||
|
|
||
|
// This is the other list (if this is the auth dlg, this is the acct list)
|
||
|
// and vice versa. This is used to determine if a server's LSA entry
|
||
|
// needs to be removed.
|
||
|
CRadiusServers m_OtherServerList;
|
||
|
|
||
|
CString m_stServerName;
|
||
|
HKEY m_hkeyMachine;
|
||
|
UINT m_idsTitle;
|
||
|
|
||
|
BOOL m_fAuthDialog; // are we looking at auth or acct?
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: ServerPropDialog
|
||
|
---------------------------------------------------------------------------*/
|
||
|
class ServerPropDialog : public CBaseDialog
|
||
|
{
|
||
|
// Construction
|
||
|
public:
|
||
|
ServerPropDialog(BOOL fEdit, CWnd* pParent = NULL); // standard constructor
|
||
|
~ServerPropDialog();
|
||
|
|
||
|
protected:
|
||
|
ServerPropDialog(BOOL fEdit, UINT idd, CWnd* pParent = NULL); // standard constructor
|
||
|
|
||
|
public:
|
||
|
VOID SetDefault(RADIUSSERVER *pServer);
|
||
|
VOID GetDefault(RADIUSSERVER *pServer);
|
||
|
|
||
|
// Dialog Data
|
||
|
//{{AFX_DATA(ServerPropDialog)
|
||
|
enum { IDD = IDD_RADIUS_AUTH_CONFIG };
|
||
|
|
||
|
CEdit m_editServerName;
|
||
|
CEdit m_editSecret;
|
||
|
CEdit m_editInterval;
|
||
|
CSpinButtonCtrl m_spinScore;
|
||
|
CSpinButtonCtrl m_spinTimeout;
|
||
|
|
||
|
CEdit m_editPort;
|
||
|
//}}AFX_DATA
|
||
|
|
||
|
|
||
|
// Overrides
|
||
|
// ClassWizard generated virtual function overrides
|
||
|
//{{AFX_VIRTUAL(ServerPropDialog)
|
||
|
public:
|
||
|
protected:
|
||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
// Implementation
|
||
|
protected:
|
||
|
BOOL m_fEdit; // = TRUE if editing (else we are adding)
|
||
|
|
||
|
UINT m_uAuthPort;
|
||
|
CString m_stSecret;
|
||
|
INT m_cchSecret;
|
||
|
UCHAR m_ucSeed;
|
||
|
CString m_stServer;
|
||
|
UINT m_uTimeout;
|
||
|
int m_iInitScore;
|
||
|
|
||
|
BOOL m_fUseDigitalSignatures;
|
||
|
|
||
|
// The accounting data is also stored here (but not used)
|
||
|
UINT m_uAcctPort;
|
||
|
BOOL m_fAccountingOnOff;
|
||
|
|
||
|
// Generated message map functions
|
||
|
//{{AFX_MSG(ServerPropDialog)
|
||
|
virtual BOOL OnInitDialog();
|
||
|
virtual void OnOK();
|
||
|
afx_msg void OnBtnPassword();
|
||
|
// afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
|
||
|
// afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
||
|
//}}AFX_MSG
|
||
|
|
||
|
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
};
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: RADIUSSecretDialog
|
||
|
---------------------------------------------------------------------------*/
|
||
|
class RADIUSSecretDialog : public CBaseDialog
|
||
|
{
|
||
|
// Construction
|
||
|
public:
|
||
|
RADIUSSecretDialog(CWnd* pParent = NULL); // standard constructor
|
||
|
~RADIUSSecretDialog();
|
||
|
|
||
|
VOID GetSecret(CString *pst, INT *pch, UCHAR *pucSeed);
|
||
|
|
||
|
// Dialog Data
|
||
|
//{{AFX_DATA(RADIUSSecretDialog)
|
||
|
enum { IDD = IDD_CHANGE_SECRET };
|
||
|
|
||
|
CEdit m_editSecretOld;
|
||
|
CEdit m_editSecretNew;
|
||
|
CEdit m_editSecretNewConfirm;
|
||
|
//}}AFX_DATA
|
||
|
|
||
|
|
||
|
// Overrides
|
||
|
// ClassWizard generated virtual function overrides
|
||
|
//{{AFX_VIRTUAL(RADIUSSecretDialog)
|
||
|
public:
|
||
|
protected:
|
||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
// Implementation
|
||
|
protected:
|
||
|
INT m_cchOldSecret;
|
||
|
CString m_stOldSecret;
|
||
|
UCHAR m_ucOldSeed;
|
||
|
|
||
|
INT m_cchNewSecret;
|
||
|
CString m_stNewSecret;
|
||
|
UCHAR m_ucNewSeed;
|
||
|
|
||
|
// Generated message map functions
|
||
|
//{{AFX_MSG(RADIUSSecretDialog)
|
||
|
virtual BOOL OnInitDialog();
|
||
|
virtual void OnOK();
|
||
|
// afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
|
||
|
// afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
||
|
//}}AFX_MSG
|
||
|
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: RouterAuthRadiusConfig
|
||
|
|
||
|
This is the config object for RADIUS.
|
||
|
|
||
|
Author: KennT
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
class RouterAuthRadiusConfig :
|
||
|
public IAuthenticationProviderConfig,
|
||
|
public CComObjectRoot,
|
||
|
public CComCoClass<RouterAuthRadiusConfig, &CLSID_RouterAuthRADIUS>
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_REGISTRY(RouterAuthRadiusConfig,
|
||
|
_T("RouterAuthRadiusConfig.RouterAuthRadiusConfig.1"),
|
||
|
_T("RouterAuthRadiusConfig.RouterAuthRadiusConfig"),
|
||
|
IDS_RADIUS_CONFIG_DESC,
|
||
|
THREADFLAGS_APARTMENT)
|
||
|
|
||
|
BEGIN_COM_MAP(RouterAuthRadiusConfig)
|
||
|
COM_INTERFACE_ENTRY(IAuthenticationProviderConfig) // Must have one static entry
|
||
|
END_COM_MAP()
|
||
|
|
||
|
DECLARE_NOT_AGGREGATABLE(RouterAuthRadiusConfig)
|
||
|
|
||
|
// these must be overridden to provide values to the base class
|
||
|
protected:
|
||
|
|
||
|
DeclareIAuthenticationProviderConfigMembers(IMPL);
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: RouterAcctRadiusConfig
|
||
|
|
||
|
This is the config object for RADIUS.
|
||
|
|
||
|
Author: KennT
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
class RouterAcctRadiusConfig :
|
||
|
public IAccountingProviderConfig,
|
||
|
public CComObjectRoot,
|
||
|
public CComCoClass<RouterAcctRadiusConfig, &CLSID_RouterAcctRADIUS>
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_REGISTRY(RouterAcctRadiusConfig,
|
||
|
_T("RouterAcctRadiusConfig.RouterAcctRadiusConfig.1"),
|
||
|
_T("RouterAcctRadiusConfig.RouterAcctRadiusConfig"),
|
||
|
IDS_RADIUS_CONFIG_DESC,
|
||
|
THREADFLAGS_APARTMENT)
|
||
|
|
||
|
BEGIN_COM_MAP(RouterAcctRadiusConfig)
|
||
|
COM_INTERFACE_ENTRY(IAccountingProviderConfig) // Must have one static entry
|
||
|
END_COM_MAP()
|
||
|
|
||
|
DECLARE_NOT_AGGREGATABLE(RouterAcctRadiusConfig)
|
||
|
|
||
|
// these must be overridden to provide values to the base class
|
||
|
protected:
|
||
|
|
||
|
DeclareIAccountingProviderConfigMembers(IMPL);
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Class: ServerPropAcctDialog
|
||
|
---------------------------------------------------------------------------*/
|
||
|
class ServerPropAcctDialog : public ServerPropDialog
|
||
|
{
|
||
|
// Construction
|
||
|
public:
|
||
|
ServerPropAcctDialog(BOOL fEdit, CWnd* pParent = NULL); // standard constructor
|
||
|
~ServerPropAcctDialog();
|
||
|
|
||
|
// Dialog Data
|
||
|
//{{AFX_DATA(ServerPropAcctDialog)
|
||
|
enum { IDD = IDD_RADIUS_ACCT_CONFIG };
|
||
|
|
||
|
//}}AFX_DATA
|
||
|
|
||
|
|
||
|
// Overrides
|
||
|
// ClassWizard generated virtual function overrides
|
||
|
//{{AFX_VIRTUAL(ServerPropAcctDialog)
|
||
|
public:
|
||
|
protected:
|
||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
// Implementation
|
||
|
|
||
|
// Generated message map functions
|
||
|
//{{AFX_MSG(ServerPropAcctDialog)
|
||
|
virtual BOOL OnInitDialog();
|
||
|
virtual void OnOK();
|
||
|
afx_msg void OnBtnEnable();
|
||
|
// afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
|
||
|
// afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
||
|
//}}AFX_MSG
|
||
|
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
Helper functions (for RADIUS registry access)
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
// Do not show UI when loading the RADIUS server
|
||
|
#define RADIUS_FLAG_NOUI (0x00000001)
|
||
|
|
||
|
// Do not do the IP Address lookup
|
||
|
#define RADIUS_FLAG_NOIP (0x00000002)
|
||
|
|
||
|
HRESULT LoadRadiusServers(IN OPTIONAL LPCTSTR pszServerName,
|
||
|
IN HKEY hkeyMachine,
|
||
|
IN BOOL fAuthentication,
|
||
|
IN CRadiusServers * pRadiusServers,
|
||
|
IN DWORD dwFlags);
|
||
|
|
||
|
HRESULT SaveRadiusServers(IN OPTIONAL LPCTSTR pszServerName,
|
||
|
IN HKEY hkeyMachine,
|
||
|
IN BOOL fAuthentication,
|
||
|
IN RADIUSSERVER *pServerRoot);
|
||
|
|
||
|
HRESULT DeleteRadiusServers(IN OPTIONAL LPCTSTR pszServerName,
|
||
|
IN RADIUSSERVER *pServerRoot);
|
||
|
|