krb5 commit: Add leash column for the ccache name

Benjamin Kaduk kaduk at mit.edu
Wed Jun 24 17:11:31 EDT 2015


https://github.com/krb5/krb5/commit/b26d25e97cf3c53ef896092c71948011ceac645d
commit b26d25e97cf3c53ef896092c71948011ceac645d
Author: Ben Kaduk <kaduk at mit.edu>
Date:   Fri May 22 14:38:27 2015 -0400

    Add leash column for the ccache name
    
    Previously, it was fairly easy to set the default cache to MSLSA:,
    which is not collection-enabled (as opposed to the normal default
    of API:, which is), and the non-collection behavior proved confusing
    to many users.
    
    Ideally there would be an option to choose the output ccache in
    the "Get Ticket" window, but that is more complicated to implement
    than just a display of what cache a given ticket is in.  This
    extra display column should still help to alleviate user confusion.
    
    ticket: 8207 (new)
    queue: kfw
    tags: pullup
    target_version: 1.13.3

 src/windows/leash/Leash.rc                  |    2 ++
 src/windows/leash/LeashUICommandHandler.cpp |    5 +++++
 src/windows/leash/LeashView.cpp             |   25 ++++++++++++++++++++++---
 src/windows/leash/LeashView.h               |    6 +++++-
 src/windows/leash/kfwribbon.xml             |    4 ++++
 src/windows/leash/resource.h                |    1 +
 6 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/src/windows/leash/Leash.rc b/src/windows/leash/Leash.rc
index d1e7f16..798e629 100644
--- a/src/windows/leash/Leash.rc
+++ b/src/windows/leash/Leash.rc
@@ -124,6 +124,7 @@ BEGIN
         MENUITEM "&Valid Until",                ID_VALID_UNTIL
         MENUITEM "&Encryption Type",            ID_ENCRYPTION_TYPE
         MENUITEM "&Flags",                      ID_SHOW_TICKET_FLAGS
+        MENUITEM "&Credential Cache Name",      ID_CCACHE_NAME
     END
     POPUP "&Options"
     BEGIN
@@ -968,6 +969,7 @@ BEGIN
     ID_FORGET_PRINCIPALS    "Clear the Principal history.  This only affects autocompletion in the Get Tickets and Change Password dialogs.\n Forget Principals"
     ID_ENCRYPTION_TYPE      "Display column showing the encryption type for your tickets and session keys.\n Encryption Type"
     ID_VALID_UNTIL          "Display column showing when your tickets will expire.\n Valid Until"
+    ID_CCACHE_NAME          "Display column showing the name of the credential cache containing this ticket.\n Cache Name"
 END
 
 STRINGTABLE
diff --git a/src/windows/leash/LeashUICommandHandler.cpp b/src/windows/leash/LeashUICommandHandler.cpp
index 828640f..762f957 100644
--- a/src/windows/leash/LeashUICommandHandler.cpp
+++ b/src/windows/leash/LeashUICommandHandler.cpp
@@ -154,6 +154,9 @@ LeashUICommandHandler::Execute(UINT32 commandId, UI_EXECUTIONVERB verb,
             SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_SHOW_TICKET_FLAGS,
                                                         1), 0);
             break;
+        case cmdCcacheNameCheckBox:
+            SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_CCACHE_NAME, 1), 0);
+            break;
         case cmdAutoRenewCheckBox:
             SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_AUTO_RENEW, 1), 0);
             break;
@@ -245,6 +248,8 @@ LeashUICommandHandler::UpdateProperty(UINT32 commandId, REFPROPERTYKEY key,
             return RegKeyToProperty("Encryption Type", false, newValue);
         case cmdFlagsCheckBox:
             return RegKeyToProperty("Flags", false, newValue);
+        case cmdCcacheNameCheckBox:
+            return RegKeyToProperty("Credential Cache", false, newValue);
         case cmdAutoRenewCheckBox:
             return RegKeyToProperty("AutoRenewTickets", true, newValue);
         case cmdExpireAlarmCheckBox:
diff --git a/src/windows/leash/LeashView.cpp b/src/windows/leash/LeashView.cpp
index c3d45a5..745a16f 100644
--- a/src/windows/leash/LeashView.cpp
+++ b/src/windows/leash/LeashView.cpp
@@ -66,11 +66,13 @@ BEGIN_MESSAGE_MAP(CLeashView, CListView)
 	ON_COMMAND(ID_RENEWABLE_UNTIL, OnRenewableUntil)
 	ON_COMMAND(ID_SHOW_TICKET_FLAGS, OnShowTicketFlags)
 	ON_COMMAND(ID_ENCRYPTION_TYPE, OnEncryptionType)
+	ON_COMMAND(ID_CCACHE_NAME, OnCcacheName)
 	ON_UPDATE_COMMAND_UI(ID_TIME_ISSUED, OnUpdateTimeIssued)
 	ON_UPDATE_COMMAND_UI(ID_VALID_UNTIL, OnUpdateValidUntil)
 	ON_UPDATE_COMMAND_UI(ID_RENEWABLE_UNTIL, OnUpdateRenewableUntil)
 	ON_UPDATE_COMMAND_UI(ID_SHOW_TICKET_FLAGS, OnUpdateShowTicketFlags)
 	ON_UPDATE_COMMAND_UI(ID_ENCRYPTION_TYPE, OnUpdateEncryptionType)
+	ON_UPDATE_COMMAND_UI(ID_CCACHE_NAME, OnUpdateCcacheName)
 	ON_COMMAND(ID_UPPERCASE_REALM, OnUppercaseRealm)
 	ON_COMMAND(ID_KILL_TIX_ONEXIT, OnKillTixOnExit)
 	ON_UPDATE_COMMAND_UI(ID_UPPERCASE_REALM, OnUpdateUppercaseRealm)
@@ -149,6 +151,7 @@ ViewColumnInfo CLeashView::sm_viewColumns[] =
     {"Valid Until", true, ID_VALID_UNTIL, 100},          // VALID_UNTIL
     {"Encryption Type", false, ID_ENCRYPTION_TYPE, 100}, // ENCRYPTION_TYPE
     {"Flags", false, ID_SHOW_TICKET_FLAGS, 100},         // TICKET_FLAGS
+    {"Credential Cache", false, ID_CCACHE_NAME, 105},    // CACHE_NAME
 };
 
 static struct TicketFlag {
@@ -1126,7 +1129,8 @@ void CLeashView::AddDisplayItem(CListCtrl &list,
                                 long valid_until,
                                 long renew_until,
                                 char *encTypes,
-                                unsigned long flags)
+                                unsigned long flags,
+                                char *ccache_name)
 {
     TCHAR* localTimeStr=NULL;
     TCHAR* durationStr=NULL;
@@ -1185,6 +1189,9 @@ void CLeashView::AddDisplayItem(CListCtrl &list,
         krb5TicketFlagsToString(flags, &flagsStr);
         list.SetItemText(iItem, iSubItem++, flagsStr);
     }
+    if (sm_viewColumns[CACHE_NAME].m_enabled) {
+        list.SetItemText(iItem, iSubItem++, ccache_name);
+    }
     if (flagsStr)
         free(flagsStr);
     if (localTimeStr)
@@ -1477,7 +1484,8 @@ VOID CLeashView::OnUpdateDisplay()
                        principal->valid_until,
                        principal->renew_until,
                        "",
-                       principal->flags);
+                       principal->flags,
+                       principal->ccache_name);
         if (elem->m_expanded) {
             for (tempList = principal->ticket_list;
                  tempList != NULL;
@@ -1490,7 +1498,8 @@ VOID CLeashView::OnUpdateDisplay()
                                tempList->valid_until,
                                tempList->renew_until,
                                tempList->encTypes,
-                               tempList->flags);
+                               tempList->flags,
+                               principal->ccache_name);
             }
         }
         if ((elem->m_focus >= 0) &&
@@ -1803,6 +1812,16 @@ VOID CLeashView::OnUpdateEncryptionType(CCmdUI *pCmdUI)
     pCmdUI->SetCheck(sm_viewColumns[ENCRYPTION_TYPE].m_enabled);
 }
 
+VOID CLeashView::OnCcacheName()
+{
+    ToggleViewColumn(CACHE_NAME);
+}
+
+VOID CLeashView::OnUpdateCcacheName(CCmdUI *pCmdUI)
+{
+    pCmdUI->SetCheck(sm_viewColumns[CACHE_NAME].m_enabled);
+}
+
 VOID CLeashView::OnLargeIcons()
 {
     INT x, y, n;
diff --git a/src/windows/leash/LeashView.h b/src/windows/leash/LeashView.h
index 1e36211..190c93b 100644
--- a/src/windows/leash/LeashView.h
+++ b/src/windows/leash/LeashView.h
@@ -83,6 +83,7 @@ enum eViewColumn {
     VALID_UNTIL,
     ENCRYPTION_TYPE,
     TICKET_FLAGS,
+    CACHE_NAME,
     NUM_VIEW_COLUMNS
 };
 
@@ -221,7 +222,8 @@ private:
                                long valid_until,
                                long renew_until,
                                char *encTypes,
-                               unsigned long flags);
+                               unsigned long flags,
+                               char *cache_name);
 
     void   SetTrayIcon(int nim, int state=0);
     void   SetTrayText(int nim, CString tip);
@@ -305,6 +307,7 @@ protected:
 	afx_msg VOID OnRenewableUntil();
 	afx_msg VOID OnShowTicketFlags();
 	afx_msg VOID OnEncryptionType();
+	afx_msg VOID OnCcacheName();
 	afx_msg VOID OnUppercaseRealm();
 	afx_msg VOID OnKillTixOnExit();
 	afx_msg VOID OnDestroy();
@@ -317,6 +320,7 @@ protected:
 	afx_msg VOID OnUpdateRenewableUntil(CCmdUI* pCmdUI);
 	afx_msg VOID OnUpdateShowTicketFlags(CCmdUI* pCmdUI);
 	afx_msg VOID OnUpdateEncryptionType(CCmdUI* pCmdUI);
+	afx_msg VOID OnUpdateCcacheName(CCmdUI* pCmdUI);
 	afx_msg VOID OnUpdateUppercaseRealm(CCmdUI* pCmdUI);
 	afx_msg VOID OnUpdateKillTixOnExit(CCmdUI* pCmdUI);
 	afx_msg VOID OnUpdateLowTicketAlarm(CCmdUI* pCmdUI);
diff --git a/src/windows/leash/kfwribbon.xml b/src/windows/leash/kfwribbon.xml
index 8245b7b..975991b 100644
--- a/src/windows/leash/kfwribbon.xml
+++ b/src/windows/leash/kfwribbon.xml
@@ -62,6 +62,9 @@
     <Command Name="cmdFlagsCheckBox"
              LabelTitle="Flags"
              Keytip="F" />
+    <Command Name="cmdCcacheNameCheckBox"
+             LabelTitle="Credential Cache Name"
+             Keytip="N" />
     <Command Name="cmdAutoRenewCheckBox"
              LabelTitle="Automatic Ticket Renewal"
              Keytip="R" />
@@ -117,6 +120,7 @@
             <CheckBox CommandName="cmdValidUntilCheckBox" />
             <CheckBox CommandName="cmdEncTypeCheckBox" />
             <CheckBox CommandName="cmdFlagsCheckBox" />
+            <CheckBox CommandName="cmdCcacheNameCheckBox" />
           </Group>
           <Group CommandName="cmdTicketOptionsGroup" >
             <CheckBox CommandName="cmdAutoRenewCheckBox" />
diff --git a/src/windows/leash/resource.h b/src/windows/leash/resource.h
index 27fd67e..5f606fc 100644
--- a/src/windows/leash/resource.h
+++ b/src/windows/leash/resource.h
@@ -339,6 +339,7 @@
 #define ID_EXPORT_TICKET                32837
 #define ID_AUTO_IMPORT_TICKET           32838
 #define ID_AUTO_IMPORT_TICKETS          32840
+#define ID_CCACHE_NAME                  32841
 
 // Next default values for new objects
 //


More information about the cvs-krb5 mailing list