| 230 | /* store setup */ |
| 231 | |
| 232 | static apr_status_t store_file_ev(void *baton, struct md_store_t *store, |
| 233 | md_store_fs_ev_t ev, unsigned int group, |
| 234 | const char *fname, apr_filetype_e ftype, |
| 235 | apr_pool_t *p) |
| 236 | { |
| 237 | server_rec *s = baton; |
| 238 | apr_status_t rv; |
| 239 | |
| 240 | (void)store; |
| 241 | ap_log_error(APLOG_MARK, APLOG_TRACE3, 0, s, "store event=%d on %s %s (group %d)", |
| 242 | ev, (ftype == APR_DIR)? "dir" : "file", fname, group); |
| 243 | |
| 244 | /* Directories in group CHALLENGES, STAGING and OCSP are written to |
| 245 | * under a different user. Give her ownership. |
| 246 | */ |
| 247 | if (ftype == APR_DIR) { |
| 248 | switch (group) { |
| 249 | case MD_SG_CHALLENGES: |
| 250 | case MD_SG_STAGING: |
| 251 | case MD_SG_OCSP: |
| 252 | rv = md_make_worker_accessible(fname, p); |
| 253 | if (APR_ENOTIMPL != rv) { |
| 254 | return rv; |
| 255 | } |
| 256 | break; |
| 257 | default: |
| 258 | break; |
| 259 | } |
| 260 | } |
| 261 | return APR_SUCCESS; |
| 262 | } |
| 263 | |
| 264 | static apr_status_t check_group_dir(md_store_t *store, md_store_group_t group, |
| 265 | apr_pool_t *p, server_rec *s) |
no test coverage detected