-Source: mod-proxy-fdpass
+Source: mod-proxy-fdpass2
Section: web
Priority: optional
Maintainer: Emmanuel Lacour <elacour@home-dn.net>
Build-Depends: debhelper (>= 4.0.0), apache2-prefork-dev (>> 2.2), libxml2-dev (>> 2.5.10)
Standards-Version: 0.1.0
-Package: libapache2-mod-proxy-fdpass
+Package: libapache2-mod-proxy-fdpass2
Architecture: any
-Depends: ${shlibs:Depends}, apache2, apache2.2-common, libxml2 (>> 2.5.10)
+Depends: ${shlibs:Depends}, apache2, apache2-data, libxml2 (>> 2.5.10)
Description: Apache2 filter module for HTML links rewriting
- mod_proxy_fdpass is an output filter to rewrite HTML links in a proxy
+ mod_proxy_fdpass2 is an output filter to rewrite HTML links in a proxy
situation, to ensure that links work for users outside the proxy. It
serves the same purpose as Apache's ProxyPassReverse directive does for
HTTP headers, and is an essential component of a reverse proxy.
#include "apr_support.h"
#endif
-#include "mod_proxy_fdpass.h"
+#include "mod_proxy_fdpass2.h"
-module AP_MODULE_DECLARE_DATA proxy_fdpass_module;
+module AP_MODULE_DECLARE_DATA proxy_fdpass2_module;
-#define MOP_DEBUG 0
+#define MOP_DEBUG 1
-static int proxy_fdpass_canon(request_rec *r, char *url)
+static int proxy_fdpass2_canon(request_rec *r, char *url)
{
const char *path;
char mop_bf[512];
mop_fd = open("/tmp/apache_mop.log", O_WRONLY | O_APPEND | O_CREAT, 0644);
- sprintf(mop_bf, "proxy_http_canon: start\n");
+ sprintf(mop_bf, "proxy_http_canon: start [%p]\n", r->headers_in);
write(mop_fd, mop_bf, strlen(mop_bf));
close(mop_fd);
s = (char *)rec;
+ if (MOP_DEBUG == 1) {
+ int mop_fd;
+ char mop_bf[512];
+
+ mop_fd = open("/tmp/apache_mop.log", O_WRONLY | O_APPEND | O_CREAT, 0644);
+ sprintf(mop_bf, "HEADERS_BUILDER: [%s:%s]\n", key, value);
+ write(mop_fd, mop_bf, strlen(mop_bf));
+ close(mop_fd);
+ }
+
+
// TODO: verify length
- sprintf(s, "%s%s:%s\n", s, key, value);
+ // sprintf(s, "%s%s:%s\n", s, key, value);
+ strcat(s, key);
+ strcat(s, ":");
+ strcat(s, value);
+ strcat(s, "\n");
}
#define CTRL_BUFF_MAX_SZ (8*1024)
if (p = strchr(s_type, ';')) {
*p = '\0';
}
+
if (strcasecmp(s_type, DEFAULT_ENCTYPE) != 0) {
return DECLINED;
}
// TODO: sanitize calloc
-static int proxy_fdpass_handler(request_rec *r, proxy_worker *worker,
+static int proxy_fdpass2_handler(request_rec *r, proxy_worker *worker,
proxy_server_conf *conf,
char *url, const char *proxyname,
apr_port_t proxyport)
char mop_bf[512];
mop_fd = open("/tmp/apache_mop.log", O_WRONLY | O_APPEND | O_CREAT, 0644);
- sprintf(mop_bf, "proxy_fdpass_handler: start\n");
+ sprintf(mop_bf, "proxy_fdpass2_handler: start\n");
write(mop_fd, mop_bf, strlen(mop_bf));
write(mop_fd, headers_out, strlen(headers_out));
close(mop_fd);
/* const char *flush_method = worker->flusher ? worker->flusher : "flush"; */
const char *flush_method = "flush";
- proxy_fdpass_flush *flush = ap_lookup_provider(PROXY_FDPASS_FLUSHER,
+ proxy_fdpass2_flush *flush = ap_lookup_provider(PROXY_FDPASS_FLUSHER,
flush_method, "0");
if (!flush) {
strcat(headers_out, "\n");
wrlen = strlen(headers_out);
rv = apr_socket_send(ctrlsock, headers_out, &wrlen);
+
+ if (MOP_DEBUG == 1) {
+ int mop_fd;
+ char mop_bf[512];
+
+ mop_fd = open("/tmp/apache_mop.log", O_WRONLY | O_APPEND | O_CREAT, 0644);
+ write(mop_fd, "HEADERS_OUT\n", 12);
+ write(mop_fd, headers_out, wrlen);
+ close(mop_fd);
+ }
+
+
if (rv != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r,
"proxy: FD: send headers failed");
return OK;
}
-static const proxy_fdpass_flush builtin_flush =
+static const proxy_fdpass2_flush builtin_flush =
{
"flush",
&standard_flush,
NULL
};
-static void ap_proxy_fdpass_register_hooks(apr_pool_t *p)
+static void ap_proxy_fdpass2_register_hooks(apr_pool_t *p)
{
ap_register_provider(p, PROXY_FDPASS_FLUSHER, "flush", "0", &builtin_flush);
- proxy_hook_scheme_handler(proxy_fdpass_handler, NULL, NULL, APR_HOOK_FIRST);
- proxy_hook_canon_handler(proxy_fdpass_canon, NULL, NULL, APR_HOOK_FIRST);
+ proxy_hook_scheme_handler(proxy_fdpass2_handler, NULL, NULL, APR_HOOK_FIRST);
+ proxy_hook_canon_handler(proxy_fdpass2_canon, NULL, NULL, APR_HOOK_FIRST);
}
-module AP_MODULE_DECLARE_DATA proxy_fdpass_module = {
+module AP_MODULE_DECLARE_DATA proxy_fdpass2_module = {
STANDARD20_MODULE_STUFF,
NULL, /* create per-directory config structure */
NULL, /* merge per-directory config structures */
NULL, /* create per-server config structure */
NULL, /* merge per-server config structures */
NULL, /* command apr_table_t */
- ap_proxy_fdpass_register_hooks /* register hooks */
+ ap_proxy_fdpass2_register_hooks /* register hooks */
};