/src/wireshark/epan/dissectors/packet-starteam.c
Line | Count | Source |
1 | | /* packet-starteam.c |
2 | | * Routines for Borland StarTeam packet dissection |
3 | | * |
4 | | * metatech <metatech[AT]flashmail.com> |
5 | | * |
6 | | * Wireshark - Network traffic analyzer |
7 | | * By Gerald Combs <gerald@wireshark.org> |
8 | | * Copyright 1998 Gerald Combs |
9 | | * |
10 | | * SPDX-License-Identifier: GPL-2.0-or-later |
11 | | */ |
12 | | |
13 | | /* StarTeam in a nutshell |
14 | | * |
15 | | * StarTeam is a Software Change & Configuration Management Tool (like CVS) |
16 | | */ |
17 | | |
18 | | #include "config.h" |
19 | | |
20 | | #include <epan/packet.h> |
21 | | #include <epan/prefs.h> |
22 | | #include "packet-tcp.h" |
23 | | |
24 | | void proto_register_starteam(void); |
25 | | void proto_reg_handoff_starteam(void); |
26 | | |
27 | | static int proto_starteam; |
28 | | |
29 | | static int hf_starteam_mdh_session_tag; |
30 | | static int hf_starteam_mdh_ctimestamp; |
31 | | static int hf_starteam_mdh_flags; |
32 | | static int hf_starteam_mdh_keyid; |
33 | | static int hf_starteam_mdh_reserved; |
34 | | static int hf_starteam_ph_signature; |
35 | | static int hf_starteam_ph_packet_size; |
36 | | static int hf_starteam_ph_data_size; |
37 | | static int hf_starteam_ph_data_flags; |
38 | | static int hf_starteam_id_revision_level; |
39 | | static int hf_starteam_id_client; |
40 | | static int hf_starteam_id_connect; |
41 | | static int hf_starteam_id_component; |
42 | | static int hf_starteam_id_command; |
43 | | static int hf_starteam_id_command_time; |
44 | | static int hf_starteam_id_command_userid; |
45 | | static int hf_starteam_data_data; |
46 | | |
47 | | static int ett_starteam; |
48 | | static int ett_starteam_mdh; |
49 | | static int ett_starteam_ph; |
50 | | static int ett_starteam_id; |
51 | | static int ett_starteam_data; |
52 | | |
53 | | static dissector_handle_t starteam_tcp_handle; |
54 | | |
55 | | static bool starteam_desegment = true; |
56 | | |
57 | 3.09k | #define STARTEAM_MAGIC 0x416C616E /* "Alan" */ |
58 | | |
59 | | #define STARTEAM_SRVR_CMD_GET_SESSION_TAG 1 |
60 | | #define STARTEAM_SRVR_CMD_GET_REQUIRED_ENCRYPTION_LEVEL 2 |
61 | | #define STARTEAM_SRVR_CMD_GET_SERVER_PARAMS 3 |
62 | | #define STARTEAM_SRVR_CMD_SERVER_CONNECT 4 |
63 | | #define STARTEAM_SRVR_CMD_SERVER_RECONNECT 5 |
64 | | #define STARTEAM_SRVR_CMD_BEGIN_LOGIN 10 |
65 | | #define STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE0 11 |
66 | | #define STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE12 12 |
67 | | #define STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE3 13 |
68 | | #define STARTEAM_SRVR_CMD_SERVER_LOGIN 14 |
69 | | #define STARTEAM_SRVR_CMD_GET_PROJECT_LIST 1001 |
70 | | #define STARTEAM_SRVR_CMD_GET_PROJECT_VIEWS 1002 |
71 | | #define STARTEAM_SRVR_CMD_PROJECT_LOGIN 1011 |
72 | | #define STARTEAM_SRVR_CMD_PROJECT_LOGOUT 1013 |
73 | | #define STARTEAM_PROJ_CMD_LIST_SET_READ 1014 |
74 | | #define STARTEAM_PROJ_CMD_LIST_ADD_ATTACHMENT 1015 |
75 | | #define STARTEAM_PROJ_CMD_LIST_GET_ATTACHMENT 1016 |
76 | | #define STARTEAM_PROJ_CMD_LIST_REMOVE_ATTACHMENT 1017 |
77 | | #define STARTEAM_PROJ_CMD_MAIL_LIST_ITEMS 1018 |
78 | | #define STARTEAM_PROJ_CMD_LIST_ANY_NEWITEMS 1020 |
79 | | #define STARTEAM_PROJ_CMD_LIST_GET_NEWITEMS 1021 |
80 | | /* #define STARTEAM_SRVR_CMD_RELEASE_CLIENT 1021 XXX: ?? */ |
81 | | #define STARTEAM_SRVR_CMD_UPDATE_SERVER_INFO 1022 |
82 | | #define STARTEAM_SRVR_CMD_GET_USAGE_DATA 1023 |
83 | | #define STARTEAM_SRVR_CMD_GET_LICENSE_INFO 1024 |
84 | | #define STARTEAM_PROJ_CMD_FILTER_ADD 1030 |
85 | | #define STARTEAM_PROJ_CMD_FILTER_MODIFY 1031 |
86 | | #define STARTEAM_PROJ_CMD_FILTER_GET 1032 |
87 | | #define STARTEAM_PROJ_CMD_FILTER_GET_LIST 1033 |
88 | | #define STARTEAM_PROJ_CMD_FILTER_DELETE 1034 |
89 | | #define STARTEAM_PROJ_CMD_QUERY_ADD 1035 |
90 | | #define STARTEAM_PROJ_CMD_QUERY_MODIFY 1036 |
91 | | #define STARTEAM_PROJ_CMD_QUERY_GET 1037 |
92 | | #define STARTEAM_PROJ_CMD_QUERY_GET_LIST 1038 |
93 | | #define STARTEAM_PROJ_CMD_QUERY_DELETE 1039 |
94 | | #define STARTEAM_PROJ_GET_FILTER_CLASS_ID 1040 |
95 | | #define STARTEAM_PROJ_GET_QUERY_CLASS_ID 1041 |
96 | | #define STARTEAM_SRVR_CMD_PROJECT_CREATE 1051 |
97 | | #define STARTEAM_SRVR_CMD_PROJECT_OPEN 1052 |
98 | | #define STARTEAM_SRVR_CMD_PROJECT_CLOSE 1053 |
99 | | #define STARTEAM_PROJ_CMD_CATALOG_LOADALL 1151 |
100 | | #define STARTEAM_PROJ_CMD_CATALOG_LOADSET 1152 |
101 | | #define STARTEAM_PROJ_CMD_CATALOG_LOADREGISTEREDCLASSES 1154 |
102 | | #define STARTEAM_PROJ_CMD_REFRESH_CLASS_INFO 1160 |
103 | | #define STARTEAM_PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO 1161 |
104 | | #define STARTEAM_PROJ_CMD_MODIFY_FIELD_CLASS_INFO 1162 |
105 | | #define STARTEAM_PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO_EX 1163 |
106 | | #define STARTEAM_PROJ_CMD_GET_FOLDER_ITEMS 2001 |
107 | | /* #define STARTEAM_SRVR_CMD_GET_USERS_AND_GROUPS 2001 XXX: ?? */ |
108 | | #define STARTEAM_PROJ_CMD_REFRESH_ITEMS 2002 |
109 | | #define STARTEAM_PROJ_CMD_GET_ITEM 2003 |
110 | | /* #define STARTEAM_SRVR_CMD_GET_EMAIL_USERS 2003 XXX: ?? */ |
111 | | #define STARTEAM_PROJ_CMD_UPDATE_ITEM 2004 |
112 | | #define STARTEAM_PROJ_CMD_DELETE_ITEM 2005 |
113 | | #define STARTEAM_PROJ_CMD_SET_ITEM_LOCK 2006 |
114 | | #define STARTEAM_PROJ_CMD_DELETE_TREE_ITEM 2007 |
115 | | #define STARTEAM_PROJ_CMD_GET_ITEM_HISTORY 2010 |
116 | | #define STARTEAM_SRVR_CMD_GET_USER_PERSONAL_INFO 2011 |
117 | | #define STARTEAM_SRVR_CMD_SET_USER_PERSONAL_INFO 2012 |
118 | | #define STARTEAM_SRVR_CMD_SET_USER_PASSWORD 2013 |
119 | | #define STARTEAM_PROJ_CMD_MOVE_ITEMS 2020 |
120 | | #define STARTEAM_PROJ_CMD_MOVE_TREE_ITEMS 2021 |
121 | | /* #define STARTEAM_SRVR_CMD_GET_GROUP_INFO 2021 XXX: ?? */ |
122 | | #define STARTEAM_PROJ_CMD_SHARE_ITEMS 2022 |
123 | | /* #define STARTEAM_SRVR_CMD_ADD_EDIT_GROUP_INFO 2022 XXX: ?? */ |
124 | | #define STARTEAM_PROJ_CMD_SHARE_TREE_ITEMS 2023 |
125 | | /* #define STARTEAM_SRVR_CMD_DROP_GROUP 2023 XXX: ?? */ |
126 | | #define STARTEAM_SRVR_CMD_GET_USER_INFO 2024 |
127 | | #define STARTEAM_SRVR_CMD_ADD_EDIT_USER_INFO 2025 |
128 | | #define STARTEAM_SRVR_CMD_DROP_USER 2026 |
129 | | #define STARTEAM_SRVR_CMD_GET_MIN_PASSWORD_LENGTH 2027 |
130 | | #define STARTEAM_SRVR_CMD_USER_ADMIN_OPERATION 2028 |
131 | | #define STARTEAM_SRVR_CMD_ACCESS_CHECK 2029 |
132 | | #define STARTEAM_PROJ_CMD_GET_COMMON_ANCESTOR_ITEM 2030 |
133 | | /* #define STARTEAM_SRVR_CMD_ACCESS_TEST 2030 XXX: ?? */ |
134 | | #define STARTEAM_PROJ_CMD_UPDATE_REVISION_COMMENT 2031 |
135 | | /* #define STARTEAM_SRVR_CMD_GET_MAIN_LOG_LAST64K 2031 XXX: ?? */ |
136 | | #define STARTEAM_SRVR_CMD_GET_SERVER_CONFIG 2032 |
137 | | #define STARTEAM_SRVR_CMD_SET_SERVER_CONFIG 2033 |
138 | | #define STARTEAM_SRVR_CMD_GET_SERVER_ACL 2034 |
139 | | #define STARTEAM_SRVR_CMD_DROP_SERVER_ACL 2035 |
140 | | #define STARTEAM_SRVR_CMD_SET_SERVER_ACL 2036 |
141 | | #define STARTEAM_SRVR_CMD_GET_SYSTEM_POLICY 2037 |
142 | | #define STARTEAM_SRVR_CMD_SET_SYSTEM_POLICY 2038 |
143 | | #define STARTEAM_SRVR_CMD_GET_SECURITY_LOG 2039 |
144 | | #define STARTEAM_SRVR_CMD_GET_SERVER_COMMAND_STATS 2040 |
145 | | #define STARTEAM_SRVR_CMD_SET_SERVER_COMMAND_MODE 2041 |
146 | | #define STARTEAM_SRVR_CMD_SHUTDOWN 2042 |
147 | | #define STARTEAM_SRVR_CMD_RESTART 2043 |
148 | | #define STARTEAM_SRVR_CMD_GET_SERVER_COMMAND_MODE 2045 |
149 | | #define STARTEAM_SRVR_CMD_GET_LOG 2046 |
150 | | #define STARTEAM_SRVR_CMD_GET_COMPONENT_LIST 2050 |
151 | | #define STARTEAM_SRVR_CMD_GET_GROUP_MEMBERS 2060 |
152 | | #define STARTEAM_PROJ_CMD_GET_ITEMS_VERSIONS 5001 |
153 | | #define STARTEAM_SRVR_CMD_VALIDATE_VSS_INI_PATH 9034 |
154 | | #define STARTEAM_SRVR_CMD_VALIDATE_PVCS_CFG_PATH 9035 |
155 | | #define STARTEAM_SRVR_CMD_GET_VSS_PROJECT_TREE 9036 |
156 | | #define STARTEAM_SRVR_CMD_GET_ALL_PVCS_ARCHIVES 9037 |
157 | | #define STARTEAM_SRVR_CMD_INITIALIZE_FOREIGN_ACCESS 9038 |
158 | | #define STARTEAM_SRVR_CMD_SET_FOREIGN_PROJECT_PW 9039 |
159 | | #define STARTEAM_PROJ_CMD_PING 10001 |
160 | | #define STARTEAM_PROJ_CMD_SET_LOCALE 10005 |
161 | | #define STARTEAM_PROJ_CMD_GET_CONTAINER_ACL 10011 |
162 | | #define STARTEAM_PROJ_CMD_SET_CONTAINER_ACL 10012 |
163 | | #define STARTEAM_PROJ_CMD_GET_CONTAINER_LEVEL_ACL 10013 |
164 | | #define STARTEAM_PROJ_CMD_SET_CONTAINER_LEVEL_ACL 10014 |
165 | | #define STARTEAM_PROJ_CMD_GET_OBJECT_ACL 10015 |
166 | | #define STARTEAM_PROJ_CMD_SET_OBJECT_ACL 10016 |
167 | | #define STARTEAM_PROJ_CMD_ITEM_ACCESS_CHECK 10017 |
168 | | #define STARTEAM_PROJ_CMD_ITEM_ACCESS_TEST 10018 |
169 | | #define STARTEAM_PROJ_CMD_GET_OWNER 10019 |
170 | | #define STARTEAM_PROJ_CMD_ACQUIRE_OWNERSHIP 10020 |
171 | | #define STARTEAM_PROJ_CMD_GET_FOLDERS 10021 |
172 | | #define STARTEAM_PROJ_CMD_ADD_FOLDERS 10023 |
173 | | #define STARTEAM_PROJ_CMD_DELETE_FOLDER 10024 |
174 | | #define STARTEAM_PROJ_CMD_MOVE_FOLDER 10025 |
175 | | #define STARTEAM_PROJ_CMD_SHARE_FOLDER 10026 |
176 | | #define STARTEAM_PROJ_CMD_CONTAINER_ACCESS_CHECK 10031 |
177 | | #define STARTEAM_PROJ_CMD_CONTAINER_ACCESS_TEST 10032 |
178 | | #define STARTEAM_PROJ_CMD_GET_OBJECT2_ACL 10035 |
179 | | #define STARTEAM_PROJ_CMD_SET_OBJECT2_ACL 10036 |
180 | | #define STARTEAM_PROJ_CMD_OBJECT_ACCESS_CHECK 10037 |
181 | | #define STARTEAM_PROJ_CMD_OBJECT_ACCESS_TEST 10038 |
182 | | #define STARTEAM_PROJ_CMD_GET_OBJECT_OWNER 10039 |
183 | | #define STARTEAM_PROJ_CMD_ACQUIRE_OBJECT_OWNERSHIP 10040 |
184 | | #define STARTEAM_PROJ_CMD_GET_FOLDER_PROPERTIES 10053 |
185 | | #define STARTEAM_PROJ_CMD_SET_FOLDER_PROPERTIES 10054 |
186 | | #define STARTEAM_PROJ_CMD_GET_ITEM_PROPERTIES 10060 |
187 | | #define STARTEAM_PROJ_CMD_SET_ITEM_PROPERTIES 10061 |
188 | | #define STARTEAM_PROJ_CMD_GET_ITEM_REFERENCES 10062 |
189 | | #define STARTEAM_PROJ_CMD_GET_ITEM_REFERENCE 10063 |
190 | | #define STARTEAM_PROJ_CMD_GET_ITEM_REVISIONS 10065 |
191 | | #define STARTEAM_PROJ_CMD_DELETE_PROJECT 10083 |
192 | | #define STARTEAM_PROJ_CMD_GET_PROJECT_PROPERTIES 10085 |
193 | | #define STARTEAM_PROJ_CMD_SET_PROJECT_PROPERTIES 10086 |
194 | | #define STARTEAM_PROJ_CMD_GET_VIEW_INFO 10090 |
195 | | #define STARTEAM_PROJ_CMD_ADD_VIEW 10091 |
196 | | #define STARTEAM_PROJ_CMD_GET_VIEWS 10092 |
197 | | #define STARTEAM_PROJ_CMD_GET_VIEW_PROPERTIES 10093 |
198 | | #define STARTEAM_PROJ_CMD_SET_VIEW_PROPERTIES 10094 |
199 | | #define STARTEAM_PROJ_CMD_DELETE_VIEW 10095 |
200 | | #define STARTEAM_PROJ_CMD_SWITCH_VIEW 10098 |
201 | | #define STARTEAM_PROJ_CMD_SWITCH_VIEW_CONFIG 10099 |
202 | | #define STARTEAM_PROJ_CMD_GET_FOLDER_PATH 10100 |
203 | | #define STARTEAM_FILE_CMD_CHECKOUT 10104 |
204 | | #define STARTEAM_FILE_CMD_GET_SYNC_INFO 10111 |
205 | | #define STARTEAM_FILE_CMD_DELETE_SYNC_INFO 10112 |
206 | | #define STARTEAM_FILE_CMD_GET_PATH_IDS 10117 |
207 | | #define STARTEAM_FILE_CMD_SYNC_UPDATE_ALL_INFO 10119 |
208 | | #define STARTEAM_FILE_CMD_RESYNC_FILE 10121 |
209 | | #define STARTEAM_FILE_CMD_CONVERT_ARCHIVE 10122 |
210 | | #define STARTEAM_FILE_CMD_ARCHIVE_CONVERSION 10123 |
211 | | #define STARTEAM_FILE_CMD_READ_PVCS_ARCHIVES 10130 |
212 | | #define STARTEAM_FILE_CMD_ADD_PVCS_ARCHIVES 10131 |
213 | | #define STARTEAM_FILE_CMD_ADD_PVCS_BRANCHES 10132 |
214 | | #define STARTEAM_FILE_CMD_FINISH_NEW_PVCS_PROJECT 10133 |
215 | | #define STARTEAM_FILE_CMD_GET_NUMBER_VSS_ARCHIVES 10134 |
216 | | #define STARTEAM_FILE_CMD_READ_VSS_ARCHIVES 10135 |
217 | | #define STARTEAM_FILE_CMD_ADD_VSS_ARCHIVE_TO_FOLDER 10136 |
218 | | #define STARTEAM_FILE_CMD_FINISH_NEW_VSS_PROJECT 10137 |
219 | | #define STARTEAM_FILE_CMD_REFRESH_FOREIGN_FOLDER 10138 |
220 | | #define STARTEAM_FILE_CMD_START_GO_NATIVE 10139 |
221 | | #define STARTEAM_FILE_CMD_GET_PROJECT_TYPE 10141 |
222 | | #define STARTEAM_FILE_CMD_SET_FOREIGN_PROJECT_PW 10142 |
223 | | #define STARTEAM_FILE_CMD_INTERNAL_NESTED_COMMAND 10143 |
224 | | #define STARTEAM_PROJ_CMD_LABEL_GET_INFO 10201 |
225 | | #define STARTEAM_PROJ_CMD_LABEL_GET_PROPERTIES 10202 |
226 | | #define STARTEAM_PROJ_CMD_LABEL_SET_PROPERTIES 10203 |
227 | | #define STARTEAM_PROJ_CMD_LABEL_CREATE 10205 |
228 | | #define STARTEAM_PROJ_CMD_LABEL_DELETE 10206 |
229 | | #define STARTEAM_PROJ_CMD_LABEL_ATTACH 10207 |
230 | | #define STARTEAM_PROJ_CMD_LABEL_MOVE 10208 |
231 | | #define STARTEAM_PROJ_CMD_LABEL_DETACH 10209 |
232 | | #define STARTEAM_PROJ_CMD_LABEL_GET_INFO_EX 10221 |
233 | | #define STARTEAM_PROJ_CMD_LABEL_CREATE_EX 10222 |
234 | | #define STARTEAM_PROJ_CMD_LABEL_ATTACH_EX 10223 |
235 | | #define STARTEAM_PROJ_CMD_LABEL_ATTACH_ITEMS 10224 |
236 | | #define STARTEAM_PROJ_CMD_LABEL_DETACH_EX 10225 |
237 | | #define STARTEAM_PROJ_CMD_LABEL_DETACH_ITEMS 10226 |
238 | | #define STARTEAM_PROJ_CMD_LABEL_GETITEMIDS 10229 |
239 | | #define STARTEAM_PROJ_CMD_LINK_GET_INFO 10300 |
240 | | #define STARTEAM_PROJ_CMD_LINK_CREATE 10301 |
241 | | #define STARTEAM_PROJ_CMD_LINK_DELETE 10302 |
242 | | #define STARTEAM_PROJ_CMD_LINK_UPDATE_PROPERTIES 10310 |
243 | | #define STARTEAM_PROJ_CMD_LINK_UPDATE_PINS 10311 |
244 | | #define STARTEAM_PROJ_CMD_PROMOTION_GET 10400 |
245 | | #define STARTEAM_PROJ_CMD_PROMOTION_SET 10401 |
246 | | #define STARTEAM_TASK_CMD_GET_WORKRECS 10402 |
247 | | #define STARTEAM_TASK_CMD_ADD_WORKREC 10403 |
248 | | #define STARTEAM_TASK_CMD_UPDATE_WORKREC 10404 |
249 | | #define STARTEAM_TASK_CMD_DELETE_WORKREC 10405 |
250 | | #define STARTEAM_TASK_CMD_DELETE_TASK_PREDECESSOR 10408 |
251 | | #define STARTEAM_TASK_CMD_GET_TASK_DEPENDENCIES 10409 |
252 | | #define STARTEAM_TASK_CMD_ADD_TASK_PREDECESSOR 10410 |
253 | | #define STARTEAM_TASK_CMD_UPDATE_TASK_PREDECESSOR 10411 |
254 | | #define STARTEAM_PROJ_CMD_VIEW_COMPARE_GET_FOLDER_DETAILS 20070 |
255 | | #define STARTEAM_PROJ_CMD_VIEW_COMPARE_RELATE_ITEMS 20071 |
256 | | |
257 | 0 | #define STARTEAM_TEXT_MDH "Message Data Header" |
258 | 0 | #define STARTEAM_TEXT_PH "Packet Header" |
259 | 0 | #define STARTEAM_TEXT_ID "ID" |
260 | 0 | #define STARTEAM_TEXT_DATA "Data" |
261 | | |
262 | | static const value_string starteam_opcode_vals[] = { |
263 | | { STARTEAM_SRVR_CMD_GET_SESSION_TAG, "SRVR_CMD_GET_SESSION_TAG" }, |
264 | | { STARTEAM_SRVR_CMD_GET_REQUIRED_ENCRYPTION_LEVEL, "SRVR_CMD_GET_REQUIRED_ENCRYPTION_LEVEL" }, |
265 | | { STARTEAM_SRVR_CMD_GET_SERVER_PARAMS, "SRVR_CMD_GET_SERVER_PARAMS" }, |
266 | | { STARTEAM_SRVR_CMD_SERVER_CONNECT, "SRVR_CMD_SERVER_CONNECT" }, |
267 | | { STARTEAM_SRVR_CMD_SERVER_RECONNECT, "SRVR_CMD_SERVER_RECONNECT" }, |
268 | | { STARTEAM_SRVR_CMD_BEGIN_LOGIN, "SRVR_CMD_BEGIN_LOGIN" }, |
269 | | { STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE0, "SRVR_CMD_KEY_EXCHANGE_PHASE0" }, |
270 | | { STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE12, "SRVR_CMD_KEY_EXCHANGE_PHASE12" }, |
271 | | { STARTEAM_SRVR_CMD_KEY_EXCHANGE_PHASE3, "SRVR_CMD_KEY_EXCHANGE_PHASE3" }, |
272 | | { STARTEAM_SRVR_CMD_SERVER_LOGIN, "SRVR_CMD_SERVER_LOGIN" }, |
273 | | { STARTEAM_SRVR_CMD_GET_PROJECT_LIST, "SRVR_CMD_GET_PROJECT_LIST" }, |
274 | | { STARTEAM_SRVR_CMD_GET_PROJECT_VIEWS, "SRVR_CMD_GET_PROJECT_VIEWS" }, |
275 | | { STARTEAM_SRVR_CMD_PROJECT_LOGIN, "SRVR_CMD_PROJECT_LOGIN" }, |
276 | | { STARTEAM_SRVR_CMD_PROJECT_LOGOUT, "SRVR_CMD_PROJECT_LOGOUT" }, |
277 | | { STARTEAM_PROJ_CMD_LIST_SET_READ, "PROJ_CMD_LIST_SET_READ" }, |
278 | | { STARTEAM_PROJ_CMD_LIST_ADD_ATTACHMENT, "PROJ_CMD_LIST_ADD_ATTACHMENT" }, |
279 | | { STARTEAM_PROJ_CMD_LIST_GET_ATTACHMENT, "PROJ_CMD_LIST_GET_ATTACHMENT" }, |
280 | | { STARTEAM_PROJ_CMD_LIST_REMOVE_ATTACHMENT, "PROJ_CMD_LIST_REMOVE_ATTACHMENT" }, |
281 | | { STARTEAM_PROJ_CMD_MAIL_LIST_ITEMS, "PROJ_CMD_MAIL_LIST_ITEMS" }, |
282 | | { STARTEAM_PROJ_CMD_LIST_ANY_NEWITEMS, "PROJ_CMD_LIST_ANY_NEWITEMS" }, |
283 | | { STARTEAM_PROJ_CMD_LIST_GET_NEWITEMS, "PROJ_CMD_LIST_GET_NEWITEMS" }, |
284 | | /* { STARTEAM_SRVR_CMD_RELEASE_CLIENT, "SRVR_CMD_RELEASE_CLIENT" }, */ |
285 | | { STARTEAM_SRVR_CMD_UPDATE_SERVER_INFO, "SRVR_CMD_UPDATE_SERVER_INFO" }, |
286 | | { STARTEAM_SRVR_CMD_GET_USAGE_DATA, "SRVR_CMD_GET_USAGE_DATA" }, |
287 | | { STARTEAM_SRVR_CMD_GET_LICENSE_INFO, "SRVR_CMD_GET_LICENSE_INFO" }, |
288 | | { STARTEAM_PROJ_CMD_FILTER_ADD, "PROJ_CMD_FILTER_ADD" }, |
289 | | { STARTEAM_PROJ_CMD_FILTER_MODIFY, "PROJ_CMD_FILTER_MODIFY" }, |
290 | | { STARTEAM_PROJ_CMD_FILTER_GET, "PROJ_CMD_FILTER_GET" }, |
291 | | { STARTEAM_PROJ_CMD_FILTER_GET_LIST, "PROJ_CMD_FILTER_GET_LIST" }, |
292 | | { STARTEAM_PROJ_CMD_FILTER_DELETE, "PROJ_CMD_FILTER_DELETE" }, |
293 | | { STARTEAM_PROJ_CMD_QUERY_ADD, "PROJ_CMD_QUERY_ADD" }, |
294 | | { STARTEAM_PROJ_CMD_QUERY_MODIFY, "PROJ_CMD_QUERY_MODIFY" }, |
295 | | { STARTEAM_PROJ_CMD_QUERY_GET, "PROJ_CMD_QUERY_GET" }, |
296 | | { STARTEAM_PROJ_CMD_QUERY_GET_LIST, "PROJ_CMD_QUERY_GET_LIST" }, |
297 | | { STARTEAM_PROJ_CMD_QUERY_DELETE, "PROJ_CMD_QUERY_DELETE" }, |
298 | | { STARTEAM_PROJ_GET_FILTER_CLASS_ID, "PROJ_GET_FILTER_CLASS_ID" }, |
299 | | { STARTEAM_PROJ_GET_QUERY_CLASS_ID, "PROJ_GET_QUERY_CLASS_ID" }, |
300 | | { STARTEAM_SRVR_CMD_PROJECT_CREATE, "SRVR_CMD_PROJECT_CREATE" }, |
301 | | { STARTEAM_SRVR_CMD_PROJECT_OPEN, "SRVR_CMD_PROJECT_OPEN" }, |
302 | | { STARTEAM_SRVR_CMD_PROJECT_CLOSE, "SRVR_CMD_PROJECT_CLOSE" }, |
303 | | { STARTEAM_PROJ_CMD_CATALOG_LOADALL, "PROJ_CMD_CATALOG_LOADALL" }, |
304 | | { STARTEAM_PROJ_CMD_CATALOG_LOADSET, "PROJ_CMD_CATALOG_LOADSET" }, |
305 | | { STARTEAM_PROJ_CMD_CATALOG_LOADREGISTEREDCLASSES, "PROJ_CMD_CATALOG_LOADREGISTEREDCLASSES" }, |
306 | | { STARTEAM_PROJ_CMD_REFRESH_CLASS_INFO, "PROJ_CMD_REFRESH_CLASS_INFO" }, |
307 | | { STARTEAM_PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO, "PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO" }, |
308 | | { STARTEAM_PROJ_CMD_MODIFY_FIELD_CLASS_INFO, "PROJ_CMD_MODIFY_FIELD_CLASS_INFO" }, |
309 | | { STARTEAM_PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO_EX, "PROJ_CMD_ADD_CUSTOM_FIELD_CLASS_INFO_EX" }, |
310 | | { STARTEAM_PROJ_CMD_GET_FOLDER_ITEMS, "PROJ_CMD_GET_FOLDER_ITEMS" }, |
311 | | /* { STARTEAM_SRVR_CMD_GET_USERS_AND_GROUPS, "SRVR_CMD_GET_USERS_AND_GROUPS" }, */ |
312 | | { STARTEAM_PROJ_CMD_REFRESH_ITEMS, "PROJ_CMD_REFRESH_ITEMS" }, |
313 | | { STARTEAM_PROJ_CMD_GET_ITEM, "PROJ_CMD_GET_ITEM" }, |
314 | | /* { STARTEAM_SRVR_CMD_GET_EMAIL_USERS, "SRVR_CMD_GET_EMAIL_USERS" }, */ |
315 | | { STARTEAM_PROJ_CMD_UPDATE_ITEM, "PROJ_CMD_UPDATE_ITEM" }, |
316 | | { STARTEAM_PROJ_CMD_DELETE_ITEM, "PROJ_CMD_DELETE_ITEM" }, |
317 | | { STARTEAM_PROJ_CMD_SET_ITEM_LOCK, "PROJ_CMD_SET_ITEM_LOCK" }, |
318 | | { STARTEAM_PROJ_CMD_DELETE_TREE_ITEM, "PROJ_CMD_DELETE_TREE_ITEM" }, |
319 | | { STARTEAM_PROJ_CMD_GET_ITEM_HISTORY, "PROJ_CMD_GET_ITEM_HISTORY" }, |
320 | | { STARTEAM_SRVR_CMD_GET_USER_PERSONAL_INFO, "SRVR_CMD_GET_USER_PERSONAL_INFO" }, |
321 | | { STARTEAM_SRVR_CMD_SET_USER_PERSONAL_INFO, "SRVR_CMD_SET_USER_PERSONAL_INFO" }, |
322 | | { STARTEAM_SRVR_CMD_SET_USER_PASSWORD, "SRVR_CMD_SET_USER_PASSWORD" }, |
323 | | { STARTEAM_PROJ_CMD_MOVE_ITEMS, "PROJ_CMD_MOVE_ITEMS" }, |
324 | | { STARTEAM_PROJ_CMD_MOVE_TREE_ITEMS, "PROJ_CMD_MOVE_TREE_ITEMS" }, |
325 | | /* { STARTEAM_SRVR_CMD_GET_GROUP_INFO, "SRVR_CMD_GET_GROUP_INFO" }, */ |
326 | | { STARTEAM_PROJ_CMD_SHARE_ITEMS, "PROJ_CMD_SHARE_ITEMS" }, |
327 | | /* { STARTEAM_SRVR_CMD_ADD_EDIT_GROUP_INFO, "SRVR_CMD_ADD_EDIT_GROUP_INFO" }, */ |
328 | | { STARTEAM_PROJ_CMD_SHARE_TREE_ITEMS, "PROJ_CMD_SHARE_TREE_ITEMS" }, |
329 | | /* { STARTEAM_SRVR_CMD_DROP_GROUP, "SRVR_CMD_DROP_GROUP" }, */ |
330 | | { STARTEAM_SRVR_CMD_GET_USER_INFO, "SRVR_CMD_GET_USER_INFO" }, |
331 | | { STARTEAM_SRVR_CMD_ADD_EDIT_USER_INFO, "SRVR_CMD_ADD_EDIT_USER_INFO" }, |
332 | | { STARTEAM_SRVR_CMD_DROP_USER, "SRVR_CMD_DROP_USER" }, |
333 | | { STARTEAM_SRVR_CMD_GET_MIN_PASSWORD_LENGTH, "SRVR_CMD_GET_MIN_PASSWORD_LENGTH" }, |
334 | | { STARTEAM_SRVR_CMD_USER_ADMIN_OPERATION, "SRVR_CMD_USER_ADMIN_OPERATION" }, |
335 | | { STARTEAM_SRVR_CMD_ACCESS_CHECK, "SRVR_CMD_ACCESS_CHECK" }, |
336 | | { STARTEAM_PROJ_CMD_GET_COMMON_ANCESTOR_ITEM, "PROJ_CMD_GET_COMMON_ANCESTOR_ITEM" }, |
337 | | /* { STARTEAM_SRVR_CMD_ACCESS_TEST, "SRVR_CMD_ACCESS_TEST" }, */ |
338 | | { STARTEAM_PROJ_CMD_UPDATE_REVISION_COMMENT, "PROJ_CMD_UPDATE_REVISION_COMMENT" }, |
339 | | /* { STARTEAM_SRVR_CMD_GET_MAIN_LOG_LAST64K, "SRVR_CMD_GET_MAIN_LOG_LAST64K" }, */ |
340 | | { STARTEAM_SRVR_CMD_GET_SERVER_CONFIG, "SRVR_CMD_GET_SERVER_CONFIG" }, |
341 | | { STARTEAM_SRVR_CMD_SET_SERVER_CONFIG, "SRVR_CMD_SET_SERVER_CONFIG" }, |
342 | | { STARTEAM_SRVR_CMD_GET_SERVER_ACL, "SRVR_CMD_GET_SERVER_ACL" }, |
343 | | { STARTEAM_SRVR_CMD_DROP_SERVER_ACL, "SRVR_CMD_DROP_SERVER_ACL" }, |
344 | | { STARTEAM_SRVR_CMD_SET_SERVER_ACL, "SRVR_CMD_SET_SERVER_ACL" }, |
345 | | { STARTEAM_SRVR_CMD_GET_SYSTEM_POLICY, "SRVR_CMD_GET_SYSTEM_POLICY" }, |
346 | | { STARTEAM_SRVR_CMD_SET_SYSTEM_POLICY, "SRVR_CMD_SET_SYSTEM_POLICY" }, |
347 | | { STARTEAM_SRVR_CMD_GET_SECURITY_LOG, "SRVR_CMD_GET_SECURITY_LOG" }, |
348 | | { STARTEAM_SRVR_CMD_GET_SERVER_COMMAND_STATS, "SRVR_CMD_GET_SERVER_COMMAND_STATS" }, |
349 | | { STARTEAM_SRVR_CMD_SET_SERVER_COMMAND_MODE, "SRVR_CMD_SET_SERVER_COMMAND_MODE" }, |
350 | | { STARTEAM_SRVR_CMD_SHUTDOWN, "SRVR_CMD_SHUTDOWN" }, |
351 | | { STARTEAM_SRVR_CMD_RESTART, "SRVR_CMD_RESTART" }, |
352 | | { STARTEAM_SRVR_CMD_GET_SERVER_COMMAND_MODE, "SRVR_CMD_GET_SERVER_COMMAND_MODE" }, |
353 | | { STARTEAM_SRVR_CMD_GET_LOG, "SRVR_CMD_GET_LOG" }, |
354 | | { STARTEAM_SRVR_CMD_GET_COMPONENT_LIST, "SRVR_CMD_GET_COMPONENT_LIST" }, |
355 | | { STARTEAM_SRVR_CMD_GET_GROUP_MEMBERS, "SRVR_CMD_GET_GROUP_MEMBERS" }, |
356 | | { STARTEAM_PROJ_CMD_GET_ITEMS_VERSIONS, "PROJ_CMD_GET_ITEMS_VERSIONS" }, |
357 | | { STARTEAM_SRVR_CMD_VALIDATE_VSS_INI_PATH, "SRVR_CMD_VALIDATE_VSS_INI_PATH" }, |
358 | | { STARTEAM_SRVR_CMD_VALIDATE_PVCS_CFG_PATH, "SRVR_CMD_VALIDATE_PVCS_CFG_PATH" }, |
359 | | { STARTEAM_SRVR_CMD_GET_VSS_PROJECT_TREE, "SRVR_CMD_GET_VSS_PROJECT_TREE" }, |
360 | | { STARTEAM_SRVR_CMD_GET_ALL_PVCS_ARCHIVES, "SRVR_CMD_GET_ALL_PVCS_ARCHIVES" }, |
361 | | { STARTEAM_SRVR_CMD_INITIALIZE_FOREIGN_ACCESS, "SRVR_CMD_INITIALIZE_FOREIGN_ACCESS" }, |
362 | | { STARTEAM_SRVR_CMD_SET_FOREIGN_PROJECT_PW, "SRVR_CMD_SET_FOREIGN_PROJECT_PW" }, |
363 | | { STARTEAM_PROJ_CMD_PING, "PROJ_CMD_PING" }, |
364 | | { STARTEAM_PROJ_CMD_SET_LOCALE, "PROJ_CMD_SET_LOCALE" }, |
365 | | { STARTEAM_PROJ_CMD_GET_CONTAINER_ACL, "PROJ_CMD_GET_CONTAINER_ACL" }, |
366 | | { STARTEAM_PROJ_CMD_SET_CONTAINER_ACL, "PROJ_CMD_SET_CONTAINER_ACL" }, |
367 | | { STARTEAM_PROJ_CMD_GET_CONTAINER_LEVEL_ACL, "PROJ_CMD_GET_CONTAINER_LEVEL_ACL" }, |
368 | | { STARTEAM_PROJ_CMD_SET_CONTAINER_LEVEL_ACL, "PROJ_CMD_SET_CONTAINER_LEVEL_ACL" }, |
369 | | { STARTEAM_PROJ_CMD_GET_OBJECT_ACL, "PROJ_CMD_GET_OBJECT_ACL" }, |
370 | | { STARTEAM_PROJ_CMD_SET_OBJECT_ACL, "PROJ_CMD_SET_OBJECT_ACL" }, |
371 | | { STARTEAM_PROJ_CMD_ITEM_ACCESS_CHECK, "PROJ_CMD_ITEM_ACCESS_CHECK" }, |
372 | | { STARTEAM_PROJ_CMD_ITEM_ACCESS_TEST, "PROJ_CMD_ITEM_ACCESS_TEST" }, |
373 | | { STARTEAM_PROJ_CMD_GET_OWNER, "PROJ_CMD_GET_OWNER" }, |
374 | | { STARTEAM_PROJ_CMD_ACQUIRE_OWNERSHIP, "PROJ_CMD_ACQUIRE_OWNERSHIP" }, |
375 | | { STARTEAM_PROJ_CMD_GET_FOLDERS, "PROJ_CMD_GET_FOLDERS" }, |
376 | | { STARTEAM_PROJ_CMD_ADD_FOLDERS, "PROJ_CMD_ADD_FOLDERS" }, |
377 | | { STARTEAM_PROJ_CMD_DELETE_FOLDER, "PROJ_CMD_DELETE_FOLDER" }, |
378 | | { STARTEAM_PROJ_CMD_MOVE_FOLDER, "PROJ_CMD_MOVE_FOLDER" }, |
379 | | { STARTEAM_PROJ_CMD_SHARE_FOLDER, "PROJ_CMD_SHARE_FOLDER" }, |
380 | | { STARTEAM_PROJ_CMD_CONTAINER_ACCESS_CHECK, "PROJ_CMD_CONTAINER_ACCESS_CHECK" }, |
381 | | { STARTEAM_PROJ_CMD_CONTAINER_ACCESS_TEST, "PROJ_CMD_CONTAINER_ACCESS_TEST" }, |
382 | | { STARTEAM_PROJ_CMD_GET_OBJECT2_ACL, "PROJ_CMD_GET_OBJECT2_ACL" }, |
383 | | { STARTEAM_PROJ_CMD_SET_OBJECT2_ACL, "PROJ_CMD_SET_OBJECT2_ACL" }, |
384 | | { STARTEAM_PROJ_CMD_OBJECT_ACCESS_CHECK, "PROJ_CMD_OBJECT_ACCESS_CHECK" }, |
385 | | { STARTEAM_PROJ_CMD_OBJECT_ACCESS_TEST, "PROJ_CMD_OBJECT_ACCESS_TEST" }, |
386 | | { STARTEAM_PROJ_CMD_GET_OBJECT_OWNER, "PROJ_CMD_GET_OBJECT_OWNER" }, |
387 | | { STARTEAM_PROJ_CMD_ACQUIRE_OBJECT_OWNERSHIP, "PROJ_CMD_ACQUIRE_OBJECT_OWNERSHIP" }, |
388 | | { STARTEAM_PROJ_CMD_GET_FOLDER_PROPERTIES, "PROJ_CMD_GET_FOLDER_PROPERTIES" }, |
389 | | { STARTEAM_PROJ_CMD_SET_FOLDER_PROPERTIES, "PROJ_CMD_SET_FOLDER_PROPERTIES" }, |
390 | | { STARTEAM_PROJ_CMD_GET_ITEM_PROPERTIES, "PROJ_CMD_GET_ITEM_PROPERTIES" }, |
391 | | { STARTEAM_PROJ_CMD_SET_ITEM_PROPERTIES, "PROJ_CMD_SET_ITEM_PROPERTIES" }, |
392 | | { STARTEAM_PROJ_CMD_GET_ITEM_REFERENCES, "PROJ_CMD_GET_ITEM_REFERENCES" }, |
393 | | { STARTEAM_PROJ_CMD_GET_ITEM_REFERENCE, "PROJ_CMD_GET_ITEM_REFERENCE" }, |
394 | | { STARTEAM_PROJ_CMD_GET_ITEM_REVISIONS, "PROJ_CMD_GET_ITEM_REVISIONS" }, |
395 | | { STARTEAM_PROJ_CMD_DELETE_PROJECT, "PROJ_CMD_DELETE_PROJECT" }, |
396 | | { STARTEAM_PROJ_CMD_GET_PROJECT_PROPERTIES, "PROJ_CMD_GET_PROJECT_PROPERTIES" }, |
397 | | { STARTEAM_PROJ_CMD_SET_PROJECT_PROPERTIES, "PROJ_CMD_SET_PROJECT_PROPERTIES" }, |
398 | | { STARTEAM_PROJ_CMD_GET_VIEW_INFO, "PROJ_CMD_GET_VIEW_INFO" }, |
399 | | { STARTEAM_PROJ_CMD_ADD_VIEW, "PROJ_CMD_ADD_VIEW" }, |
400 | | { STARTEAM_PROJ_CMD_GET_VIEWS, "PROJ_CMD_GET_VIEWS" }, |
401 | | { STARTEAM_PROJ_CMD_GET_VIEW_PROPERTIES, "PROJ_CMD_GET_VIEW_PROPERTIES" }, |
402 | | { STARTEAM_PROJ_CMD_SET_VIEW_PROPERTIES, "PROJ_CMD_SET_VIEW_PROPERTIES" }, |
403 | | { STARTEAM_PROJ_CMD_DELETE_VIEW, "PROJ_CMD_DELETE_VIEW" }, |
404 | | { STARTEAM_PROJ_CMD_SWITCH_VIEW, "PROJ_CMD_SWITCH_VIEW" }, |
405 | | { STARTEAM_PROJ_CMD_SWITCH_VIEW_CONFIG, "PROJ_CMD_SWITCH_VIEW_CONFIG" }, |
406 | | { STARTEAM_PROJ_CMD_GET_FOLDER_PATH, "PROJ_CMD_GET_FOLDER_PATH" }, |
407 | | { STARTEAM_FILE_CMD_CHECKOUT, "FILE_CMD_CHECKOUT" }, |
408 | | { STARTEAM_FILE_CMD_GET_SYNC_INFO, "FILE_CMD_GET_SYNC_INFO" }, |
409 | | { STARTEAM_FILE_CMD_DELETE_SYNC_INFO, "FILE_CMD_DELETE_SYNC_INFO" }, |
410 | | { STARTEAM_FILE_CMD_GET_PATH_IDS, "FILE_CMD_GET_PATH_IDS" }, |
411 | | { STARTEAM_FILE_CMD_SYNC_UPDATE_ALL_INFO, "FILE_CMD_SYNC_UPDATE_ALL_INFO" }, |
412 | | { STARTEAM_FILE_CMD_RESYNC_FILE, "FILE_CMD_RESYNC_FILE" }, |
413 | | { STARTEAM_FILE_CMD_CONVERT_ARCHIVE, "FILE_CMD_CONVERT_ARCHIVE" }, |
414 | | { STARTEAM_FILE_CMD_ARCHIVE_CONVERSION, "FILE_CMD_ARCHIVE_CONVERSION" }, |
415 | | { STARTEAM_FILE_CMD_READ_PVCS_ARCHIVES, "FILE_CMD_READ_PVCS_ARCHIVES" }, |
416 | | { STARTEAM_FILE_CMD_ADD_PVCS_ARCHIVES, "FILE_CMD_ADD_PVCS_ARCHIVES" }, |
417 | | { STARTEAM_FILE_CMD_ADD_PVCS_BRANCHES, "FILE_CMD_ADD_PVCS_BRANCHES" }, |
418 | | { STARTEAM_FILE_CMD_FINISH_NEW_PVCS_PROJECT, "FILE_CMD_FINISH_NEW_PVCS_PROJECT" }, |
419 | | { STARTEAM_FILE_CMD_GET_NUMBER_VSS_ARCHIVES, "FILE_CMD_GET_NUMBER_VSS_ARCHIVES" }, |
420 | | { STARTEAM_FILE_CMD_READ_VSS_ARCHIVES, "FILE_CMD_READ_VSS_ARCHIVES" }, |
421 | | { STARTEAM_FILE_CMD_ADD_VSS_ARCHIVE_TO_FOLDER, "FILE_CMD_ADD_VSS_ARCHIVE_TO_FOLDER" }, |
422 | | { STARTEAM_FILE_CMD_FINISH_NEW_VSS_PROJECT, "FILE_CMD_FINISH_NEW_VSS_PROJECT" }, |
423 | | { STARTEAM_FILE_CMD_REFRESH_FOREIGN_FOLDER, "FILE_CMD_REFRESH_FOREIGN_FOLDER" }, |
424 | | { STARTEAM_FILE_CMD_START_GO_NATIVE, "FILE_CMD_START_GO_NATIVE" }, |
425 | | { STARTEAM_FILE_CMD_GET_PROJECT_TYPE, "FILE_CMD_GET_PROJECT_TYPE" }, |
426 | | { STARTEAM_FILE_CMD_SET_FOREIGN_PROJECT_PW, "FILE_CMD_SET_FOREIGN_PROJECT_PW" }, |
427 | | { STARTEAM_FILE_CMD_INTERNAL_NESTED_COMMAND, "FILE_CMD_INTERNAL_NESTED_COMMAND" }, |
428 | | { STARTEAM_PROJ_CMD_LABEL_GET_INFO, "PROJ_CMD_LABEL_GET_INFO" }, |
429 | | { STARTEAM_PROJ_CMD_LABEL_GET_PROPERTIES, "PROJ_CMD_LABEL_GET_PROPERTIES" }, |
430 | | { STARTEAM_PROJ_CMD_LABEL_SET_PROPERTIES, "PROJ_CMD_LABEL_SET_PROPERTIES" }, |
431 | | { STARTEAM_PROJ_CMD_LABEL_CREATE, "PROJ_CMD_LABEL_CREATE" }, |
432 | | { STARTEAM_PROJ_CMD_LABEL_DELETE, "PROJ_CMD_LABEL_DELETE" }, |
433 | | { STARTEAM_PROJ_CMD_LABEL_ATTACH, "PROJ_CMD_LABEL_ATTACH" }, |
434 | | { STARTEAM_PROJ_CMD_LABEL_MOVE, "PROJ_CMD_LABEL_MOVE" }, |
435 | | { STARTEAM_PROJ_CMD_LABEL_DETACH, "PROJ_CMD_LABEL_DETACH" }, |
436 | | { STARTEAM_PROJ_CMD_LABEL_GET_INFO_EX, "PROJ_CMD_LABEL_GET_INFO_EX" }, |
437 | | { STARTEAM_PROJ_CMD_LABEL_CREATE_EX, "PROJ_CMD_LABEL_CREATE_EX" }, |
438 | | { STARTEAM_PROJ_CMD_LABEL_ATTACH_EX, "PROJ_CMD_LABEL_ATTACH_EX" }, |
439 | | { STARTEAM_PROJ_CMD_LABEL_ATTACH_ITEMS, "PROJ_CMD_LABEL_ATTACH_ITEMS" }, |
440 | | { STARTEAM_PROJ_CMD_LABEL_DETACH_EX, "PROJ_CMD_LABEL_DETACH_EX" }, |
441 | | { STARTEAM_PROJ_CMD_LABEL_DETACH_ITEMS, "PROJ_CMD_LABEL_DETACH_ITEMS" }, |
442 | | { STARTEAM_PROJ_CMD_LABEL_GETITEMIDS, "PROJ_CMD_LABEL_GETITEMIDS" }, |
443 | | { STARTEAM_PROJ_CMD_LINK_GET_INFO, "PROJ_CMD_LINK_GET_INFO" }, |
444 | | { STARTEAM_PROJ_CMD_LINK_CREATE, "PROJ_CMD_LINK_CREATE" }, |
445 | | { STARTEAM_PROJ_CMD_LINK_DELETE, "PROJ_CMD_LINK_DELETE" }, |
446 | | { STARTEAM_PROJ_CMD_LINK_UPDATE_PROPERTIES, "PROJ_CMD_LINK_UPDATE_PROPERTIES" }, |
447 | | { STARTEAM_PROJ_CMD_LINK_UPDATE_PINS, "PROJ_CMD_LINK_UPDATE_PINS" }, |
448 | | { STARTEAM_PROJ_CMD_PROMOTION_GET, "PROJ_CMD_PROMOTION_GET" }, |
449 | | { STARTEAM_PROJ_CMD_PROMOTION_SET, "PROJ_CMD_PROMOTION_SET" }, |
450 | | { STARTEAM_TASK_CMD_GET_WORKRECS, "TASK_CMD_GET_WORKRECS" }, |
451 | | { STARTEAM_TASK_CMD_ADD_WORKREC, "TASK_CMD_ADD_WORKREC" }, |
452 | | { STARTEAM_TASK_CMD_UPDATE_WORKREC, "TASK_CMD_UPDATE_WORKREC" }, |
453 | | { STARTEAM_TASK_CMD_DELETE_WORKREC, "TASK_CMD_DELETE_WORKREC" }, |
454 | | { STARTEAM_TASK_CMD_DELETE_TASK_PREDECESSOR, "TASK_CMD_DELETE_TASK_PREDECESSOR" }, |
455 | | { STARTEAM_TASK_CMD_GET_TASK_DEPENDENCIES, "TASK_CMD_GET_TASK_DEPENDENCIES" }, |
456 | | { STARTEAM_TASK_CMD_ADD_TASK_PREDECESSOR, "TASK_CMD_ADD_TASK_PREDECESSOR" }, |
457 | | { STARTEAM_TASK_CMD_UPDATE_TASK_PREDECESSOR, "TASK_CMD_UPDATE_TASK_PREDECESSOR" }, |
458 | | { STARTEAM_PROJ_CMD_VIEW_COMPARE_GET_FOLDER_DETAILS, "PROJ_CMD_VIEW_COMPARE_GET_FOLDER_DETAILS" }, |
459 | | { STARTEAM_PROJ_CMD_VIEW_COMPARE_RELATE_ITEMS, "PROJ_CMD_VIEW_COMPARE_RELATE_ITEMS" }, |
460 | | { 0, NULL } |
461 | | }; |
462 | | |
463 | | static value_string_ext starteam_opcode_vals_ext = VALUE_STRING_EXT_INIT(starteam_opcode_vals); |
464 | | |
465 | | static int iPreviousFrameNumber = -1; |
466 | | |
467 | | static void |
468 | | starteam_init(void) |
469 | 16 | { |
470 | 16 | iPreviousFrameNumber = -1; |
471 | 16 | } |
472 | | |
473 | | static int |
474 | | dissect_starteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) |
475 | 0 | { |
476 | 0 | int offset = 0; |
477 | |
|
478 | 0 | col_set_str(pinfo->cinfo, COL_PROTOCOL, "StarTeam"); |
479 | | |
480 | | /* This is a trick to know whether this is the first PDU in this packet or not */ |
481 | 0 | if(iPreviousFrameNumber != (int) pinfo->num){ |
482 | 0 | col_clear(pinfo->cinfo, COL_INFO); |
483 | 0 | } else { |
484 | 0 | col_append_str(pinfo->cinfo, COL_INFO, " | "); |
485 | 0 | } |
486 | |
|
487 | 0 | iPreviousFrameNumber = pinfo->num; |
488 | 0 | if(tvb_captured_length(tvb) >= 16){ |
489 | 0 | uint32_t iCommand = 0; |
490 | 0 | bool bRequest = false; |
491 | 0 | if(tvb_get_ntohl(tvb, offset + 0) == STARTEAM_MAGIC){ |
492 | | /* This packet is a response */ |
493 | 0 | bRequest = false; |
494 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Reply: %d bytes", tvb_reported_length(tvb)); |
495 | |
|
496 | 0 | } else if(tvb_captured_length_remaining(tvb, offset) >= 28 && tvb_get_ntohl(tvb, offset + 20) == STARTEAM_MAGIC){ |
497 | | /* This packet is a request */ |
498 | 0 | bRequest = true; |
499 | 0 | if(tvb_captured_length_remaining(tvb, offset) >= 66){ |
500 | 0 | iCommand = tvb_get_letohl(tvb, offset + 62); |
501 | 0 | } |
502 | 0 | col_append_str(pinfo->cinfo, COL_INFO, |
503 | 0 | val_to_str_ext(pinfo->pool, iCommand, &starteam_opcode_vals_ext, "Unknown (0x%02x)")); |
504 | 0 | } |
505 | |
|
506 | 0 | if(tree){ |
507 | 0 | proto_tree *starteam_tree; |
508 | 0 | proto_tree *starteamroot_tree; |
509 | 0 | proto_item *ti; |
510 | |
|
511 | 0 | ti = proto_tree_add_item(tree, proto_starteam, tvb, offset, -1, ENC_NA); |
512 | 0 | if (bRequest) proto_item_append_text(ti, " (%s)", |
513 | 0 | val_to_str_ext(pinfo->pool, iCommand, &starteam_opcode_vals_ext, "Unknown (0x%02x)")); |
514 | 0 | starteamroot_tree = proto_item_add_subtree(ti, ett_starteam); |
515 | |
|
516 | 0 | if(bRequest){ |
517 | 0 | if(tvb_reported_length_remaining(tvb, offset) >= 20){ |
518 | 0 | starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 20, ett_starteam_mdh, NULL, STARTEAM_TEXT_MDH); |
519 | |
|
520 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_mdh_session_tag, tvb, offset + 0, 4, ENC_LITTLE_ENDIAN); |
521 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_mdh_ctimestamp, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); |
522 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_mdh_flags, tvb, offset + 8, 4, ENC_LITTLE_ENDIAN); |
523 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_mdh_keyid, tvb, offset + 12, 4, ENC_LITTLE_ENDIAN); |
524 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_mdh_reserved, tvb, offset + 16, 4, ENC_LITTLE_ENDIAN); |
525 | 0 | offset += 20; |
526 | 0 | } |
527 | 0 | } |
528 | |
|
529 | 0 | if(tvb_reported_length_remaining(tvb, offset) >= 16){ |
530 | 0 | starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 16, ett_starteam_ph, NULL, STARTEAM_TEXT_PH); |
531 | |
|
532 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_ph_signature, tvb, offset + 0, 4, ENC_ASCII); |
533 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_ph_packet_size, tvb, offset + 4, 4, ENC_LITTLE_ENDIAN); |
534 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_ph_data_size, tvb, offset + 8, 4, ENC_LITTLE_ENDIAN); |
535 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_ph_data_flags, tvb, offset + 12, 4, ENC_LITTLE_ENDIAN); |
536 | 0 | offset += 16; |
537 | |
|
538 | 0 | if(bRequest){ |
539 | 0 | if(tvb_reported_length_remaining(tvb, offset) >= 38){ |
540 | 0 | starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, 38, ett_starteam_id, NULL, STARTEAM_TEXT_ID); |
541 | |
|
542 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_revision_level, tvb, offset + 0, 2, ENC_LITTLE_ENDIAN); |
543 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_client, tvb, offset + 2, 16, ENC_ASCII); |
544 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_connect, tvb, offset + 18, 4, ENC_LITTLE_ENDIAN); |
545 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_component, tvb, offset + 22, 4, ENC_LITTLE_ENDIAN); |
546 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_command, tvb, offset + 26, 4, ENC_LITTLE_ENDIAN); |
547 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_command_time, tvb, offset + 30, 4, ENC_LITTLE_ENDIAN); |
548 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_id_command_userid, tvb, offset + 34, 4, ENC_LITTLE_ENDIAN); |
549 | 0 | offset += 38; |
550 | 0 | } |
551 | 0 | } |
552 | 0 | if(tvb_reported_length_remaining(tvb, offset) > 0){ |
553 | 0 | starteam_tree = proto_tree_add_subtree(starteamroot_tree, tvb, offset, -1, ett_starteam_data, NULL, STARTEAM_TEXT_DATA); |
554 | 0 | proto_tree_add_item(starteam_tree, hf_starteam_data_data, tvb, offset, -1, ENC_ASCII); |
555 | 0 | } |
556 | 0 | } |
557 | 0 | } |
558 | 0 | } |
559 | |
|
560 | 0 | return tvb_captured_length(tvb); |
561 | 0 | } |
562 | | |
563 | | static unsigned |
564 | | get_starteam_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, |
565 | | int offset, void *data _U_) |
566 | 0 | { |
567 | 0 | uint32_t iPDULength = 0; |
568 | 0 | if(tvb_captured_length_remaining(tvb, offset) >= 8 && tvb_get_ntohl(tvb, offset + 0) == STARTEAM_MAGIC){ |
569 | | /* Response */ |
570 | 0 | iPDULength = tvb_get_letohl(tvb, offset + 4) + 16; |
571 | 0 | } else if(tvb_captured_length_remaining(tvb, offset) >= 28 && tvb_get_ntohl(tvb, offset + 20) == STARTEAM_MAGIC){ |
572 | | /* Request */ |
573 | 0 | iPDULength = tvb_get_letohl(tvb, offset + 24) + 36; |
574 | 0 | } |
575 | 0 | return iPDULength; |
576 | 0 | } |
577 | | |
578 | | static int |
579 | | dissect_starteam_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
580 | 0 | { |
581 | 0 | tcp_dissect_pdus(tvb, pinfo, tree, starteam_desegment, 8, get_starteam_pdu_len, dissect_starteam, data); |
582 | 0 | return tvb_captured_length(tvb); |
583 | 0 | } |
584 | | |
585 | | |
586 | | static bool |
587 | | dissect_starteam_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) |
588 | 2.97k | { |
589 | 2.97k | if(tvb_captured_length(tvb) >= 32){ |
590 | 1.54k | int iOffsetLengths = -1; |
591 | 1.54k | if(tvb_get_ntohl(tvb, 0) == STARTEAM_MAGIC){ |
592 | 0 | iOffsetLengths = 4; |
593 | 1.54k | } else if(tvb_get_ntohl(tvb, 20) == STARTEAM_MAGIC){ |
594 | 0 | iOffsetLengths = 24; |
595 | 0 | } |
596 | 1.54k | if(iOffsetLengths != -1){ |
597 | 0 | uint32_t iLengthPacket; |
598 | 0 | uint32_t iLengthData; |
599 | 0 | iLengthPacket = tvb_get_letohl(tvb, iOffsetLengths); |
600 | 0 | iLengthData = tvb_get_letohl(tvb, iOffsetLengths + 4); |
601 | |
|
602 | 0 | if(iLengthPacket == iLengthData){ |
603 | | /* Register this dissector for this conversation */ |
604 | 0 | conversation_t *conversation = NULL; |
605 | 0 | conversation = find_or_create_conversation(pinfo); |
606 | 0 | conversation_set_dissector(conversation, starteam_tcp_handle); |
607 | | |
608 | | /* Dissect the packet */ |
609 | 0 | dissect_starteam(tvb, pinfo, tree, data); |
610 | 0 | return true; |
611 | 0 | } |
612 | 0 | } |
613 | 1.54k | } |
614 | 2.97k | return false; |
615 | 2.97k | } |
616 | | |
617 | | void |
618 | | proto_register_starteam(void) |
619 | 16 | { |
620 | 16 | static hf_register_info hf[] = { |
621 | 16 | { &hf_starteam_mdh_session_tag, |
622 | 16 | { "Session tag", "starteam.mdh.stag", FT_UINT32, BASE_DEC, NULL, 0x0, "MDH session tag", HFILL }}, |
623 | | |
624 | 16 | { &hf_starteam_mdh_ctimestamp, |
625 | 16 | { "Client timestamp", "starteam.mdh.ctimestamp", FT_UINT32, BASE_DEC, NULL, 0x0, "MDH client timestamp", HFILL }}, |
626 | | |
627 | 16 | { &hf_starteam_mdh_flags, |
628 | 16 | { "Flags", "starteam.mdh.flags", FT_UINT32, BASE_HEX, NULL, 0x0, "MDH flags", HFILL }}, |
629 | | |
630 | 16 | { &hf_starteam_mdh_keyid, |
631 | 16 | { "Key ID", "starteam.mdh.keyid", FT_UINT32, BASE_HEX, NULL, 0x0, "MDH key ID", HFILL }}, |
632 | | |
633 | 16 | { &hf_starteam_mdh_reserved, |
634 | 16 | { "Reserved", "starteam.mdh.reserved", FT_UINT32, BASE_HEX, NULL, 0x0, "MDH reserved", HFILL }}, |
635 | | |
636 | 16 | { &hf_starteam_ph_signature, |
637 | 16 | { "Signature", "starteam.ph.signature", FT_STRINGZ, BASE_NONE, NULL, 0x0, "PH signature", HFILL }}, |
638 | | |
639 | 16 | { &hf_starteam_ph_packet_size, |
640 | 16 | { "Packet size", "starteam.ph.psize", FT_UINT32, BASE_DEC, NULL, 0x0, "PH packet size", HFILL }}, |
641 | | |
642 | 16 | { &hf_starteam_ph_data_size, |
643 | 16 | { "Data size", "starteam.ph.dsize", FT_UINT32, BASE_DEC, NULL, 0x0, "PH data size", HFILL }}, |
644 | | |
645 | 16 | { &hf_starteam_ph_data_flags, |
646 | 16 | { "Flags", "starteam.ph.flags", FT_UINT32, BASE_HEX, NULL, 0x0, "PH flags", HFILL }}, |
647 | | |
648 | 16 | { &hf_starteam_id_revision_level, |
649 | 16 | { "Revision level", "starteam.id.level", FT_UINT16, BASE_DEC, NULL, 0x0, "ID revision level", HFILL }}, |
650 | | |
651 | 16 | { &hf_starteam_id_client, |
652 | 16 | { "Client ID", "starteam.id.client", FT_STRINGZ, BASE_NONE, NULL, 0x0, "ID client ID", HFILL }}, |
653 | | |
654 | 16 | { &hf_starteam_id_connect, |
655 | 16 | { "Connect ID", "starteam.id.connect", FT_UINT32, BASE_HEX, NULL, 0x0, "ID connect ID", HFILL }}, |
656 | | |
657 | 16 | { &hf_starteam_id_component, |
658 | 16 | { "Component ID", "starteam.id.component", FT_UINT32, BASE_DEC, NULL, 0x0, "ID component ID", HFILL }}, |
659 | | |
660 | 16 | { &hf_starteam_id_command, |
661 | 16 | { "Command ID", "starteam.id.command", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &starteam_opcode_vals_ext, 0x0, "ID command ID", HFILL }}, |
662 | | |
663 | 16 | { &hf_starteam_id_command_time, |
664 | 16 | { "Command time", "starteam.id.commandtime", FT_UINT32, BASE_HEX, NULL, 0x0, "ID command time", HFILL }}, |
665 | | |
666 | 16 | { &hf_starteam_id_command_userid, |
667 | 16 | { "Command user ID", "starteam.id.commanduserid", FT_UINT32, BASE_HEX, NULL, 0x0, "ID command user ID", HFILL }}, |
668 | | |
669 | 16 | { &hf_starteam_data_data, |
670 | 16 | { "Data", "starteam.data", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }} |
671 | 16 | }; |
672 | 16 | static int *ett[] = { |
673 | 16 | &ett_starteam, |
674 | 16 | &ett_starteam_mdh, |
675 | 16 | &ett_starteam_ph, |
676 | 16 | &ett_starteam_id, |
677 | 16 | &ett_starteam_data |
678 | 16 | }; |
679 | | |
680 | 16 | module_t *starteam_module; |
681 | | |
682 | 16 | proto_starteam = proto_register_protocol("StarTeam", "StarTeam", "starteam"); |
683 | 16 | proto_register_field_array(proto_starteam, hf, array_length(hf)); |
684 | 16 | proto_register_subtree_array(ett, array_length(ett)); |
685 | | |
686 | 16 | starteam_tcp_handle = register_dissector("starteam", dissect_starteam_tcp, proto_starteam); |
687 | | |
688 | 16 | starteam_module = prefs_register_protocol(proto_starteam, NULL); |
689 | 16 | prefs_register_bool_preference(starteam_module, "desegment", |
690 | 16 | "Reassemble StarTeam messages spanning multiple TCP segments", |
691 | 16 | "Whether the StarTeam dissector should reassemble messages spanning multiple TCP segments." |
692 | 16 | " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.", |
693 | 16 | &starteam_desegment); |
694 | 16 | register_init_routine(&starteam_init); |
695 | 16 | } |
696 | | |
697 | | void |
698 | | proto_reg_handoff_starteam(void) |
699 | 16 | { |
700 | 16 | heur_dissector_add("tcp", dissect_starteam_heur, "StarTeam over TCP", "starteam_tcp", proto_starteam, HEURISTIC_ENABLE); |
701 | 16 | } |
702 | | |
703 | | /* |
704 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
705 | | * |
706 | | * Local Variables: |
707 | | * c-basic-offset: 2 |
708 | | * tab-width: 8 |
709 | | * indent-tabs-mode: nil |
710 | | * End: |
711 | | * |
712 | | * ex: set shiftwidth=2 tabstop=8 expandtab: |
713 | | * :indentSize=2:tabSize=8:noTabs=true: |
714 | | */ |