mirror of
https://github.com/sonertari/SSLproxy
synced 2024-11-18 03:25:31 +00:00
982880ccfe
Now we don't go over all of the passsite rules in a linked list trying to apply passsite to the sni or common names of a conn. Instead, we now have user+keyword, keyword, ip, and all lists. For example, if we find the conn user in the user+keyword list and a passsite in that list matches, we don't look into other lists. This change is expected to improve the performance of passsite processing considerably, because in the earlier implementation we had to go over all of the passsite rules trying to match passsite. And this solution uses a correct data structure, even if not the best. For example, each user or keyword in passsite rules is strdup()'ed only once. Note that a better solution could use, say, a hash table for users, instead of a linked list. But hash tables are not suitable for keywords or sites, because we search for substring matches with them, not exact matches. Also, this fixes passsite rules without any filters defined, i.e. to be applied to all connections. Also, now e2e tests error exit if WITHOUT_USERAUTH is enabled. E2e tests require UserAuth enabled.
60 lines
2.5 KiB
Makefile
60 lines
2.5 KiB
Makefile
PROJECT_ROOT= ../..
|
|
TESTPROXY:= ~/.cargo/bin/testproxy
|
|
|
|
TESTPROXY_VERSION=$(shell $(TESTPROXY) -V)
|
|
ifneq ($(TESTPROXY_VERSION),testproxy 0.0.3)
|
|
$(error Use Testproxy v0.0.3 with this version of SSLproxy, found $(TESTPROXY_VERSION))
|
|
endif
|
|
|
|
ifeq ($(findstring -DWITHOUT_USERAUTH,$(shell $(PROJECT_ROOT)/src/sslproxy -V 2>&1 | grep "Features: ")),-DWITHOUT_USERAUTH)
|
|
$(error End-to-end tests need UserAuth enabled, disable WITHOUT_USERAUTH feature in main makefile and try again)
|
|
endif
|
|
|
|
all: test
|
|
|
|
buildsslproxy:
|
|
$(MAKE) -C $(PROJECT_ROOT)
|
|
|
|
buildlp:
|
|
$(MAKE) -C lp
|
|
|
|
# XXX: How to build sslproxy before setting the vars? Otherwise, we depend on the main makefile to have already built it.
|
|
test: SSL_PROTOS=$(shell $(PROJECT_ROOT)/src/sslproxy -V 2>&1 | grep "SSL/TLS protocol availability")
|
|
test: TLS11=$(findstring tls11,$(SSL_PROTOS))
|
|
test: TLS13=$(findstring tls13,$(SSL_PROTOS))
|
|
test: SSLPROXY_CONF=$(if $(TLS13),sslproxy.conf,sslproxy_no_tls13.conf)
|
|
test: SSLPROXY_CONF:=$(if $(TLS11),$(SSLPROXY_CONF),sslproxy_no_tls11.conf)
|
|
test: SSLPROXY_COMMAND=$(PROJECT_ROOT)/src/sslproxy -f $(SSLPROXY_CONF) -o Debug=no -o Daemon=yes -o User=nobody
|
|
test: TESTHARNESS=$(if $(TLS13),testharness.json,testharness_no_tls13.json)
|
|
test: TESTHARNESS:=$(if $(TLS11),$(TESTHARNESS),testharness_no_tls11.json)
|
|
test: buildsslproxy buildlp
|
|
sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) ./lp/lp -f ./lp/lp.conf -o Debug=no -o Daemon=yes -o User=nobody
|
|
sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(SSLPROXY_COMMAND)
|
|
$(TESTPROXY) -f $(TESTHARNESS) -l 4
|
|
sudo pkill sslproxy
|
|
sudo pkill lp
|
|
|
|
test_split: SSL_PROTOS=$(shell $(PROJECT_ROOT)/src/sslproxy -V 2>&1 | grep "SSL/TLS protocol availability")
|
|
test_split: TLS11=$(findstring tls11,$(SSL_PROTOS))
|
|
test_split: TLS13=$(findstring tls13,$(SSL_PROTOS))
|
|
test_split: SSLPROXY_CONF=$(if $(TLS13),sslproxy.conf,sslproxy_no_tls13.conf)
|
|
test_split: SSLPROXY_CONF:=$(if $(TLS11),$(SSLPROXY_CONF),sslproxy_no_tls11.conf)
|
|
test_split: SSLPROXY_COMMAND=$(PROJECT_ROOT)/src/sslproxy -n -f $(SSLPROXY_CONF) -o Debug=no -o Daemon=yes -o User=nobody
|
|
test_split: TESTHARNESS=$(if $(TLS13),testharness_split.json,testharness_split_no_tls13.json)
|
|
test_split: TESTHARNESS:=$(if $(TLS11),$(TESTHARNESS),testharness_split_no_tls11.json)
|
|
test_split: buildsslproxy
|
|
sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(SSLPROXY_COMMAND)
|
|
$(TESTPROXY) -f $(TESTHARNESS) -l 4
|
|
sudo pkill sslproxy
|
|
|
|
travis: test
|
|
|
|
clean:
|
|
$(MAKE) -C $(PROJECT_ROOT) clean
|
|
$(MAKE) -C lp clean
|
|
|
|
FORCE:
|
|
|
|
.PHONY: all clean buildsslproxy buildlp test test_split travis
|
|
|