X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=e8bb6788fda36d221e32782bfd2417dda03686bd;hp=491a970cf25d864dd6b4fe3fb1ac992a4b904905;hb=HEAD;hpb=f7ff66d8e391d3be748c8a3824518cd9ae5ca7a8 diff --git a/project.h b/project.h index 491a970c..6aaefd74 100644 --- a/project.h +++ b/project.h @@ -8,7 +8,7 @@ * project. Does not define any variables or functions * (though it does declare some macros). * - * Copyright : Written by and Copyright (C) 2001-2014 the + * Copyright : Written by and Copyright (C) 2001-2021 the * Privoxy team. https://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -49,7 +49,6 @@ * Macros for SSL structures */ #define CERT_INFO_BUF_SIZE 4096 -#define CERT_FILE_BUF_SIZE 16384 #define ISSUER_NAME_BUF_SIZE 2048 #define HASH_OF_HOST_BUF_SIZE 16 #endif /* FEATURE_HTTPS_INSPECTION */ @@ -66,6 +65,10 @@ #ifdef FEATURE_HTTPS_INSPECTION_OPENSSL #ifdef _WIN32 +#include +#include +#include +#include #include #undef X509_NAME #undef X509_EXTENSIONS @@ -75,6 +78,11 @@ #include #endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ +#ifdef FEATURE_HTTPS_INSPECTION_WOLFSSL +#include +#include +#endif /* FEATURE_HTTPS_INSPECTION_WOLFSSL */ + /* Need for struct sockaddr_storage */ #ifdef HAVE_RFC2553 # ifndef _WIN32 @@ -95,12 +103,38 @@ */ #ifdef STATIC_PCRE +#ifdef HAVE_PCRE2 +# include "pcre2.h" +# include "pcre2posix.h" +#else # include "pcre.h" +# include "pcreposix.h" +#endif #else -# ifdef PCRE_H_IN_SUBDIR -# include +# ifdef HAVE_PCRE2 +# ifdef PCRE2_H_IN_SUBDIR +# define PCRE2_CODE_UNIT_WIDTH 8 +# include +# else +# define PCRE2_CODE_UNIT_WIDTH 8 +# include +# endif +# ifdef PCRE2POSIX_H_IN_SUBDIR +# include +# else +# include +# endif # else -# include +# ifdef PCRE_H_IN_SUBDIR +# include +# else +# include +# endif +# ifdef PCREPOSIX_H_IN_SUBDIR +# include +# else +# include +# endif # endif #endif @@ -110,16 +144,6 @@ # include #endif -#ifdef STATIC_PCRE -# include "pcreposix.h" -#else -# ifdef PCRE_H_IN_SUBDIR -# include -# else -# include -# endif -#endif - #ifdef _WIN32 /* * I don't want to have to #include all this just for the declaration @@ -318,6 +342,17 @@ typedef struct { BIO *bio; } openssl_connection_attr; #endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ + +#ifdef FEATURE_HTTPS_INSPECTION_WOLFSSL +/* + * Struct of attributes necessary for TLS/SSL connection + */ +typedef struct { + WOLFSSL_CTX *ctx; + WOLFSSL *ssl; +} wolfssl_connection_attr; +#endif /* def FEATURE_HTTPS_INSPECTION_WOLFSSL */ + /** * A HTTP request. This includes the method (GET, POST) and * the parsed URL. @@ -363,7 +398,7 @@ struct http_request */ typedef struct certs_chain { char info_buf[CERT_INFO_BUF_SIZE]; /* text info about properties of certificate */ - char file_buf[CERT_FILE_BUF_SIZE]; /* buffer for whole certificate - format to save in file */ + char *file_buf; /* buffer for whole certificate - format to save in file */ struct certs_chain *next; /* next certificate in chain of trust */ } certs_chain_t; #endif @@ -405,10 +440,16 @@ struct http_response enum crunch_reason crunch_reason; /**< Why the response was generated in the first place. */ }; +#ifdef HAVE_PCRE2 +#define REGEX_TYPE pcre2_code +#else +#define REGEX_TYPE regex_t +#endif + struct url_spec { #ifdef FEATURE_PCRE_HOST_PATTERNS - regex_t *host_regex;/**< Regex for host matching */ + REGEX_TYPE *host_regex;/**< Regex for host matching */ enum host_regex_type { VANILLA_HOST_PATTERN, PCRE_HOST_PATTERN } host_regex_type; #endif /* defined FEATURE_PCRE_HOST_PATTERNS */ int dcount; /**< How many parts to this domain? (length of dvec) */ @@ -418,7 +459,7 @@ struct url_spec char *port_list; /**< List of acceptable ports, or NULL to match all ports */ - regex_t *preg; /**< Regex for matching path part */ + REGEX_TYPE *preg; /**< Regex for matching path part */ }; /** @@ -433,7 +474,7 @@ struct pattern_spec union { struct url_spec url_spec; - regex_t *tag_regex; + REGEX_TYPE *tag_regex; } pattern; unsigned int flags; /**< Bitmap with various pattern properties. */ @@ -643,8 +684,10 @@ struct iob #define ACTION_MULTI_SUPPRESS_TAG 7 /** Index into current_action_spec::multi[] for client body filters to apply. */ #define ACTION_MULTI_CLIENT_BODY_FILTER 8 +/** Index into current_action_spec::multi[] for client body taggers to apply. */ +#define ACTION_MULTI_CLIENT_BODY_TAGGER 9 /** Number of multi-string actions. */ -#define ACTION_MULTI_COUNT 9 +#define ACTION_MULTI_COUNT 10 /** @@ -981,6 +1024,9 @@ struct ssl_attr { #ifdef FEATURE_HTTPS_INSPECTION_OPENSSL openssl_connection_attr openssl_attr; /* OpenSSL atrrs */ #endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ +#ifdef FEATURE_HTTPS_INSPECTION_WOLFSSL + wolfssl_connection_attr wolfssl_attr; /* wolfSSL atrrs */ +#endif /* FEATURE_HTTPS_INSPECTION_WOLFSSL */ }; /** * The state of a Privoxy processing thread. @@ -1122,7 +1168,7 @@ struct client_state #define SSL_CERT_NOT_VERIFIED 0xFFFFFFFF uint32_t server_cert_verification_result; #endif /* FEATURE_HTTPS_INSPECTION_MBEDTLS */ -#ifdef FEATURE_HTTPS_INSPECTION_OPENSSL +#if defined(FEATURE_HTTPS_INSPECTION_OPENSSL) || defined(FEATURE_HTTPS_INSPECTION_WOLFSSL) #define SSL_CERT_NOT_VERIFIED ~0L long server_cert_verification_result; #endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ @@ -1297,16 +1343,18 @@ enum filter_type FT_SERVER_HEADER_TAGGER = 4, FT_SUPPRESS_TAG = 5, FT_CLIENT_BODY_FILTER = 6, + FT_CLIENT_BODY_TAGGER = 7, + FT_ADD_HEADER = 8, #ifdef FEATURE_EXTERNAL_FILTERS - FT_EXTERNAL_CONTENT_FILTER = 7, + FT_EXTERNAL_CONTENT_FILTER = 9, #endif FT_INVALID_FILTER = 42, }; #ifdef FEATURE_EXTERNAL_FILTERS -#define MAX_FILTER_TYPES 8 +#define MAX_FILTER_TYPES 10 #else -#define MAX_FILTER_TYPES 7 +#define MAX_FILTER_TYPES 9 #endif /**