Apache HTTPD
Classes | Macros | Functions | Variables
mod_md.c File Reference
module md_module
#include <assert.h>
#include <apr_optional.h>
#include <apr_strings.h>
#include <mpm_common.h>
#include <httpd.h>
#include <http_core.h>
#include <http_protocol.h>
#include <http_request.h>
#include <http_ssl.h>
#include <http_log.h>
#include <http_vhost.h>
#include <ap_listen.h>
#include "mod_status.h"
#include "md.h"
#include "md_curl.h"
#include "md_crypt.h"
#include "md_event.h"
#include "md_http.h"
#include "md_json.h"
#include "md_store.h"
#include "md_store_fs.h"
#include "md_log.h"
#include "md_ocsp.h"
#include "md_result.h"
#include "md_reg.h"
#include "md_status.h"
#include "md_util.h"
#include "md_version.h"
#include "md_acme.h"
#include "md_acme_authz.h"
#include "mod_md.h"
#include "mod_md_config.h"
#include "mod_md_drive.h"
#include "mod_md_ocsp.h"
#include "mod_md_os.h"
#include "mod_md_status.h"

Go to the source code of this file.

Classes

struct  notify_rate
 
struct  md_conn_ctx
 

Macros

#define LOG_BUF_LEN   16*1024
 
#define WELL_KNOWN_PREFIX   "/.well-known/"
 
#define ACME_CHALLENGE_PREFIX   WELL_KNOWN_PREFIX"acme-challenge/"
 

Functions

static void md_hooks (apr_pool_t *pool)
 
static int log_is_level (void *baton, apr_pool_t *p, md_log_level_t level)
 
static void log_print (const char *file, int line, md_log_level_t level, apr_status_t rv, void *baton, apr_pool_t *p, const char *fmt, va_list ap)
 
static void init_ssl (void)
 
static apr_status_t cleanup_setups (void *dummy)
 
static void init_setups (apr_pool_t *p, server_rec *base_server)
 
static apr_status_t notify (md_job_t *job, const char *reason, md_result_t *result, apr_pool_t *p, void *baton)
 
static apr_status_t on_event (const char *event, const char *mdomain, void *baton, md_job_t *job, md_result_t *result, apr_pool_t *p)
 
static apr_status_t store_file_ev (void *baton, struct md_store_t *store, md_store_fs_ev_t ev, unsigned int group, const char *fname, apr_filetype_e ftype, apr_pool_t *p)
 
static apr_status_t check_group_dir (md_store_t *store, md_store_group_t group, apr_pool_t *p, server_rec *s)
 
static apr_status_t setup_store (md_store_t **pstore, md_mod_conf_t *mc, apr_pool_t *p, server_rec *s)
 
static void merge_srv_config (md_t *md, md_srv_conf_t *base_sc, apr_pool_t *p)
 
static apr_status_t check_coverage (md_t *md, const char *domain, server_rec *s, int *pupdates, apr_pool_t *p)
 
static apr_status_t md_cover_server (md_t *md, server_rec *s, int *pupdates, apr_pool_t *p)
 
static int uses_port (server_rec *s, int port)
 
static apr_status_t detect_supported_protocols (md_mod_conf_t *mc, server_rec *s, apr_pool_t *p, int log_level)
 
static server_recget_public_https_server (md_t *md, const char *domain, server_rec *base_server)
 
static apr_status_t auto_add_domains (md_t *md, server_rec *base_server, apr_pool_t *p)
 
static void init_acme_tls_1_domains (md_t *md, server_rec *base_server)
 
static apr_status_t link_md_to_servers (md_mod_conf_t *mc, md_t *md, server_rec *base_server, apr_pool_t *p)
 
static apr_status_t link_mds_to_servers (md_mod_conf_t *mc, server_rec *s, apr_pool_t *p)
 
static apr_status_t merge_mds_with_conf (md_mod_conf_t *mc, apr_pool_t *p, server_rec *base_server, int log_level)
 
static apr_status_t check_invalid_duplicates (server_rec *base_server)
 
static apr_status_t check_usage (md_mod_conf_t *mc, md_t *md, server_rec *base_server, apr_pool_t *p, apr_pool_t *ptemp)
 
static int init_cert_watch_status (md_mod_conf_t *mc, apr_pool_t *p, apr_pool_t *ptemp, server_rec *s)
 
static apr_status_t md_post_config_before_ssl (apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 
static apr_status_t md_post_config_after_ssl (apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 
static const charmd_protocol_get (const conn_rec *c)
 
static int md_protocol_propose (conn_rec *c, request_rec *r, server_rec *s, const apr_array_header_t *offers, apr_array_header_t *proposals)
 
static int md_protocol_switch (conn_rec *c, request_rec *r, server_rec *s, const char *protocol)
 
static void fallback_fnames (apr_pool_t *p, md_pkey_spec_t *kspec, char **keyfn, char **certfn)
 
static apr_status_t make_fallback_cert (md_store_t *store, const md_t *md, md_pkey_spec_t *kspec, server_rec *s, apr_pool_t *p, char *keyfn, char *crtfn)
 
static apr_status_t get_certificates (server_rec *s, apr_pool_t *p, int fallback, apr_array_header_t **pcert_files, apr_array_header_t **pkey_files)
 
static int md_add_cert_files (server_rec *s, apr_pool_t *p, apr_array_header_t *cert_files, apr_array_header_t *key_files)
 
static int md_add_fallback_cert_files (server_rec *s, apr_pool_t *p, apr_array_header_t *cert_files, apr_array_header_t *key_files)
 
static int md_answer_challenge (conn_rec *c, const char *servername, const char **pcert_pem, const char **pkey_pem)
 
static int md_http_challenge_pr (request_rec *r)
 
static int md_require_https_maybe (request_rec *r)
 
static void md_child_init (apr_pool_t *pool, server_rec *s)
 

Variables

static int *const aplog_module_index = &( md_module.module_index)
 
static server_reclog_server
 
static notify_rate notify_rates []
 

Macro Definition Documentation

◆ ACME_CHALLENGE_PREFIX

#define ACME_CHALLENGE_PREFIX   WELL_KNOWN_PREFIX"acme-challenge/"

Definition at line 1349 of file mod_md.c.

◆ LOG_BUF_LEN

#define LOG_BUF_LEN   16*1024

Definition at line 88 of file mod_md.c.

◆ WELL_KNOWN_PREFIX

#define WELL_KNOWN_PREFIX   "/.well-known/"

Definition at line 1348 of file mod_md.c.

Function Documentation

◆ auto_add_domains()

static apr_status_t auto_add_domains ( md_t md,
server_rec base_server,
apr_pool_t p 
)
static

Definition at line 507 of file mod_md.c.

◆ check_coverage()

static apr_status_t check_coverage ( md_t md,
const char domain,
server_rec s,
int pupdates,
apr_pool_t p 
)
static

Definition at line 368 of file mod_md.c.

◆ check_group_dir()

static apr_status_t check_group_dir ( md_store_t store,
md_store_group_t  group,
apr_pool_t p,
server_rec s 
)
static

< Read by user

< Write by user

< Execute by user

< Read by group

< Execute by group

Definition at line 264 of file mod_md.c.

◆ check_invalid_duplicates()

static apr_status_t check_invalid_duplicates ( server_rec base_server)
static

Definition at line 730 of file mod_md.c.

◆ check_usage()

static apr_status_t check_usage ( md_mod_conf_t mc,
md_t md,
server_rec base_server,
apr_pool_t p,
apr_pool_t ptemp 
)
static

Definition at line 752 of file mod_md.c.

◆ cleanup_setups()

static apr_status_t cleanup_setups ( void *  dummy)
static

Definition at line 120 of file mod_md.c.

◆ detect_supported_protocols()

static apr_status_t detect_supported_protocols ( md_mod_conf_t mc,
server_rec s,
apr_pool_t p,
int  log_level 
)
static

Definition at line 427 of file mod_md.c.

◆ fallback_fnames()

static void fallback_fnames ( apr_pool_t p,
md_pkey_spec_t kspec,
char **  keyfn,
char **  certfn 
)
static

Definition at line 1086 of file mod_md.c.

◆ get_certificates()

static apr_status_t get_certificates ( server_rec s,
apr_pool_t p,
int  fallback,
apr_array_header_t **  pcert_files,
apr_array_header_t **  pkey_files 
)
static

Definition at line 1112 of file mod_md.c.

◆ get_public_https_server()

static server_rec * get_public_https_server ( md_t md,
const char domain,
server_rec base_server 
)
static

Definition at line 458 of file mod_md.c.

◆ init_acme_tls_1_domains()

static void init_acme_tls_1_domains ( md_t md,
server_rec base_server 
)
static

Definition at line 529 of file mod_md.c.

◆ init_cert_watch_status()

static int init_cert_watch_status ( md_mod_conf_t mc,
apr_pool_t p,
apr_pool_t ptemp,
server_rec s 
)
static

Definition at line 792 of file mod_md.c.

◆ init_setups()

static void init_setups ( apr_pool_t p,
server_rec base_server 
)
static

Definition at line 127 of file mod_md.c.

◆ init_ssl()

static void init_ssl ( void  )
static

Definition at line 112 of file mod_md.c.

◆ link_md_to_servers()

static apr_status_t link_md_to_servers ( md_mod_conf_t mc,
md_t md,
server_rec base_server,
apr_pool_t p 
)
static

Definition at line 564 of file mod_md.c.

◆ link_mds_to_servers()

static apr_status_t link_mds_to_servers ( md_mod_conf_t mc,
server_rec s,
apr_pool_t p 
)
static

Definition at line 640 of file mod_md.c.

◆ log_is_level()

static int log_is_level ( void *  baton,
apr_pool_t p,
md_log_level_t  level 
)
static

Definition at line 78 of file mod_md.c.

◆ log_print()

static void log_print ( const char file,
int  line,
md_log_level_t  level,
apr_status_t  rv,
void *  baton,
apr_pool_t p,
const char fmt,
va_list  ap 
)
static

Definition at line 90 of file mod_md.c.

◆ make_fallback_cert()

static apr_status_t make_fallback_cert ( md_store_t store,
const md_t md,
md_pkey_spec_t kspec,
server_rec s,
apr_pool_t p,
char keyfn,
char crtfn 
)
static

Definition at line 1092 of file mod_md.c.

◆ md_add_cert_files()

static int md_add_cert_files ( server_rec s,
apr_pool_t p,
apr_array_header_t cert_files,
apr_array_header_t key_files 
)
static

< Module has served the response completely * - it's safe to die() with no more output

< Module declines to handle

Definition at line 1237 of file mod_md.c.

◆ md_add_fallback_cert_files()

static int md_add_fallback_cert_files ( server_rec s,
apr_pool_t p,
apr_array_header_t cert_files,
apr_array_header_t key_files 
)
static

< Module has served the response completely * - it's safe to die() with no more output

< Module declines to handle

Definition at line 1269 of file mod_md.c.

◆ md_answer_challenge()

static int md_answer_challenge ( conn_rec c,
const char servername,
const char **  pcert_pem,
const char **  pkey_pem 
)
static

< Module declines to handle

< Module has handled this stage.

< Module declines to handle

Definition at line 1288 of file mod_md.c.

◆ md_child_init()

static void md_child_init ( apr_pool_t pool,
server_rec s 
)
static

Definition at line 1496 of file mod_md.c.

◆ md_cover_server()

static apr_status_t md_cover_server ( md_t md,
server_rec s,
int pupdates,
apr_pool_t p 
)
static

Definition at line 389 of file mod_md.c.

◆ md_hooks()

static void md_hooks ( apr_pool_t pool)
static

Definition at line 1504 of file mod_md.c.

◆ md_http_challenge_pr()

static int md_http_challenge_pr ( request_rec r)
static

< Module declines to handle

RFC 2616: HTTP

< Module has served the response completely * - it's safe to die() with no more output

< Module declines to handle

< Module declines to handle

Definition at line 1351 of file mod_md.c.

◆ md_post_config_after_ssl()

static apr_status_t md_post_config_after_ssl ( apr_pool_t p,
apr_pool_t plog,
apr_pool_t ptemp,
server_rec s 
)
static

Definition at line 952 of file mod_md.c.

◆ md_post_config_before_ssl()

static apr_status_t md_post_config_before_ssl ( apr_pool_t p,
apr_pool_t plog,
apr_pool_t ptemp,
server_rec s 
)
static

Definition at line 838 of file mod_md.c.

◆ md_protocol_get()

static const char * md_protocol_get ( const conn_rec c)
static

Definition at line 1036 of file mod_md.c.

◆ md_protocol_propose()

static int md_protocol_propose ( conn_rec c,
request_rec r,
server_rec s,
const apr_array_header_t offers,
apr_array_header_t proposals 
)
static

< Module has handled this stage.

< Module declines to handle

Definition at line 1047 of file mod_md.c.

◆ md_protocol_switch()

static int md_protocol_switch ( conn_rec c,
request_rec r,
server_rec s,
const char protocol 
)
static

< Module has handled this stage.

< Module declines to handle

Definition at line 1063 of file mod_md.c.

◆ md_require_https_maybe()

static int md_require_https_maybe ( request_rec r)
static

RFC 2616: HTTP

< Module declines to handle

Definition at line 1431 of file mod_md.c.

◆ merge_mds_with_conf()

static apr_status_t merge_mds_with_conf ( md_mod_conf_t mc,
apr_pool_t p,
server_rec base_server,
int  log_level 
)
static

Definition at line 657 of file mod_md.c.

◆ merge_srv_config()

static void merge_srv_config ( md_t md,
md_srv_conf_t base_sc,
apr_pool_t p 
)
static

Definition at line 308 of file mod_md.c.

◆ notify()

static apr_status_t notify ( md_job_t job,
const char reason,
md_result_t result,
apr_pool_t p,
void *  baton 
)
static

Definition at line 151 of file mod_md.c.

◆ on_event()

static apr_status_t on_event ( const char event,
const char mdomain,
void *  baton,
md_job_t job,
md_result_t result,
apr_pool_t p 
)
static

Definition at line 222 of file mod_md.c.

◆ setup_store()

static apr_status_t setup_store ( md_store_t **  pstore,
md_mod_conf_t mc,
apr_pool_t p,
server_rec s 
)
static

Definition at line 277 of file mod_md.c.

◆ store_file_ev()

static apr_status_t store_file_ev ( void *  baton,
struct md_store_t store,
md_store_fs_ev_t  ev,
unsigned int  group,
const char fname,
apr_filetype_e  ftype,
apr_pool_t p 
)
static

Definition at line 232 of file mod_md.c.

◆ uses_port()

static int uses_port ( server_rec s,
int  port 
)
static

Definition at line 410 of file mod_md.c.

Variable Documentation

◆ aplog_module_index

int* const aplog_module_index = &( md_module.module_index)
static

Definition at line 60 of file mod_md.c.

◆ log_server

server_rec* log_server
static

Definition at line 76 of file mod_md.c.

◆ notify_rates

notify_rate notify_rates[]
static
Initial value:
= {
{ "renewing", ((apr_time_t)( (60*60) ) * APR_INT64_C( 1000000 ) ) },
{ "renewed", ((apr_time_t)( (24* (60*60) ) ) * APR_INT64_C( 1000000 ) ) },
{ "installed", ((apr_time_t)( (24* (60*60) ) ) * APR_INT64_C( 1000000 ) ) },
{ "expiring", ((apr_time_t)( (24* (60*60) ) ) * APR_INT64_C( 1000000 ) ) },
{ "errored", ((apr_time_t)( (60*60) ) * APR_INT64_C( 1000000 ) ) },
{ "ocsp-renewed", ((apr_time_t)( (24* (60*60) ) ) * APR_INT64_C( 1000000 ) ) },
{ "ocsp-errored", ((apr_time_t)( (60*60) ) * APR_INT64_C( 1000000 ) ) },
}
apr_size_t size
apr_int64_t apr_time_t
Definition apr_time.h:45

Definition at line 141 of file mod_md.c.