diff options
Diffstat (limited to 'src/windows/leash/LeashProperties.cpp')
| -rw-r--r-- | src/windows/leash/LeashProperties.cpp | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/src/windows/leash/LeashProperties.cpp b/src/windows/leash/LeashProperties.cpp new file mode 100644 index 000000000..285423173 --- /dev/null +++ b/src/windows/leash/LeashProperties.cpp @@ -0,0 +1,202 @@ +// ************************************************************************************** +// File: LeashProperties.cpp +// By: Arthur David Leather +// Created: 12/02/98 +// Copyright @1998 Massachusetts Institute of Technology - All rights reserved. +// Description: CPP file for LeashProperties.h. Contains variables and functions +// for the Leash Properties Dialog Box +// +// History: +// +// MM/DD/YY Inits Description of Change +// 12/02/98 ADL Original +// ************************************************************************************** + +#include "stdafx.h" +#include "leash.h" +#include "LeashProperties.h" +#include "LeashMessageBox.h" +#include <leashinfo.h> +#include "lglobals.h" +#include "reminder.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CLeashProperties dialog + +char CLeashProperties::timeServer[255] = {NULL}; + +CLeashProperties::CLeashProperties(CWnd* pParent /*=NULL*/) + : CDialog(CLeashProperties::IDD, pParent) +{ + m_initMissingFiles = m_newMissingFiles = 0; + dw_initMslsaImport = dw_newMslsaImport = 0; + + //{{AFX_DATA_INIT(CLeashProperties) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CLeashProperties::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CLeashProperties) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CLeashProperties, CDialog) + //{{AFX_MSG_MAP(CLeashProperties) + ON_BN_CLICKED(IDC_BUTTON_LEASHINI_HELP2, OnHelp) + ON_BN_CLICKED(IDC_CHECK_CREATE_MISSING_CFG, OnCheckMissingCfg) + ON_BN_CLICKED(IDC_RESET_DEFAULTS, OnButtonResetDefaults) + ON_BN_CLICKED(IDC_RADIO_MSLSA_IMPORT_OFF, OnRadioMslsaNever) + ON_BN_CLICKED(IDC_RADIO_MSLSA_IMPORT_ON, OnRadioMslsaAlways) + ON_BN_CLICKED(IDC_RADIO_MSLSA_IMPORT_MATCH, OnRadioMslsaMatchingRealm) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CLeashProperties message handlers + +BOOL CLeashProperties::OnInitDialog() +{ + CDialog::OnInitDialog(); + + pLeashGetTimeServerName(timeServer, TIMEHOST); + SetDlgItemText(IDC_EDIT_TIME_SERVER, timeServer); + + if (getenv(TIMEHOST)) + GetDlgItem(IDC_EDIT_TIME_SERVER)->EnableWindow(FALSE); + else + GetDlgItem(IDC_STATIC_TIMEHOST)->ShowWindow(FALSE); + + CWinApp * pApp = AfxGetApp(); + if (pApp) + m_initMissingFiles = m_newMissingFiles = + pApp->GetProfileInt("Settings", "CreateMissingConfig", FALSE_FLAG); + CheckDlgButton(IDC_CHECK_CREATE_MISSING_CFG, m_initMissingFiles); + + dw_initMslsaImport = dw_newMslsaImport = pLeash_get_default_mslsa_import(); + switch ( dw_initMslsaImport ) { + case 0: + CheckDlgButton(IDC_RADIO_MSLSA_IMPORT_OFF,TRUE); + break; + case 1: + CheckDlgButton(IDC_RADIO_MSLSA_IMPORT_ON,TRUE); + break; + case 2: + CheckDlgButton(IDC_RADIO_MSLSA_IMPORT_MATCH,TRUE); + break; + } + + return TRUE; +} + +void CLeashProperties::OnOK() +{ + CString timeServer_; + GetDlgItemText(IDC_EDIT_TIME_SERVER, timeServer_); + + if (getenv(TIMEHOST)) + { + // Check system for TIMEHOST, just in case it gets set (somehow) + MessageBox("Can't change the time host unless you remove it from the environment!", + "Error", MB_OK); + return; + } + + if( getenv("USEKRB4") != NULL) + { + MessageBox("Kerberos 4 ticket requests are being controlled by the environment" + "variable USEKRB4 instead of the registry. Leash cannot modify" + "the environment. Use the System control panel instead.", + "Leash", MB_OK); + return; + } + + if (SetRegistryVariable(TIMEHOST, timeServer_)) + { + MessageBox("There was an error putting your entry into the Registry!", + "Error", MB_OK); + } + + if ( m_initMissingFiles != m_newMissingFiles ) { + CWinApp * pApp = AfxGetApp(); + if (pApp) + pApp->WriteProfileInt("Settings", "CreateMissingConfig", + m_newMissingFiles ? TRUE_FLAG : FALSE_FLAG); + + if ( m_newMissingFiles ) + CLeashApp::ValidateConfigFiles(); + } + + if ( dw_initMslsaImport != dw_newMslsaImport ) { + pLeash_set_default_mslsa_import(dw_newMslsaImport); + } + + CDialog::OnOK(); +} + +void CLeashProperties::OnCheckMissingCfg() +{ + m_newMissingFiles = (BOOL)IsDlgButtonChecked(IDC_CHECK_CREATE_MISSING_CFG); +} + +void CLeashProperties::OnRadioMslsaNever() +{ + dw_newMslsaImport = 0; +} + +void CLeashProperties::OnRadioMslsaAlways() +{ + dw_newMslsaImport = 1; +} + +void CLeashProperties::OnRadioMslsaMatchingRealm() +{ + dw_newMslsaImport = 2; +} + +void CLeashProperties::OnHelp() +{ +#ifdef CALL_HTMLHELP + AfxGetApp()->HtmlHelp(HID_LEASH_PROPERTIES_COMMAND); +#else + AfxGetApp()->WinHelp(HID_LEASH_PROPERTIES_COMMAND); +#endif +} + +void CLeashProperties::OnButtonResetDefaults() +{ + if (IDYES != AfxMessageBox("You are about to reset all Leash settings to their default values!\n\nContinue?", + MB_YESNO)) + return; + + pLeash_reset_defaults(); + + HKEY hKey; + LONG rc; + + rc = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\MIT\\Leash32\\Settings", + 0, KEY_WRITE, &hKey); + if (rc) + return; + + rc = RegDeleteValue(hKey, "AutoRenewTickets"); + rc = RegDeleteValue(hKey, "CreateMissingConfig"); + rc = RegDeleteValue(hKey, "DebugWindow"); + rc = RegDeleteValue(hKey, "LargeIcons"); + rc = RegDeleteValue(hKey, "TIMEHOST"); + rc = RegDeleteValue(hKey, "AfsStatus"); + rc = RegDeleteValue(hKey, "LowTicketAlarm"); + + RegCloseKey(hKey); +} |
