X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=527a86887ef67fc7bb4baaabeeb5d491bc98b8fd;hp=e7add496166edbc01b5a91328f18501730a7af5e;hb=HEAD;hpb=ea453e40281809c7e6f4bdfcc9c46969289226cf diff --git a/project.h b/project.h index e7add496..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 @@ -65,6 +65,10 @@ #ifdef FEATURE_HTTPS_INSPECTION_OPENSSL #ifdef _WIN32 +#include +#include +#include +#include #include #undef X509_NAME #undef X509_EXTENSIONS @@ -74,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 @@ -94,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 @@ -109,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 @@ -317,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. @@ -404,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) */ @@ -417,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 */ }; /** @@ -432,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. */ @@ -642,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 /** @@ -980,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. @@ -1121,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 */ @@ -1296,17 +1343,18 @@ enum filter_type FT_SERVER_HEADER_TAGGER = 4, FT_SUPPRESS_TAG = 5, FT_CLIENT_BODY_FILTER = 6, - FT_ADD_HEADER = 7, + FT_CLIENT_BODY_TAGGER = 7, + FT_ADD_HEADER = 8, #ifdef FEATURE_EXTERNAL_FILTERS - FT_EXTERNAL_CONTENT_FILTER = 8, + FT_EXTERNAL_CONTENT_FILTER = 9, #endif FT_INVALID_FILTER = 42, }; #ifdef FEATURE_EXTERNAL_FILTERS -#define MAX_FILTER_TYPES 9 +#define MAX_FILTER_TYPES 10 #else -#define MAX_FILTER_TYPES 8 +#define MAX_FILTER_TYPES 9 #endif /**