Apache2
md_util.h File Reference
#include <stdio.h>
#include <apr_file_io.h>
Include dependency graph for md_util.h:

Go to the source code of this file.

Data Structures

struct  md_data_t
 

Typedefs

typedef apr_status_t md_util_action(void *baton, apr_pool_t *p, apr_pool_t *ptemp)
 
typedef apr_status_t md_util_vaction(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
 
typedef void md_data_free_fn(void *data)
 
typedef struct md_data_t md_data_t
 
typedef apr_status_t md_util_file_cb(void *baton, struct apr_file_t *f, apr_pool_t *p)
 
typedef apr_status_t md_util_fdo_cb(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
 
typedef apr_status_t md_util_try_fn(void *baton, int i)
 

Functions

apr_status_t md_util_pool_do (md_util_action *cb, void *baton, apr_pool_t *p)
 
apr_status_t md_util_pool_vdo (md_util_vaction *cb, void *baton, apr_pool_t *p,...)
 
void md_data_null (md_data_t *d)
 
md_data_tmd_data_pmake (apr_size_t len, apr_pool_t *p)
 
void md_data_pinit (md_data_t *d, apr_size_t len, apr_pool_t *p)
 
void md_data_init (md_data_t *d, const char *data, apr_size_t len)
 
void md_data_init_str (md_data_t *d, const char *str)
 
void md_data_clear (md_data_t *d)
 
md_data_tmd_data_make_pcopy (apr_pool_t *p, const char *data, apr_size_t len)
 
apr_status_t md_data_assign_copy (md_data_t *dest, const char *src, apr_size_t src_len)
 
void md_data_assign_pcopy (md_data_t *dest, const char *src, apr_size_t src_len, apr_pool_t *p)
 
apr_status_t md_data_to_hex (const char **phex, char separator, apr_pool_t *p, const md_data_t *data)
 
int md_array_remove (struct apr_array_header_t *a, void *elem)
 
int md_array_remove_at (struct apr_array_header_t *a, int idx)
 
char * md_util_str_tolower (char *s)
 
int md_array_is_empty (const struct apr_array_header_t *array)
 
int md_array_str_index (const struct apr_array_header_t *array, const char *s, int start, int case_sensitive)
 
int md_array_str_eq (const struct apr_array_header_t *a1, const struct apr_array_header_t *a2, int case_sensitive)
 
struct apr_array_header_tmd_array_str_clone (apr_pool_t *p, struct apr_array_header_t *array)
 
struct apr_array_header_tmd_array_str_compact (apr_pool_t *p, struct apr_array_header_t *src, int case_sensitive)
 
struct apr_array_header_tmd_array_str_remove (apr_pool_t *p, struct apr_array_header_t *src, const char *exclude, int case_sensitive)
 
int md_array_str_add_missing (struct apr_array_header_t *dest, struct apr_array_header_t *src, int case_sensitive)
 
apr_status_t md_util_exec (apr_pool_t *p, const char *cmd, const char *const *argv, int *exit_code)
 
int md_dns_is_name (apr_pool_t *p, const char *domain, int need_fqdn)
 
int md_dns_is_wildcard (apr_pool_t *p, const char *domain)
 
int md_dns_matches (const char *pattern, const char *domain)
 
struct apr_array_header_tmd_dns_make_minimal (apr_pool_t *p, struct apr_array_header_t *domains)
 
int md_dns_domains_match (const apr_array_header_t *domains, const char *name)
 
int md_is_wild_match (const apr_array_header_t *domains, const char *name)
 
apr_status_t md_util_fopen (FILE **pf, const char *fn, const char *mode)
 
apr_status_t md_util_fcreatex (struct apr_file_t **pf, const char *fn, apr_fileperms_t perms, apr_pool_t *p)
 
apr_status_t md_util_path_merge (const char **ppath, apr_pool_t *p,...)
 
apr_status_t md_util_is_dir (const char *path, apr_pool_t *pool)
 
apr_status_t md_util_is_file (const char *path, apr_pool_t *pool)
 
apr_status_t md_util_is_unix_socket (const char *path, apr_pool_t *pool)
 
int md_file_exists (const char *fname, apr_pool_t *p)
 
apr_status_t md_util_freplace (const char *fpath, apr_fileperms_t perms, apr_pool_t *p, md_util_file_cb *write, void *baton)
 
apr_status_t md_util_rm_recursive (const char *fpath, apr_pool_t *p, int max_level)
 
apr_status_t md_util_files_do (md_util_fdo_cb *cb, void *baton, apr_pool_t *p, const char *path,...)
 
apr_status_t md_util_tree_do (md_util_fdo_cb *cb, void *baton, apr_pool_t *p, const char *path, int follow_links)
 
apr_status_t md_util_ftree_remove (const char *path, apr_pool_t *p)
 
apr_status_t md_text_fread8k (const char **ptext, apr_pool_t *p, const char *fpath)
 
apr_status_t md_text_fcreatex (const char *fpath, apr_fileperms_t perms, apr_pool_t *p, const char *text)
 
apr_status_t md_text_freplace (const char *fpath, apr_fileperms_t perms, apr_pool_t *p, const char *text)
 
const char * md_util_base64url_encode (const md_data_t *data, apr_pool_t *pool)
 
apr_size_t md_util_base64url_decode (md_data_t *decoded, const char *encoded, apr_pool_t *pool)
 
const char * md_util_schemify (apr_pool_t *p, const char *s, const char *def_scheme)
 
apr_status_t md_util_abs_uri_check (apr_pool_t *p, const char *s, const char **perr)
 
apr_status_t md_util_abs_http_uri_check (apr_pool_t *p, const char *uri, const char **perr)
 
const char * md_link_find_relation (const struct apr_table_t *headers, apr_pool_t *pool, const char *relation)
 
const char * md_util_parse_ct (apr_pool_t *pool, const char *cth)
 
apr_status_t md_util_try (md_util_try_fn *fn, void *baton, int ignore_errs, apr_interval_time_t timeout, apr_interval_time_t start_delay, apr_interval_time_t max_delay, int backoff)
 

Typedef Documentation

◆ md_data_free_fn

typedef void md_data_free_fn(void *data)

◆ md_data_t

typedef struct md_data_t md_data_t

◆ md_util_action

typedef apr_status_t md_util_action(void *baton, apr_pool_t *p, apr_pool_t *ptemp)

◆ md_util_fdo_cb

typedef apr_status_t md_util_fdo_cb(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)

◆ md_util_file_cb

typedef apr_status_t md_util_file_cb(void *baton, struct apr_file_t *f, apr_pool_t *p)

◆ md_util_try_fn

typedef apr_status_t md_util_try_fn(void *baton, int i)

◆ md_util_vaction

typedef apr_status_t md_util_vaction(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)

Function Documentation

◆ md_array_is_empty()

int md_array_is_empty ( const struct apr_array_header_t array)

Return != 0 iff array is either NULL or empty

◆ md_array_remove()

int md_array_remove ( struct apr_array_header_t a,
void *  elem 
)

In an array of pointers, remove all entries == elem. Returns the number of entries removed.

◆ md_array_remove_at()

int md_array_remove_at ( struct apr_array_header_t a,
int  idx 
)

◆ md_array_str_add_missing()

int md_array_str_add_missing ( struct apr_array_header_t dest,
struct apr_array_header_t src,
int  case_sensitive 
)

◆ md_array_str_clone()

struct apr_array_header_t* md_array_str_clone ( apr_pool_t p,
struct apr_array_header_t array 
)

◆ md_array_str_compact()

struct apr_array_header_t* md_array_str_compact ( apr_pool_t p,
struct apr_array_header_t src,
int  case_sensitive 
)

Create a new array with duplicates removed.

◆ md_array_str_eq()

int md_array_str_eq ( const struct apr_array_header_t a1,
const struct apr_array_header_t a2,
int  case_sensitive 
)

◆ md_array_str_index()

int md_array_str_index ( const struct apr_array_header_t array,
const char *  s,
int  start,
int  case_sensitive 
)

◆ md_array_str_remove()

struct apr_array_header_t* md_array_str_remove ( apr_pool_t p,
struct apr_array_header_t src,
const char *  exclude,
int  case_sensitive 
)

Create a new array with all occurrences of <exclude> removed.

◆ md_data_assign_copy()

apr_status_t md_data_assign_copy ( md_data_t dest,
const char *  src,
apr_size_t  src_len 
)

◆ md_data_assign_pcopy()

void md_data_assign_pcopy ( md_data_t dest,
const char *  src,
apr_size_t  src_len,
apr_pool_t p 
)

◆ md_data_clear()

void md_data_clear ( md_data_t d)

Free any present data and clear (NULL) it. Passing NULL is permitted.

◆ md_data_init()

void md_data_init ( md_data_t d,
const char *  data,
apr_size_t  len 
)

Initialize md_data_t 'd', by borrowing 'len' bytes in data without copying. d will not take ownership.

◆ md_data_init_str()

void md_data_init_str ( md_data_t d,
const char *  str 
)

Initialize md_data_t 'd', by borrowing the NUL-terminated str. d will not take ownership.

◆ md_data_make_pcopy()

md_data_t* md_data_make_pcopy ( apr_pool_t p,
const char *  data,
apr_size_t  len 
)

◆ md_data_null()

void md_data_null ( md_data_t d)

Init the data to empty, overwriting any content.

◆ md_data_pinit()

void md_data_pinit ( md_data_t d,
apr_size_t  len,
apr_pool_t p 
)

Initialize md_data_t 'd', providing len bytes allocated from pool p.

◆ md_data_pmake()

md_data_t* md_data_pmake ( apr_size_t  len,
apr_pool_t p 
)

Create a new md_data_t, providing len bytes allocated from pool p.

◆ md_data_to_hex()

apr_status_t md_data_to_hex ( const char **  phex,
char  separator,
apr_pool_t p,
const md_data_t data 
)

◆ md_dns_domains_match()

int md_dns_domains_match ( const apr_array_header_t domains,
const char *  name 
)

Determine if the given domains cover the name, including wildcard matching.

Returns
!= 0 iff name is matched by list of domains

◆ md_dns_is_name()

int md_dns_is_name ( apr_pool_t p,
const char *  domain,
int  need_fqdn 
)

Is a host/domain name using allowed characters. Not a wildcard.

Parameters
domainname to check
need_fqdniff != 0, check that domain contains '.'
Returns
!= 0 iff domain looks like a non-wildcard, legal DNS domain name.

◆ md_dns_is_wildcard()

int md_dns_is_wildcard ( apr_pool_t p,
const char *  domain 
)

Check if the given domain is a valid wildcard DNS name, e.g. *.example.org

Parameters
domainname to check
Returns
!= 0 iff domain is a DNS wildcard.

◆ md_dns_make_minimal()

struct apr_array_header_t* md_dns_make_minimal ( apr_pool_t p,
struct apr_array_header_t domains 
)

Create a new array with the minimal set out of the given domain names that match all of them. If none of the domains is a wildcard, only duplicates are removed. If domains contain a wildcard, any name matching the wildcard will be removed.

◆ md_dns_matches()

int md_dns_matches ( const char *  pattern,
const char *  domain 
)

Determine iff pattern matches domain, including case-ignore and wildcard domains. It is assumed that both names follow dns syntax.

Returns
!= 0 iff pattern matches domain

◆ md_file_exists()

int md_file_exists ( const char *  fname,
apr_pool_t p 
)

◆ md_is_wild_match()

int md_is_wild_match ( const apr_array_header_t domains,
const char *  name 
)
Returns
!= 0 iff name is matched by a wildcard pattern in domains

◆ md_link_find_relation()

const char* md_link_find_relation ( const struct apr_table_t headers,
apr_pool_t pool,
const char *  relation 
)

◆ md_text_fcreatex()

apr_status_t md_text_fcreatex ( const char *  fpath,
apr_fileperms_t  perms,
apr_pool_t p,
const char *  text 
)

◆ md_text_fread8k()

apr_status_t md_text_fread8k ( const char **  ptext,
apr_pool_t p,
const char *  fpath 
)

◆ md_text_freplace()

apr_status_t md_text_freplace ( const char *  fpath,
apr_fileperms_t  perms,
apr_pool_t p,
const char *  text 
)

◆ md_util_abs_http_uri_check()

apr_status_t md_util_abs_http_uri_check ( apr_pool_t p,
const char *  uri,
const char **  perr 
)

◆ md_util_abs_uri_check()

apr_status_t md_util_abs_uri_check ( apr_pool_t p,
const char *  s,
const char **  perr 
)

◆ md_util_base64url_decode()

apr_size_t md_util_base64url_decode ( md_data_t decoded,
const char *  encoded,
apr_pool_t pool 
)

◆ md_util_base64url_encode()

const char* md_util_base64url_encode ( const md_data_t data,
apr_pool_t pool 
)

◆ md_util_exec()

apr_status_t md_util_exec ( apr_pool_t p,
const char *  cmd,
const char *const *  argv,
int exit_code 
)

◆ md_util_fcreatex()

apr_status_t md_util_fcreatex ( struct apr_file_t **  pf,
const char *  fn,
apr_fileperms_t  perms,
apr_pool_t p 
)

◆ md_util_files_do()

apr_status_t md_util_files_do ( md_util_fdo_cb cb,
void *  baton,
apr_pool_t p,
const char *  path,
  ... 
)

◆ md_util_fopen()

apr_status_t md_util_fopen ( FILE **  pf,
const char *  fn,
const char *  mode 
)

◆ md_util_freplace()

apr_status_t md_util_freplace ( const char *  fpath,
apr_fileperms_t  perms,
apr_pool_t p,
md_util_file_cb write,
void *  baton 
)

◆ md_util_ftree_remove()

apr_status_t md_util_ftree_remove ( const char *  path,
apr_pool_t p 
)

◆ md_util_is_dir()

apr_status_t md_util_is_dir ( const char *  path,
apr_pool_t pool 
)

◆ md_util_is_file()

apr_status_t md_util_is_file ( const char *  path,
apr_pool_t pool 
)

◆ md_util_is_unix_socket()

apr_status_t md_util_is_unix_socket ( const char *  path,
apr_pool_t pool 
)

◆ md_util_parse_ct()

const char* md_util_parse_ct ( apr_pool_t pool,
const char *  cth 
)

◆ md_util_path_merge()

apr_status_t md_util_path_merge ( const char **  ppath,
apr_pool_t p,
  ... 
)

◆ md_util_pool_do()

apr_status_t md_util_pool_do ( md_util_action cb,
void *  baton,
apr_pool_t p 
)

◆ md_util_pool_vdo()

apr_status_t md_util_pool_vdo ( md_util_vaction cb,
void *  baton,
apr_pool_t p,
  ... 
)

◆ md_util_rm_recursive()

apr_status_t md_util_rm_recursive ( const char *  fpath,
apr_pool_t p,
int  max_level 
)

Remove a file/directory and all files/directories contain up to max_level. If max_level == 0, only an empty directory or a file can be removed.

◆ md_util_schemify()

const char* md_util_schemify ( apr_pool_t p,
const char *  s,
const char *  def_scheme 
)

◆ md_util_str_tolower()

char* md_util_str_tolower ( char *  s)

◆ md_util_tree_do()

apr_status_t md_util_tree_do ( md_util_fdo_cb cb,
void *  baton,
apr_pool_t p,
const char *  path,
int  follow_links 
)

Depth first traversal of directory tree starting at path.

◆ md_util_try()

apr_status_t md_util_try ( md_util_try_fn fn,
void *  baton,
int  ignore_errs,
apr_interval_time_t  timeout,
apr_interval_time_t  start_delay,
apr_interval_time_t  max_delay,
int  backoff 
)