diff options
Diffstat (limited to 'examples/libmsrpc/test/test_util.c')
-rw-r--r-- | examples/libmsrpc/test/test_util.c | 408 |
1 files changed, 0 insertions, 408 deletions
diff --git a/examples/libmsrpc/test/test_util.c b/examples/libmsrpc/test/test_util.c deleted file mode 100644 index 81a9c9203d..0000000000 --- a/examples/libmsrpc/test/test_util.c +++ /dev/null @@ -1,408 +0,0 @@ -/*some utility functions for the registry tests*/ - -#include "libmsrpc.h" -#include "test_util.h" - - -void cactest_print_usage(char **argv) { - printf("Usage:\n"); - printf(" %s server [-U username] [-W domain] [-P passwprd] [-N netbios_name]\n", argv[0]); -} - -/*allocates memory for auth info and parses domain/user/server out of command line*/ -void cac_parse_cmd_line(int argc, char **argv, CacServerHandle *hnd) { - int i = 0; - - ZERO_STRUCTP(hnd->username); - ZERO_STRUCTP(hnd->domain); - ZERO_STRUCTP(hnd->netbios_name); - ZERO_STRUCTP(hnd->password); - - for(i = 1; i < argc; i++) { - if( strncmp(argv[i], "-U", sizeof(fstring)) == 0) { - strncpy(hnd->username, argv[i+1], sizeof(fstring)); - i++; - } - - else if(strncmp(argv[i], "-W", sizeof(fstring)) == 0) { - strncpy(hnd->domain, argv[i+1], sizeof(fstring)); - i++; - - } - - else if(strncmp(argv[i], "-P", sizeof(fstring)) == 0) { - strncpy(hnd->password, argv[i+1], sizeof(fstring)); - i++; - - } - - else if(strncmp(argv[i], "-N", sizeof(fstring)) == 0) { - strncpy(hnd->netbios_name, argv[i+1], sizeof(fstring)); - i++; - } - - else if(strncmp(argv[i], "-d", sizeof(fstring)) == 0) { - sscanf(argv[i+1], "%d", &hnd->debug); - i++; - } - - else { /*assume this is the server name*/ - strncpy(hnd->server, argv[i], sizeof(fstring)); - } - } - - if(!hnd->server) { - cactest_print_usage(argv); - cac_FreeHandle(hnd); - exit(-1); - } - -} - -void print_value(uint32 type, REG_VALUE_DATA *data) { - int i = 0; - - switch(type) { - case REG_SZ: - printf(" Type: REG_SZ\n"); - printf(" Value: %s\n", data->reg_sz); - break; - case REG_EXPAND_SZ: - printf(" Type: REG_EXPAND_SZ\n"); - printf(" Value: %s\n", data->reg_expand_sz); - break; - case REG_MULTI_SZ: - printf(" Type: REG_MULTI_SZ\n"); - printf(" Values: "); - - for(i = 0; i < data->reg_multi_sz.num_strings; i++) { - printf(" %d: %s\n", i, data->reg_multi_sz.strings[i]); - } - break; - case REG_DWORD: - printf(" Type: REG_DWORD\n"); - printf(" Value: %d\n", data->reg_dword); - break; - case REG_DWORD_BE: - printf(" Type: REG_DWORD_BE\n"); - printf(" Value: 0x%x\n", data->reg_dword_be); - break; - case REG_BINARY: - printf(" Type: REG_BINARY\n"); - break; - default: - printf(" Invalid type: %d\n", type); - - } - - printf("\n"); - -} - -void cactest_readline(FILE *in, fstring line) { - - int c; - - c = fgetc(in); - if(c != '\n') - ungetc(c, in); - - fgets(line, sizeof(fstring), in); - - if(line[strlen(line) - 1] == '\n') - line[strlen(line) - 1] = '\0'; - -} - -void cactest_GetAuthDataFn(const char * pServer, - const char * pShare, - char * pWorkgroup, - int maxLenWorkgroup, - char * pUsername, - int maxLenUsername, - char * pPassword, - int maxLenPassword) - -{ - char temp[sizeof(fstring)]; - - static char authUsername[sizeof(fstring)]; - static char authWorkgroup[sizeof(fstring)]; - static char authPassword[sizeof(fstring)]; - static char authSet = 0; - - char *pass = NULL; - - if (authSet) - { - strncpy(pWorkgroup, authWorkgroup, maxLenWorkgroup - 1); - strncpy(pUsername, authUsername, maxLenUsername - 1); - strncpy(pPassword, authPassword, maxLenPassword - 1); - } - else - { - if(pWorkgroup[0] != '\0') { - strncpy(authWorkgroup, pWorkgroup, maxLenWorkgroup - 1); - } - else { - d_printf("Domain: [%s] ", pWorkgroup); - fscanf(stdin, "%s", temp); - - if (temp[0] != '\0') - { - strncpy(pWorkgroup, temp, maxLenWorkgroup - 1); - strncpy(authWorkgroup, temp, maxLenWorkgroup - 1); - } - } - - - if(pUsername[0] != '\0') { - strncpy(authUsername, pUsername, maxLenUsername - 1); - } - else { - d_printf("Username: [%s] ", pUsername); - fscanf(stdin, "%s", temp); - - if (temp[strlen(temp) - 1] == '\n') /* A new line? */ - { - temp[strlen(temp) - 1] = '\0'; - } - - if (temp[0] != '\0') - { - strncpy(pUsername, temp, maxLenUsername - 1); - strncpy(authUsername, pUsername, maxLenUsername - 1); - } - } - if(pPassword[0] != '\0') { - strncpy(authPassword, pPassword, maxLenPassword - 1); - } - else { - pass = getpass("Password: "); - if (pass) - fstrcpy(temp, pass); - if (temp[strlen(temp) - 1] == '\n') /* A new line? */ - { - temp[strlen(temp) - 1] = '\0'; - } - if (temp[0] != '\0') - { - strncpy(pPassword, temp, maxLenPassword - 1); - strncpy(authPassword, pPassword, maxLenPassword - 1); - } - } - authSet = 1; - } -} - -void cactest_reg_input_val(TALLOC_CTX *mem_ctx, int *type, char **name, REG_VALUE_DATA *data) { - fstring tmp; - int i; - - printf("Enter value name: \n"); - cactest_readline(stdin, tmp); - *name = talloc_strdup(mem_ctx, tmp); - - do { - printf("Enter type. %d = REG_SZ, %d = REG_DWORD, %d = REG_MULTI_SZ: ", REG_SZ, REG_DWORD, REG_MULTI_SZ); - scanf("%d", type); - } while(*type != REG_SZ && *type != REG_DWORD && *type != REG_MULTI_SZ); - - switch(*type) { - case REG_SZ: - printf("Enter string:\n"); - cactest_readline(stdin, tmp); - - data->reg_sz = talloc_strdup(mem_ctx, tmp); - break; - - case REG_DWORD: - printf("Enter dword: "); - scanf("%d", &data->reg_dword); - break; - - case REG_MULTI_SZ: - printf("Enter number of strings: "); - scanf("%d", &data->reg_multi_sz.num_strings); - - data->reg_multi_sz.strings = talloc_array(mem_ctx, char *, data->reg_multi_sz.num_strings); - - for(i = 0; i < data->reg_multi_sz.num_strings; i++) { - printf("String %d: ", i+1); - cactest_readline(stdin, tmp); - - data->reg_multi_sz.strings[i] = talloc_strdup(mem_ctx, tmp); - } - break; - } -} - -void print_cac_user_info(CacUserInfo *info) { - printf(" User Name : %s\n", info->username); - printf(" Full Name : %s\n", info->full_name); - printf(" Home Dir : %s\n", info->home_dir); - printf(" Home Drive : %s\n", info->home_drive); - printf(" Profile Path : %s\n", info->profile_path); - printf(" Logon Script : %s\n", info->logon_script); - printf(" Description : %s\n", info->description); - printf(" Workstations : %s\n", info->workstations); - printf(" Remote Dial : %s\n", info->dial); - - printf(" Logon Time : %s\n", http_timestring(info->logon_time)); - printf(" Logoff Time : %s\n", http_timestring(info->logoff_time)); - printf(" Kickoff Time : %s\n", http_timestring(info->kickoff_time)); - printf(" Pass last set: %s\n", http_timestring(info->pass_last_set_time)); - printf(" Pass can set : %s\n", http_timestring(info->pass_can_change_time)); - printf(" Pass must set: %s\n", http_timestring(info->pass_must_change_time)); - - printf(" User RID : 0x%x\n", info->rid); - printf(" Group RID : 0x%x\n", info->group_rid); - printf(" ACB Mask : 0x%x\n", info->acb_mask); - - printf(" Bad pwd count: %d\n", info->bad_passwd_count); - printf(" Logon Cuont : %d\n", info->logon_count); - - printf(" NT Password : %s\n", info->nt_password); - printf(" LM Password : %s\n", info->lm_password); - -} - -void edit_readline(fstring line) { - fgets(line, sizeof(fstring), stdin); - - if(line[strlen(line)-1] == '\n') - line[strlen(line)-1] = '\0'; -} -void edit_cac_user_info(TALLOC_CTX *mem_ctx, CacUserInfo *info) { - fstring tmp; - - printf(" User Name [%s]: ", info->username); - edit_readline(tmp); - - if(tmp[0] != '\0') - info->username = talloc_strdup(mem_ctx, tmp); - - printf(" Full Name [%s]: ", info->full_name); - - edit_readline(tmp); - if(tmp[0] != '\0') - info->full_name = talloc_strdup(mem_ctx, tmp); - - printf(" Description [%s]: ", info->description); - edit_readline(tmp); - if(tmp[0] != '\0') - info->description = talloc_strdup(mem_ctx, tmp); - - printf(" Remote Dial [%s]: ", info->dial); - edit_readline(tmp); - if(tmp[0] != '\0') - info->dial = talloc_strdup(mem_ctx, tmp); - - printf(" ACB Mask [0x%x]: ", info->acb_mask); - edit_readline(tmp); - if(tmp[0] != '\0') - sscanf(tmp, "%x", &info->acb_mask); - - printf(" Must change pass at next logon? [y/N]: "); - edit_readline(tmp); - - if(tmp[0] == 'y' || tmp[0] == 'Y') - info->pass_must_change= True; - -} - -void print_cac_group_info(CacGroupInfo *info) { - printf(" Group Name : %s\n", info->name); - printf(" Description : %s\n", info->description); - printf(" Num Members : %d\n", info->num_members); -} - -void edit_cac_group_info(TALLOC_CTX *mem_ctx, CacGroupInfo *info) { - fstring tmp; - - printf("Group Name [%s]: ", info->name); - edit_readline(tmp); - if(tmp[0] != '\0') - info->name = talloc_strdup(mem_ctx, tmp); - - printf("Description [%s]: ", info->description); - edit_readline(tmp); - if(tmp[0] != '\0') - info->description = talloc_strdup(mem_ctx, tmp); -} - -char *srv_role_str(uint32 role) { - switch(role) { - case ROLE_STANDALONE: - return "STANDALONE"; - break; - case ROLE_DOMAIN_MEMBER: - return "DOMAIN_MEMBER"; - break; - case ROLE_DOMAIN_BDC: - return "DOMAIN_BDC"; - break; - case ROLE_DOMAIN_PDC: - return "DOMAIN_PDC"; - break; - } - - return "Invalid role!\n"; -} - -char *cactime_str(CacTime ctime, fstring tmp) { - - snprintf(tmp, sizeof(fstring), "%u Days, %u Hours, %u Minutes, %u Seconds", ctime.days, ctime.hours, ctime.minutes, ctime.seconds); - - return tmp; -} - -void print_cac_domain_info(CacDomainInfo *info) { - fstring tmp; - - printf(" Server Role : %s\n", srv_role_str(info->server_role)); - printf(" Num Users : %d\n", info->num_users); - printf(" Num Domain Groups: %d\n", info->num_domain_groups); - printf(" Num Local Groups : %d\n", info->num_local_groups); - printf(" Comment : %s\n", info->comment); - printf(" Domain Name : %s\n", info->domain_name); - printf(" Server Name : %s\n", info->server_name); - printf(" Min. Pass. Length: %d\n", info->min_pass_length); - printf(" Password History : %d\n", info->pass_history); - printf("\n"); - printf(" Passwords Expire In : %s\n", cactime_str(info->expire, tmp)); - printf(" Passwords Can Change in: %s\n", cactime_str(info->min_pass_age, tmp)); - printf(" Lockouts last : %s\n", cactime_str(info->lockout_duration, tmp)); - printf(" Allowed Bad Attempts : %d\n", info->num_bad_attempts); -} - -void print_cac_service(CacService svc) { - printf("\tService Name: %s\n", svc.service_name); - printf("\tDisplay Name: %s\n", svc.display_name); - print_service_status(svc.status); -} - -void print_service_status(SERVICE_STATUS status) { - printf("\tStatus:\n"); - printf("\t Type: 0x%x\n", status.type); - printf("\t State: 0x%x\n", status.state); - printf("\t Controls: 0x%x\n", status.controls_accepted); - printf("\t W32 Exit Code: 0x%x\n", status.win32_exit_code); - printf("\t SVC Exit Code: 0x%x\n", status.service_exit_code); - printf("\t Checkpoint: 0x%x\n", status.check_point); - printf("\t Wait Hint: 0x%x\n", status.wait_hint); - printf("\n"); -} - -void print_service_config(CacServiceConfig *config) { - printf("\tConfig:\n"); - printf("\tType: 0x%x\n", config->type); - printf("\tStart Type: 0x%x\n", config->start_type); - printf("\tError config: 0x%x\n", config->error_control); - printf("\tExecutable Path: %s\n", config->exe_path); - printf("\tLoad Order Group: %s\n", config->load_order_group); - printf("\tTag ID: 0x%x\n", config->tag_id); - printf("\tDependencies: %s\n", config->dependencies); - printf("\tStart Name: %s\n", config->start_name); - printf("\tDisplay Name: %s\n", config->display_name); -} |