Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c

    r480 r745  
    479479                        p = strchr(newname, '.');
    480480                        if (p) {
    481                                 *p = NULL;
     481                                *p = '\0';
    482482                        }
    483483
  • trunk/server/source3/lib/netapi/examples/netlogon/nltest.c

    r414 r745  
    3131
    3232enum {
    33         OPT_DBFLAG = 1,
     33        OPT_SERVER = 1,
     34        OPT_DBFLAG,
    3435        OPT_SC_QUERY,
    3536        OPT_SC_RESET,
    3637        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
    3863};
    3964
     
    4166****************************************************************/
    4267
    43 static void print_result(uint32_t level,
    44                         uint8_t *buffer)
     68static void print_netlogon_info_result(uint32_t level,
     69                                      uint8_t *buffer)
    4570{
    4671        struct NETLOGON_INFO_1 *i1 = NULL;
     
    101126****************************************************************/
    102127
     128static 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
     159static 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
    103181int main(int argc, const char **argv)
    104182{
     
    106184        NET_API_STATUS status;
    107185        struct libnetapi_ctx *ctx = NULL;
    108         const char *server_name = NULL;
     186        char *opt_server = NULL;
    109187        char *opt_domain = NULL;
    110188        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;
    112213        uint8_t *buffer = NULL;
     214        uint32_t flags = 0;
     215        struct DOMAIN_CONTROLLER_INFO *dc_info = NULL;
    113216
    114217        poptContext pc;
    115218        struct poptOption long_options[] = {
    116219                POPT_AUTOHELP
     220                {"server", 0, POPT_ARG_STRING, &opt_server, OPT_SERVER, "Servername", "SERVER"},
    117221                {"dbflag", 0, POPT_ARG_INT,   &opt_dbflag, OPT_DBFLAG, "New Debug Flag", "HEXFLAGS"},
    118222                {"sc_query", 0, POPT_ARG_STRING,   &opt_domain, OPT_SC_QUERY, "Query secure channel for domain on server", "DOMAIN"},
     
    120224                {"sc_verify", 0, POPT_ARG_STRING,   &opt_domain, OPT_SC_VERIFY, "Verify secure channel for domain on server", "DOMAIN"},
    121225                {"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"},
    122250                POPT_COMMON_LIBNETAPI_EXAMPLES
    123251                POPT_TABLEEND
     
    131259        pc = poptGetContext("nltest", argc, argv, long_options, 0);
    132260
    133         poptSetOtherOptionHelp(pc, "server_name");
     261        poptSetOtherOptionHelp(pc, "<options>");
    134262        while((opt = poptGetNextOpt(pc)) != -1) {
    135263        }
    136 
    137         if (!poptPeekArg(pc)) {
    138                 poptPrintHelp(pc, stderr, 0);
    139                 goto done;
    140         }
    141         server_name = poptGetArg(pc);
    142264
    143265        if (argc == 1) {
     
    146268        }
    147269
    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 
    158270        poptResetContext(pc);
    159271
     
    161273                switch (opt) {
    162274
     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
    163284                case OPT_DBFLAG:
    164285                        query_level = 1;
    165                         status = I_NetLogonControl2(server_name,
     286                        status = I_NetLogonControl2(opt_server,
    166287                                                    NETLOGON_CONTROL_SET_DBFLAG,
    167288                                                    query_level,
     
    174295                                goto done;
    175296                        }
     297
     298                        print_netlogon_info_result(query_level, buffer);
     299
    176300                        break;
    177301                case OPT_SC_QUERY:
    178302                        query_level = 2;
    179                         status = I_NetLogonControl2(server_name,
     303                        status = I_NetLogonControl2(opt_server,
    180304                                                    NETLOGON_CONTROL_TC_QUERY,
    181305                                                    query_level,
     
    188312                                goto done;
    189313                        }
     314
     315                        print_netlogon_info_result(query_level, buffer);
     316
    190317                        break;
    191318                case OPT_SC_VERIFY:
    192319                        query_level = 2;
    193                         status = I_NetLogonControl2(server_name,
     320                        status = I_NetLogonControl2(opt_server,
    194321                                                    NETLOGON_CONTROL_TC_VERIFY,
    195322                                                    query_level,
     
    202329                                goto done;
    203330                        }
     331
     332                        print_netlogon_info_result(query_level, buffer);
     333
    204334                        break;
    205335                case OPT_SC_RESET:
    206336                        query_level = 2;
    207                         status = I_NetLogonControl2(server_name,
     337                        status = I_NetLogonControl2(opt_server,
    208338                                                    NETLOGON_CONTROL_REDISCOVER,
    209339                                                    query_level,
     
    216346                                goto done;
    217347                        }
     348
     349                        print_netlogon_info_result(query_level, buffer);
     350
    218351                        break;
    219352                case OPT_SC_CHANGE_PWD:
    220353                        query_level = 1;
    221                         status = I_NetLogonControl2(server_name,
     354                        status = I_NetLogonControl2(opt_server,
    222355                                                    NETLOGON_CONTROL_CHANGE_PASSWORD,
    223356                                                    query_level,
     
    230363                                goto done;
    231364                        }
     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
    232441                        break;
    233442                default:
    234                         poptPrintHelp(pc, stderr, 0);
    235                         goto done;
     443                        continue;
    236444                }
    237445        }
    238 
    239         print_result(query_level, buffer);
    240446
    241447        printf("The command completed successfully\n");
Note: See TracChangeset for help on using the changeset viewer.