MCPcopy Create free account
hub / github.com/apache/httpd / md_from_json

Function md_from_json

modules/md/md_core.c:330–399  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

328}
329
330md_t *md_from_json(md_json_t *json, apr_pool_t *p)
331{
332 const char *s;
333 md_t *md = md_create_empty(p);
334 if (md) {
335 md->name = md_json_dups(p, json, MD_KEY_NAME, NULL);
336 md_json_dupsa(md->domains, p, json, MD_KEY_DOMAINS, NULL);
337 md_json_dupsa(md->contacts, p, json, MD_KEY_CONTACTS, NULL);
338 md->ca_account = md_json_dups(p, json, MD_KEY_CA, MD_KEY_ACCOUNT, NULL);
339 md->ca_proto = md_json_dups(p, json, MD_KEY_CA, MD_KEY_PROTO, NULL);
340 md->ca_effective = md_json_dups(p, json, MD_KEY_CA, MD_KEY_URL, NULL);
341 if (md_json_has_key(json, MD_KEY_CA, MD_KEY_URLS, NULL)) {
342 md->ca_urls = apr_array_make(p, 5, sizeof(const char*));
343 md_json_dupsa(md->ca_urls, p, json, MD_KEY_CA, MD_KEY_URLS, NULL);
344 }
345 else if (md->ca_effective) {
346 /* compat for old format where we had only a single url */
347 md->ca_urls = apr_array_make(p, 5, sizeof(const char*));
348 APR_ARRAY_PUSH(md->ca_urls, const char*) = md->ca_effective;
349 }
350 md->ca_agreement = md_json_dups(p, json, MD_KEY_CA, MD_KEY_AGREEMENT, NULL);
351 if (md_json_has_key(json, MD_KEY_PKEY, NULL)) {
352 md->pks = md_pkeys_spec_from_json(md_json_getj(json, MD_KEY_PKEY, NULL), p);
353 }
354 md->state = (md_state_t)md_json_getl(json, MD_KEY_STATE, NULL);
355 md->state_descr = md_json_dups(p, json, MD_KEY_STATE_DESCR, NULL);
356 if (MD_S_EXPIRED_DEPRECATED == md->state) md->state = MD_S_COMPLETE;
357 md->renew_mode = (int)md_json_getl(json, MD_KEY_RENEW_MODE, NULL);
358 md->domains = md_array_str_compact(p, md->domains, 0);
359 md->transitive = (int)md_json_getl(json, MD_KEY_TRANSITIVE, NULL);
360 s = md_json_gets(json, MD_KEY_RENEW_WINDOW, NULL);
361 md_timeslice_parse(&md->renew_window, p, s, MD_TIME_LIFE_NORM);
362 s = md_json_gets(json, MD_KEY_WARN_WINDOW, NULL);
363 md_timeslice_parse(&md->warn_window, p, s, MD_TIME_LIFE_NORM);
364 if (md_json_has_key(json, MD_KEY_CA, MD_KEY_CHALLENGES, NULL)) {
365 md->ca_challenges = apr_array_make(p, 5, sizeof(const char*));
366 md_json_dupsa(md->ca_challenges, p, json, MD_KEY_CA, MD_KEY_CHALLENGES, NULL);
367 }
368 md->require_https = MD_REQUIRE_OFF;
369 s = md_json_gets(json, MD_KEY_REQUIRE_HTTPS, NULL);
370 if (s && !strcmp(MD_KEY_TEMPORARY, s)) {
371 md->require_https = MD_REQUIRE_TEMPORARY;
372 }
373 else if (s && !strcmp(MD_KEY_PERMANENT, s)) {
374 md->require_https = MD_REQUIRE_PERMANENT;
375 }
376 md->must_staple = (int)md_json_getb(json, MD_KEY_MUST_STAPLE, NULL);
377 md_json_dupsa(md->acme_tls_1_domains, p, json, MD_KEY_PROTO, MD_KEY_ACME_TLS_1, NULL);
378
379 if (md_json_has_key(json, MD_KEY_CERT_FILES, NULL)) {
380 md->cert_files = apr_array_make(p, 3, sizeof(char*));
381 md->pkey_files = apr_array_make(p, 3, sizeof(char*));
382 md_json_dupsa(md->cert_files, p, json, MD_KEY_CERT_FILES, NULL);
383 md_json_dupsa(md->pkey_files, p, json, MD_KEY_PKEY_FILES, NULL);
384 }
385 md->stapling = (int)md_json_getb(json, MD_KEY_STAPLING, NULL);
386 md->dns01_cmd = md_json_dups(p, json, MD_KEY_CMD_DNS01, NULL);
387 if (md_json_has_key(json, MD_KEY_EAB, NULL)) {

Callers 2

md_loadFunction · 0.85
insp_mdFunction · 0.85

Calls 11

md_create_emptyFunction · 0.85
md_json_dupsFunction · 0.85
md_json_dupsaFunction · 0.85
md_json_has_keyFunction · 0.85
md_pkeys_spec_from_jsonFunction · 0.85
md_json_getjFunction · 0.85
md_json_getlFunction · 0.85
md_array_str_compactFunction · 0.85
md_json_getsFunction · 0.85
md_timeslice_parseFunction · 0.85
md_json_getbFunction · 0.85

Tested by

no test coverage detected