Commit Graph

269 Commits (bee1a82bfcc576fb40a3793f0f47605dcc8f0791)

Author SHA1 Message Date
Soner Tari cd78d881c8 Fix passthrough mode double free crash and free any/all data of previous proto asap
Improve and clean up
6 years ago
Soner Tari e8e8071772 Defer conn free until the exit code of topmost callback functions, for both parent and child connections, this is necessary to handle error conditions correctly and terminate connections gracefully
So introduce term flags in ctx and replace free functions with term functions to raise the term flag, this approach enables us to terminate connection anywhere in the code without causing use after free crashes
Improve and clean up
6 years ago
Soner Tari c085cafe0f Rename srv_dst to srvdst
Clean up
6 years ago
Soner Tari adb99db518 Handle out of memory conditions correctly
Do not do anything else with ctx while returning from topmost callback functions if it is freed
Rename functions, improve, and clean up
6 years ago
Soner Tari cbb9d593c4 Do not do anything else with ctx while returning from topmost callback functions if it is freed
Handle out of memory conditions correctly
6 years ago
Soner Tari 2aeec751e0 Handle out of memory conditions correctly 6 years ago
Soner Tari 2f0e574f09 Fix autossl, but Evolution client sometimes does not send ehlo, especially after user rejects self-signed cert, which needs further investigation
And other improvements
6 years ago
Soner Tari c91d569723 Improve debug logging, log proto name on connect/disconnect
Rename vars and functions
Improve and clean up
6 years ago
Soner Tari 1374d37722 Decouple stats from proto code
Move connect logging to the topmost callback functions, amap
Improve and clean up
6 years ago
Soner Tari 0c2d12f35d Decouple connect logging from proxy code
Improve and clean up
6 years ago
Soner Tari 3e0cbc2905 Rearrange and clean up 6 years ago
Soner Tari 59c11017bd Refactor to move common logging and stats code to topmost callback functions
Log only orig content in the topmost readcb
Improve and clean up
6 years ago
Soner Tari 13040639b7 Add static and NONNULL attrib
Rename, improve, and clean up
6 years ago
Soner Tari f681b31497 Decouple ssl from tcp and other protocols
Improve and clean up
6 years ago
Soner Tari 0c55600ec7 Move ssl proto to its own file, but still needs more refactoring to decouple ssl from other protocols, especially tcp
Rename and clean up
6 years ago
Soner Tari 8fc9b0a44d Move tcp proto to its own file
Rename and clean up
6 years ago
Soner Tari b10643908f Move passthrough proto to its own file
Rename and clean up
6 years ago
Soner Tari bb0afcfee6 Introduce ssl ctx, complete all protocol setup, so remove function tables and related code
Fix header string alloc and insert
Other improvements, fixes, and clean-up
6 years ago
Soner Tari 429c4c7a32 Refactor for code reuse
Clean up
6 years ago
Soner Tari c25e1ca0f5 Refactor child conns and autossl
Other fixes and improvements
6 years ago
Soner Tari 8aae4c1125 Separate http protocol from proxy code and move http related functions to protohttp source files
Introduce protocol context, and set http protocol up using http context and interface functions in http protocol driver, the rest of the protocols still runs on callback function tables
Refactor for further short functions
Other fixes and improvements
6 years ago
Soner Tari 96254a65ae Refactor for fd_readcb_funcs and conn_connect_funcs tables, better enum names 6 years ago
Soner Tari 5412ec5803 Refactor for better names and simplify 6 years ago
Soner Tari 1eb4789e8c Use callback function tables, instead of if-else statements to run parent callback functions, fifth iteration 6 years ago
Soner Tari 31a9468230 Exit loop when seen_resp_header 6 years ago
Soner Tari ef8f2b9c3f Refactor parent conn code to decouple proxy code from content logging, fourth iteration 6 years ago
Soner Tari 5799b8f978 Refactor parent readcb and writecb code for shorter functions, separate functions for different modes, protocols, and connection ends, third iteration 6 years ago
Soner Tari df8a10d661 Refactor parent eventcb code for shorter functions, separate functions for different modes and connection ends, second iteration 6 years ago
Soner Tari 0bfe71a6a9 Refactor for shorter functions, separate functions for different modes and connection ends, first iteration 6 years ago
Soner Tari df8b79eb9b Apply coding style and clean up 6 years ago
Soner Tari ddf80a3b7f Handle error conditions correctly 6 years ago
Soner Tari c8e3736dea Fix autossl feature, needs refactoring because the code has become complex now 6 years ago
Soner Tari 59bf997d57 Refactor writecb functions, remove redundant code, improve and clean up 6 years ago
Soner Tari 0fc3f53bfd Allow processing multiple events in eventcb
Combine functions to reduce redundant function calls
Improve and clean up
6 years ago
Soner Tari bb6584e310 Refactor to reuse content logging code, remove redundant code, improve and clean up 6 years ago
Soner Tari a314be6e94 Add conn context and is_child fields to proxy context struct to get rid of extra function params and to simplify conditionals
Remove redundant parent/conn pointer vars
Use conn instead of parent amap
6 years ago
Soner Tari 96397e1280 Remove redundant header insertion code and clean up 6 years ago
Soner Tari 9213734c95 Enable header insertion for tcp and ssl proxspecs as well, reported by @Sfinx
Remove redundant mail field of proxyspec
6 years ago
Soner Tari b67f5c6e58 Dirty close srv_dst ssl in all cases while switching to passthrough mode
Fix a possible crash since bev may not be srv_dst.bev
6 years ago
Soner Tari 4c682c3312 Fix connection stalls after switching to passthrough mode when we get srv_dst writecb while ssl shutdown is still in progress, and srv_dst readcb never fires, so dirty close srv_dst ssl 6 years ago
Soner Tari 78e07becb4 Close and free dst while switching to passthrough mode, otherwise causes signal 6 crashes 6 years ago
Soner Tari 57992beb86 Fix passthrough option 6 years ago
Soner Tari d2e9ab4487 Merge sslsplit-develop changes 6 years ago
Soner Tari a584363f62 Add defined(LIBRESSL_VERSION_NUMBER) directives to fix signal 6 and 10 crashes: LibreSSL versions up to v2.7.4 behave like OPENSSL_VERSION_NUMBER < 0x1000200fL, beware not just OPENSSL_VERSION_NUMBER < 0x10100000L
Fix up:port af, use a different var, because utm port af is always AF_INET, and it breaks the target address af if the listening address is AF_INET6
Enable -O2 C flag, because LibreSSL is compiled with -O2 too
6 years ago
Soner Tari 0c8348db75 Merge sslsplit develop changes 6 years ago
Soner Tari 1e2e5ff5f7 Close the conn if we are out of file descriptors in pxy_conn_setup_child() too 6 years ago
Soner Tari 27650fab69 Support all command line options in the conf file as well
Update with the latest sslsplit-devel changes
7 years ago
Soner Tari 5bba07b27f Use SSL_CTX_set_min_proto_version() and SSL_CTX_set_max_proto_version() functions to force SSL/TLS protocol version for OpenSSL 1.1.0+ 7 years ago
Soner Tari 9d435e180c Update with SSLsplit 0.5.2 and develop branch changes as of 270218 7 years ago
Soner Tari ae69b21908 Fix build on Linux, need to implement getdtablecount(2) of OpenBSD 7 years ago
Soner Tari 4c8831bd90 Update with SSLsplit 0.5.1 changes, fix LibreSSL version issues
Add VerifyPeer and AllowWrongHost options
7 years ago
Soner Tari a2b14097dd Verify upstream certificates, see https://insights.sei.cmu.edu/cert/2015/03/the-risks-of-ssl-inspection.html 7 years ago
Soner Tari 3ae89131dc Use different syslog facilities for error, conn, and stats logs, so they can be filtered into separate log files in syslog.conf 7 years ago
Soner Tari b064ffa668 Use llu int as unique conn id, much simpler than uuid 7 years ago
Soner Tari 137f017cb5 Fix EXPIRED message bug, other fixes and improvements 7 years ago
Soner Tari a1c5d05143 Add support for log priority to error logs, so syslogd prints the correct prio for error logs now 7 years ago
Soner Tari 179aa4fc8f Close the conn if we are out of file descriptors, or libevent will crash us 7 years ago
Soner Tari 4bf27d09e5 Add RemoveHTTPReferer option, Referer causes redirection errors with some sites 7 years ago
Soner Tari 077e97dbba Add more CRITICAL error logs
Fix some logs
Clean-up
7 years ago
Soner Tari d52ee62079 Add RemoveHTTPAcceptEncoding option 7 years ago
Soner Tari 0b5ef8b14d Mark critical errors as CRITICAL 7 years ago
Soner Tari 9ec58f821b Changes needed while adding SSL proxy support to WUI
Separate mail/mails to pop3/pop3s/smtp/smpts for statistics
Write connect logs to syslog too, for statistics
Fix log lines for statistics, remove fds from err logs
7 years ago
Soner Tari 1a6eab50a5 Tidy and clean logs up
Add DEBUG_PROXY directive around all log_dbg_level_printf() and related lines
Log stats to syslog, similar to error logs, so that it is simpler to rotate and parse
-O w/o -g is failing bufferevent_socket_connect for parent dst, so either enable -O w/ -g, or disable -O w/o -g (-O2 is failing too)
Refactoring
7 years ago
Soner Tari 36c89a0314 Fix crash if no logging enabled
Disable debug, the default now
7 years ago
Soner Tari ea6dc07248 Rename to sslproxy
Reduce http headers to just one SSLproxy line
7 years ago
Soner Tari 4bfc85868b Add support for pop3 (p3scan pop3 proxy)
Send sslproxy info only once, in the first packet only
Clean-up
7 years ago
Soner Tari 9e637dd2cc Clean-up 7 years ago
Soner Tari 1ae732f533 There are 3 dst bevs, writecbs of all of them may fire before connected event, so call eventcb first when that happens for each dst bevs.
Check if srv_dst bev is NULL or not: Since both eventcb and writecb for srv_dst are enabled, either eventcb or writecb may get a NULL srv_dst bev, causing a crash with signal 10.
Remove unnecessary evutil_closesocket() calls, they could close the fds twice, causing conn stalls
7 years ago
Soner Tari 5a136b7ce7 Add extra stats
Rearrange, clean-up
7 years ago
Soner Tari cea873e6f2 Set the OPENBSD directive at compile time 7 years ago
Soner Tari b6d1d92990 Fix use after free, other.bev may be NULL 7 years ago
Soner Tari d35e9af521 Fix use after free, other.bev may be NULL 7 years ago
Soner Tari dd7bf7b277 Fix srv_dst EOF on outbound connection before connection establishment, free conn, also move i/o debug lines to prevent segfault due to already freed srv_dst
Remove squid header lines only in children
7 years ago
Soner Tari 2411f79582 Add plain or ssl info to SSLproxy specific header line
Fix child eof bug
Flickr keeps redirecting to https with 301 unless we remove the Via line of squid, so apparently flickr assumes the existence of Via header field or squid keyword a sign of plain http, even if we are using https
Also do not send the loopback address to the Internet
Other fixes
7 years ago
Soner Tari 67ddee1585 Import sslsplit-devel changes
Add stats logs, initial
Add SSLproxy_SrcAddr header field
Clean-up
7 years ago
Soner Tari 3958adce9e Replace string manipulation functions with memory functions, simplify, clean-up 7 years ago
Soner Tari 378c8c03ef Fix/improve logging, clean-up 7 years ago
Soner Tari 5a496d04e0 Make utm service port spec a command line option
Check NULL retvals, clean-up
7 years ago
Soner Tari 26cbefa3a4 Use inet_ntop() instead of inet_ntoa()
Fix compiler warnings
7 years ago
Soner Tari 34665cf3c7 Refactor for code reuse, clean-up
Fix drive.google issue: Watermark disable mistake
7 years ago
Soner Tari bc55a5f7bb Import sslsplit code for errorcb ERROR event, and improvements 7 years ago
Soner Tari 63c51e9edd Fix packet size 7 years ago
Soner Tari f38163f7ed Code reuse, improvements, clean-up 7 years ago
Soner Tari f38c3b4552 Enable HTTP code, needs extensive refactoring and clean-up 7 years ago
Soner Tari 74c2e18e43 BEV_OPT_DEFER_CALLBACKS seems responsible for the issue with srv_dst, libevent acts as if we call event connect() ourselves. See: Launching connections on socket-based bufferevents at http://www.wangafu.net/~nickm/libevent-book/Ref6_bufferevent.html. So enable writecb and assume write event as CONNECTED too. 7 years ago
Soner Tari 72687803e1 Fix multithreading, potential NULL retval, and other refactoring issues
Fix clean-up after errors
7 years ago
Soner Tari 5aae8fa320 Detach while freeing parent ctx, because we attach while creating the parent ctx, this should fix a signal 10 crash 7 years ago
Soner Tari e013eadf23 Make child eventcb more similar to parent's eventcb
Re-enable closing srv_dst, TCP conns still stall even without it
7 years ago
Soner Tari a23d3ecb7b Closing srv_dst causes TCP conns to stall sometimes (SSL cons were ok), so disabled for now
Make eventcb more similar to original sslsplit code
7 years ago
Soner Tari 1b9a192947 Remove recursion while freeing children, parent frees children in a loop now
Improve, simplify, clean-up
7 years ago
Soner Tari ae35623c15 Remove meta ctx completely
Fix issues
7 years ago
Soner Tari 09e1c858b9 Refactoring to remove mctx 7 years ago
Soner Tari 133584361f Rename and clean-up 7 years ago
Soner Tari 496a4f090d Refactoring: Simplify, reduce, rearrange, rename, and clean-up
Get rid of now unnecessary child info struct and functions
7 years ago
Soner Tari d7094d7138 Refactoring: Simplify, reduce, rearrange, rename, and clean-up
Got rid of now unnecessary pxy_conn_is_ready_to_free*() functions
Got rid of now unnecessary duplicate child and parent free functions: pxy_*_conn_free()
Fix error handling
7 years ago
Soner Tari 1a446cd243 Refactoring: Create child ctx
Rearrange, clean-up
7 years ago
Soner Tari fc60db0e74 Disable the workaround for dst connection issues, NULL r/w cbs
Reduce the conn timeout to 30s again
7 years ago
Soner Tari 85875be00f Sometimes dst write cb fires but not event cb, especially if the listener cb is not finished yet, so the conn stalls. This is a workaround for this error condition, nothing else seems to work.
Clean-up
7 years ago
Soner Tari 590a693998 Rearrange and clean-up 7 years ago
Soner Tari e8332f11cf Make conn termination more similar to orig sslsplit code
Free child info struct of a deleted child
Rename, rearrange, and clean-up
7 years ago