summaryrefslogtreecommitdiffstats
path: root/src/windows/leash/Krb4Properties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/leash/Krb4Properties.cpp')
-rw-r--r--src/windows/leash/Krb4Properties.cpp390
1 files changed, 390 insertions, 0 deletions
diff --git a/src/windows/leash/Krb4Properties.cpp b/src/windows/leash/Krb4Properties.cpp
new file mode 100644
index 000000000..a26d585e5
--- /dev/null
+++ b/src/windows/leash/Krb4Properties.cpp
@@ -0,0 +1,390 @@
+// **************************************************************************************
+// File: Krb4Properties.cpp
+// By: Arthur David Leather
+// Created: 12/02/98
+// Copyright @1998 Massachusetts Institute of Technology - All rights reserved.
+// Description: CPP file for KrbProperties.h. Contains variables and functions
+// for Kerberos Four Properties
+//
+// History:
+//
+// MM/DD/YY Inits Description of Change
+// 12/02/98 ADL Original
+// **************************************************************************************
+
+
+
+#include "stdafx.h"
+#include "Leash.h"
+#include "Krb4Properties.h"
+#include "LeashFileDialog.h"
+#include "LeashMessageBox.h"
+#include "wshelper.h"
+#include "lglobals.h"
+#include <io.h>
+#include <direct.h>
+#include "reminder.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+///////////////////////////////////////////////////////////////////////
+// CKrb4ConfigFileLocation property page
+
+IMPLEMENT_DYNCREATE(CKrb4ConfigFileLocation, CPropertyPage)
+
+CString CKrb4ConfigFileLocation::m_newKrbFile;
+CString CKrb4ConfigFileLocation::m_newKrbrealmFile;
+
+CKrb4ConfigFileLocation::CKrb4ConfigFileLocation() : CPropertyPage(CKrb4ConfigFileLocation::IDD)
+{
+ m_newTicketFile = _T("");
+ m_newKrbFile = _T("");
+ m_newKrbrealmFile = _T("");
+ m_initKrbFile = _T("");
+ m_initKrbrealmFile = _T("");
+ m_initTicketFile = _T("");
+ m_noKrbrealmFileStartupWarning = FALSE;
+ m_noKrbFileStartupWarning = FALSE;
+
+ m_startupPage1 = TRUE;
+
+ //{{AFX_DATA_INIT(CKrb4ConfigFileLocation)
+ //}}AFX_DATA_INIT
+}
+
+CKrb4ConfigFileLocation::~CKrb4ConfigFileLocation()
+{
+}
+
+BOOL CKrb4ConfigFileLocation::OnInitDialog()
+{
+ CPropertyPage::OnInitDialog();
+
+ INT krbCreate = 0;
+ INT krbrealmCreate = 0;
+ CHAR krb_path[MAX_PATH];
+ CHAR krbrealm_path[MAX_PATH];
+ CHAR ticketName[MAX_PATH];
+ unsigned int krb_path_sz = sizeof(krb_path);
+ unsigned int krbrealm_path_sz = sizeof(krbrealm_path);
+ CString strMessage;
+
+
+ // Set KRB.CON
+ memset(krb_path, '\0', sizeof(krb_path));
+ if (!pkrb_get_krbconf2(krb_path, &krb_path_sz))
+ { // Error has happened
+ m_noKrbFileStartupWarning = TRUE;
+ }
+ else
+ { // normal find
+ m_initKrbFile = krb_path;
+ m_newKrbFile = m_initKrbFile;
+ SetDlgItemText(IDC_EDIT_KRB_LOC, m_initKrbFile);
+ }
+
+ // Set KRBREALM.CON
+ memset(krbrealm_path, '\0', sizeof(krbrealm_path));
+ if (!pkrb_get_krbrealm2(krbrealm_path, &krbrealm_path_sz))
+ {
+ // Error has happened
+ m_noKrbrealmFileStartupWarning = TRUE;
+ }
+ else
+ {
+ // normal find
+ m_initKrbrealmFile = krbrealm_path;
+ m_newKrbrealmFile = m_initKrbrealmFile;
+ SetDlgItemText(IDC_EDIT_KRBREALM_LOC, m_initKrbrealmFile);
+ }
+
+ if (pLeash_get_lock_file_locations() ||
+ getenv("KRB4_KRB.REALMS") || getenv("KRB4_KRB.CONF") || getenv("KRB4_CONFIG"))
+ {
+ GetDlgItem(IDC_EDIT_KRB_LOC)->EnableWindow(FALSE);
+ GetDlgItem(IDC_EDIT_KRBREALM_LOC)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BUTTON_KRB_BROWSE)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BUTTON_KRBREALM_BROWSE)->EnableWindow(FALSE);
+ }
+ else if ( !(getenv("KRB4_KRB.REALMS") || getenv("KRB4_KRB.CONF") || getenv("KRB4_CONFIG")) )
+ {
+ GetDlgItem(IDC_STATIC_CONFILES)->ShowWindow(FALSE);
+ }
+
+
+ // Set TICKET.KRB file Editbox
+ *ticketName = NULL;
+ pkrb_set_tkt_string(0);
+
+ char *pticketName = ptkt_string();
+ if (pticketName)
+ strcpy(ticketName, pticketName);
+
+ if (!*ticketName)
+ {
+ LeashErrorBox("OnInitDialog::Can't locate ticket file", TICKET_FILE);
+ }
+ else
+ {
+ m_initTicketFile = m_newTicketFile = ticketName;
+ m_ticketEditBox.ReplaceSel(m_initTicketFile);
+ }
+
+ if (getenv("KRBTKFILE"))
+ GetDlgItem(IDC_EDIT_TICKET_FILE)->EnableWindow(FALSE);
+ else
+ GetDlgItem(IDC_STATIC_TXT)->ShowWindow(FALSE);
+
+ return FALSE;
+}
+
+BOOL CKrb4ConfigFileLocation::OnApply()
+{
+ // Krb.con
+ if (0 != m_initKrbFile.CompareNoCase(m_newKrbFile))
+ {
+ // Commit changes
+ if (SetRegistryVariable("krb.conf", m_newKrbFile,
+ "Software\\MIT\\Kerberos4"))
+ {
+ MessageBox("Failed to set \"Krb.conf\"!", "Error", MB_OK);
+ }
+
+ m_initKrbFile = m_newKrbFile;
+ }
+
+ // Krbrealms.con
+ if (0 != m_initKrbrealmFile.CompareNoCase(m_newKrbrealmFile))
+ {
+ // Commit changes
+ if (SetRegistryVariable("krb.realms", m_newKrbrealmFile,
+ "Software\\MIT\\Kerberos4"))
+ {
+ MessageBox("Failed to set \"krb.realms\"!", "Error", MB_OK);
+ }
+
+ m_initKrbrealmFile = m_newKrbrealmFile;
+ }
+
+ // Ticket file
+ if (0 != m_initTicketFile.CompareNoCase(m_newTicketFile))
+ {
+ if (getenv("KRBTKFILE"))
+ {
+ // Just in case they set (somehow) KRBTKFILE while this box is up
+ MessageBox("OnApply::Ticket file is set in your System's\
+ Environment!\nYou must first remove it.",
+ "Error", MB_OK);
+
+ return TRUE;
+ }
+
+ // Commit changes
+ if (SetRegistryVariable("ticketfile", m_newTicketFile,
+ "Software\\MIT\\Kerberos4"))
+ {
+ MessageBox("Failed to set \"ticketfile\"!", "Error", MB_OK);
+ }
+
+ m_initTicketFile = m_newTicketFile;
+ }
+
+ return TRUE;
+}
+
+VOID CKrb4ConfigFileLocation::OnOK()
+{
+ CPropertyPage::OnOK();
+}
+
+VOID CKrb4ConfigFileLocation::DoDataExchange(CDataExchange* pDX)
+{
+ TRACE("Entering CKrb4ConfigFileLocation::DoDataExchange -- %d\n",
+ pDX->m_bSaveAndValidate);
+ CPropertyPage::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CKrb4ConfigFileLocation)
+ DDX_Control(pDX, IDC_EDIT_TICKET_FILE, m_ticketEditBox);
+ //}}AFX_DATA_MAP
+}
+
+
+VOID CKrb4ConfigFileLocation::OnButtonKrbBrowse()
+{
+ CString msg;
+ msg.Format("Select %s Location", KRB_FILE);
+
+ CString krb_path = "*.*";
+ CLeashFileDialog dlgFile(TRUE, NULL, krb_path, "Kerbereos Four Config. File (.con)");
+ dlgFile.m_ofn.lpstrTitle = msg;
+
+ if (IDOK == dlgFile.DoModal())
+ {
+ //m_newKrbFile = dlgFile.GetSelectedFileName();
+ m_newKrbFile= dlgFile.GetPathName();
+ SetDlgItemText(IDC_EDIT_KRB_LOC, m_newKrbFile);
+ SetModified(TRUE);
+ }
+}
+
+VOID CKrb4ConfigFileLocation::OnButtonKrbrealmBrowse()
+{
+ CString msg;
+ msg.Format("Select %s Location", KRBREALM_FILE);
+
+ CString krbrealm_path = "*.*";
+ CLeashFileDialog dlgFile(TRUE, NULL, krbrealm_path, "Kerbereos Four Config. File (.con)");
+ dlgFile.m_ofn.lpstrTitle = msg;
+
+ if (IDOK == dlgFile.DoModal())
+ {
+ //m_krbrealmFile = dlgFile.GetSelectedFileName();
+ m_newKrbrealmFile = dlgFile.GetPathName();
+ SetDlgItemText(IDC_EDIT_KRB_KRBREALM_LOC, m_newKrbrealmFile);
+ SetModified(TRUE);
+ }
+}
+
+/*
+VOID CKrb4ConfigFileLocation::OnButtonTicketfileBrowse()
+{
+ CString ticketPath = *.*";
+ CLeashFileDialog dlgFile(TRUE, NULL, ticketPath, "Kerberos Four Ticket File (.con)");
+ CString msg;
+ msg.Format("Select Location/Ticket File (Default file = %s)", TICKET_FILE);
+ dlgFile.m_ofn.lpstrTitle = msg;
+ while (TRUE)
+ {
+ if (IDOK == dlgFile.DoModal())
+ {
+ m_newTicketFile = dlgFile.GetPathName();
+ SetDlgItemText(IDC_EDIT_TICKET_FILE, m_newTicketFile);
+ SetModified(TRUE);
+ break;
+ }
+ else
+ break;
+ }
+}
+*/
+
+void CKrb4ConfigFileLocation::OnChangeEditKrbLoc()
+{
+ if (!m_startupPage1)
+ {
+ GetDlgItemText(IDC_EDIT_KRB_LOC, m_newKrbFile);
+ SetModified(TRUE);
+ }
+}
+
+void CKrb4ConfigFileLocation::OnChangeEditKrbrealmLoc()
+{
+ if (!m_startupPage1)
+ {
+ GetDlgItemText(IDC_EDIT_KRBREALM_LOC, m_newKrbrealmFile);
+ SetModified(TRUE);
+ }
+}
+
+void CKrb4ConfigFileLocation::OnChangeEditTicketFile()
+{
+ if (!m_startupPage1)
+ {
+ GetDlgItemText(IDC_EDIT_TICKET_FILE, m_newTicketFile);
+ SetModified(TRUE);
+ }
+}
+
+VOID CKrb4ConfigFileLocation::OnShowWindow(BOOL bShow, UINT nStatus)
+{
+ CPropertyPage::OnShowWindow(bShow, nStatus);
+}
+
+VOID CKrb4ConfigFileLocation::OnCancel()
+{
+ CPropertyPage::OnCancel();
+}
+
+void CKrb4ConfigFileLocation::OnHelp()
+{
+#ifdef CALL_HTMLHELP
+ AfxGetApp()->HtmlHelp(HID_KRB4_PROPERTIES_COMMAND);
+#else
+ AfxGetApp()->WinHelp(HID_KRB4_PROPERTIES_COMMAND);
+#endif
+}
+
+BOOL CKrb4ConfigFileLocation::PreTranslateMessage(MSG* pMsg)
+{
+ // TODO: Add your specialized code here and/or call the base class
+ CString wmsg;
+ if (m_startupPage1)
+ {
+ if (m_noKrbFileStartupWarning)
+ {
+ wmsg.Format("OnInitDialog::Can't locate configuration file: %s.",
+ KRB_FILE);
+ MessageBox(wmsg, "Leash", MB_OK);
+ m_noKrbFileStartupWarning = FALSE;
+ }
+
+ if (m_noKrbrealmFileStartupWarning)
+ {
+ wmsg.Format("OnInitDialog::Can't locate configuration file: %s.",
+ KRBREALM_FILE);
+ MessageBox(wmsg, "Leash", MB_OK);
+ m_noKrbrealmFileStartupWarning = FALSE;
+ }
+ }
+
+ m_startupPage1 = FALSE;
+ return CPropertyPage::PreTranslateMessage(pMsg);
+}
+
+
+BEGIN_MESSAGE_MAP(CKrb4ConfigFileLocation, CPropertyPage)
+ //{{AFX_MSG_MAP(CKrb4ConfigFileLocation)
+ ON_BN_CLICKED(IDC_BUTTON_KRB_BROWSE, OnButtonKrbBrowse)
+ ON_BN_CLICKED(IDC_BUTTON_KRBREALM_BROWSE, OnButtonKrbrealmBrowse)
+ ON_WM_SHOWWINDOW()
+ ON_EN_CHANGE(IDC_EDIT_TICKET_FILE, OnChangeEditTicketFile)
+ ON_COMMAND(ID_HELP, OnHelp)
+ ON_EN_CHANGE(IDC_EDIT_KRB_LOC, OnChangeEditKrbLoc)
+ ON_EN_CHANGE(IDC_EDIT_KRBREALM_LOC, OnChangeEditKrbrealmLoc)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+
+///////////////////////////////////////////////////////////////////////
+// CKrb4Properties
+
+IMPLEMENT_DYNAMIC(CKrb4Properties, CPropertySheet)
+CKrb4Properties::CKrb4Properties(UINT nIDCaption, CWnd* pParentWnd,
+ UINT iSelectPage)
+:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
+{
+}
+
+CKrb4Properties::CKrb4Properties(LPCTSTR pszCaption, CWnd* pParentWnd,
+ UINT iSelectPage)
+:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
+{
+ AddPage(&m_fileLocation);
+}
+
+CKrb4Properties::~CKrb4Properties()
+{
+}
+
+
+BEGIN_MESSAGE_MAP(CKrb4Properties, CPropertySheet)
+ //{{AFX_MSG_MAP(CKrb4Properties)
+ // NOTE - the ClassWizard will add and remove mapping macros here.
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+///////////////////////////////////////////////////////////////////////
+// CKrb4Properties message handlers