/* * hwredirect.c: NSAPI Hardware Server redirect module * * Copyright (C) 2000 Rob Crittenden (rcrit@greyoak.com) * * How to install this program: * * At the beginning of obj.conf: * Init fn=load-modules shlib=/path/to/hwredirect. funcs=hwredirect * * Inside an object in obj.conf (before any hardware virtual servers): * NameTrans fn="hwredirect" address="192.168.100.2" url="http://myserver/data" * = so or sl on UNIX * = dll on NT. * */ #ifdef XP_WIN32 #define NSAPI_PUBLIC __declspec(dllexport) #else /* !XP_WIN32 */ #define NSAPI_PUBLIC #endif /* !XP_WIN32 */ #include "nsapi.h" #ifdef __cplusplus extern "C" #endif NSAPI_PUBLIC int hwredirect(pblock *param, Session *sn, Request *rq) { char *address = pblock_findval("address", param); char *url = pblock_findval("url", param); if (!address) { log_error(LOG_MISCONFIG, "hwredirect", sn, rq, "missing parameter, need address"); return REQ_ABORTED; } if (!url) { log_error(LOG_MISCONFIG, "hwredirect", sn, rq, "missing parameter, need url"); return REQ_ABORTED; } if (sn->inbuf->address) { if (strcmp(address, sn->inbuf->address)) { return REQ_NOACTION; } } protocol_status(sn, rq, PROTOCOL_REDIRECT, NULL); pblock_nvinsert("url", url, rq->vars); return REQ_ABORTED; }