mod_proxy.h revision 2f3894b2edb7f246e7f40af52a2012399b462af9
842ae4bd224140319ae7feec1872b93dfd491143fielding/* ====================================================================
842ae4bd224140319ae7feec1872b93dfd491143fielding * The Apache Software License, Version 1.1
842ae4bd224140319ae7feec1872b93dfd491143fielding * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
842ae4bd224140319ae7feec1872b93dfd491143fielding * reserved.
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * Redistribution and use in source and binary forms, with or without
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * modification, are permitted provided that the following conditions
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * are met:
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * 1. Redistributions of source code must retain the above copyright
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * notice, this list of conditions and the following disclaimer.
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * 2. Redistributions in binary form must reproduce the above copyright
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * notice, this list of conditions and the following disclaimer in
b8d55029467b9f139d081cf38c6d06ff45e742a9nd * the documentation and/or other materials provided with the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * distribution.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * 3. The end-user documentation included with the redistribution,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * if any, must include the following acknowledgment:
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * "This product includes software developed by the
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Apache Software Foundation (http://www.apache.org/)."
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * Alternately, this acknowledgment may appear in the software itself,
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * if and wherever such third-party acknowledgments normally appear.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * 4. The names "Apache" and "Apache Software Foundation" must
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * not be used to endorse or promote products derived from this
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * software without prior written permission. For written
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * permission, please contact apache@apache.org.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * 5. Products derived from this software may not be called "Apache",
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * nor may "Apache" appear in their name, without prior written
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * permission of the Apache Software Foundation.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * SUCH DAMAGE.
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * ====================================================================
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * This software consists of voluntary contributions made by many
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * individuals on behalf of the Apache Software Foundation. For more
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * information on the Apache Software Foundation, please see
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * Portions of this software are based upon public domain software
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * originally written at the National Center for Supercomputing Applications,
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * University of Illinois, Urbana-Champaign.
43c3e6a4b559b76b750c245ee95e2782c15b4296jim * Main include file for the Apache proxy
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding Also note numerous FIXMEs and CHECKMEs which should be eliminated.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding This code is once again experimental!
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding Things to do:
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding 1. Make it completely work (for FTP too)
43c3e6a4b559b76b750c245ee95e2782c15b4296jim 2. HTTP/1.1
43c3e6a4b559b76b750c245ee95e2782c15b4296jim Chuck Murcko <chuck@topsail.org> 02-06-01
43c3e6a4b559b76b750c245ee95e2782c15b4296jim/* for proxy_canonenc() */
43c3e6a4b559b76b750c245ee95e2782c15b4296jim#else /*APR_CHARSET_EBCDIC*/
43c3e6a4b559b76b750c245ee95e2782c15b4296jim#endif /*APR_CHARSET_EBCDIC*/
43c3e6a4b559b76b750c245ee95e2782c15b4296jim/* default Max-Forwards header setting */
43c3e6a4b559b76b750c245ee95e2782c15b4296jim/* static information about a remote proxy */
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *scheme; /* the schemes handled by this proxy, or '*' */
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *protocol; /* the scheme used to talk to this proxy */
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *real;
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *fake;
43c3e6a4b559b76b750c245ee95e2782c15b4296jim int (*matcher) (struct dirconn_entry * This, request_rec *r);
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *name;
43c3e6a4b559b76b750c245ee95e2782c15b4296jimtypedef struct {
43c3e6a4b559b76b750c245ee95e2782c15b4296jim const char *domain; /* domain name to use in absence of a domain name in the request */
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * the following setting masks the error page
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * returned from the 'proxied server' and just
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * forwards the status code upwards.
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding * This allows the main server (us) to generate
int error_override;
int error_override_set;
char *hostname;
#if !defined(WIN32)
#define PROXY_DECLARE_DATA
#define PROXY_DECLARE_DATA
char *url))
/* proxy_util.c */
int isenc);
PROXY_DECLARE(apr_table_t *)ap_proxy_read_headers(request_rec *r, request_rec *rp, char *buffer, int size, conn_rec *c);
PROXY_DECLARE(int) ap_proxy_checkproxyblock(request_rec *r, proxy_server_conf *conf, apr_sockaddr_t *uri_addr);
PROXY_DECLARE(apr_status_t) ap_proxy_string_read(conn_rec *c, apr_bucket_brigade *bb, char *buff, size_t bufflen, int *eos);