Changeset 745 for trunk/server/source3/lib/netapi/examples
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
r480 r745 479 479 p = strchr(newname, '.'); 480 480 if (p) { 481 *p = NULL;481 *p = '\0'; 482 482 } 483 483 -
trunk/server/source3/lib/netapi/examples/netlogon/nltest.c
r414 r745 31 31 32 32 enum { 33 OPT_DBFLAG = 1, 33 OPT_SERVER = 1, 34 OPT_DBFLAG, 34 35 OPT_SC_QUERY, 35 36 OPT_SC_RESET, 36 37 OPT_SC_VERIFY, 37 OPT_SC_CHANGE_PWD 38 OPT_SC_CHANGE_PWD, 39 OPT_DSGETDC, 40 OPT_PDC, 41 OPT_DS, 42 OPT_DSP, 43 OPT_GC, 44 OPT_KDC, 45 OPT_TIMESERV, 46 OPT_GTIMESERV, 47 OPT_WS, 48 OPT_NETBIOS, 49 OPT_DNS, 50 OPT_IP, 51 OPT_FORCE, 52 OPT_WRITABLE, 53 OPT_AVOIDSELF, 54 OPT_LDAPONLY, 55 OPT_BACKG, 56 OPT_DS_6, 57 OPT_TRY_NEXT_CLOSEST_SITE, 58 OPT_SITE, 59 OPT_ACCOUNT, 60 OPT_RET_DNS, 61 OPT_RET_NETBIOS, 62 OPT_DSREGDNS 38 63 }; 39 64 … … 41 66 ****************************************************************/ 42 67 43 static void print_ result(uint32_t level,44 uint8_t *buffer)68 static void print_netlogon_info_result(uint32_t level, 69 uint8_t *buffer) 45 70 { 46 71 struct NETLOGON_INFO_1 *i1 = NULL; … … 101 126 ****************************************************************/ 102 127 128 static void print_dc_info_flags(uint32_t flags) 129 { 130 if (flags & DS_PDC_FLAG) 131 printf("PDC "); 132 if (flags & DS_GC_FLAG) 133 printf("GC "); 134 if (flags & DS_DS_FLAG) 135 printf("DS "); 136 if (flags & DS_LDAP_FLAG) 137 printf("LDAP "); 138 if (flags & DS_KDC_FLAG) 139 printf("KDC "); 140 if (flags & DS_TIMESERV_FLAG) 141 printf("TIMESERV "); 142 if (flags & DS_GOOD_TIMESERV_FLAG) 143 printf("GTIMESERV "); 144 if (flags & DS_WRITABLE_FLAG) 145 printf("WRITABLE "); 146 if (flags & DS_DNS_FOREST_FLAG) 147 printf("DNS_FOREST "); 148 if (flags & DS_CLOSEST_FLAG) 149 printf("CLOSE_SITE "); 150 if (flags & DS_FULL_SECRET_DOMAIN_6_FLAG) 151 printf("FULL_SECRET "); 152 /* "WS" */ 153 printf("\n"); 154 } 155 156 /**************************************************************** 157 ****************************************************************/ 158 159 static void print_dc_info(struct DOMAIN_CONTROLLER_INFO *dc_info) 160 { 161 if (dc_info->flags) { 162 printf(" DC: %s\n", dc_info->domain_controller_name); 163 printf(" Address: %s\n", dc_info->domain_controller_address); 164 /* printf(" Dom Guid: %s\n", X(domain_guid)); */ 165 printf(" Dom Name: %s\n", dc_info->domain_name); 166 printf(" Forest Name: %s\n", dc_info->dns_forest_name); 167 printf(" Dc Site Name: %s\n", dc_info->dc_site_name); 168 printf("Our Site Name: %s\n", dc_info->client_site_name); 169 printf(" Flags: "); 170 print_dc_info_flags(dc_info->flags); 171 } else { 172 printf(" DC: %s\n", dc_info->domain_controller_name); 173 printf(" Address: %s\n", dc_info->domain_controller_address); 174 printf(" Dom Name: %s\n", dc_info->domain_name); 175 } 176 } 177 178 /**************************************************************** 179 ****************************************************************/ 180 103 181 int main(int argc, const char **argv) 104 182 { … … 106 184 NET_API_STATUS status; 107 185 struct libnetapi_ctx *ctx = NULL; 108 c onst char *server_name= NULL;186 char *opt_server = NULL; 109 187 char *opt_domain = NULL; 110 188 int opt_dbflag = 0; 111 uint32_t query_level; 189 int opt_pdc = 0; 190 int opt_ds = 0; 191 int opt_dsp = 0; 192 int opt_gc = 0; 193 int opt_kdc = 0; 194 int opt_timeserv = 0; 195 int opt_gtimeserv = 0; 196 int opt_ws = 0; 197 int opt_netbios = 0; 198 int opt_dns = 0; 199 int opt_ip = 0; 200 int opt_force = 0; 201 int opt_writable = 0; 202 int opt_avoidself = 0; 203 int opt_ldaponly = 0; 204 int opt_backg = 0; 205 int opt_ds_6 = 0; 206 int opt_try_next_closest_site = 0; 207 char *opt_site = NULL; 208 char *opt_account = NULL; 209 int opt_ret_dns = 0; 210 int opt_ret_netbios = 0; 211 int opt_dsregdns = 0; 212 uint32_t query_level = 0; 112 213 uint8_t *buffer = NULL; 214 uint32_t flags = 0; 215 struct DOMAIN_CONTROLLER_INFO *dc_info = NULL; 113 216 114 217 poptContext pc; 115 218 struct poptOption long_options[] = { 116 219 POPT_AUTOHELP 220 {"server", 0, POPT_ARG_STRING, &opt_server, OPT_SERVER, "Servername", "SERVER"}, 117 221 {"dbflag", 0, POPT_ARG_INT, &opt_dbflag, OPT_DBFLAG, "New Debug Flag", "HEXFLAGS"}, 118 222 {"sc_query", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_QUERY, "Query secure channel for domain on server", "DOMAIN"}, … … 120 224 {"sc_verify", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_VERIFY, "Verify secure channel for domain on server", "DOMAIN"}, 121 225 {"sc_change_pwd", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_CHANGE_PWD, "Change a secure channel password for domain on server", "DOMAIN"}, 226 {"dsgetdc", 0, POPT_ARG_STRING, &opt_domain, OPT_DSGETDC, "Call DsGetDcName", "DOMAIN"}, 227 {"pdc", 0, POPT_ARG_NONE, &opt_pdc, OPT_PDC, NULL}, 228 {"ds", 0, POPT_ARG_NONE, &opt_ds, OPT_DS, NULL}, 229 {"dsp", 0, POPT_ARG_NONE, &opt_dsp, OPT_DSP, NULL}, 230 {"gc", 0, POPT_ARG_NONE, &opt_gc, OPT_GC, NULL}, 231 {"kdc", 0, POPT_ARG_NONE, &opt_kdc, OPT_KDC, NULL}, 232 {"timeserv", 0, POPT_ARG_NONE, &opt_timeserv, OPT_TIMESERV, NULL}, 233 {"gtimeserv", 0, POPT_ARG_NONE, &opt_gtimeserv, OPT_GTIMESERV, NULL}, 234 {"ws", 0, POPT_ARG_NONE, &opt_ws, OPT_WS, NULL}, 235 {"netbios", 0, POPT_ARG_NONE, &opt_netbios, OPT_NETBIOS, NULL}, 236 {"dns", 0, POPT_ARG_NONE, &opt_dns, OPT_DNS, NULL}, 237 {"ip", 0, POPT_ARG_NONE, &opt_ip, OPT_IP, NULL}, 238 {"force", 0, POPT_ARG_NONE, &opt_force, OPT_FORCE, NULL}, 239 {"writable", 0, POPT_ARG_NONE, &opt_writable, OPT_WRITABLE, NULL}, 240 {"avoidself", 0, POPT_ARG_NONE, &opt_avoidself, OPT_AVOIDSELF, NULL}, 241 {"ldaponly", 0, POPT_ARG_NONE, &opt_ldaponly, OPT_LDAPONLY, NULL}, 242 {"backg", 0, POPT_ARG_NONE, &opt_backg, OPT_BACKG, NULL}, 243 {"ds_6", 0, POPT_ARG_NONE, &opt_ds_6, OPT_DS_6, NULL}, 244 {"try_next_closest_site", 0, POPT_ARG_NONE, &opt_try_next_closest_site, OPT_TRY_NEXT_CLOSEST_SITE, NULL}, 245 {"site", 0, POPT_ARG_STRING, &opt_site, OPT_SITE, "SITE"}, 246 {"account", 0, POPT_ARG_STRING, &opt_account, OPT_ACCOUNT, "ACCOUNT"}, 247 {"ret_dns", 0, POPT_ARG_NONE, &opt_ret_dns, OPT_RET_DNS, NULL}, 248 {"ret_netbios", 0, POPT_ARG_NONE, &opt_ret_netbios, OPT_RET_NETBIOS, NULL}, 249 {"dsregdns", 0, POPT_ARG_NONE, &opt_dsregdns, OPT_DSREGDNS, "Force registration of all DC-specific DNS records"}, 122 250 POPT_COMMON_LIBNETAPI_EXAMPLES 123 251 POPT_TABLEEND … … 131 259 pc = poptGetContext("nltest", argc, argv, long_options, 0); 132 260 133 poptSetOtherOptionHelp(pc, " server_name");261 poptSetOtherOptionHelp(pc, "<options>"); 134 262 while((opt = poptGetNextOpt(pc)) != -1) { 135 263 } 136 137 if (!poptPeekArg(pc)) {138 poptPrintHelp(pc, stderr, 0);139 goto done;140 }141 server_name = poptGetArg(pc);142 264 143 265 if (argc == 1) { … … 146 268 } 147 269 148 if (!server_name || poptGetArg(pc)) {149 poptPrintHelp(pc, stderr, 0);150 goto done;151 }152 153 if ((server_name[0] == '/' && server_name[1] == '/') ||154 (server_name[0] == '\\' && server_name[1] == '\\')) {155 server_name += 2;156 }157 158 270 poptResetContext(pc); 159 271 … … 161 273 switch (opt) { 162 274 275 case OPT_SERVER: 276 277 if ((opt_server[0] == '/' && opt_server[1] == '/') || 278 (opt_server[0] == '\\' && opt_server[1] == '\\')) { 279 opt_server += 2; 280 } 281 282 break; 283 163 284 case OPT_DBFLAG: 164 285 query_level = 1; 165 status = I_NetLogonControl2( server_name,286 status = I_NetLogonControl2(opt_server, 166 287 NETLOGON_CONTROL_SET_DBFLAG, 167 288 query_level, … … 174 295 goto done; 175 296 } 297 298 print_netlogon_info_result(query_level, buffer); 299 176 300 break; 177 301 case OPT_SC_QUERY: 178 302 query_level = 2; 179 status = I_NetLogonControl2( server_name,303 status = I_NetLogonControl2(opt_server, 180 304 NETLOGON_CONTROL_TC_QUERY, 181 305 query_level, … … 188 312 goto done; 189 313 } 314 315 print_netlogon_info_result(query_level, buffer); 316 190 317 break; 191 318 case OPT_SC_VERIFY: 192 319 query_level = 2; 193 status = I_NetLogonControl2( server_name,320 status = I_NetLogonControl2(opt_server, 194 321 NETLOGON_CONTROL_TC_VERIFY, 195 322 query_level, … … 202 329 goto done; 203 330 } 331 332 print_netlogon_info_result(query_level, buffer); 333 204 334 break; 205 335 case OPT_SC_RESET: 206 336 query_level = 2; 207 status = I_NetLogonControl2( server_name,337 status = I_NetLogonControl2(opt_server, 208 338 NETLOGON_CONTROL_REDISCOVER, 209 339 query_level, … … 216 346 goto done; 217 347 } 348 349 print_netlogon_info_result(query_level, buffer); 350 218 351 break; 219 352 case OPT_SC_CHANGE_PWD: 220 353 query_level = 1; 221 status = I_NetLogonControl2( server_name,354 status = I_NetLogonControl2(opt_server, 222 355 NETLOGON_CONTROL_CHANGE_PASSWORD, 223 356 query_level, … … 230 363 goto done; 231 364 } 365 366 print_netlogon_info_result(query_level, buffer); 367 368 break; 369 case OPT_DSREGDNS: 370 query_level = 1; 371 status = I_NetLogonControl2(opt_server, 372 NETLOGON_CONTROL_FORCE_DNS_REG, 373 query_level, 374 NULL, 375 &buffer); 376 if (status != 0) { 377 fprintf(stderr, "I_NetlogonControl failed: Status = %d 0x%x %s\n", 378 status, status, 379 libnetapi_get_error_string(ctx, status)); 380 goto done; 381 } 382 383 print_netlogon_info_result(query_level, buffer); 384 385 break; 386 case OPT_DSGETDC: 387 if (opt_pdc) 388 flags |= DS_PDC_REQUIRED; 389 if (opt_ds) 390 flags |= DS_DIRECTORY_SERVICE_REQUIRED; 391 if (opt_dsp) 392 flags |= DS_DIRECTORY_SERVICE_PREFERRED; 393 if (opt_kdc) 394 flags |= DS_KDC_REQUIRED; 395 if (opt_timeserv) 396 flags |= DS_TIMESERV_REQUIRED; 397 if (opt_gtimeserv) 398 flags |= DS_GOOD_TIMESERV_PREFERRED; 399 if (opt_ws) 400 flags |= DS_WEB_SERVICE_REQUIRED; 401 if (opt_netbios) 402 flags |= DS_IS_FLAT_NAME; 403 if (opt_dns) 404 flags |= DS_IS_DNS_NAME; 405 if (opt_ip) 406 flags |= DS_IP_REQUIRED; 407 if (opt_force) 408 flags |= DS_FORCE_REDISCOVERY; 409 if (opt_writable) 410 flags |= DS_WRITABLE_REQUIRED; 411 if (opt_avoidself) 412 flags |= DS_AVOID_SELF; 413 if (opt_ldaponly) 414 flags |= DS_ONLY_LDAP_NEEDED; 415 if (opt_backg) 416 flags |= DS_BACKGROUND_ONLY; 417 if (opt_ds_6) 418 flags |= DS_DIRECTORY_SERVICE_6_REQUIRED; 419 if (opt_try_next_closest_site) 420 flags |= DS_TRY_NEXTCLOSEST_SITE; 421 if (opt_ret_dns) 422 flags |= DS_RETURN_DNS_NAME; 423 if (opt_ret_netbios) 424 flags |= DS_RETURN_FLAT_NAME; 425 426 status = DsGetDcName(opt_server, 427 opt_domain, 428 NULL, /* domain_guid */ 429 opt_site, 430 flags, 431 &dc_info); 432 if (status != 0) { 433 fprintf(stderr, "DsGetDcName failed: Status = %d 0x%x %s\n", 434 status, status, 435 libnetapi_get_error_string(ctx, status)); 436 goto done; 437 } 438 439 print_dc_info(dc_info); 440 232 441 break; 233 442 default: 234 poptPrintHelp(pc, stderr, 0); 235 goto done; 443 continue; 236 444 } 237 445 } 238 239 print_result(query_level, buffer);240 446 241 447 printf("The command completed successfully\n");
Note:
See TracChangeset
for help on using the changeset viewer.