summaryrefslogtreecommitdiffstats
path: root/src/windows/leash/Krb4DomainRealmMaintenance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/leash/Krb4DomainRealmMaintenance.cpp')
-rw-r--r--src/windows/leash/Krb4DomainRealmMaintenance.cpp268
1 files changed, 268 insertions, 0 deletions
diff --git a/src/windows/leash/Krb4DomainRealmMaintenance.cpp b/src/windows/leash/Krb4DomainRealmMaintenance.cpp
new file mode 100644
index 000000000..466b31a4b
--- /dev/null
+++ b/src/windows/leash/Krb4DomainRealmMaintenance.cpp
@@ -0,0 +1,268 @@
+// **************************************************************************************
+// File: Krb4DomainRealmMaintenance.cpp
+// By: Arthur David Leather
+// Created: 12/02/98
+// Copyright @1998 Massachusetts Institute of Technology - All rights reserved.
+// Description: CPP file for Krb4DomainRealmMaintenance.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 "KrbProperties.h"
+#include "Krb4Properties.h"
+#include "Krb4AddToDomainRealmList.h"
+#include "Krb4EditDomainRealmList.h"
+#include "Krb4DomainRealmMaintenance.h"
+#include "lglobals.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CKrb4DomainRealmMaintenance dialog
+
+
+IMPLEMENT_DYNCREATE(CKrb4DomainRealmMaintenance, CPropertyPage)
+
+CKrb4DomainRealmMaintenance::CKrb4DomainRealmMaintenance() :
+ CPropertyPage(CKrb4DomainRealmMaintenance ::IDD)
+{
+ m_defectiveLines = 0;
+}
+
+CKrb4DomainRealmMaintenance::~CKrb4DomainRealmMaintenance()
+{
+}
+
+void CKrb4DomainRealmMaintenance::DoDataExchange(CDataExchange* pDX)
+{
+ CPropertyPage::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CKrb4DomainRealmMaintenance)
+ DDX_Control(pDX, IDC_LIST_DOMAINREALM, m_realmDomainList);
+ //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(CKrb4DomainRealmMaintenance, CPropertyPage)
+ //{{AFX_MSG_MAP(CKrb4DomainRealmMaintenance)
+ ON_BN_CLICKED(IDC_BUTTON_REALM_HOST_ADD, OnButtonRealmHostAdd)
+ ON_BN_CLICKED(ID_BUTTON_REALM_HOST_REMOVE, OnButtonRealmHostRemove)
+ ON_BN_CLICKED(IDC_BUTTON_REALM_HOST_EDIT, OnButtonRealmHostEdit)
+ ON_LBN_SELCHANGE(IDC_LIST_DOMAINREALM, OnSelchangeListDomainrealm)
+ ON_LBN_DBLCLK(IDC_LIST_DOMAINREALM, OnDblclkListDomainrealm)
+ ON_BN_CLICKED(IDC_BUTTON_HOSTMAINT_HELP, OnButtonHostmaintHelp)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CKrb4DomainRealmMaintenance message handlers
+
+BOOL CKrb4DomainRealmMaintenance::OnApply()
+{
+ CStdioFile krbrealmCon;
+ if (!krbrealmCon.Open(CKrbProperties::m_krbrealmPath, CFile::modeCreate |
+ CFile::modeNoTruncate |
+ CFile::modeReadWrite))
+ {
+ LeashErrorBox("OnApply::Can't open Configuration File",
+ CKrbProperties::m_krbrealmPath);
+ return TRUE;
+ }
+
+ memset(lineBuf, '\0', sizeof(lineBuf));
+ krbrealmCon.SetLength(0);
+ krbrealmCon.WriteString(lineBuf);
+ for (INT maxItems = m_realmDomainList.GetCount(), item = 0; item < maxItems; item++)
+ {
+ memset(lineBuf, '\0', sizeof(lineBuf));
+ if (!m_realmDomainList.GetText(item, lineBuf))
+ break;
+
+ krbrealmCon.WriteString(lineBuf);
+ krbrealmCon.WriteString("\n");
+ }
+
+ krbrealmCon.Close();
+
+ return TRUE;
+}
+
+BOOL CKrb4DomainRealmMaintenance::OnInitDialog()
+{
+ CPropertyPage::OnInitDialog();
+ CStdioFile krbrealmCon;
+
+ if (!krbrealmCon.Open(CKrbProperties::m_krbrealmPath, CFile::modeReadWrite))
+ { // can't find file, so lets set some defaults
+ CString defaultStr;
+ defaultStr.Format("%s %s", "MIT.EDU", KRB_REALM);
+ m_realmDomainList.AddString(defaultStr);
+ }
+ else
+ {
+ while (TRUE)
+ {
+ if (!krbrealmCon.ReadString(lineBuf, sizeof(lineBuf)))
+ break;
+
+ *(lineBuf + strlen(lineBuf) - 1) = 0;
+
+ if (!strchr(lineBuf, ' ') && !strchr(lineBuf, '\t'))
+ { // found a defective line
+ m_defectiveLines++;
+ }
+
+ if (LB_ERR == m_realmDomainList.AddString(lineBuf))
+ {
+ LeashErrorBox("OnInitDialog::Can't read Configuration File",
+ CKrbProperties::m_krbrealmPath);
+ krbrealmCon.Close();
+ return FALSE;
+ }
+ }
+
+ krbrealmCon.Close();
+ }
+
+ m_realmDomainList.SetCurSel(0);
+
+ if (!m_realmDomainList.GetCount())
+ {
+ GetDlgItem(ID_BUTTON_REALM_HOST_REMOVE)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BUTTON_REALM_HOST_EDIT)->EnableWindow(FALSE);
+ }
+
+ return TRUE;
+}
+
+void CKrb4DomainRealmMaintenance::OnButtonRealmHostAdd()
+{
+ CKrb4AddToDomainRealmList addToDomainRealmList;
+ if (IDOK == addToDomainRealmList.DoModal())
+ {
+ if (addToDomainRealmList.GetNewRealm().IsEmpty())
+ ASSERT(0);
+
+ CString newLine;
+ newLine = addToDomainRealmList.GetNewDomainHost() + " " + addToDomainRealmList.GetNewRealm();
+
+ // We don't want duplicate items in Listbox
+ CString ckDups;
+ for (INT item = 0; item < m_realmDomainList.GetCount(); item++)
+ {
+ m_realmDomainList.GetText(item, ckDups);
+ if (0 == ckDups.CompareNoCase(newLine))
+ { // found duplicate item in Listbox
+ LeashErrorBox("OnButtonRealmHostAdd::Found a Duplicate Item\nCan't add to List",
+ ckDups);
+ return;
+ }
+ }
+
+ m_realmDomainList.InsertString(0, newLine);
+ m_realmDomainList.SetCurSel(0);
+ SetModified(TRUE);
+
+ if (1 == m_realmDomainList.GetCount())
+ {
+ GetDlgItem(ID_BUTTON_REALM_HOST_REMOVE)->EnableWindow();GetDlgItem(IDC_BUTTON_REALM_HOST_EDIT)->EnableWindow();
+ }
+ }
+}
+
+void CKrb4DomainRealmMaintenance::OnButtonRealmHostRemove()
+{
+ if (IDYES != AfxMessageBox("Your about to remove an item from the list!\n\nContinue?",
+ MB_YESNO))
+ return;
+
+ INT curSel = m_realmDomainList.GetCurSel();
+ m_realmDomainList.DeleteString(curSel); // Single Sel Listbox
+
+ if (-1 == m_realmDomainList.SetCurSel(curSel))
+ m_realmDomainList.SetCurSel(curSel - 1);
+
+ if (!m_realmDomainList.GetCount())
+ {
+ GetDlgItem(ID_BUTTON_REALM_HOST_REMOVE)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BUTTON_REALM_HOST_EDIT)->EnableWindow(FALSE);
+ }
+
+ SetModified(TRUE);
+}
+
+void CKrb4DomainRealmMaintenance::OnButtonRealmHostEdit()
+{
+ INT selItemIndex = m_realmDomainList.GetCurSel();
+ LPSTR pSelItem = new char[m_realmDomainList.GetTextLen(selItemIndex) + 1];
+ if (!pSelItem)
+ ASSERT(0);
+
+ CString selItem;
+ m_realmDomainList.GetText(selItemIndex, selItem);
+ strcpy(pSelItem, selItem);
+
+ CKrb4EditDomainRealmList editDomainRealmList(pSelItem);
+ delete [] pSelItem;
+
+ if (IDOK == editDomainRealmList.DoModal())
+ {
+ CString editedItem = editDomainRealmList.GetEditedItem();
+ if (0 != selItem.CompareNoCase(editedItem) &&
+ LB_ERR != m_realmDomainList.FindStringExact(-1, editedItem))
+ {
+ LeashErrorBox("OnButtonRealmHostEdit::Found a Duplicate!\nCan't add to List",
+ editedItem);
+
+ return;
+ }
+
+ m_realmDomainList.DeleteString(selItemIndex);
+ m_realmDomainList.InsertString(selItemIndex, editDomainRealmList.GetEditedItem());
+ m_realmDomainList.SetCurSel(selItemIndex);
+ SetModified(TRUE);
+ }
+}
+
+void CKrb4DomainRealmMaintenance::OnSelchangeListDomainrealm()
+{
+ //SetModified(TRUE);
+}
+
+void CKrb4DomainRealmMaintenance::OnDblclkListDomainrealm()
+{
+ OnButtonRealmHostEdit();
+}
+
+BOOL CKrb4DomainRealmMaintenance::PreTranslateMessage(MSG* pMsg)
+{
+ if (m_defectiveLines)
+ {
+ if (m_defectiveLines == 1)
+ LeashErrorBox("Found a defective entry in file",
+ CKrbProperties::m_krbrealmPath, "Warning");
+ else if (m_defectiveLines > 1)
+ LeashErrorBox("Found more then one defective entry in file",
+ CKrbProperties::m_krbrealmPath, "Warning");
+ }
+
+ m_defectiveLines = 0;
+ return CPropertyPage::PreTranslateMessage(pMsg);
+}
+
+
+
+
+void CKrb4DomainRealmMaintenance::OnButtonHostmaintHelp()
+{
+ MessageBox("No Help Available!", "Leash", MB_OK);
+}