diff options
Diffstat (limited to 'src/windows/leash/Krb4Properties.cpp')
| -rw-r--r-- | src/windows/leash/Krb4Properties.cpp | 390 |
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 |
