fc0743d22933a674ed07ce47db6987fec844112a
[openafs.git] / src / WINNT / afsclass / afsclassfn.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef AFSCLASS_FUNCTION_H
11 #define AFSCLASS_FUNCTION_H
12
13 /*
14  * Like everything else in the AfsClass library, these routines should not
15  * be called on your application's main thread; instead, devote that thread
16  * to performing user-interface work, and use these routines in as many
17  * background threads as you need.
18  *
19  * See the Overview.doc file in this directory for more information on the
20  * intended threading model for the AfsClass library.
21  *
22  */
23
24
25 /*
26  * SERVER MANIPULATION ________________________________________________________
27  *
28  */
29
30 BOOL    AfsClass_GetServerLogFile     (LPIDENT lpiServer, LPTSTR pszLocal, LPTSTR pszRemote, ULONG *pStatus = NULL);
31 BOOL    AfsClass_SetServerAuth        (LPIDENT lpiServer, BOOL fEnabled, ULONG *pStatus = NULL);
32
33 BOOL    AfsClass_InstallFile          (LPIDENT lpiServer, LPTSTR pszTarget, LPTSTR pszSource, ULONG *pStatus = NULL);
34 BOOL    AfsClass_UninstallFile        (LPIDENT lpiServer, LPTSTR pszUninstall, ULONG *pStatus = NULL);
35 BOOL    AfsClass_PruneOldFiles        (LPIDENT lpiServer, BOOL fBAK, BOOL fOLD, BOOL fCore, ULONG *pStatus = NULL);
36 BOOL    AfsClass_GetFileDates         (LPIDENT lpiServer, LPTSTR pszFilename, SYSTEMTIME *pstFile, SYSTEMTIME *pstBAK, SYSTEMTIME *pstOld, ULONG *pStatus = NULL);
37
38 BOOL    AfsClass_ExecuteCommand       (LPIDENT lpiServer, LPTSTR pszCommand, ULONG *pStatus = NULL);
39
40 BOOL    AfsClass_Salvage              (LPIDENT lpiSalvage, LPTSTR *ppszLogData, int nProcesses = 0, LPTSTR pszTempDir = NULL, LPTSTR pszLogFile = NULL, BOOL fForce = FALSE, BOOL fReadonly = FALSE, BOOL fLogInodes = FALSE, BOOL fLogRootInodes = FALSE, BOOL fRebuildDirs = FALSE, BOOL fReadBlocks = FALSE, ULONG *pStatus = NULL);
41 void    AfsClass_FreeSalvageLog       (LPTSTR pszLogData);
42
43 BOOL    AfsClass_SyncVLDB             (LPIDENT lpiSync, BOOL fForce = TRUE, ULONG *pStatus = NULL);
44
45 BOOL    AfsClass_ChangeAddress        (LPIDENT lpiServer, LPSOCKADDR_IN pAddrOld, LPSOCKADDR_IN pAddrNew = NULL, ULONG *pStatus = NULL);
46 BOOL    AfsClass_ChangeAddress        (LPIDENT lpiServer, LPSERVERSTATUS pStatusOld, LPSERVERSTATUS pStatusNew, ULONG *pStatus = NULL);
47
48
49 /*
50  * ADMIN LISTS ________________________________________________________________
51  *
52  */
53
54 typedef struct
55    {
56    TCHAR szAdmin[ cchNAME ];
57    BOOL fAdded;
58    BOOL fDeleted;
59    } ADMINLISTENTRY, *LPADMINLISTENTRY;
60
61 typedef struct
62    {
63    LPIDENT lpiServer;
64    size_t cEntries;
65    ADMINLISTENTRY *aEntries;
66    LONG cRef;
67    } ADMINLIST, *LPADMINLIST;
68
69 LPADMINLIST AfsClass_AdminList_Load   (LPIDENT lpiServer, ULONG *pStatus = NULL);
70 LPADMINLIST AfsClass_AdminList_Copy   (LPADMINLIST lpList);
71 BOOL    AfsClass_AdminList_Save       (LPADMINLIST lpList, ULONG *pStatus = NULL);
72 void    AfsClass_AdminList_Free       (LPADMINLIST lpList);
73 size_t  AfsClass_AdminList_AddEntry   (LPADMINLIST lpList, LPTSTR pszAdmin);
74 BOOL    AfsClass_AdminList_DelEntry   (LPADMINLIST lpList, size_t iIndex);
75         // note: _addentry and _delentry are safe to call on the main thread;
76         //       they don't commit their changes until _save is called.
77
78 /*
79  * DATABASE-HOST LISTS ________________________________________________________
80  *
81  */
82
83 typedef struct
84    {
85    TCHAR szHost[ cchNAME ];
86    BOOL fAdded;
87    BOOL fDeleted;
88    } HOSTLISTENTRY, *LPHOSTLISTENTRY;
89
90 typedef struct
91    {
92    LPIDENT lpiServer;
93    size_t cEntries;
94    HOSTLISTENTRY *aEntries;
95    LONG cRef;
96    } HOSTLIST, *LPHOSTLIST;
97
98 LPHOSTLIST AfsClass_HostList_Load     (LPIDENT lpiServer, ULONG *pStatus = NULL);
99 LPHOSTLIST AfsClass_HostList_Copy     (LPHOSTLIST lpList);
100 BOOL    AfsClass_HostList_Save        (LPHOSTLIST lpList, ULONG *pStatus = NULL);
101 void    AfsClass_HostList_Free        (LPHOSTLIST lpList);
102 size_t  AfsClass_HostList_AddEntry    (LPHOSTLIST lpList, LPTSTR pszHost);
103 BOOL    AfsClass_HostList_DelEntry    (LPHOSTLIST lpList, size_t iIndex);
104         // note: _addentry and _delentry are safe to call on the main thread;
105         //       they don't commit their changes until _save is called.
106
107
108 /*
109  * SERVER KEYS ________________________________________________________________
110  *
111  */
112
113 typedef struct
114    {
115    ENCRYPTIONKEY keyData;
116    ENCRYPTIONKEYINFO keyInfo;
117    int keyVersion;
118    } SERVERKEY, *LPSERVERKEY;
119
120 typedef struct
121    {
122    LPIDENT lpiServer;
123    size_t cKeys;
124    SERVERKEY *aKeys;
125    } KEYLIST, *LPKEYLIST;
126
127 LPKEYLIST AfsClass_KeyList_Load       (LPIDENT lpiServer, ULONG *pStatus = NULL);
128 void    AfsClass_KeyList_Free         (LPKEYLIST lpList);
129 BOOL    AfsClass_AddKey               (LPIDENT lpiServer, int keyVersion, LPENCRYPTIONKEY pKey, ULONG *pStatus = NULL);
130 BOOL    AfsClass_AddKey               (LPIDENT lpiServer, int keyVersion, LPTSTR pszString, ULONG *pStatus = NULL);
131 BOOL    AfsClass_DeleteKey            (LPIDENT lpiServer, int keyVersion, ULONG *pStatus = NULL);
132 BOOL    AfsClass_GetRandomKey         (LPIDENT lpi, LPENCRYPTIONKEY pKey, ULONG *pStatus = NULL);
133
134
135 /*
136  * SERVICE MANIPULATION _______________________________________________________
137  *
138  */
139
140 LPIDENT AfsClass_CreateService        (LPIDENT lpiServer, LPTSTR pszService, LPTSTR pszCommand, LPTSTR pszParams, LPTSTR pszNotifier, SERVICETYPE type, SYSTEMTIME *pstIfCron, ULONG *pStatus = NULL);
141 BOOL    AfsClass_DeleteService        (LPIDENT lpiService, ULONG *pStatus = NULL);
142
143 BOOL    AfsClass_StartService         (LPIDENT lpiStart, BOOL fTemporary, ULONG *pStatus = NULL);
144 BOOL    AfsClass_StopService          (LPIDENT lpiStop, BOOL fTemporary, BOOL fWait = TRUE, ULONG *pStatus = NULL);
145 BOOL    AfsClass_RestartService       (LPIDENT lpiRestart, ULONG *pStatus = NULL);
146
147 BOOL    AfsClass_GetRestartTimes      (LPIDENT lpiServer, BOOL *pfWeekly, LPSYSTEMTIME pstWeekly, BOOL *pfDaily, LPSYSTEMTIME pstDaily, ULONG *pStatus = NULL);
148 BOOL    AfsClass_SetRestartTimes      (LPIDENT lpiServer, LPSYSTEMTIME pstWeekly = NULL, LPSYSTEMTIME pstDaily = NULL, ULONG *pStatus = NULL);
149
150
151 /*
152  * FILESET MANIPULATION _______________________________________________________
153  *
154  */
155
156 LPIDENT AfsClass_CreateFileset        (LPIDENT lpiAggregate, LPTSTR pszFileset, ULONG ckQuota, ULONG *pStatus = NULL);
157 BOOL    AfsClass_DeleteFileset        (LPIDENT lpiFileset, BOOL fVLDB = TRUE, BOOL fServer = TRUE, ULONG *pStatus = NULL);
158 BOOL    AfsClass_MoveFileset          (LPIDENT lpiFileset, LPIDENT lpiAggregateTarget, ULONG *pStatus = NULL);
159 BOOL    AfsClass_MoveReplica          (LPIDENT lpiReplica, LPIDENT lpiAggregateTarget, ULONG *pStatus = NULL);
160 BOOL    AfsClass_SetFilesetQuota      (LPIDENT lpiFileset, size_t ckQuotaNew, ULONG *pStatus = NULL);
161 BOOL    AfsClass_RenameFileset        (LPIDENT lpiFileset, LPTSTR pszNewName, ULONG *pStatus = NULL);
162
163 BOOL    AfsClass_LockFileset          (LPIDENT lpiFileset, ULONG *pStatus = NULL);
164 BOOL    AfsClass_UnlockFileset        (LPIDENT lpiFileset, ULONG *pStatus = NULL);
165 BOOL    AfsClass_UnlockAllFilesets    (LPIDENT lpi, ULONG *pStatus = NULL);
166
167 LPIDENT AfsClass_CreateReplica        (LPIDENT lpiRW, LPIDENT lpiAggregate, ULONG *pStatus = NULL);
168 BOOL    AfsClass_DeleteReplica        (LPIDENT lpiReplica, ULONG *pStatus = NULL);
169
170 BOOL    AfsClass_DeleteClone          (LPIDENT lpiClone, ULONG *pStatus = NULL);
171
172 BOOL    AfsClass_ReleaseFileset       (LPIDENT lpiFilesetRW, BOOL fForce = FALSE, ULONG *pStatus = NULL);
173
174 BOOL    AfsClass_DumpFileset          (LPIDENT lpiFileset, LPTSTR pszFilename, LPSYSTEMTIME pstDate = NULL, ULONG *pStatus = NULL);
175 BOOL    AfsClass_RestoreFileset       (LPIDENT lpiFilesetOrAggregate, LPTSTR pszFileset, LPTSTR pszFilename, BOOL fIncremental, ULONG *pStatus = NULL);
176
177 BOOL    AfsClass_Clone                (LPIDENT lpiRW, ULONG *pStatus = NULL);
178 BOOL    AfsClass_CloneMultiple        (LPIDENT lpiSvrAggOrCell, LPTSTR pszPrefixOrNull, BOOL fExclusionaryPrefix, ULONG *pStatus = NULL);
179
180
181 /*
182  * USER/GROUP MANIPULATION ____________________________________________________
183  *
184  */
185
186 typedef struct
187    {
188    DWORD dwMask;
189    BOOL fAdmin;
190    BOOL fGrantTickets;
191    BOOL fCanEncrypt;
192    BOOL fCanChangePassword;
193    BOOL fCanReusePasswords;
194    SYSTEMTIME timeAccountExpires;
195    LONG cdayPwExpires;
196    LONG csecTicketLifetime;
197    LONG nFailureAttempts;
198    LONG csecFailedLoginLockTime;
199    LONG cGroupCreationQuota;
200    ACCOUNTACCESS aaListStatus;
201    ACCOUNTACCESS aaGroupsOwned;
202    ACCOUNTACCESS aaMembership;
203    } USERPROPERTIES, *LPUSERPROPERTIES;
204
205 #define MASK_USERPROP_fAdmin                   0x00000001
206 #define MASK_USERPROP_fGrantTickets            0x00000002
207 #define MASK_USERPROP_fCanEncrypt              0x00000004
208 #define MASK_USERPROP_fCanChangePassword       0x00000008
209 #define MASK_USERPROP_fCanReusePasswords       0x00000010
210 #define MASK_USERPROP_timeAccountExpires       0x00000020
211 #define MASK_USERPROP_cdayPwExpires            0x00000040
212 #define MASK_USERPROP_csecTicketLifetime       0x00000080
213 #define MASK_USERPROP_nFailureAttempts         0x00000100
214 #define MASK_USERPROP_csecFailedLoginLockTime  0x00000200
215 #define MASK_USERPROP_cGroupCreationQuota      0x00000400
216 #define MASK_USERPROP_aaListStatus             0x00000800
217 #define MASK_USERPROP_aaGroupsOwned            0x00001000
218 #define MASK_USERPROP_aaMembership             0x00002000
219
220 LPIDENT AfsClass_CreateUser           (LPIDENT lpiCell, LPTSTR pszUserName, LPTSTR pszInstance, LPTSTR pszPassword, int idUser = 0, BOOL fCreateKAS = TRUE, BOOL fCreatePTS = TRUE, ULONG *pStatus = NULL);
221 BOOL    AfsClass_SetUserProperties    (LPIDENT lpiUser, LPUSERPROPERTIES pProperties, ULONG *pStatus = NULL);
222 BOOL    AfsClass_SetUserPassword      (LPIDENT lpiUser, int keyVersion, LPTSTR pszPassword, ULONG *pStatus = NULL);
223 BOOL    AfsClass_SetUserPassword      (LPIDENT lpiUser, int keyVersion, LPENCRYPTIONKEY pKey, ULONG *pStatus = NULL);
224 BOOL    AfsClass_DeleteUser           (LPIDENT lpiUser, BOOL fDeleteKAS, BOOL fDeletePTS, ULONG *pStatus = NULL);
225 BOOL    AfsClass_UnlockUser           (LPIDENT lpiUser, ULONG *pStatus = NULL);
226
227
228 typedef struct
229    {
230    DWORD dwMask;
231    TCHAR szOwner[ cchNAME ];
232    ACCOUNTACCESS aaListStatus;
233    ACCOUNTACCESS aaListGroupsOwned;
234    ACCOUNTACCESS aaListMembers;
235    ACCOUNTACCESS aaAddMember;
236    ACCOUNTACCESS aaDeleteMember;
237    } GROUPPROPERTIES, *LPGROUPPROPERTIES;
238
239 #define MASK_GROUPPROP_szOwner                 0x00000001
240 #define MASK_GROUPPROP_aaListStatus            0x00000002
241 #define MASK_GROUPPROP_aaListGroupsOwned       0x00000004
242 #define MASK_GROUPPROP_aaListMembers           0x00000008
243 #define MASK_GROUPPROP_aaAddMember             0x00000010
244 #define MASK_GROUPPROP_aaDeleteMember          0x00000012
245
246 LPIDENT AfsClass_CreateGroup          (LPIDENT lpiCell, LPTSTR pszGroupName, LPIDENT lpiOwner, int idGroup, ULONG *pStatus = NULL);
247 BOOL    AfsClass_SetGroupProperties   (LPIDENT lpiGroup, LPGROUPPROPERTIES pProperties, ULONG *pStatus = NULL);
248 BOOL    AfsClass_RenameGroup          (LPIDENT lpiGroup, LPTSTR pszNewName, ULONG *pStatus = NULL);
249 BOOL    AfsClass_DeleteGroup          (LPIDENT lpiGroup, ULONG *pStatus = NULL);
250 BOOL    AfsClass_AddUserToGroup       (LPIDENT lpiGroup, LPIDENT lpiUser, ULONG *pStatus = NULL);
251 BOOL    AfsClass_RemoveUserFromGroup  (LPIDENT lpiGroup, LPIDENT lpiUser, ULONG *pStatus = NULL);
252
253
254 typedef struct
255    {
256    int idUserMax;
257    int idGroupMax;
258    } PTSPROPERTIES, *LPPTSPROPERTIES;
259
260 BOOL    AfsClass_GetPtsProperties     (LPIDENT lpiCell, LPPTSPROPERTIES pProperties, ULONG *pStatus = NULL);
261 BOOL    AfsClass_SetPtsProperties     (LPIDENT lpiCell, LPPTSPROPERTIES pProperties, ULONG *pStatus = NULL);
262
263
264 #endif // AFSCLASS_FUNCTION_H
265