summaryrefslogtreecommitdiffstats
path: root/src/windows/leash/LeashProperties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/leash/LeashProperties.cpp')
-rw-r--r--src/windows/leash/LeashProperties.cpp202
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);
+}