summaryrefslogtreecommitdiffstats
path: root/src/windows/cns/cns.h
blob: cdd6da3b3973a340e1daa91ea739791913463143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
/*
 * cns.h
 *
 * Public Domain -- written by Cygnus Support.
 */

/* Only one time, please */
#ifndef	KWIN_DEFS
#define KWIN_DEFS

#if !defined(KRB4) && !defined(KRB5)
#define KRB5
#endif

#ifndef RC_INVOKED

#ifdef KRB4
#include "mit-copyright.h"
#include "krb.h"
#include "kadm.h"
#include "org.h"
#endif

#ifdef KRB5
#include "winsock.h"
#include "krb5.h"
#include "krbini.h"
#include "com_err.h"

#define DEFAULT_TKT_LIFE    120             /* In 5 minute units */
#define ANAME_SZ	        40
#define	REALM_SZ	        40
#define	SNAME_SZ	        40
#define	INST_SZ		        40
#define MAX_KPW_LEN	        128
/* include space for '.' and '@' */
#define	MAX_K_NAME_SZ	    (ANAME_SZ + INST_SZ + REALM_SZ + 2)
#ifdef CYGNUS
#define ORGANIZATION        "Cygnus Solutions\n(800)CYGNUS-1\nhttp://www.cygnus.com\ninfo@cygnus.com"
#endif
#define CREDENTIALS         char
#endif

/*
 * Constants
 */
#define BLOCK_MAX_SEC 30	       /* Blocking timeout duration */
#define KWIN_UPDATE_PERIOD 30000       /* Every 30 seconds update the screen */
#define TIME_BUFFER	300	       /* Pop-up time buffer in seconds */
#define WM_KWIN_SETNAME (WM_USER+100)  /* Sets the name fields in the dialog */

#endif /* RC_INVOKED */

/*
 * Menu items
 */
#define FILE_MENU_ITEMS 3
#define FILE_MENU_MAX_LOGINS 5
#define IDM_KWIN 1000
#define   IDM_OPTIONS 1001
#define   IDM_EXIT 1002
#define   IDM_FIRST_LOGIN 1003

#define   IDM_HELP_INDEX 1020
#define   IDM_ABOUT 1021

/*
 * Accelerator
 */
#define IDA_KWIN 2000

/*
 * Dialog and dialog item ids
 */
#define KWIN_DIALOG_CLASS "KERBEROS"	/* class for kerberos dialog */
#define KWIN_DIALOG_NAME "Krb5"		/* name for kerberos dialog */

#define ID_KWIN 100			/* the main kerberos dialog */
#define IDD_KWIN_FIRST 101
#define   IDD_TICKET_LIST_TITLE 101
#define   IDD_TICKET_LIST 102

#ifdef KRB4

#define IDD_MIN_TITLE 103
#define   IDD_LOGIN_NAME_TITLE 103
#define   IDD_LOGIN_INSTANCE_TITLE 104
#define   IDD_LOGIN_REALM_TITLE 105
#define   IDD_LOGIN_PASSWORD_TITLE 106
#define IDD_MAX_TITLE 106

#define IDD_MIN_EDIT 107
#define   IDD_LOGIN_NAME 107
#define   IDD_LOGIN_INSTANCE 108
#define   IDD_LOGIN_REALM 109
#define   IDD_LOGIN_PASSWORD 110
#define IDD_MAX_EDIT 110

#endif

#ifdef KRB5

#define IDD_MIN_TITLE 103
#define   IDD_LOGIN_NAME_TITLE 103
#define   IDD_LOGIN_PASSWORD_TITLE 104
#define   IDD_LOGIN_REALM_TITLE 105
#define IDD_MAX_TITLE 105

#define IDD_MIN_EDIT 107
#define   IDD_LOGIN_NAME 107
#define   IDD_LOGIN_PASSWORD 108
#define   IDD_LOGIN_REALM 109
#define IDD_MAX_EDIT 109

#endif

#define IDD_MIN_BUTTON 111
#define   IDD_CHANGE_PASSWORD 111
#define   IDD_TICKET_DELETE 112
#define   IDD_LOGIN 113
#define   IDD_MAX_BUTTON 113
#define IDD_PASSWORD_CR2 114            /* For better cr handling */

#define IDD_KWIN_LAST 114


#define ID_PASSWORD 200
#define   IDD_PASSWORD_NAME 204
#define   IDD_PASSWORD_INSTANCE 205
#define   IDD_PASSWORD_REALM 206
#define   IDD_OLD_PASSWORD 207
#define   IDD_NEW_PASSWORD1 208
#define   IDD_NEW_PASSWORD2 209
#define   IDD_PASSWORD_CR 210


#define ID_OPTS 300
#define   IDD_CONF 301
#define   IDD_REALMS 302
#define   IDD_LIFETIME 303
#define   IDD_CCACHE 304
#define   IDD_ACTIONS 310
#define     IDD_BEEP 311
#define     IDD_ALERT 312
#define   IDD_TKOPT 320
#define   IDD_FORWARDABLE 321
#define   IDD_NOADDRESSES 322

/*
 * the entire range (400 through 499) is reserved for the blasted variable
 * dialog box thingie.
 */
#define ID_VARDLG    400

/*
 * Dialog dimensions
 */
#define KWIN_MIN_WIDTH 180
#define KWIN_MIN_HEIGHT 110

/*
 * Icons
 */
#define IDI_KWIN 1		/* The program icon */

#define ICON_WIDTH 30	/* Width used with icons */
#define ICON_HEIGHT 20	/* Height used with icons */

#define IDI_FIRST_CLOCK 2
#define IDI_0_MIN 2		/* < 5 minutes left */
#define IDI_5_MIN 3
#define IDI_10_MIN 4
#define IDI_15_MIN 5
#define IDI_20_MIN 6
#define IDI_25_MIN 7
#define IDI_30_MIN 8
#define IDI_35_MIN 9
#define IDI_40_MIN 10
#define IDI_45_MIN 11
#define IDI_50_MIN 12
#define IDI_55_MIN 13
#define IDI_60_MIN 14
#define IDI_EXPIRED 15
#define IDI_TICKET 16
#define IDI_LAST_CLOCK 16
#define MAX_ICONS (IDI_LAST_CLOCK - IDI_FIRST_CLOCK + 1)

#ifndef RC_INVOKED

extern BOOL isblocking;
extern HFONT hfontdialog;
extern HINSTANCE hinstance;
extern BOOL alert;
extern BOOL beep;

extern char confname[FILENAME_MAX];

#ifdef KRB5
extern krb5_context k5_context;
extern krb5_ccache k5_ccache;
extern char ccname[FILENAME_MAX];
extern BOOL forwardable;
extern BOOL noaddresses;
#endif

/*
 * Prototypes
 */

/* in cns.c */

void kwin_init_name(HWND, char *);
void kwin_set_default_focus(HWND);
time_t kwin_get_epoch(void);

/* in options.c */
BOOL opts_initdialog(HWND, HWND, LPARAM);
void opts_command(HWND, int, HWND, UINT);
BOOL CALLBACK opts_dlg_proc(HWND, UINT, WPARAM, LPARAM);
BOOL opts_dialog(HWND);

/* in password.c */
BOOL change_password(HWND, char *, char *, char *, char *, char *);
void password_command(HWND, int, HWND, UINT);
BOOL password_initdialog(HWND, HWND, LPARAM);
BOOL CALLBACK password_dlg_proc(HWND, UINT, WPARAM, LPARAM);
BOOL password_dialog(HWND);

#ifdef KRB5
krb5_error_code k5_dest_tkt(void);
int k5_get_num_cred(int);
int k5_kname_parse(char *, char *, char *);
krb5_error_code k5_init_ccache(krb5_ccache *);
int k5_name_from_ccache(krb5_ccache);
krb5_error_code k5_change_password(HWND, krb5_context, char *, char *, char *,
				   char *, char **);

#endif /* KRB5 */

HICON kwin_get_icon(time_t);
void trim(char *);
void start_blocking_hook(int);
void end_blocking_hook(void);
void center_dialog(HWND);
void set_dialog_font(HWND, HFONT);

#endif /* RC_INVOKED */

#endif