Path: blob/main/crypto/krb5/src/windows/leash/LeashView.h
34890 views
// **************************************************************************************1// File: LeashView.h2// By: Arthur David Leather3// Created: 12/02/984// Copyright @1998 Massachusetts Institute of Technology - All rights reserved.5// Description: H file for LeashView.cpp. Contains variables and functions6// for the Leash FormView7//8// History:9//10// MM/DD/YY Inits Description of Change11// 12/02/98 ADL Original12// **************************************************************************************131415#if !defined(AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_)16#define AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_1718#if _MSC_VER >= 100019#pragma once20#endif // _MSC_VER >= 10002122#define GOOD_TICKETS 1 // Don't change this value23#define EXPIRED_TICKETS 2 // Don't change this value24#define TICKETS_LOW 325#define ONE_SECOND 100026#define SMALL_ICONS 1627#define LARGE_ICONS 322829#define UPDATE_DISPLAY_TIME 60 //seconds3031#define ACTIVE_CLOCK 032#define LOW_CLOCK 133#define EXPIRED_CLOCK 234#define ACTIVE_TICKET 335#define LOW_TICKET 436#define EXPIRED_TICKET 537#define TICKET_NOT_INSTALLED 638#define ACTIVE_PARENT_NODE 739#define LOW_PARENT_NODE 840#define EXPIRED_PARENT_NODE 941#define NONE_PARENT_NODE 1042#define LOW_TRAY_ICON 1143#define EXPIRED_TRAY_ICON 1244#define ACTIVE_TRAY_ICON 1345#define NONE_TRAY_ICON 1446#define TKT_ADDRESS 1547#define TKT_SESSION 1648#define TKT_ENCRYPTION 1749#define IMAGE_COUNT 185051#define NODE_IS_EXPANDED 25253#define CX_BORDER 154#define CY_BORDER 15556#ifdef NO_TICKETS57#undef NO_TICKETS // XXX - this is evil but necessary thanks to silliness...58#endif5960#define WM_TRAYICON (WM_USER+100)61#define WM_WARNINGPOPUP (WM_USER+101)6263enum ticketTimeLeft{NO_TICKETS, ZERO_MINUTES_LEFT, FIVE_MINUTES_LEFT, TEN_MINUTES_LEFT,64FIFTEEN_MINUTES_LEFT, TWENTY_MINUTES_LEFT, PLENTY_OF_TIME,65NOT_INSTALLED};66// Don't change 'NO_TICKET's' value6768class CLeashDebugWindow;69class ViewColumnInfo70{71public:72const char * m_name;73int m_enabled;74int m_id;75int m_columnWidth;76};7778enum eViewColumn {79PRINCIPAL,80TIME_ISSUED,81RENEWABLE_UNTIL,82VALID_UNTIL,83ENCRYPTION_TYPE,84TICKET_FLAGS,85CACHE_NAME,86NUM_VIEW_COLUMNS87};8889class CCacheDisplayData90{91public:92CCacheDisplayData(const char *ccache_name) :93m_next(NULL),94m_ccacheName(strdup(ccache_name)),95m_index(-1),96m_focus(-1),97m_expanded(0),98m_selected(0),99m_isRenewable(0),100m_isDefault(0)101{102}103104~CCacheDisplayData()105{106if (m_ccacheName)107free(m_ccacheName);108}109110CCacheDisplayData *m_next;111char *m_ccacheName;112int m_index; // item index in list view113int m_focus; // sub-item with focus114unsigned int m_expanded; // true when each individual ticket is displayed115unsigned int m_selected; // true when this ccache is selected116unsigned int m_isRenewable; // true when tgt is renewable117unsigned int m_isDefault; // true when this is the default ccache118};119120struct ListItemInfo121{122ListItemInfo() : m_font(NULL), m_durationFont(NULL) {}123HFONT m_durationFont; // For renewable/valid until; italic when expired124HFONT m_font; // For all other items125};126127class CLeashView : public CListView128{129private:130////@#+Remove131CLeashDebugWindow* m_pDebugWindow;132CCacheDisplayData* m_ccacheDisplay;133CImageList m_imageList;134CWinApp* m_pApp;135HTREEITEM m_hPrincipal;136HTREEITEM m_hKerb5;137HTREEITEM m_hk5tkt;138TV_INSERTSTRUCT m_tvinsert;139HMENU m_hMenu;140BOOL m_startup;141BOOL m_isMinimum;142BOOL m_debugStartUp;143BOOL m_alreadyPlayed;144INT m_upperCaseRealm;145INT m_destroyTicketsOnExit;146INT m_debugWindow;147INT m_largeIcons;148INT m_lowTicketAlarm;149INT m_hPrincipalState;150INT m_hKerb5State;151CString* m_pWarningMessage;152BOOL m_bIconAdded;153BOOL m_bIconDeleted;154HFONT m_BaseFont;155HFONT m_BoldFont;156HFONT m_ItalicFont;157HFONT m_BoldItalicFont;158ListItemInfo* m_aListItemInfo;159160static ViewColumnInfo sm_viewColumns[NUM_VIEW_COLUMNS];161162static INT m_autoRenewTickets;163static INT m_ticketStatusKrb5;164static INT m_autoRenewalAttempted;165static INT m_warningOfTicketTimeLeftKrb5;166static INT m_warningOfTicketTimeLeftLockKrb5;167static INT m_updateDisplayCount;168static INT m_alreadyPlayedDisplayCount;169static time_t m_ticketTimeLeft;170static BOOL m_lowTicketAlarmSound;171static LONG m_timerMsgNotInProgress;172173void ToggleViewColumn(eViewColumn viewOption);174VOID ResetTreeNodes();175VOID ApplicationInfoMissingMsg();176VOID GetScrollBarState(CSize sizeClient, CSize& needSb,177CSize& sizeRange, CPoint& ptMove,178BOOL bInsideClient);179VOID UpdateBars();180VOID GetScrollBarSizes(CSize& sizeSb);181BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);182HFONT GetSubItemFont(int iItem, int iSubItem);183184//void GetRowWidthHeight(CDC* pDC, LPCSTR theString, int& nRowWidth,185// int& nRowHeight, int& nCharWidth);186static VOID AlarmBeep();187static VOID CALLBACK EXPORT TimerProc(HWND hWnd, UINT nMsg, UINT_PTR nIDEvent,188DWORD dwTime);189static VOID UpdateTicketTime(TICKETINFO& ticketinfo);190static INT GetLowTicketStatus(int);191static time_t LeashTime();192static BOOL IsExpired(TicketList *ticket);193static BOOL IsExpired(TICKETINFO *info);194static VOID AddDisplayItem(CListCtrl &list,195CCacheDisplayData *elem,196int iItem,197char *principal,198time_t issued,199time_t valid_until,200time_t renew_until,201char *encTypes,202unsigned long flags,203char *cache_name);204205void SetTrayIcon(int nim, int state=0);206void SetTrayText(int nim, CString tip);207208BOOL UpdateDisplay();209static UINT InitTicket(void *);210static UINT RenewTicket(void *);211static UINT ImportTicket(void *);212// Queue a warning popup message.213// This is a workaround to the MFC deficiency that you cannot safely create214// a modal dialog while processing messages within AfxPreTranslateMessage()215// returns TRUE if message is queued successfully.216BOOL PostWarningMessage(const CString& message);217afx_msg LRESULT OnWarningPopup(WPARAM wParam, LPARAM lParam);218219BOOL IsExpanded(TICKETINFO *);220221protected: // create from serialization only222DECLARE_DYNCREATE(CLeashView)223224// Attributes225public:226CLeashView();227//LeashDoc* GetDocument();228229//{{AFX_DATA(CLeashView)230enum { IDD = IDD_DIALOG1 };231// NOTE: the ClassWizard will add data members here232//}}AFX_DATA233234// Operations235public:236237// Overrides238// ClassWizard generated virtual function overrides239//{{AFX_VIRTUAL(CLeashView)240public:241virtual BOOL PreCreateWindow(CREATESTRUCT& cs);242virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);243virtual VOID OnInitialUpdate();244virtual BOOL PreTranslateMessage(MSG* pMsg);245protected:246virtual VOID OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);247//}}AFX_VIRTUAL248249// Implementation250public:251virtual ~CLeashView();252253#ifdef _DEBUG254virtual VOID AssertValid() const;255virtual VOID Dump(CDumpContext& dc) const;256#endif257258// Generated message map functions259protected:260//{{AFX_MSG(CLeashView)261afx_msg VOID OnItemexpandedTreeview(NMHDR* pNMHDR, LRESULT* pResult);262afx_msg INT OnCreate(LPCREATESTRUCT lpCreateStruct);263afx_msg VOID OnShowWindow(BOOL bShow, UINT nStatus);264afx_msg VOID OnClose(void);265afx_msg VOID OnInitTicket();266afx_msg VOID OnRenewTicket();267afx_msg VOID OnDestroyTicket();268afx_msg VOID OnMakeDefault();269afx_msg VOID OnChangePassword();270afx_msg VOID OnUpdateDisplay();271afx_msg VOID OnSynTime();272afx_msg VOID OnDebugMode();273afx_msg VOID OnLargeIcons();274afx_msg VOID OnTimeIssued();275afx_msg VOID OnValidUntil();276afx_msg VOID OnRenewableUntil();277afx_msg VOID OnShowTicketFlags();278afx_msg VOID OnEncryptionType();279afx_msg VOID OnCcacheName();280afx_msg VOID OnUppercaseRealm();281afx_msg VOID OnKillTixOnExit();282afx_msg VOID OnDestroy();283afx_msg VOID OnUpdateDestroyTicket(CCmdUI* pCmdUI);284afx_msg VOID OnUpdateInitTicket(CCmdUI* pCmdUI);285afx_msg VOID OnUpdateRenewTicket(CCmdUI* pCmdUI);286afx_msg VOID OnUpdateTimeIssued(CCmdUI* pCmdUI);287afx_msg VOID OnUpdateValidUntil(CCmdUI* pCmdUI);288afx_msg VOID OnUpdateRenewableUntil(CCmdUI* pCmdUI);289afx_msg VOID OnUpdateShowTicketFlags(CCmdUI* pCmdUI);290afx_msg VOID OnUpdateEncryptionType(CCmdUI* pCmdUI);291afx_msg VOID OnUpdateCcacheName(CCmdUI* pCmdUI);292afx_msg VOID OnUpdateUppercaseRealm(CCmdUI* pCmdUI);293afx_msg VOID OnUpdateKillTixOnExit(CCmdUI* pCmdUI);294afx_msg VOID OnUpdateLowTicketAlarm(CCmdUI* pCmdUI);295afx_msg VOID OnUpdateAutoRenew(CCmdUI* pCmdUI);296afx_msg VOID OnUpdateMakeDefault(CCmdUI* pCmdUI);297afx_msg VOID OnAppAbout();298afx_msg VOID OnUpdateDebugMode(CCmdUI* pCmdUI);299afx_msg VOID OnUpdateCfgFiles(CCmdUI* pCmdUI);300afx_msg VOID OnKrb5Properties();301afx_msg void OnLeashProperties();302afx_msg void OnLeashRestore();303afx_msg void OnLeashMinimize();304afx_msg void OnLowTicketAlarm();305afx_msg void OnUpdateKrb5Properties(CCmdUI* pCmdUI);306afx_msg void OnKrbProperties();307afx_msg void OnUpdateProperties(CCmdUI* pCmdUI);308afx_msg void OnHelpKerberos();309afx_msg void OnHelpLeash32();310afx_msg void OnHelpWhyuseleash32();311afx_msg void OnSysColorChange();312afx_msg void OnAutoRenew();313afx_msg LRESULT OnGoodbye(WPARAM wParam, LPARAM lParam);314afx_msg LRESULT OnTrayIcon(WPARAM wParam, LPARAM lParam);315afx_msg LRESULT OnObtainTGTWithParam(WPARAM wParam, LPARAM lParam);316afx_msg void OnItemChanged(NMHDR* pNmHdr, LRESULT* pResult);317//}}AFX_MSG318DECLARE_MESSAGE_MAP()319public:320afx_msg void OnLvnItemchanging(NMHDR *pNMHDR, LRESULT *pResult);321afx_msg void OnLvnItemActivate(NMHDR *pNMHDR, LRESULT *pResult);322afx_msg void OnLvnKeydown(NMHDR *pNMHDR, LRESULT *pResult);323afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);324};325326/*327#ifndef _DEBUG // debug version in CLeashView.cpp328inline LeashDoc* CLeashView::GetDocument()329{ return (LeashDoc*)m_pDocument; }330#endif331*/332333/////////////////////////////////////////////////////////////////////////////334335//{{AFX_INSERT_LOCATION}}336// Microsoft Developer Studio will insert additional declarations immediately before the previous line.337338#endif // !defined(AFX_LeashVIEW_H__6F45AD99_561B_11D0_8FCF_00C04FC2A0C2__INCLUDED_)339340341