static void authBasicParse(authScheme * scheme, int n_configured, char *param_str) { if (scheme->scheme_data == NULL) { assert(basicConfig == NULL); /* this is the first param to be found */ scheme->scheme_data = xmalloc(sizeof(auth_basic_config)); memset(scheme->scheme_data, 0, sizeof(auth_basic_config)); basicConfig = scheme->scheme_data; basicConfig->basicAuthRealm = xstrdup("Squid proxy-caching web server"); basicConfig->authenticateChildren = 5; basicConfig->credentialsTTL = 2 * 60 * 60; /* two hours */ } basicConfig = scheme->scheme_data; if (strcasecmp(param_str, "program") == 0) { if (basicConfig->authenticate) wordlistDestroy(&basicConfig->authenticate); parse_wordlist(&basicConfig->authenticate); } else if (strcasecmp(param_str, "children") == 0) { parse_int(&basicConfig->authenticateChildren); } else if (strcasecmp(param_str, "concurrency") == 0) { parse_int(&basicConfig->authenticateConcurrency); } else if (strcasecmp(param_str, "realm") == 0) { parse_eol(&basicConfig->basicAuthRealm); } else if (strcasecmp(param_str, "credentialsttl") == 0) { parse_time_t(&basicConfig->credentialsTTL); } else if (strcasecmp(param_str, "casesensitive") == 0) { parse_onoff(&basicConfig->casesensitive); } else if (strcasecmp(param_str, "blankpassword") == 0) { parse_onoff(&basicConfig->blankpassword); } else { debug(29, 0) ("unrecognised basic auth scheme parameter '%s'\n", param_str); } }
static void authNegotiateParse(authScheme * scheme, int n_configured, char *param_str) { if (scheme->scheme_data == NULL) { assert(negotiateConfig == NULL); /* this is the first param to be found */ scheme->scheme_data = xmalloc(sizeof(auth_negotiate_config)); memset(scheme->scheme_data, 0, sizeof(auth_negotiate_config)); negotiateConfig = scheme->scheme_data; negotiateConfig->authenticateChildren = 5; negotiateConfig->keep_alive = 1; } negotiateConfig = scheme->scheme_data; if (strcasecmp(param_str, "program") == 0) { if (negotiateConfig->authenticate) wordlistDestroy(&negotiateConfig->authenticate); parse_wordlist(&negotiateConfig->authenticate); } else if (strcasecmp(param_str, "children") == 0) { parse_int(&negotiateConfig->authenticateChildren); } else if (strcasecmp(param_str, "keep_alive") == 0) { parse_onoff(&negotiateConfig->keep_alive); } else { debug(29, 0) ("unrecognised negotiate auth scheme parameter '%s'\n", param_str); } }
static void authDigestParse(authScheme * scheme, int n_configured, char *param_str) { if (scheme->scheme_data == NULL) { assert(digestConfig == NULL); /* this is the first param to be found */ scheme->scheme_data = xmalloc(sizeof(auth_digest_config)); memset(scheme->scheme_data, 0, sizeof(auth_digest_config)); digestConfig = scheme->scheme_data; digestConfig->authenticateChildren = 5; digestConfig->digestAuthRealm = xstrdup("Squid proxy-caching web server"); /* 5 minutes */ digestConfig->nonceGCInterval = 5 * 60; /* 30 minutes */ digestConfig->noncemaxduration = 30 * 60; /* 50 requests */ digestConfig->noncemaxuses = 50; /* Not strict nonce count behaviour */ digestConfig->NonceStrictness = 0; /* Verify nonce count */ digestConfig->CheckNonceCount = 1; digestConfig->PostWorkaround = 0; } digestConfig = scheme->scheme_data; if (strcasecmp(param_str, "program") == 0) { if (digestConfig->authenticate) wordlistDestroy(&digestConfig->authenticate); parse_wordlist(&digestConfig->authenticate); requirePathnameExists("authparam digest program", digestConfig->authenticate->key); } else if (strcasecmp(param_str, "children") == 0) { parse_int(&digestConfig->authenticateChildren); } else if (strcasecmp(param_str, "realm") == 0) { parse_eol(&digestConfig->digestAuthRealm); } else if (strcasecmp(param_str, "nonce_garbage_interval") == 0) { parse_time_t(&digestConfig->nonceGCInterval); } else if (strcasecmp(param_str, "nonce_max_duration") == 0) { parse_time_t(&digestConfig->noncemaxduration); } else if (strcasecmp(param_str, "nonce_max_count") == 0) { parse_int(&digestConfig->noncemaxuses); } else if (strcasecmp(param_str, "nonce_strictness") == 0) { parse_onoff(&digestConfig->NonceStrictness); } else if (strcasecmp(param_str, "check_nonce_count") == 0) { parse_onoff(&digestConfig->CheckNonceCount); } else if (strcasecmp(param_str, "post_workaround") == 0) { parse_onoff(&digestConfig->PostWorkaround); } else { debug(28, 0) ("unrecognised digest auth scheme parameter '%s'\n", param_str); } }
void parse_externalAclHelper(external_acl ** list) { external_acl *a; char *token; external_acl_format **p; CBDATA_INIT_TYPE_FREECB(external_acl, free_external_acl); CBDATA_INIT_TYPE_FREECB(external_acl_format, free_external_acl_format); a = cbdataAlloc(external_acl); a->ttl = DEFAULT_EXTERNAL_ACL_TTL; a->negative_ttl = -1; a->children = DEFAULT_EXTERNAL_ACL_CONCURRENCY; token = strtok(NULL, w_space); if (!token) self_destruct(); a->name = xstrdup(token); token = strtok(NULL, w_space); /* Parse options */ while (token) { if (strncmp(token, "ttl=", 4) == 0) { a->ttl = atoi(token + 4); } else if (strncmp(token, "negative_ttl=", 13) == 0) { a->negative_ttl = atoi(token + 13); } else if (strncmp(token, "children=", 9) == 0) { a->children = atoi(token + 9); } else if (strncmp(token, "concurrency=", 12) == 0) { a->children = atoi(token + 12); } else if (strncmp(token, "cache=", 6) == 0) { a->cache_size = atoi(token + 6); } else { break; } token = strtok(NULL, w_space); } if (a->negative_ttl == -1) a->negative_ttl = a->ttl; /* Parse format */ p = &a->format; while (token) { external_acl_format *format; /* stop on first non-format token found */ if (*token != '%') break; format = cbdataAlloc(external_acl_format); if (strncmp(token, "%{", 2) == 0) { /* header format */ char *header, *member, *end; header = token + 2; end = strchr(header, '}'); /* cut away the terminating } */ if (end && strlen(end) == 1) *end = '\0'; else self_destruct(); member = strchr(header, ':'); if (member) { /* Split in header and member */ *member++ = '\0'; if (!isalnum(*member)) format->separator = *member++; else format->separator = ','; format->member = xstrdup(member); format->type = EXT_ACL_HEADER_MEMBER; } else { format->type = EXT_ACL_HEADER; } format->header = xstrdup(header); format->header_id = httpHeaderIdByNameDef(header, strlen(header)); if (format->header_id != -1) { if (member) format->type = EXT_ACL_HEADER_ID_MEMBER; else format->type = EXT_ACL_HEADER_ID; } } else if (strcmp(token, "%LOGIN") == 0) { format->type = EXT_ACL_LOGIN; a->require_auth = 1; } #if USE_IDENT else if (strcmp(token, "%IDENT") == 0) format->type = EXT_ACL_IDENT; #endif else if (strcmp(token, "%SRC") == 0) format->type = EXT_ACL_SRC; else if (strcmp(token, "%DST") == 0) format->type = EXT_ACL_DST; else if (strcmp(token, "%PROTO") == 0) format->type = EXT_ACL_PROTO; else if (strcmp(token, "%PORT") == 0) format->type = EXT_ACL_PORT; else if (strcmp(token, "%METHOD") == 0) format->type = EXT_ACL_METHOD; else { self_destruct(); } *p = format; p = &format->next; token = strtok(NULL, w_space); } /* There must be at least one format token */ if (!a->format) self_destruct(); /* helper */ if (!token) self_destruct(); wordlistAdd(&a->cmdline, token); /* arguments */ parse_wordlist(&a->cmdline); while (*list) list = &(*list)->next; *list = a; }
void parse_refreshCheckHelper(refresh_check_helper ** ptr) { refresh_check_helper *a; char *token; refresh_check_format **p; if (*ptr) self_destruct(); CBDATA_INIT_TYPE_FREECB(refresh_check_helper, free_refresh_check_helper); CBDATA_INIT_TYPE_FREECB(refresh_check_format, free_refresh_check_format); a = cbdataAlloc(refresh_check_helper); a->children = DEFAULT_REFRESH_CHECK_CHILDREN; /* Parse options */ while ((token = strtok(NULL, w_space)) != NULL) { if (strncmp(token, "children=", 9) == 0) { a->children = atoi(token + 9); } else if (strncmp(token, "concurrency=", 12) == 0) { a->concurrency = atoi(token + 12); } else { break; } } /* Parse format */ p = &a->format; while (token) { refresh_check_format *format; /* stop on first non-format token found */ if (*token != '%') break; format = cbdataAlloc(refresh_check_format); if (strncmp(token, "%RES{", 5) == 0) { /* header format */ char *header, *member, *end; header = token + 5; end = strchr(header, '}'); /* cut away the terminating } */ if (end && strlen(end) == 1) *end = '\0'; else self_destruct(); member = strchr(header, ':'); if (member) { /* Split in header and member */ *member++ = '\0'; if (!xisalnum(*member)) format->separator = *member++; else format->separator = ','; format->member = xstrdup(member); format->type = REFRESH_CHECK_RESP_HEADER_MEMBER; } else { format->type = REFRESH_CHECK_RESP_HEADER; } format->header = xstrdup(header); format->header_id = httpHeaderIdByNameDef(header, strlen(header)); if (format->header_id != -1) { if (member) format->type = REFRESH_CHECK_RESP_HEADER_ID_MEMBER; else format->type = REFRESH_CHECK_RESP_HEADER_ID; } } else if (strcmp(token, "%URI") == 0) format->type = REFRESH_CHECK_URI; else if (strcmp(token, "%URL") == 0) format->type = REFRESH_CHECK_URI; else if (strcmp(token, "%CACHE_URI") == 0) format->type = REFRESH_CHECK_URI; else if (strcmp(token, "%AGE") == 0) format->type = REFRESH_CHECK_AGE; else { self_destruct(); } *p = format; p = &format->next; token = strtok(NULL, w_space); } /* There must be at least one format token */ if (!a->format) self_destruct(); /* helper */ if (!token) self_destruct(); wordlistAdd(&a->cmdline, token); /* arguments */ parse_wordlist(&a->cmdline); *ptr = a; }
bool StarDictClient::parse(gchar *line) { int result; if (waiting_banner_) { waiting_banner_ = false; result = parse_banner(line); g_free(line); if (!result) return false; request_command(); return true; } STARDICT::Cmd* cmd = cmdlist.front(); switch (cmd->command) { case STARDICT::CMD_CLIENT: result = parse_command_client(line); g_free(line); break; case STARDICT::CMD_AUTH: result = parse_command_auth(line); g_free(line); break; case STARDICT::CMD_REGISTER: result = parse_command_register(line); g_free(line); break; case STARDICT::CMD_GET_DICT_MASK: result = parse_command_getdictmask(cmd, line); break; case STARDICT::CMD_SET_DICT_MASK: result = parse_command_setdictmask(line); break; case STARDICT::CMD_DIR_INFO: result = parse_command_dirinfo(cmd, line); break; case STARDICT::CMD_DICT_INFO: result = parse_command_dictinfo(cmd, line); break; case STARDICT::CMD_MAX_DICT_COUNT: result = parse_command_maxdictcount(cmd, line); break; case STARDICT::CMD_DEFINE: case STARDICT::CMD_LOOKUP: case STARDICT::CMD_SELECT_QUERY: case STARDICT::CMD_SMART_QUERY: result = parse_dict_result(cmd, line); break; case STARDICT::CMD_PREVIOUS: case STARDICT::CMD_NEXT: result = parse_wordlist(cmd, line); break; case STARDICT::CMD_GET_ADINFO: result = parse_command_getadinfo(cmd, line); break; case STARDICT::CMD_QUIT: result = parse_command_quit(line); g_free(line); break; default: result = 0; g_free(line); break; } if (result == 0) return false; if (result == 1) { delete cmd; cmdlist.pop_front(); if (cmdlist.empty()) { cmdlist.push_back(new STARDICT::Cmd(STARDICT::CMD_QUIT)); } request_command(); } return true; }
void cli_loop(void) { while (1) { curchar = getline(">"); printf("\n"); /* Process medium changes before executing the command */ if (disk_state != DISK_OK && disk_state != DISK_REMOVED) { FRESULT res; printf("Medium changed... "); res = f_mount(0,&fatfs); if (res != FR_OK) { printf("Failed to mount new medium, result %d\n",res); } else { printf("Ok\n"); } } /* Remove whitespace */ while (*curchar == ' ') curchar++; while (strlen(curchar) > 0 && curchar[strlen(curchar)-1] == ' ') curchar[strlen(curchar)-1] = 0; /* Ignore empty lines */ if (strlen(curchar) == 0) continue; /* Parse command */ int8_t command = parse_wordlist(command_words); if (command < 0) continue; FRESULT res; switch (command) { case CMD_CD: #if _FS_RPATH if (strlen(curchar) == 0) { f_getcwd((TCHAR*)file_lfn, 255); printf("%s\n",file_lfn); break; } res = f_chdir((const TCHAR *)curchar); if (res != FR_OK) { printf("chdir %s failed with result %d\n",curchar,res); } else { printf("Ok.\n"); } #else printf("cd not supported.\n"); res; #endif break; case CMD_RESET: cmd_reset(); break; case CMD_SRESET: cmd_sreset(); break; case CMD_DIR: case CMD_LS: cmd_show_directory(); break; case CMD_RESUME: return; break; case CMD_LOADROM: cmd_loadrom(); break; case CMD_LOADRAW: cmd_loadraw(); break; case CMD_SAVERAW: cmd_saveraw(); break; case CMD_RM: cmd_rm(); break; case CMD_D4: cmd_d4(); break; case CMD_VMODE: cmd_vmode(); break; case CMD_PUT: cmd_put(); break; case CMD_MAPPER: cmd_mapper(); break; case CMD_SETTIME: cmd_settime(); break; case CMD_TIME: cmd_time(); break; case CMD_TEST: testbattery(); break; case CMD_SETFEATURE: cmd_setfeature(); break; case CMD_HEXDUMP: cmd_hexdump(); break; case CMD_W8: cmd_w8(); break; case CMD_W16: cmd_w16(); break; } } }