#ifndef PROJECT_H_INCLUDED
#define PROJECT_H_INCLUDED
-#define PROJECT_H_VERSION "$Id: project.h,v 1.36 2001/10/10 16:45:15 oes Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.37 2001/10/14 22:14:01 jongfoster Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/project.h,v $
*
* Revisions :
* $Log: project.h,v $
+ * 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
extern "C" {
#endif
+
+/*
+ * 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(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 */
#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 */
};
+/*
+ * List of functions to run on a list of headers
+ */
struct parsers
{
char *str;
char *(*parser)(const struct parsers *, const char *, struct client_state *);
};
+
+/*
+ * List of available CGI functions.
+ */
struct cgi_dispatcher
{
- const char *name;
- 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
{
/*
/* 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.
*
int debug;
int multi_threaded;
+ /* Features that can be enabled/disabled throuigh the config file */
+ unsigned feature_flags;
+
const char *logfile;
const char *confdir;