41#define MD_STORE_VERSION 3
42#define MD_FS_LOCK_NAME "store.lock"
68#define FS_STORE(store) (md_store_fs_t*)(((char*)store)-offsetof(md_store_fs_t, s))
69#define FS_STORE_JSON "md_store.json"
70#define FS_STORE_KLEN 48
73 const char *
name,
const char *aspect,
76 const char *
name,
const char *aspect,
79 const char *
name,
const char *aspect,
85 const char *
name,
const char *aspect);
99 const char *
name,
const char *aspect,
133 const char *
dir,
const char *
name,
136 const char *from, *
to;
151 const char *
dir,
const char *
name,
330 "store directory does not exist, creating %s", s_fs->
base);
341 "not a plain directory, maybe a symlink? %s", s_fs->
base);
398 const char *
name,
const char *aspect,
465 "loading type %d from %s", vtype,
fpath);
717 const char *
name,
const char *aspect,
725 const char *
name,
const char *aspect,
734 const char *
name,
const char *aspect,
841 ctx.inspect = inspect;
871 ctx.inspect = inspect;
922 const char *
name,
const char *aspect)
1025 "while looking for an available one in %s to archive the data "
1026 "from %s. Either something is generally wrong or you need to "
1076 const char *from, *
to;
1125 "acquire global lock: %s",
lpath);
1132 "unable to create/open lock file: %s",
1142 "unable to obtain lock on: %s",
1154 "acquire global lock: %s",
lpath);
APR general purpose library routines.
apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm, apr_pool_t *pool)
request_rec int int apr_table_t const char * path
ap_vhost_iterate_conn_cb void * baton
#define APR_STATUS_IS_EEXIST(s)
#define APR_STATUS_IS_ENOTIMPL(s)
#define APR_STATUS_IS_ENOENT(s)
apr_brigade_flush void * ctx
apr_datum_t apr_datum_t * pvalue
apr_int32_t apr_fileperms_t
const char apr_fileperms_t perms
void const char apr_status_t(* cleanup)(void *))
#define APR_FLOCK_NONBLOCK
#define APR_FLOCK_EXCLUSIVE
apr_vformatter_buff_t const char va_list ap
#define apr_pcalloc(p, size)
#define APR_ARRAY_PUSH(ary, type)
#define apr_time_from_msec(msec)
apr_status_t md_chain_fload(apr_array_header_t **pcerts, apr_pool_t *p, const char *fname)
apr_status_t md_rand_bytes(unsigned char *buf, apr_size_t len, apr_pool_t *p)
apr_status_t md_cert_fload(md_cert_t **pcert, apr_pool_t *p, const char *fname)
apr_status_t md_chain_fsave(apr_array_header_t *certs, apr_pool_t *p, const char *fname, apr_fileperms_t perms)
apr_status_t md_pkey_fsave(md_pkey_t *pkey, apr_pool_t *p, const char *pass_phrase, apr_size_t pass_len, const char *fname, apr_fileperms_t perms)
apr_status_t md_cert_fsave(md_cert_t *cert, apr_pool_t *p, const char *fname, apr_fileperms_t perms)
apr_status_t md_pkey_fload(md_pkey_t **ppkey, apr_pool_t *p, const char *key, apr_size_t key_len, const char *fname)
md_json_t * md_json_create(apr_pool_t *pool)
double md_json_getn(const md_json_t *json,...)
apr_status_t md_json_sets(const char *value, md_json_t *json,...)
apr_status_t md_json_setn(double value, md_json_t *json,...)
apr_status_t md_json_freplace(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt, const char *fpath, apr_fileperms_t perms)
apr_status_t md_json_readf(md_json_t **pjson, apr_pool_t *p, const char *fpath)
apr_status_t md_json_fcreatex(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt, const char *fpath, apr_fileperms_t perms)
apr_status_t md_json_del(md_json_t *json,...)
const char * md_json_dups(apr_pool_t *p, const md_json_t *json,...)
void md_log_perror(const char *file, int line, md_log_level_t level, apr_status_t rv, apr_pool_t *p, const char *fmt,...)
const char * md_store_group_name(unsigned int group)
int md_store_inspect(void *baton, const char *name, const char *aspect, md_store_vtype_t vtype, void *value, apr_pool_t *ptemp)
static apr_status_t insp_name(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_time_t fs_get_modified(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
static apr_status_t mk_pubcert(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_status_t pfs_purge(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t fs_move(md_store_t *store, apr_pool_t *p, md_store_group_t from, md_store_group_t to, const char *name, int archive)
static apr_status_t fs_remove_nms(md_store_t *store, apr_pool_t *p, apr_time_t modified, md_store_group_t group, const char *name, const char *aspect)
static apr_status_t fs_iterate(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern, const char *aspect, md_store_vtype_t vtype)
static apr_status_t fs_get_fname(const char **pfname, md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
static apr_status_t remove_nms_file(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static void get_pass(const char **ppass, apr_size_t *plen, md_store_fs_t *s_fs, md_store_group_t group)
static apr_status_t remove_nms_dir(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_status_t pfs_load(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t pfs_get_modified(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t upgrade_from_1_0(md_store_fs_t *s_fs, apr_pool_t *p, apr_pool_t *ptemp)
static int fs_is_newer(md_store_t *store, md_store_group_t group1, md_store_group_t group2, const char *name, const char *aspect, apr_pool_t *p)
static apr_status_t pfs_move(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t fs_lock_global(md_store_t *store, apr_pool_t *p, apr_time_t max_wait)
static apr_status_t dispatch(md_store_fs_t *s_fs, md_store_fs_ev_t ev, unsigned int group, const char *fname, apr_filetype_e ftype, apr_pool_t *p)
static apr_status_t init_store_file(md_store_fs_t *s_fs, const char *fname, apr_pool_t *p, apr_pool_t *ptemp)
static apr_status_t pfs_save(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t setup_store_file(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static apr_status_t pfs_rename(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
apr_status_t md_store_fs_default_perms_set(md_store_t *store, apr_fileperms_t file_perms, apr_fileperms_t dir_perms)
static apr_status_t read_store_file(md_store_fs_t *s_fs, const char *fname, apr_pool_t *p, apr_pool_t *ptemp)
static const perms_t * gperms(md_store_fs_t *s_fs, md_store_group_t group)
apr_status_t md_store_fs_init(md_store_t **pstore, apr_pool_t *p, const char *path)
static apr_status_t fs_save(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, const char *aspect, md_store_vtype_t vtype, void *value, int create)
apr_status_t md_store_fs_group_perms_set(md_store_t *store, md_store_group_t group, apr_fileperms_t file_perms, apr_fileperms_t dir_perms)
static apr_status_t rename_pkey(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_status_t fs_purge(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name)
static apr_status_t fs_iterate_names(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern)
static apr_status_t fs_rename(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *from, const char *to)
static apr_status_t fs_remove(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p, int force)
static apr_status_t insp(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_status_t fs_fload(void **pvalue, md_store_fs_t *s_fs, const char *fpath, md_store_group_t group, md_store_vtype_t vtype, apr_pool_t *p, apr_pool_t *ptemp)
static apr_status_t insp_dir(void *baton, apr_pool_t *p, apr_pool_t *ptemp, const char *dir, const char *name, apr_filetype_e ftype)
static apr_status_t fs_get_dname(const char **pdname, md_store_t *store, md_store_group_t group, const char *name, apr_pool_t *p)
static apr_status_t pfs_remove(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static void fs_unlock_global(md_store_t *store, apr_pool_t *p)
static apr_status_t mk_group_dir(const char **pdir, md_store_fs_t *s_fs, md_store_group_t group, const char *name, apr_pool_t *p)
static apr_status_t pfs_is_newer(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
apr_status_t md_store_fs_set_event_cb(struct md_store_t *store, md_store_fs_cb *cb, void *baton)
static apr_status_t fs_load(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, md_store_vtype_t vtype, void **pvalue, apr_pool_t *p)
apr_status_t md_store_fs_cb(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)
#define MD_FPROT_F_UALL_WREAD
#define MD_FPROT_D_UALL_WREAD
#define MD_FPROT_F_UALL_GREAD
apr_status_t md_util_rm_recursive(const char *fpath, apr_pool_t *p, int max_level)
apr_size_t md_util_base64url_decode(md_data_t *decoded, const char *encoded, apr_pool_t *pool)
apr_status_t md_util_pool_vdo(md_util_vaction *cb, void *baton, apr_pool_t *p,...)
apr_status_t md_util_is_dir(const char *path, apr_pool_t *pool)
apr_status_t md_util_files_do(md_util_fdo_cb *cb, void *baton, apr_pool_t *p, const char *path,...)
void md_data_pinit(md_data_t *d, apr_size_t len, apr_pool_t *p)
apr_status_t md_text_freplace(const char *fpath, apr_fileperms_t perms, apr_pool_t *p, const char *text)
apr_status_t md_util_path_merge(const char **ppath, apr_pool_t *p,...)
apr_status_t md_text_fread8k(const char **ptext, apr_pool_t *p, const char *fpath)
apr_status_t md_util_is_file(const char *path, apr_pool_t *pool)
const char * md_util_base64url_encode(const md_data_t *data, apr_pool_t *pool)
apr_status_t md_text_fcreatex(const char *fpath, apr_fileperms_t perms, apr_pool_t *p, const char *text)
apr_status_t apr_file_lock(apr_file_t *thefile, int type)
md_store_inspect * inspect
int plain_pkey[MD_SG_COUNT]
perms_t group_perms[MD_SG_COUNT]
md_store_fs_cb * event_cb
md_store_unlock_global_cb * unlock_global
md_store_rename_cb * rename
md_store_iter_cb * iterate
md_store_get_fname_cb * get_fname
md_store_get_modified_cb * get_modified
md_store_names_iter_cb * iterate_names
md_store_remove_nms_cb * remove_nms
md_store_remove_cb * remove
md_store_lock_global_cb * lock_global
md_store_is_newer_cb * is_newer
md_store_purge_cb * purge
apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *pool)