Exemplo n.º 1
0
ClientOptions MainController::parseClientOptions(const std::string& optionString) {
	ClientOptions result;
	size_t i = 0;
	int intVal = 0;
	std::string stringVal;
	std::vector<std::string> segments = String::split(optionString, ',');

	PARSE_BOOL(useStreamCompression, 1);
	PARSE_INT_RAW(-1);
	switch (intVal) {
		case 1: result.useTLS = ClientOptions::NeverUseTLS;break;
		case 2: result.useTLS = ClientOptions::UseTLSWhenAvailable;break;
		case 3: result.useTLS = ClientOptions::RequireTLS;break;
		default:;
	}
	PARSE_BOOL(allowPLAINWithoutTLS, 0);
	PARSE_BOOL(useStreamResumption, 0);
	PARSE_BOOL(useAcks, 1);
	PARSE_STRING(manualHostname);
	PARSE_INT(manualPort, -1);
	PARSE_INT_RAW(-1);
	switch (intVal) {
		case 1: result.proxyType = ClientOptions::NoProxy;break;
		case 2: result.proxyType = ClientOptions::SystemConfiguredProxy;break;
		case 3: result.proxyType = ClientOptions::SOCKS5Proxy;break;
		case 4: result.proxyType = ClientOptions::HTTPConnectProxy;break;
	}
	PARSE_STRING(manualProxyHostname);
	PARSE_INT(manualProxyPort, -1);
	PARSE_URL(boshURL);
	PARSE_URL(boshHTTPConnectProxyURL);
	PARSE_SAFE_STRING(boshHTTPConnectProxyAuthID);
	PARSE_SAFE_STRING(boshHTTPConnectProxyAuthPassword);
	PARSE_BOOL(tlsOptions.schannelTLS1_0Workaround, false);

	return result;
}
Exemplo n.º 2
0
s::vector<object> parse_objects(const Json::Value& arr) {
  if (!arr.isArray()) throw s::runtime_error("cuauv::conf::load_map: Expected array of objects.");
  
  s::vector<object> objs;
  for (unsigned int i = 0; i < arr.size(); i++) {
    Json::Value root = arr[i];
    if (!root.isObject()) throw s::runtime_error("cuauv::conf::load_map: Expected object.");
    PARSE_STRING(name);
    PARSE_VECTOR4(initial_position);
    PARSE_MATRIX4(initial_covariance);
    object o { name, initial_position, initial_covariance };
    objs.push_back(o);
  };

  return objs;
};
Exemplo n.º 3
0
/* rtpmap contains:
 *
 *  <payload> <encoding_name>/<clock_rate>[/<encoding_params>]
 */
static gboolean
gst_sdp_parse_rtpmap (const gchar * rtpmap, gint * payload, gchar ** name,
    gint * rate, gchar ** params)
{
  gchar *p, *t;

  p = (gchar *) rtpmap;

  PARSE_INT (p, " ", *payload);
  if (*payload == -1)
    return FALSE;

  SKIP_SPACES (p);
  if (*p == '\0')
    return FALSE;

  PARSE_STRING (p, "/", *name);
  if (*name == NULL) {
    GST_DEBUG ("no rate, name %s", p);
    /* no rate, assume -1 then, this is not supposed to happen but RealMedia
     * streams seem to omit the rate. */
    *name = p;
    *rate = -1;
    return TRUE;
  }

  t = p;
  p = strstr (p, "/");
  if (p == NULL) {
    *rate = atoi (t);
    return TRUE;
  }
  *p = '\0';
  p++;
  *rate = atoi (t);

  t = p;
  if (*p == '\0')
    return TRUE;
  *params = t;

  return TRUE;
}
Exemplo n.º 4
0
/* rtpmap contains:
 *
 *  <payload> <encoding_name>/<clock_rate>[/<encoding_params>]
 */
static gboolean
gst_sdp_demux_parse_rtpmap (const gchar * rtpmap, gint * payload, gchar ** name,
    gint * rate, gchar ** params)
{
  gchar *p, *t;

  t = p = (gchar *) rtpmap;

  PARSE_INT (p, " ", *payload);
  if (*payload == -1)
    return FALSE;

  SKIP_SPACES (p);
  if (*p == '\0')
    return FALSE;

  PARSE_STRING (p, "/", *name);
  if (*name == NULL) {
    GST_DEBUG ("no rate, name %s", p);
    /* no rate, assume -1 then */
    *name = p;
    *rate = -1;
    return TRUE;
  }

  t = p;
  p = strstr (p, "/");
  if (p == NULL) {
    *rate = atoi (t);
    return TRUE;
  }
  *p = '\0';
  p++;
  *rate = atoi (t);

  t = p;
  if (*p == '\0')
    return TRUE;
  *params = t;

  return TRUE;
}
Exemplo n.º 5
0
thruster_vector parse_thrusters(const Json::Value& arr)
{
    if (!arr.isArray()) {
        throw std::runtime_error("Expected array of thrusters.");
    }

    thruster_vector ts;
    for (unsigned int i = 0; i < arr.size(); i++) {
        Json::Value root = arr[i];
        if (!root.isObject()) {
            throw std::runtime_error("Expected thruster object.");
        }
        PARSE_STRING(name);
        PARSE_VECTOR3(pos);
        PARSE_TWO_DOUBLES(hp, yaw, pitch);
        thruster t { name, pos, yaw, pitch };
        ts.push_back(t);
    }

    return ts;
}
Exemplo n.º 6
0
static void character_data(void *userData, const char *val, int len) {
    am_xml_parser_ctx_t *ctx = (am_xml_parser_ctx_t *) userData;
    if (!ISVALID(ctx->current_name) || ctx->setting_value == 0 || len <= 0 ||
            strncmp(val, "[]=", len) == 0 || strncmp(val, "[0]=", len) == 0) return;

    /* bootstrap options */

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_LOCAL, ctx->conf->local, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_POSTDATA_PRESERVE_DIR, ctx->conf->pdp_dir, val, len);
    PARSE_STRING_LIST(ctx, AM_AGENTS_CONFIG_NAMING_URL, ctx->conf->naming_url_sz, ctx->conf->naming_url, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_REALM, ctx->conf->realm, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_USER, ctx->conf->user, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_PASSWORD, ctx->conf->pass, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_KEY, ctx->conf->key, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_DEBUG_FILE, ctx->conf->debug_file, val, len);
    PARSE_DEBUG_LOG_LEVEL(ctx, AM_AGENTS_CONFIG_DEBUG_LEVEL, ctx->conf->debug_level, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_DEBUG_OPT, ctx->conf->debug, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_AUDIT_FILE, ctx->conf->audit_file, val, len);
    PARSE_AUDIT_LOG_LEVEL(ctx, AM_AGENTS_CONFIG_AUDIT_LEVEL, ctx->conf->audit_level, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_AUDIT_OPT, ctx->conf->audit, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CERT_KEY_FILE, ctx->conf->cert_key_file, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CERT_KEY_PASSWORD, ctx->conf->cert_key_pass, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CERT_FILE, ctx->conf->cert_file, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CA_FILE, ctx->conf->cert_ca_file, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CIPHERS, ctx->conf->ciphers, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_TRUST_CERT, ctx->conf->cert_trust, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_TLS_OPT, ctx->conf->tls_opts, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_NET_TIMEOUT, ctx->conf->net_timeout, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_URL_VALIDATE_LEVEL, ctx->conf->valid_level, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_URL_VALIDATE_PING_INTERVAL, ctx->conf->valid_ping, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_URL_VALIDATE_PING_MISS, ctx->conf->valid_ping_miss, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_URL_VALIDATE_PING_OK, ctx->conf->valid_ping_ok, val, len);
    PARSE_NUMBER_LIST(ctx, AM_AGENTS_CONFIG_URL_VALIDATE_DEFAULT_SET, ctx->conf->valid_default_url_sz, ctx->conf->valid_default_url, val, len);

    PARSE_STRING_LIST(ctx, AM_AGENTS_CONFIG_HOST_MAP, ctx->conf->hostmap_sz, ctx->conf->hostmap, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_RETRY_MAX, ctx->conf->retry_max, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_RETRY_WAIT, ctx->conf->retry_wait, val, len);

    /* other options */

    if (strcmp(ctx->current_name, "com.sun.identity.agents.config.freeformproperties") == 0) {
        /*handler for old freeformproperties*/
        char *t, k[AM_URI_SIZE];
        char *v = strndup(val, len);
        if (v != NULL) {
            /* make up parser's current_name to handle freeformproperties:
             * instead of a property key being supplied as an <attribute name="...">,
             * it is sent as a part of <value> element, for example:
             * <value>com.forgerock.agents.conditional.login.url[0]=signin.example.com|http...</value>
             */
            memset(&k[0], 0, sizeof (k));
            if ((t = strchr(v, '[')) != NULL) {
                memcpy(k, v, t - v);
            } else if ((t = strchr(v, '=')) != NULL) {
                memcpy(k, v, t - v);
                trim(k, ' ');
                t++; /*move past the '='*/
            }
            if (ISVALID(k) && t != NULL) {
                am_xml_parser_ctx_t f;
                size_t l = strlen(t);
                f.conf = ctx->conf;
                f.depth = ctx->depth;
                f.setting_value = ctx->setting_value;
                f.rgx = ctx->rgx;
                f.parser = ctx->parser;
                f.log_enable = ctx->log_enable;
                memcpy(f.current_name, k, sizeof (k));
                parse_other_options(&f, t, (int) l);
            }
            free(v);
        }
    } else {
        parse_other_options(ctx, val, len);
    }
}
Exemplo n.º 7
0
static void parse_other_options(am_xml_parser_ctx_t *ctx, const char *val, int len) {
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_AGENT_URI, ctx->conf->agenturi, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_COOKIE_NAME, ctx->conf->cookie_name, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_LOGIN_URL_MAP, ctx->conf->login_url_sz, ctx->conf->login_url, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_COOKIE_SECURE, ctx->conf->cookie_secure, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_NOTIF_ENABLE, ctx->conf->notif_enable, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_NOTIF_URL, ctx->conf->notif_url, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_CMP_CASE_IGNORE, ctx->conf->url_eval_case_ignore, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_POLICY_CACHE_VALID, ctx->conf->policy_cache_valid, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_TOKEN_CACHE_VALID, ctx->conf->token_cache_valid, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_UID_PARAM, ctx->conf->userid_param, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_UID_PARAM_TYPE, ctx->conf->userid_param_type, val, len);

    PARSE_ATTR_FETCH_MODE(ctx, AM_AGENTS_CONFIG_ATTR_PROFILE_MODE, ctx->conf->profile_attr_fetch, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_ATTR_PROFILE_MAP, ctx->conf->profile_attr_map_sz, ctx->conf->profile_attr_map, val, len);
    PARSE_ATTR_FETCH_MODE(ctx, AM_AGENTS_CONFIG_ATTR_SESSION_MODE, ctx->conf->session_attr_fetch, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_ATTR_SESSION_MAP, ctx->conf->session_attr_map_sz, ctx->conf->session_attr_map, val, len);
    PARSE_ATTR_FETCH_MODE(ctx, AM_AGENTS_CONFIG_ATTR_RESPONSE_MODE, ctx->conf->response_attr_fetch, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_ATTR_RESPONSE_MAP, ctx->conf->response_attr_map_sz, ctx->conf->response_attr_map, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_LB_ENABLE, ctx->conf->lb_enable, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_SSO_ONLY, ctx->conf->sso_only, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_ACCESS_DENIED_URL, ctx->conf->access_denied_url, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_FQDN_CHECK_ENABLE, ctx->conf->fqdn_check_enable, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_FQDN_DEFAULT, ctx->conf->fqdn_default, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_FQDN_MAP, ctx->conf->fqdn_map_sz, ctx->conf->fqdn_map, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_COOKIE_RESET_ENABLE, ctx->conf->cookie_reset_enable, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_COOKIE_RESET_MAP, ctx->conf->cookie_reset_map_sz, ctx->conf->cookie_reset_map, val, len);

    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_NOT_ENFORCED_URL, ctx->conf->not_enforced_map_sz, ctx->conf->not_enforced_map, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_NOT_ENFORCED_INVERT, ctx->conf->not_enforced_invert, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_NOT_ENFORCED_ATTR, ctx->conf->not_enforced_fetch_attr, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_NOT_ENFORCED_IP, ctx->conf->not_enforced_ip_map_sz, ctx->conf->not_enforced_ip_map, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_PDP_ENABLE, ctx->conf->pdp_enable, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_PDP_VALID, ctx->conf->pdp_cache_valid, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_PDP_COOKIE, ctx->conf->pdp_lb_cookie, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_CLIENT_IP_VALIDATE, ctx->conf->client_ip_validate, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_ATTR_COOKIE_PREFIX, ctx->conf->cookie_prefix, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_ATTR_COOKIE_MAX_AGE, ctx->conf->cookie_maxage, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_CDSSO_ENABLE, ctx->conf->cdsso_enable, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_CDSSO_LOGIN, ctx->conf->cdsso_login_map_sz, ctx->conf->cdsso_login_map, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_CDSSO_DOMAIN, ctx->conf->cdsso_cookie_domain_map_sz, ctx->conf->cdsso_cookie_domain_map, val, len);

    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_LOGOUT_URL, ctx->conf->openam_logout_map_sz, ctx->conf->openam_logout_map, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_APP_LOGOUT_URL, ctx->conf->logout_map_sz, ctx->conf->logout_map, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_LOGOUT_REDIRECT_URL, ctx->conf->logout_redirect_url, val, len);
    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_LOGOUT_COOKIE_RESET, ctx->conf->logout_cookie_reset_map_sz, ctx->conf->logout_cookie_reset_map, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_POLICY_SCOPE, ctx->conf->policy_scope_subtree, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_RESOLVE_CLIENT_HOST, ctx->conf->resolve_client_host, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_POLICY_ENCODE_SPECIAL_CHAR, ctx->conf->policy_eval_encode_chars, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_COOKIE_ENCODE_SPECIAL_CHAR, ctx->conf->cookie_encode_chars, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_OVERRIDE_PROTO, ctx->conf->override_protocol, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_OVERRIDE_HOST, ctx->conf->override_host, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_OVERRIDE_PORT, ctx->conf->override_port, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_OVERRIDE_NOTIFICATION_URL, ctx->conf->override_notif_url, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_VALID, ctx->conf->config_valid, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_PASSWORD_REPLAY_KEY, ctx->conf->password_replay_key, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_POLICY_CLOCK_SKEW, ctx->conf->policy_clock_skew, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_GOTO_PARAM_NAME, ctx->conf->url_redirect_param, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_CACHE_CONTROL_ENABLE, ctx->conf->cache_control_enable, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_USE_REDIRECT_ADVICE, ctx->conf->use_redirect_for_advice, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CLIENT_IP_HEADER, ctx->conf->client_ip_header, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_CLIENT_HOSTNAME_HEADER, ctx->conf->client_hostname_header, val, len);

    PARSE_STRING(ctx, AM_AGENTS_CONFIG_INVALID_URL, ctx->conf->url_check_regex, val, len);

    PARSE_STRING_MAP(ctx, AM_AGENTS_CONFIG_CONDITIONAL_LOGIN_URL, ctx->conf->cond_login_url_sz, ctx->conf->cond_login_url, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_COOKIE_HTTP_ONLY, ctx->conf->cookie_http_only, val, len);
    PARSE_STRING(ctx, AM_AGENTS_CONFIG_MULTI_VALUE_SEPARATOR, ctx->conf->multi_attr_separator, val, len);

    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_IIS_LOGON_USER, ctx->conf->logon_user_enable, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_IIS_PASSWORD_HEADER, ctx->conf->password_header_enable, val, len);
    PARSE_NUMBER(ctx, AM_AGENTS_CONFIG_PDP_JS_REPOST, ctx->conf->pdp_js_repost, val, len);
}