2 * Copyright 2000, International Business Machines Corporation and others.
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
10 #ifndef AFSCLASS_FUNCTION_H
11 #define AFSCLASS_FUNCTION_H
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.
19 * See the Overview.doc file in this directory for more information on the
20 * intended threading model for the AfsClass library.
26 * SERVER MANIPULATION ________________________________________________________
30 BOOL AfsClass_GetServerLogFile (LPIDENT lpiServer, LPTSTR pszLocal, LPTSTR pszRemote, ULONG *pStatus = NULL);
31 BOOL AfsClass_SetServerAuth (LPIDENT lpiServer, BOOL fEnabled, ULONG *pStatus = NULL);
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);
38 BOOL AfsClass_ExecuteCommand (LPIDENT lpiServer, LPTSTR pszCommand, ULONG *pStatus = NULL);
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);
43 BOOL AfsClass_SyncVLDB (LPIDENT lpiSync, BOOL fForce = TRUE, ULONG *pStatus = NULL);
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);
50 * ADMIN LISTS ________________________________________________________________
56 TCHAR szAdmin[ cchNAME ];
59 } ADMINLISTENTRY, *LPADMINLISTENTRY;
65 ADMINLISTENTRY *aEntries;
67 } ADMINLIST, *LPADMINLIST;
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.
79 * DATABASE-HOST LISTS ________________________________________________________
85 TCHAR szHost[ cchNAME ];
88 } HOSTLISTENTRY, *LPHOSTLISTENTRY;
94 HOSTLISTENTRY *aEntries;
96 } HOSTLIST, *LPHOSTLIST;
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.
109 * SERVER KEYS ________________________________________________________________
115 ENCRYPTIONKEY keyData;
116 ENCRYPTIONKEYINFO keyInfo;
118 } SERVERKEY, *LPSERVERKEY;
125 } KEYLIST, *LPKEYLIST;
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);
136 * SERVICE MANIPULATION _______________________________________________________
140 LPIDENT AfsClass_CreateService (LPIDENT lpiServer, LPTSTR pszService, LPTSTR pszCommand, LPTSTR pszParams, LPTSTR pszNotifier, AFSSERVICETYPE type, SYSTEMTIME *pstIfCron, ULONG *pStatus = NULL);
141 BOOL AfsClass_DeleteService (LPIDENT lpiService, ULONG *pStatus = NULL);
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);
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);
152 * FILESET MANIPULATION _______________________________________________________
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);
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);
167 LPIDENT AfsClass_CreateReplica (LPIDENT lpiRW, LPIDENT lpiAggregate, ULONG *pStatus = NULL);
168 BOOL AfsClass_DeleteReplica (LPIDENT lpiReplica, ULONG *pStatus = NULL);
170 BOOL AfsClass_DeleteClone (LPIDENT lpiClone, ULONG *pStatus = NULL);
172 BOOL AfsClass_ReleaseFileset (LPIDENT lpiFilesetRW, BOOL fForce = FALSE, ULONG *pStatus = NULL);
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);
177 BOOL AfsClass_Clone (LPIDENT lpiRW, ULONG *pStatus = NULL);
178 BOOL AfsClass_CloneMultiple (LPIDENT lpiSvrAggOrCell, LPTSTR pszPrefixOrNull, BOOL fExclusionaryPrefix, ULONG *pStatus = NULL);
182 * USER/GROUP MANIPULATION ____________________________________________________
192 BOOL fCanChangePassword;
193 BOOL fCanReusePasswords;
194 SYSTEMTIME timeAccountExpires;
196 LONG csecTicketLifetime;
197 LONG nFailureAttempts;
198 LONG csecFailedLoginLockTime;
199 LONG cGroupCreationQuota;
200 ACCOUNTACCESS aaListStatus;
201 ACCOUNTACCESS aaGroupsOwned;
202 ACCOUNTACCESS aaMembership;
203 } USERPROPERTIES, *LPUSERPROPERTIES;
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
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);
231 TCHAR szOwner[ cchNAME ];
232 ACCOUNTACCESS aaListStatus;
233 ACCOUNTACCESS aaListGroupsOwned;
234 ACCOUNTACCESS aaListMembers;
235 ACCOUNTACCESS aaAddMember;
236 ACCOUNTACCESS aaDeleteMember;
237 } GROUPPROPERTIES, *LPGROUPPROPERTIES;
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
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);
258 } PTSPROPERTIES, *LPPTSPROPERTIES;
260 BOOL AfsClass_GetPtsProperties (LPIDENT lpiCell, LPPTSPROPERTIES pProperties, ULONG *pStatus = NULL);
261 BOOL AfsClass_SetPtsProperties (LPIDENT lpiCell, LPPTSPROPERTIES pProperties, ULONG *pStatus = NULL);
264 #endif // AFSCLASS_FUNCTION_H