X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=001f25e963ff349ca65687b6085d835ff2992ecf;hp=d82c85d8be92c0e9191b29dc55a4f299cc5f0b98;hb=HEAD;hpb=a5b4d31ab5ad2ed24cdb53ffa92679411b4176b0 diff --git a/project.h b/project.h index d82c85d8..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 /** @@ -1358,7 +1406,7 @@ struct access_control_list struct access_control_addr src[1]; /**< Client IP address */ struct access_control_addr dst[1]; /**< Website or parent proxy IP address */ #ifdef HAVE_RFC2553 - int wildcard_dst; /** < dst address is wildcard */ + short wildcard_dst; /** < dst address is wildcard */ #endif short action; /**< ACL_PERMIT or ACL_DENY */ @@ -1572,16 +1620,16 @@ struct configuration_spec #ifdef FEATURE_HTTPS_INSPECTION /** Password for proxy ca file **/ - char * ca_password; + char *ca_password; /** Directory with files of ca **/ char *ca_directory; /** Filename of ca certificate **/ - char * ca_cert_file; + char *ca_cert_file; /** Filename of ca key **/ - char * ca_key_file; + char *ca_key_file; /** Directory for saving certificates and keys for each webpage **/ char *certificate_directory; @@ -1590,7 +1638,7 @@ struct configuration_spec char *cipher_list; /** Filename of trusted CAs certificates **/ - char * trusted_cas_file; + char *trusted_cas_file; #endif };