X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=project.h;h=472222d43a556ecaad4c98b7ca9a98406a9b6413;hb=07ce1074db2cafac47f64c5933bcb5f7521023c6;hp=25b68ddbff97fd317691d10808c0a727da443285;hpb=1c3de247011a32cf25b51da631dcbedfdd0ff811;p=privoxy.git diff --git a/project.h b/project.h index 25b68ddb..472222d4 100644 --- a/project.h +++ b/project.h @@ -1,6 +1,6 @@ #ifndef PROJECT_H_INCLUDED #define PROJECT_H_INCLUDED -#define PROJECT_H_VERSION "$Id: project.h,v 1.35 2001/10/07 18:06:43 oes Exp $" +#define PROJECT_H_VERSION "$Id: project.h,v 1.38 2001/10/23 21:19:04 jongfoster Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/project.h,v $ @@ -13,10 +13,10 @@ * IJBSWA team. http://ijbswa.sourceforge.net * * Based on the Internet Junkbuster originally written - * by and Copyright (C) 1997 Anonymous Coders and + * by and Copyright (C) 1997 Anonymous Coders and * Junkbusters Corporation. http://www.junkbusters.com * - * This program is free software; you can redistribute it + * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General * Public License as published by the Free Software * Foundation; either version 2 of the License, or (at @@ -36,6 +36,21 @@ * * Revisions : * $Log: project.h,v $ + * Revision 1.38 2001/10/23 21:19:04 jongfoster + * New error-handling support: jb_err type and JB_ERR_xxx constants + * CGI functions now return a jb_err, and their parameters map is const. + * Support for RUNTIME_FEATUREs to enable/disable config editor + * Adding a few comments + * + * Revision 1.37 2001/10/14 22:14:01 jongfoster + * Removing name_length field from struct cgi_dispatcher, as this is + * now calculated at runtime from the "name" field. + * + * Revision 1.36 2001/10/10 16:45:15 oes + * Added LIMIT_CONNECT action and string + * Fixed HTTP message line termination + * Added CFORBIDDEN HTTP message + * * Revision 1.35 2001/10/07 18:06:43 oes * Added status member to struct http_request * @@ -305,9 +320,9 @@ #endif #ifdef STATIC_PCRS -# include "pcrs.h" +# include "pcrs.h" #else -# include +# include #endif #if defined(REGEX_PCRE) @@ -322,18 +337,43 @@ # include "gnu_regex.h" #endif -#ifdef AMIGA -#include "amiga.h" +#ifdef AMIGA +#include "amiga.h" #endif /* def AMIGA */ #ifdef __cplusplus extern "C" { #endif -#define freez(X) { if(X) { free(X); X = NULL ; } } +/* + * Error codes. Functions returning these should return a jb_err + */ +#define JB_ERR_OK 0 /* Success, no error */ +#define JB_ERR_MEMORY 1 /* Out of memory */ +#define JB_ERR_CGI_PARAMS 2 /* Missing or corrupt CGI parameters */ +#define JB_ERR_FILE 3 /* Error opening, reading or writing a file */ +#define JB_ERR_PARSE 4 /* Error parsing file */ +#define JB_ERR_MODIFIED 5 /* File has been modified outside of the */ + /* CGI actions editor. */ +typedef int jb_err; + + +/* + * This macro is used to free a pointer that may be NULL + */ +#define freez(X) { if(X) { free((void*)X); X = NULL ; } } + +/* + * Use for statically allocated buffers if you have no other choice. + * Remember to check the length of what you write into the buffer + * - we don't want any buffer overflows! + */ #define BUFFER_SIZE 5000 +/* + * So you can say "while (FOREVER) { ...do something... }" + */ #define FOREVER 1 /* Default IP and port to listen on */ @@ -568,7 +608,7 @@ struct url_actions /* * *If* this is MSIE, it wants an image. (Or this is a shift-reload, or * it's got an image from this URL before... yuck!) - * Only meaningful if ACCEPT_TYPE_IS_MSIE set + * Only meaningful if ACCEPT_TYPE_IS_MSIE set */ #define ACCEPT_TYPE_MSIE_IMAGE 0x0002 @@ -594,6 +634,9 @@ struct url_actions #define CSP_FLAG_REJECTED 0x10 /* Set if request was blocked. */ #define CSP_FLAG_TOGGLED_ON 0x20 /* Set if we are toggled on (FEATURE_TOGGLE) */ +/* + * The state of a JunkBuster processing thread. + */ struct client_state { /* The proxy's configuration */ @@ -660,7 +703,7 @@ struct client_state struct file_list *actions_list; struct file_list *rlist; /* pcrs job file */ - size_t content_length; /* Length after content modification */ + size_t content_length; /* Length after content modification */ #ifdef FEATURE_TRUST struct file_list *tlist; /* trustfile */ @@ -670,6 +713,9 @@ struct client_state }; +/* + * List of functions to run on a list of headers + */ struct parsers { char *str; @@ -677,14 +723,21 @@ struct parsers char *(*parser)(const struct parsers *, const char *, struct client_state *); }; + +/* + * List of available CGI functions. + */ struct cgi_dispatcher { - const char *name; - int name_length; - int (*handler)(struct client_state *csp, struct http_response *rsp, struct map *parameters); - const char *description; + const char * const name; + jb_err (* const handler)(struct client_state *csp, struct http_response *rsp, const struct map *parameters); + const char * const description; }; + +/* + * A data file used by JunkBuster. Kept in a linked list. + */ struct file_list { /* @@ -692,11 +745,11 @@ struct file_list * Read-only once the structure has been created. */ void *f; - + /* Normally NULL. When we are finished with file (i.e. when we have * loaded a new one), set to a pointer to an unloader function. * Unloader will be called by sweep() (called from main loop) when - * all clients using this file are done. This prevents threading + * all clients using this file are done. This prevents threading * problems. */ void (*unloader)(void *); @@ -788,6 +841,11 @@ struct access_control_list /* Maximum number of loaders (actions, re_filter, ...) */ #define NLOADERS 8 + +#define RUNTIME_FEATURE_CGI_EDIT_ACTIONS 1 +#define RUNTIME_FEATURE_CGI_TOGGLE 2 + + /* * Data loaded from the configuration file. * @@ -798,6 +856,9 @@ struct configuration_spec int debug; int multi_threaded; + /* Features that can be enabled/disabled throuigh the config file */ + unsigned feature_flags; + const char *logfile; const char *confdir;