Source code: com/neuron/jaffer/AFP_Constants.java
1 /*
2 * Copyright (c) 2003 Stewart Allen <stewart@neuron.com>. All rights reserved.
3 * This program is free software. See the 'License' file for details.
4 */
5
6 package com.neuron.jaffer;
7
8 import java.io.*;
9 import java.net.*;
10 import java.util.*;
11 import java.math.*;
12
13 // directory id rules (!0, 1=root parent, 2=root) : IA p. 342
14
15 public interface AFP_Constants
16 {
17 // default listening port
18 public final static int TCP_PORT = 548;
19
20 public final static String[] COMMAND = {
21 "", // ---- (0) invalid
22 "BYTE_RANGE_LOCK", // 0x01 (1)
23 "CLOSE_VOL", // 0x02 (2)
24 "CLOSE_DIR", // 0x03 (3)
25 "CLOSE_FORK", // 0x04 (4)
26 "COPY_FILE", // 0x05 (5)
27 "CREATE_DIR", // 0x06 (6)
28 "CREATE_FILE", // 0x07 (7)
29 "DELETE", // 0x08 (8)
30 "ENUMERATE", // 0x09 (9)
31 "FLUSH", // 0x0a (10)
32 "FLUSH_FORK", // 0x0b (11)
33 null, // ---- (12) invalid
34 null, // ---- (13) invalid
35 "GET_FORM_PARMS", // 0x0e (14)
36 "GET_SRVR_INFO", // 0x0f (15)
37 "GET_SRVR_PARMS", // 0x10 (16)
38 "GET_VOL_PARMS", // 0x11 (17)
39 "LOGIN", // 0x12 (18)
40 "LOGIN_CONT", // 0x13 (19)
41 "LOGOUT", // 0x14 (20)
42 "MAP_ID", // 0x15 (21)
43 "MAP_NAME", // 0x16 (22)
44 "MOVE_AND_RENAME", // 0x17 (23)
45 "OPEN_VOL", // 0x18 (24)
46 "OPEN_DIR", // 0x19 (25)
47 "OPEN_FORK", // 0x1a (26)
48 "READ", // 0x1b (27)
49 "RENAME", // 0x1c (28)
50 "SET_DIR_PARMS", // 0x1d (29)
51 "SET_FILE_PARMS", // 0x1e (30)
52 "SET_FORK_PARMS", // 0x1f (31)
53 "SET_VOL_PARMS", // 0x20 (32)
54 "WRITE", // 0x21 (33)
55 "GET_FILE_DIR_PARMS", // 0x22 (34)
56 "SET_FILE_DIR_PARMS", // 0x23 (35)
57 "CHANGE_PASSWORD", // 0x24 (36)
58 "GET_USER_INFO", // 0x25 (37)
59 "GET_SRVR_MSG", // 0x26 (38)
60 "CREATE_ID", // 0x27 (39)
61 "DELETE_ID", // 0x28 (40)
62 "RESOLVE_ID", // 0x29 (41)
63 "EXCHANGE_FILES", // 0x2a (42)
64 "CAT_SEARCH", // 0x2b (43)
65 null, // ---- (44) invalid
66 null, // ---- (45) invalid
67 null, // ---- (46) invalid
68 null, // ---- (47) invalid
69 "OPEN_DT", // 0x30 (48)
70 "CLOSE_DT", // 0x31 (49)
71 null, // ---- (50) invalid
72 "GET_ICON", // 0x33 (51)
73 "GET_ICON_INFO", // 0x34 (52)
74 "ADD_APPL", // 0x35 (53)
75 "RMV_APPL", // 0x36 (54)
76 "GET_APPL", // 0x37 (55)
77 "ADD_COMMENT", // 0x38 (56)
78 "RMV_COMMENT", // 0x39 (57)
79 "GET_COMMENT", // 0x3a (58)
80 "BYTE_RANGE_LOCK_EXT", // 0x3b (59)
81 "READ_EXT", // 0x3c (60)
82 null, // (61)
83 null, // (62)
84 "LOGIN_EXT", // 0x3F (63)
85 "GET_SESSION_TOKEN", // 0x40 (64)
86 null, // (63)
87 "ENUMERATE_EXT", // 0x42 (66)
88 null, // (67)
89 "ENUMERATE_EXT2", // 0x44 (68)
90 null, // 0x ( )
91 null, // 0x ( )
92 null, // 0x ( )
93 null, // 0x ( )
94 null, // 0x ( )
95 };
96
97 // Command Set
98 public final static int CMD_BYTE_RANGE_LOCK = 0x01; // (1)
99 public final static int CMD_CLOSE_VOL = 0x02; // (2)
100 public final static int CMD_CLOSE_DIR = 0x03; // (3)
101 public final static int CMD_CLOSE_FORK = 0x04; // (4)
102 public final static int CMD_COPY_FILE = 0x05; // (5)
103 public final static int CMD_CREATE_DIR = 0x06; // (6)
104 public final static int CMD_CREATE_FILE = 0x07; // (7)
105 public final static int CMD_DELETE = 0x08; // (8)
106 public final static int CMD_ENUMERATE = 0x09; // (9) AFP3.1 p. 150
107 public final static int CMD_FLUSH = 0x0a; // (10)
108 public final static int CMD_FLUSH_FORK = 0x0b; // (11)
109 public final static int CMD_GET_FORM_PARMS = 0x0e; // (14)
110 public final static int CMD_GET_SRVR_INFO = 0x0f; // (15)
111 public final static int CMD_GET_SRVR_PARMS = 0x10; // (16)
112 public final static int CMD_GET_VOL_PARMS = 0x11; // (17)
113 public final static int CMD_LOGIN = 0x12; // (18)
114 public final static int CMD_LOGIN_CONT = 0x13; // (19)
115 public final static int CMD_LOGOUT = 0x14; // (20)
116 public final static int CMD_MAP_ID = 0x15; // (21)
117 public final static int CMD_MAP_NAME = 0x16; // (22)
118 public final static int CMD_MOVE_AND_RENAME = 0x17; // (23)
119 public final static int CMD_OPEN_VOL = 0x18; // (24)
120 public final static int CMD_OPEN_DIR = 0x19; // (25)
121 public final static int CMD_OPEN_FORK = 0x1a; // (26)
122 public final static int CMD_READ = 0x1b; // (27)
123 public final static int CMD_RENAME = 0x1c; // (28)
124 public final static int CMD_SET_DIR_PARMS = 0x1d; // (29)
125 public final static int CMD_SET_FILE_PARMS = 0x1e; // (30)
126 public final static int CMD_SET_FORK_PARMS = 0x1f; // (31)
127 public final static int CMD_SET_VOL_PARMS = 0x20; // (32)
128 public final static int CMD_WRITE = 0x21; // (33)
129 public final static int CMD_GET_FILE_DIR_PARMS = 0x22; // (34) AFP31 p. 179
130 public final static int CMD_SET_FILE_DIR_PARMS = 0x23; // (35)
131 public final static int CMD_CHANGE_PASSWORD = 0x24; // (36)
132 public final static int CMD_GET_USER_INFO = 0x25; // (37) AFP31 p. 204
133 public final static int CMD_GET_SRVR_MSG = 0x26; // (38)
134 public final static int CMD_CREATE_ID = 0x27; // (39)
135 public final static int CMD_DELETE_ID = 0x28; // (40)
136 public final static int CMD_RESOLVE_ID = 0x29; // (41)
137 public final static int CMD_EXCHANGE_FILES = 0x2a; // (42)
138 public final static int CMD_CAT_SEARCH = 0x2b; // (43)
139 public final static int CMD_OPEN_DT = 0x30; // (48)
140 public final static int CMD_CLOSE_DT = 0x31; // (49)
141 public final static int CMD_GET_ICON = 0x33; // (51)
142 public final static int CMD_GET_ICON_INFO = 0x34; // (52)
143 public final static int CMD_ADD_APPL = 0x35; // (53)
144 public final static int CMD_RMV_APPL = 0x36; // (54)
145 public final static int CMD_GET_APPL = 0x37; // (55)
146 public final static int CMD_ADD_COMMENT = 0x38; // (56)
147 public final static int CMD_RMV_COMMENT = 0x39; // (57)
148 public final static int CMD_GET_COMMENT = 0x3a; // (58)
149 public final static int CMD_BYTE_RANGE_LOCK_EXT = 0x3b; // (59) AFP31 p. 106
150 public final static int CMD_READ_EXT = 0x3c; // (60) AFP31 p. 242
151 public final static int CMD_WRITE_EXT = 0x3d; // (61) AFP31 p. 274
152 public final static int CMD_LOGIN_EXT = 0x3F; // (63) AFP31 p. 215
153 public final static int CMD_GET_SESSION_TOKEN = 0x40; // (64) AFP31 p. 191
154 public final static int CMD_ENUMERATE_EXT = 0x42; // (66) AFP31 p. 155
155 public final static int CMD_ENUMERATE_EXT2 = 0x44; // (68) AFP31 p. 160
156 public final static int CMD_ADD_ICON = 0xc0; // (192)
157
158 // Error Codes
159 public final static int ERR_NO_ERR = 0x00000000; // (0)
160 public final static int ERR_ACCESS_DENIED = 0xffffec78; // (-5000)
161 public final static int ERR_AUTH_CONTINUE = 0xffffec77; // (-5001)
162 public final static int ERR_BAD_UAM = 0xffffec76; // (-5002)
163 public final static int ERR_BAD_VERS_NUM = 0xffffec75; // (-5003)
164 public final static int ERR_BITMAP_ERR = 0xffffec74; // (-5004)
165 public final static int ERR_CANT_MOVE = 0xffffec73; // (-5005)
166 public final static int ERR_DENY_CONFLICT = 0xffffec72; // (-5006)
167 public final static int ERR_DIR_NOT_EMPTY = 0xffffec71; // (-5007)
168 public final static int ERR_DISK_FULL = 0xffffec70; // (-5008)
169 public final static int ERR_EOF_ERR = 0xffffec6f; // (-5009)
170 public final static int ERR_FILE_BUSY = 0xffffec6e; // (-5010)
171 public final static int ERR_FLAT_VOL = 0xffffec6d; // (-5011)
172 public final static int ERR_ITEM_NOT_FOUND = 0xffffec6c; // (-5012)
173 public final static int ERR_LOCK_ERR = 0xffffec6b; // (-5013)
174 public final static int ERR_MISC_ERR = 0xffffec6a; // (-5014)
175 public final static int ERR_NO_MORE_LOCKS = 0xffffec69; // (-5015)
176 public final static int ERR_NO_SERVER = 0xffffec68; // (-5016)
177 public final static int ERR_OBJECT_EXISTS = 0xffffec67; // (-5017)
178 public final static int ERR_OBJECT_NOT_FOUND = 0xffffec66; // (-5018)
179 public final static int ERR_PARAM_ERR = 0xffffec65; // (-5019)
180 public final static int ERR_RANGE_NOT_LOCKED = 0xffffec64; // (-5020)
181 public final static int ERR_RANGE_OVERLAP = 0xffffec63; // (-5021)
182 public final static int ERR_SESS_CLOSED = 0xffffec62; // (-5022)
183 public final static int ERR_USER_NOT_AUTH = 0xffffec61; // (-5023)
184 public final static int ERR_CALL_NOT_SUPPORTED = 0xffffec60; // (-5024)
185 public final static int ERR_OBJECT_TYPE_ERR = 0xffffec5f; // (-5025)
186 public final static int ERR_TOO_MANY_FILES_OPEN = 0xffffec5e; // (-5026)
187 public final static int ERR_SERVER_GOING_DOWN = 0xffffec5d; // (-5027)
188 public final static int ERR_CANT_RENAME = 0xffffec5c; // (-5028)
189 public final static int ERR_DIR_NOT_FOUND = 0xffffec5b; // (-5029)
190 public final static int ERR_ICON_TYPE_ERROR = 0xffffec5a; // (-5030)
191 public final static int ERR_VOL_LOCKED = 0xffffec59; // (-5031)
192 public final static int ERR_OBJECT_LOCKED = 0xffffec58; // (-5032)
193
194 // Volume Signature Values (ref: Inside Appletalk p. 337)
195 public final static int VOL_SIG_FLAT = 0x01; // flat
196 public final static int VOL_SIG_FIXED = 0x02; // tree
197 public final static int VOL_SIG_VARIABLE = 0x03; // tree
198
199 // Volume Bitmap (ref: AFP31 p. 284)
200 public final static int VOL_BIT_ATTRIBUTE = 0x001;
201 public final static int VOL_BIT_SIGNATURE = 0x002;
202 public final static int VOL_BIT_CREATE_DATE = 0x004;
203 public final static int VOL_BIT_MOD_DATE = 0x008;
204 public final static int VOL_BIT_BACKUP_DATE = 0x010;
205 public final static int VOL_BIT_ID = 0x020;
206 public final static int VOL_BIT_BYTES_FREE = 0x040;
207 public final static int VOL_BIT_BYTES_TOTAL = 0x080;
208 public final static int VOL_BIT_NAME = 0x100;
209 public final static int VOL_BIT_XBYTES_FREE = 0x200;
210 public final static int VOL_BIT_XBYTES_TOTAL = 0x400;
211 public final static int VOL_BIT_BLOCK_SIZE = 0x800;
212
213 // Volume Attributes (ref: AFP31 p. 21)
214 public final static int VOL_ATTR_READONLY = 0x01;
215 public final static int VOL_ATTR_PASSWORD = 0x02;
216 public final static int VOL_ATTR_FILE_IDS = 0x04;
217 public final static int VOL_ATTR_CAT_SEARCH = 0x08;
218 public final static int VOL_ATTR_BLANK_PRIVS = 0x10;
219 public final static int VOL_ATTR_UNIX_PRIVS = 0x20;
220 public final static int VOL_ATTR_UTF8_NAMES = 0x40;
221 public final static int VOL_ATTR_NO_NET_UIDS = 0x80;
222
223 // Directory Bitmap (ref: AFP31 p. 277)
224 public final static int DIR_BIT_ATTRIBUTE = 0x0001;
225 public final static int DIR_BIT_PARENT_DIR_ID = 0x0002;
226 public final static int DIR_BIT_CREATE_DATE = 0x0004;
227 public final static int DIR_BIT_MOD_DATE = 0x0008;
228 public final static int DIR_BIT_BACKUP_DATE = 0x0010;
229 public final static int DIR_BIT_FINDER_INFO = 0x0020;
230 public final static int DIR_BIT_LONG_NAME = 0x0040;
231 public final static int DIR_BIT_SHORT_NAME = 0x0080;
232 public final static int DIR_BIT_NODE_ID = 0x0100;
233 public final static int DIR_BIT_OFFSPRING_COUNT = 0x0200;
234 public final static int DIR_BIT_OWNER_ID = 0x0400;
235 public final static int DIR_BIT_GROUP_ID = 0x0800;
236 public final static int DIR_BIT_ACCESS_RIGHTS = 0x1000;
237 public final static int DIR_BIT_UTF8_NAME = 0x2000;
238 public final static int DIR_BIT_UNIX_PRIVS = 0x8000;
239
240 // Directory Attributes (ref: AFP31 p. 279)
241 public final static int DIR_ATTR_INVISIBLE = 0x0001;
242 public final static int DIR_ATTR_IS_EXP_FOLDER = 0x0002;
243 public final static int DIR_ATTR_SYSTEM = 0x0004;
244 public final static int DIR_ATTR_MOUNTED = 0x0008;
245 public final static int DIR_ATTR_IN_EXP_FOLDER = 0x0010;
246 public final static int DIR_ATTR_BACKUP_NEEDED = 0x0040;
247 public final static int DIR_ATTR_RENAME_INHIBIT = 0x0080;
248 public final static int DIR_ATTR_DELETE_INHIBIT = 0x0100;
249 public final static int DIR_ATTR_SET_CLEAR = 0x8000;
250
251 // File Bitmap (ref: AFP31 p. 279)
252 public final static int FILE_BIT_ATTRIBUTE = 0x0001;
253 public final static int FILE_BIT_PARENT_DIR_ID = 0x0002;
254 public final static int FILE_BIT_CREATE_DATE = 0x0004;
255 public final static int FILE_BIT_MOD_DATE = 0x0008;
256 public final static int FILE_BIT_BACKUP_DATE = 0x0010;
257 public final static int FILE_BIT_FINDER_INFO = 0x0020;
258 public final static int FILE_BIT_LONG_NAME = 0x0040;
259 public final static int FILE_BIT_SHORT_NAME = 0x0080;
260 public final static int FILE_BIT_NODE_ID = 0x0100;
261 public final static int FILE_BIT_DATA_FORK_LEN = 0x0200;
262 public final static int FILE_BIT_RSRC_FORK_LEN = 0x0400;
263 public final static int FILE_BIT_XDATA_FORK_LEN = 0x0800;
264 public final static int FILE_BIT_LAUNCH_LIMIT = 0x1000;
265 public final static int FILE_BIT_UTF8_NAME = 0x2000;
266 public final static int FILE_BIT_XRSRC_FORK_LEN = 0x4000;
267 public final static int FILE_BIT_UNIX_PRIVS = 0x8000;
268
269 // File Attributes (ref: AFP31 p. 279)
270 public final static int FILE_ATTR_INVISIBLE = 0x0001;
271 public final static int FILE_ATTR_MULTIUSER = 0x0002;
272 public final static int FILE_ATTR_SYSTEM = 0x0004;
273 public final static int FILE_ATTR_DALREADY_OPEN = 0x0008;
274 public final static int FILE_ATTR_RALREADY_OPEN = 0x0010;
275 public final static int FILE_ATTR_WRITE_INHIBIT = 0x0020;
276 public final static int FILE_ATTR_BACKUP_NEEDED = 0x0040;
277 public final static int FILE_ATTR_RENAME_INHIBIT = 0x0080;
278 public final static int FILE_ATTR_DELETE_INHIBIT = 0x0100;
279 public final static int FILE_ATTR_COPY_PROTECT = 0x0400;
280 public final static int FILE_ATTR_SET_CLEAR = 0x8000;
281
282 // Access Rights Bitmap (ref: AFP31 p. 277)
283 public final static int ACCESS_OWNER_SEARCH = 0x00000001;
284 public final static int ACCESS_OWNER_READ = 0x00000002;
285 public final static int ACCESS_OWNER_WRITE = 0x00000004;
286 public final static int ACCESS_GROUP_SEARCH = 0x00000100;
287 public final static int ACCESS_GROUP_READ = 0x00000200;
288 public final static int ACCESS_GROUP_WRITE = 0x00000400;
289 public final static int ACCESS_ALL_SEARCH = 0x00010000;
290 public final static int ACCESS_ALL_READ = 0x00020000;
291 public final static int ACCESS_ALL_WRITE = 0x00040000;
292 public final static int ACCESS_UA_SEARCH = 0x01000000;
293 public final static int ACCESS_UA_READ = 0x02000000;
294 public final static int ACCESS_UA_WRITE = 0x04000000;
295 public final static int ACCESS_UA_BLANK = 0x10000000;
296 public final static int ACCESS_UA_OWNER = 0x80000000;
297
298 public final static int ACCESS_EVERYTHING = 0x97070707;
299 // public final static int ACCESS_EVERYTHING = 0x87000007;
300
301 // User Authentication Methods
302 public final static int UAM_UNKNOWN = 0;
303 public final static int UAM_GUEST = 1;
304 public final static int UAM_CLEARTEXT = 2;
305 public final static int UAM_RANDOM_NUM1 = 3;
306 public final static int UAM_RANDOM_NUM2 = 4;
307 public final static int UAM_DHX_128 = 5;
308 public final static int UAM_DHX_DYNAMIC = 6;
309 public final static int UAM_KERBEROS = 7;
310
311 public final static String UAM_STR_GUEST = "No User Authent";
312 public final static String UAM_STR_CLEARTEXT = "Cleartxt passwrd";
313 public final static String UAM_STR_RANDOM_NUM1 = "Randum Exchange";
314 public final static String UAM_STR_RANDOM_NUM2 = "2-Way Randum";
315 public final static String UAM_STR_DHX_128 = "DHCAST128";
316 public final static String UAM_STR_DHX_DYNAMIC = "DHX2";
317 public final static String UAM_STR_KERBEROS = "Client Krb v2";
318
319 // Server Capability Flags
320 public final static int CAP_COPY_FILE = 0x0001;
321 public final static int CAP_CHANGE_PASSWORD = 0x0002;
322 public final static int CAP_NO_PASSWD_SAVE = 0x0004;
323 public final static int CAP_MESSAGES = 0x0008;
324 public final static int CAP_SIGNATURE = 0x0010;
325 public final static int CAP_TCPIP = 0x0020;
326 public final static int CAP_NOTIFICATIONS = 0x0040;
327 public final static int CAP_RECONNECT = 0x0080;
328 public final static int CAP_OPEN_DIRECTORY = 0x0100;
329 public final static int CAP_UTF8_NAME = 0x0200;
330 public final static int CAP_SUPER_CLIENT = 0x8000;
331
332 // Diffie-Hellman Key Exchange Constants
333 public final static BigInteger DHX_G = new BigInteger(1, new byte[] { (byte)0x07 });
334 public final static BigInteger DHX_P = new BigInteger(1, new byte[] {
335 (byte)0xba, (byte)0x28, (byte)0x73, (byte)0xdf,
336 (byte)0xb0, (byte)0x60, (byte)0x57, (byte)0xd4,
337 (byte)0x3f, (byte)0x20, (byte)0x24, (byte)0x74,
338 (byte)0x4c, (byte)0xee, (byte)0xe7, (byte)0x5b
339 });
340 }
341