# this custom script runs nfqws2 in server mode for typical webserver

WEBSERVER_DEFAULT_STRATEGY="
--server
--payload=http_reply,tls_server_hello --lua-desync=fake:blob=0x00000000000000000000000000000000:badsum:repeats=2 --lua-desync=multisplit
--payload=empty --lua-desync=synack_split"

# can override in config :
NFQWS_OPT_DESYNC_WEBSERVER="${NFQWS_OPT_DESYNC_WEBSERVER:-$WEBSERVER_DEFAULT_STRATEGY}"
WEBSERVER_PORTS="${WEBSERVER_PORTS:-80,443}"
WEBSERVER_PKT_OUT="${WEBSERVER_PKT_OUT:-15}"

alloc_dnum DNUM_WEBSERVER
alloc_qnum QNUM_WEBSERVER

zapret_custom_daemons()
{
	# $1 - 1 - add, 0 - stop

	local opt="--qnum=$QNUM_WEBSERVER $NFQWS_OPT_DESYNC_WEBSERVER"
	do_nfqws $1 $DNUM_WEBSERVER "$opt"
}
zapret_custom_firewall()
{
	# $1 - 1 - run, 0 - stop

	local PORTS=$(replace_char - : $WEBSERVER_PORTS)
	local first_packets=$(ipt_first_packets $WEBSERVER_PKT_OUT)
	local f="-p tcp -m multiport --sports $PORTS $first_packets"
	fw_nfqws_post $1 "$f" "$f" $QNUM_WEBSERVER
}
zapret_custom_firewall_nft()
{
	# stop logic is not required

	local first_packets=$(nft_first_packets $WEBSERVER_PKT_OUT)
	local f="tcp sport {$WEBSERVER_PORTS} $first_packets"
	nft_fw_nfqws_post "$f" "$f" $QNUM_WEBSERVER
}
