Apache HTTPD
Classes | Macros | Enumerations | Functions | Variables
mod_authnz_fcgi.c File Reference
#include "apr_hash.h"
#include "apr_lib.h"
#include "apr_strings.h"
#include "ap_provider.h"
#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
#include "http_protocol.h"
#include "http_request.h"
#include "http_log.h"
#include "util_script.h"
#include "mod_auth.h"
#include "util_fcgi.h"
#include "ap_mmn.h"

Go to the source code of this file.

Classes

struct  fcgi_provider_conf
 
struct  fcgi_dir_conf
 
struct  fcgi_request_notes
 

Macros

#define FCGI_IO_TIMEOUT   apr_time_from_sec(30)
 
#define NON200_RESPONSE_BUF_LEN   8192
 
#define FCGI_BACKEND_REGEX_STR   "m%^fcgi://(.*):(\\d{1,5})/?$%"
 

Enumerations

enum  {
  HDR_STATE_READING_HEADERS , HDR_STATE_GOT_CR , HDR_STATE_GOT_CRLF , HDR_STATE_GOT_CRLFCR ,
  HDR_STATE_GOT_LF , HDR_STATE_DONE_WITH_HEADERS
}
 

Functions

static apr_status_t connect_to_peer (apr_socket_t **newsock, request_rec *r, apr_sockaddr_t *backend_addrs, const char *backend_name, apr_interval_time_t timeout)
 
static void log_provider_info (const fcgi_provider_conf *conf, request_rec *r)
 
static void setupenv (request_rec *r, const char *password, const char *apache_role)
 
static apr_status_t recv_data (const fcgi_provider_conf *conf, request_rec *r, apr_socket_t *s, char *buf, apr_size_t *buflen)
 
static apr_status_t recv_data_full (const fcgi_provider_conf *conf, request_rec *r, apr_socket_t *s, char *buf, apr_size_t buflen)
 
static apr_status_t sendv_data (const fcgi_provider_conf *conf, request_rec *r, apr_socket_t *s, struct iovec *vec, int nvec, apr_size_t *len)
 
static apr_status_t send_begin_request (request_rec *r, const fcgi_provider_conf *conf, apr_socket_t *s, int role, apr_uint16_t request_id)
 
static apr_status_t send_environment (apr_socket_t *s, const fcgi_provider_conf *conf, request_rec *r, apr_uint16_t request_id, apr_pool_t *temp_pool)
 
static int handle_headers (request_rec *r, int *state, const char *readbuf, apr_size_t readlen)
 
static apr_status_t handle_response (const fcgi_provider_conf *conf, request_rec *r, apr_socket_t *s, apr_pool_t *temp_pool, apr_uint16_t request_id, char *rspbuf, apr_size_t *rspbuflen)
 
static int mod_fcgid_modify_auth_header (void *vars, const char *key, const char *val)
 
static int fix_auth_header (void *vr, const char *key, const char *val)
 
static void req_rsp (request_rec *r, const fcgi_provider_conf *conf, const char *password, const char *apache_role, char *rspbuf, apr_size_t *rspbuflen)
 
static int fcgi_check_authn (request_rec *r)
 
static authn_status fcgi_check_password (request_rec *r, const char *user, const char *password)
 
static authz_status fcgi_authz_check (request_rec *r, const char *require_line, const void *parsed_require_line)
 
static const charfcgi_authz_parse (cmd_parms *cmd, const char *require_line, const void **parsed_require_line)
 
static const charfcgi_check_authn_provider (cmd_parms *cmd, void *d, int argc, char *const argv[])
 
static const charfcgi_define_provider (cmd_parms *cmd, void *d, int argc, char *const argv[])
 
static int fcgi_pre_config (apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
 
static void fcgi_register_hooks (apr_pool_t *p)
 
static void * create_dir_conf (apr_pool_t *p, char *dummy)
 
static void * merge_dir_conf (apr_pool_t *p, void *basev, void *overridesv)
 

Variables

static apr_hash_tfcgi_authn_providers
 
static apr_hash_tfcgi_authz_providers
 
static const authn_provider fcgi_authn_provider
 
static const authz_provider fcgi_authz_provider
 
static const command_rec fcgi_cmds []
 
static int *const aplog_module_index = &( authnz_fcgi_module.module_index)
 

Macro Definition Documentation

◆ FCGI_BACKEND_REGEX_STR

#define FCGI_BACKEND_REGEX_STR   "m%^fcgi://(.*):(\\d{1,5})/?$%"

Definition at line 73 of file mod_authnz_fcgi.c.

◆ FCGI_IO_TIMEOUT

#define FCGI_IO_TIMEOUT   apr_time_from_sec(30)

Definition at line 66 of file mod_authnz_fcgi.c.

◆ NON200_RESPONSE_BUF_LEN

#define NON200_RESPONSE_BUF_LEN   8192

Definition at line 69 of file mod_authnz_fcgi.c.

Enumeration Type Documentation

◆ anonymous enum

Enumerator
HDR_STATE_READING_HEADERS 
HDR_STATE_GOT_CR 
HDR_STATE_GOT_CRLF 
HDR_STATE_GOT_CRLFCR 
HDR_STATE_GOT_LF 
HDR_STATE_DONE_WITH_HEADERS 

Definition at line 394 of file mod_authnz_fcgi.c.

Function Documentation

◆ connect_to_peer()

static apr_status_t connect_to_peer ( apr_socket_t **  newsock,
request_rec r,
apr_sockaddr_t backend_addrs,
const char backend_name,
apr_interval_time_t  timeout 
)
static

< For SCTP sockets, this is mapped * to STCP_NODELAY internally.

Definition at line 80 of file mod_authnz_fcgi.c.

◆ create_dir_conf()

static void * create_dir_conf ( apr_pool_t p,
char dummy 
)
static

Definition at line 1336 of file mod_authnz_fcgi.c.

◆ fcgi_authz_check()

static authz_status fcgi_authz_check ( request_rec r,
const char require_line,
const void *  parsed_require_line 
)
static

Definition at line 996 of file mod_authnz_fcgi.c.

◆ fcgi_authz_parse()

static const char * fcgi_authz_parse ( cmd_parms cmd,
const char require_line,
const void **  parsed_require_line 
)
static

Definition at line 1061 of file mod_authnz_fcgi.c.

◆ fcgi_check_authn()

static int fcgi_check_authn ( request_rec r)
static

< Module declines to handle

< Module has handled this stage.

< Module declines to handle

Definition at line 806 of file mod_authnz_fcgi.c.

◆ fcgi_check_authn_provider()

static const char * fcgi_check_authn_provider ( cmd_parms cmd,
void *  d,
int  argc,
char *const  argv[] 
)
static

Definition at line 1079 of file mod_authnz_fcgi.c.

◆ fcgi_check_password()

static authn_status fcgi_check_password ( request_rec r,
const char user,
const char password 
)
static

Definition at line 935 of file mod_authnz_fcgi.c.

◆ fcgi_define_provider()

static const char * fcgi_define_provider ( cmd_parms cmd,
void *  d,
int  argc,
char *const  argv[] 
)
static

< Forbidden in <VirtualHost>

< Forbidden in <Limit>

< Forbidden in <Directory>

< Forbidden in <Location>

< Forbidden in <Files> or <If>

< Forbidden in <Proxy>

< Run access control hooks only on internal requests with configurations distinct from that of initial request

< Run access control hooks only on internal requests with configurations distinct from that of initial request

Definition at line 1169 of file mod_authnz_fcgi.c.

◆ fcgi_pre_config()

static int fcgi_pre_config ( apr_pool_t pconf,
apr_pool_t plog,
apr_pool_t ptemp 
)
static

< Module has handled this stage.

Definition at line 1317 of file mod_authnz_fcgi.c.

◆ fcgi_register_hooks()

static void fcgi_register_hooks ( apr_pool_t p)
static

< Run access control hooks only on internal requests with configurations distinct from that of initial request

Definition at line 1326 of file mod_authnz_fcgi.c.

◆ fix_auth_header()

static int fix_auth_header ( void *  vr,
const char key,
const char val 
)
static

Definition at line 697 of file mod_authnz_fcgi.c.

◆ handle_headers()

static int handle_headers ( request_rec r,
int state,
const char readbuf,
apr_size_t  readlen 
)
static

Definition at line 409 of file mod_authnz_fcgi.c.

◆ handle_response()

static apr_status_t handle_response ( const fcgi_provider_conf conf,
request_rec r,
apr_socket_t s,
apr_pool_t temp_pool,
apr_uint16_t  request_id,
char rspbuf,
apr_size_t rspbuflen 
)
static

< Module has handled this stage.

Definition at line 465 of file mod_authnz_fcgi.c.

◆ log_provider_info()

static void log_provider_info ( const fcgi_provider_conf conf,
request_rec r 
)
static

Definition at line 125 of file mod_authnz_fcgi.c.

◆ merge_dir_conf()

static void * merge_dir_conf ( apr_pool_t p,
void *  basev,
void *  overridesv 
)
static

Definition at line 1344 of file mod_authnz_fcgi.c.

◆ mod_fcgid_modify_auth_header()

static int mod_fcgid_modify_auth_header ( void *  vars,
const char key,
const char val 
)
static

Definition at line 686 of file mod_authnz_fcgi.c.

◆ recv_data()

static apr_status_t recv_data ( const fcgi_provider_conf conf,
request_rec r,
apr_socket_t s,
char buf,
apr_size_t buflen 
)
static

Definition at line 168 of file mod_authnz_fcgi.c.

◆ recv_data_full()

static apr_status_t recv_data_full ( const fcgi_provider_conf conf,
request_rec r,
apr_socket_t s,
char buf,
apr_size_t  buflen 
)
static

Definition at line 191 of file mod_authnz_fcgi.c.

◆ req_rsp()

static void req_rsp ( request_rec r,
const fcgi_provider_conf conf,
const char password,
const char apache_role,
char rspbuf,
apr_size_t rspbuflen 
)
static

Definition at line 707 of file mod_authnz_fcgi.c.

◆ send_begin_request()

static apr_status_t send_begin_request ( request_rec r,
const fcgi_provider_conf conf,
apr_socket_t s,
int  role,
apr_uint16_t  request_id 
)
static

Definition at line 264 of file mod_authnz_fcgi.c.

◆ send_environment()

static apr_status_t send_environment ( apr_socket_t s,
const fcgi_provider_conf conf,
request_rec r,
apr_uint16_t  request_id,
apr_pool_t temp_pool 
)
static

Definition at line 291 of file mod_authnz_fcgi.c.

◆ sendv_data()

static apr_status_t sendv_data ( const fcgi_provider_conf conf,
request_rec r,
apr_socket_t s,
struct iovec vec,
int  nvec,
apr_size_t len 
)
static

Definition at line 213 of file mod_authnz_fcgi.c.

◆ setupenv()

static void setupenv ( request_rec r,
const char password,
const char apache_role 
)
static

Definition at line 139 of file mod_authnz_fcgi.c.

Variable Documentation

◆ aplog_module_index

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

Definition at line 1363 of file mod_authnz_fcgi.c.

◆ fcgi_authn_provider

const authn_provider fcgi_authn_provider
static
Initial value:
= {
}
static authn_status fcgi_check_password(request_rec *r, const char *user, const char *password)
return NULL
Definition mod_so.c:359

Definition at line 991 of file mod_authnz_fcgi.c.

◆ fcgi_authn_providers

apr_hash_t* fcgi_authn_providers
static

Definition at line 64 of file mod_authnz_fcgi.c.

◆ fcgi_authz_provider

const authz_provider fcgi_authz_provider
static
Initial value:
= {
}
static const char * fcgi_authz_parse(cmd_parms *cmd, const char *require_line, const void **parsed_require_line)
static authz_status fcgi_authz_check(request_rec *r, const char *require_line, const void *parsed_require_line)

Definition at line 1074 of file mod_authnz_fcgi.c.

◆ fcgi_authz_providers

apr_hash_t * fcgi_authz_providers
static

Definition at line 64 of file mod_authnz_fcgi.c.

◆ fcgi_cmds

const command_rec fcgi_cmds[]
static
Initial value:
= {
{ "AuthnzFcgiDefineProvider" , fcgi_define_provider , NULL , 128 , TAKE_ARGV, "Define a FastCGI authn and/or authz provider" },
{ "AuthnzFcgiCheckAuthnProvider" , fcgi_check_authn_provider , NULL , 4 , TAKE_ARGV, "Enable/disable a FastCGI authorizer to handle " "check_authn phase" },
{NULL}
}
@ TAKE_ARGV
Definition http_config.h:66
static const char * fcgi_define_provider(cmd_parms *cmd, void *d, int argc, char *const argv[])
static const char * fcgi_check_authn_provider(cmd_parms *cmd, void *d, int argc, char *const argv[])

Definition at line 1300 of file mod_authnz_fcgi.c.