1 //*****************************************************************************
2 // File:	lgobals.h
3 // By:		Arthur David Leather
4 // Created:	12/02/98
5 // Copyright:	@1998 Massachusetts Institute of Technology - All rights
6 //              reserved.
7 // Description:	H file for lgobals.cpp. Contains global variables and helper
8 //		functions
9 //
10 // History:
11 //
12 // MM/DD/YY	Inits	Description of Change
13 // 02/02/98	ADL	Original
14 //*****************************************************************************
15 
16 #if !defined LEASHGLOBALS_H
17 #define LEASHGLOBALS_H
18 
19 #include <tlhelp32.h>
20 #include <loadfuncs-com_err.h>
21 #include <loadfuncs-krb5.h>
22 ////#include <loadfuncs-krb.h>
23 #include <loadfuncs-profile.h>
24 #include <loadfuncs-leash.h>
25 #include <krb5.h>
26 
27 // toolhelp functions
28 TYPEDEF_FUNC(
29     HANDLE,
30     WINAPI,
31     CreateToolhelp32Snapshot,
32     (DWORD, DWORD)
33     );
34 TYPEDEF_FUNC(
35     BOOL,
36     WINAPI,
37     Module32First,
38     (HANDLE, LPMODULEENTRY32)
39     );
40 TYPEDEF_FUNC(
41     BOOL,
42     WINAPI,
43     Module32Next,
44     (HANDLE, LPMODULEENTRY32)
45     );
46 
47 // psapi functions
48 TYPEDEF_FUNC(
49     DWORD,
50     WINAPI,
51     GetModuleFileNameExA,
52     (HANDLE, HMODULE, LPSTR, DWORD)
53     );
54 TYPEDEF_FUNC(
55     BOOL,
56     WINAPI,
57     EnumProcessModules,
58     (HANDLE, HMODULE*, DWORD, LPDWORD)
59     );
60 
61 #define pGetModuleFileNameEx pGetModuleFileNameExA
62 
63 extern DECL_FUNC_PTR(Leash_kdestroy);
64 extern DECL_FUNC_PTR(Leash_changepwd_dlg);
65 extern DECL_FUNC_PTR(Leash_changepwd_dlg_ex);
66 extern DECL_FUNC_PTR(Leash_kinit_dlg);
67 extern DECL_FUNC_PTR(Leash_kinit_dlg_ex);
68 extern DECL_FUNC_PTR(Leash_timesync);
69 extern DECL_FUNC_PTR(Leash_get_default_uppercaserealm);
70 extern DECL_FUNC_PTR(Leash_set_default_uppercaserealm);
71 extern DECL_FUNC_PTR(Leash_get_default_mslsa_import);
72 extern DECL_FUNC_PTR(Leash_import);
73 extern DECL_FUNC_PTR(Leash_importable);
74 extern DECL_FUNC_PTR(Leash_renew);
75 
76 // psapi functions
77 extern DECL_FUNC_PTR(GetModuleFileNameExA);
78 extern DECL_FUNC_PTR(EnumProcessModules);
79 
80 // toolhelp functions
81 extern DECL_FUNC_PTR(CreateToolhelp32Snapshot);
82 extern DECL_FUNC_PTR(Module32First);
83 extern DECL_FUNC_PTR(Module32Next);
84 
85 // com_err functions
86 extern DECL_FUNC_PTR(error_message);
87 
88 // krb5 functions
89 extern DECL_FUNC_PTR(krb5_cc_default_name);
90 extern DECL_FUNC_PTR(krb5_cc_set_default_name);
91 extern DECL_FUNC_PTR(krb5_get_default_config_files);
92 extern DECL_FUNC_PTR(krb5_free_config_files);
93 extern DECL_FUNC_PTR(krb5_free_context);
94 extern DECL_FUNC_PTR(krb5_get_default_realm);
95 extern DECL_FUNC_PTR(krb5_free_default_realm);
96 extern DECL_FUNC_PTR(krb5_cc_get_principal);
97 extern DECL_FUNC_PTR(krb5_build_principal);
98 extern DECL_FUNC_PTR(krb5_c_random_make_octets);
99 extern DECL_FUNC_PTR(krb5_get_init_creds_password);
100 extern DECL_FUNC_PTR(krb5_free_cred_contents);
101 extern DECL_FUNC_PTR(krb5_cc_resolve);
102 extern DECL_FUNC_PTR(krb5_unparse_name);
103 extern DECL_FUNC_PTR(krb5_free_unparsed_name);
104 extern DECL_FUNC_PTR(krb5_free_principal);
105 extern DECL_FUNC_PTR(krb5_cc_close);
106 extern DECL_FUNC_PTR(krb5_cc_default);
107 extern DECL_FUNC_PTR(krb5_cc_destroy);
108 extern DECL_FUNC_PTR(krb5_cc_set_flags);
109 extern DECL_FUNC_PTR(krb5_cc_get_name);
110 extern DECL_FUNC_PTR(krb5_cc_start_seq_get);
111 extern DECL_FUNC_PTR(krb5_cc_end_seq_get);
112 extern DECL_FUNC_PTR(krb5_cc_next_cred);
113 extern DECL_FUNC_PTR(krb5_cccol_cursor_new);
114 extern DECL_FUNC_PTR(krb5_cccol_cursor_next);
115 extern DECL_FUNC_PTR(krb5_cccol_cursor_free);
116 extern DECL_FUNC_PTR(krb5_decode_ticket);
117 extern DECL_FUNC_PTR(krb5_free_ticket);
118 extern DECL_FUNC_PTR(krb5_init_context);
119 extern DECL_FUNC_PTR(krb5_is_config_principal);
120 extern DECL_FUNC_PTR(krb5_cc_switch);
121 extern DECL_FUNC_PTR(krb5_build_principal_ext);
122 extern DECL_FUNC_PTR(krb5_get_renewed_creds);
123 extern DECL_FUNC_PTR(krb5_cc_initialize);
124 extern DECL_FUNC_PTR(krb5_cc_store_cred);
125 extern DECL_FUNC_PTR(krb5_cc_get_full_name);
126 extern DECL_FUNC_PTR(krb5_free_string);
127 extern DECL_FUNC_PTR(krb5_enctype_to_name);
128 extern DECL_FUNC_PTR(krb5_cc_get_type);
129 extern DECL_FUNC_PTR(krb5int_cc_user_set_default_name);
130 // extern DECL_FUNC_PTR(krb5_get_host_realm);
131 
132 // profile functions
133 extern DECL_FUNC_PTR(profile_release);
134 extern DECL_FUNC_PTR(profile_init);
135 extern DECL_FUNC_PTR(profile_flush);
136 extern DECL_FUNC_PTR(profile_rename_section);
137 extern DECL_FUNC_PTR(profile_update_relation);
138 extern DECL_FUNC_PTR(profile_clear_relation);
139 extern DECL_FUNC_PTR(profile_add_relation);
140 extern DECL_FUNC_PTR(profile_get_relation_names);
141 extern DECL_FUNC_PTR(profile_get_subsection_names);
142 extern DECL_FUNC_PTR(profile_get_values);
143 extern DECL_FUNC_PTR(profile_free_list);
144 extern DECL_FUNC_PTR(profile_abandon);
145 extern DECL_FUNC_PTR(profile_get_string);
146 extern DECL_FUNC_PTR(profile_release_string);
147 
148 #define SKIP_MINSIZE  0
149 #define LEFT_SIDE     1
150 #define RIGHT_SIDE    2
151 #define TOP_SIDE      3
152 #define RESET_MINSIZE 4
153 #define BOTTOM_SIDE   6
154 
155 #define ADMIN_SERVER "admin_server"
156 
157 #define ON  1
158 #define OFF 0
159 #define TRUE_FLAG		1
160 #define FALSE_FLAG		0
161 #ifdef _WIN64
162 #define LEASHDLL "leashw64.dll"
163 #define KERB5DLL "krb5_64.dll"
164 #define KERB5_PPROFILE_DLL "xpprof64.dll"
165 #else
166 #define LEASHDLL "leashw32.dll"
167 #define KERB5DLL "krb5_32.dll"
168 #define KERB5_PPROFILE_DLL "xpprof32.dll"
169 #endif
170 #define SECUR32DLL "secur32.dll"
171 #define KRB_FILE		"KRB.CON"
172 #define KRBREALM_FILE	"KRBREALM.CON"
173 #define TICKET_FILE		"TICKET.KRB"
174 
175 #define LEASH_HELP_FILE "leash.chm"
176 
177 // Get ticket info for the default ccache only
178 extern void LeashKRB5ListDefaultTickets(TICKETINFO *ticketinfo);
179 // clean up ticket info
180 extern void LeashKRB5FreeTicketInfo(TICKETINFO *ticketinfo);
181 
182 // Allocate TICKETINFO for each ccache that contain tickets
183 extern void LeashKRB5ListAllTickets(TICKETINFO **ticketinfolist);
184 // clean up ticket info list
185 extern void LeashKRB5FreeTickets(TICKETINFO **ticketinfolist);
186 
187 class TicketInfoWrapper {
188   public:
189     HANDLE     lockObj;
190     TICKETINFO Krb5;
191 };
192 extern TicketInfoWrapper ticketinfo;
193 
194 #endif
195