Repository navigation
Expand file tree
/
Copy pathhttpd-foreground
More file actions
executable file
·52 lines (52 loc) · 2.81 KB
/
Copy pathhttpd-foreground
File metadata and controls
executable file
·52 lines (52 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/sh
CONF=/usr/local/apache2/conf/extra/mod_qos/qos-active.conf
: > "$CONF"
if [ "$MOD_QOS_ENABLED" = "on" ]; then
echo "LoadModule qos_module modules/mod_qos.so" >> "$CONF"
[ -n "$QOS_CLIENT_IP_FROM_HEADER" ] && echo "QS_ClientIpFromHeader $QOS_CLIENT_IP_FROM_HEADER" >> "$CONF"
for ip in $(echo "$QOS_EXCLUDE_IP" | tr ',' ' '); do
[ -n "$ip" ] && echo "QS_SrvMaxConnExcludeIP $ip" >> "$CONF"
done
for cidr in $(echo "$HEALTHZ_CIDRS" | tr ',' ' '); do
prefix=$(echo "$cidr" | cut -d. -f1-2)
[ -n "$prefix" ] && echo "QS_SrvMaxConnExcludeIP ${prefix}." >> "$CONF"
done
[ -n "$MOD_QOS_LOGENV" ] && echo "QS_LogEnv on $MOD_QOS_LOGENV" >> "$CONF"
[ -n "$QOS_SRV_MAX_CONN" ] && echo "QS_SrvMaxConn $QOS_SRV_MAX_CONN" >> "$CONF"
[ -n "$QOS_SRV_MAX_CONN_PER_IP" ] && echo "QS_SrvMaxConnPerIP $QOS_SRV_MAX_CONN_PER_IP" >> "$CONF"
[ -n "$QOS_SRV_MAX_CONN_CLOSE" ] && echo "QS_SrvMaxConnClose $QOS_SRV_MAX_CONN_CLOSE" >> "$CONF"
[ -n "$QOS_SRV_MIN_DATA_RATE" ] && echo "QS_SrvMinDataRate $QOS_SRV_MIN_DATA_RATE" >> "$CONF"
[ -n "$QOS_LOC_REQUEST_LIMIT_DEFAULT" ] && echo "QS_LocRequestLimitDefault $QOS_LOC_REQUEST_LIMIT_DEFAULT" >> "$CONF"
[ -n "$QOS_CLIENT_EVENT_PER_SEC_LIMIT" ] && echo "QS_ClientEventPerSecLimit $QOS_CLIENT_EVENT_PER_SEC_LIMIT" >> "$CONF"
[ -n "$QOS_CLIENT_EVENT_LIMIT_COUNT" ] && echo "QS_ClientEventLimitCount $QOS_CLIENT_EVENT_LIMIT_COUNT" >> "$CONF"
[ -n "$QOS_CLIENT_EVENT_BLOCK_COUNT" ] && echo "QS_ClientEventBlockCount $QOS_CLIENT_EVENT_BLOCK_COUNT" >> "$CONF"
[ -n "$QOS_REQUEST_HEADER_FILTER" ] && echo "QS_RequestHeaderFilter $QOS_REQUEST_HEADER_FILTER" >> "$CONF"
[ -n "$QOS_LIMIT_REQUEST_BODY" ] && echo "QS_LimitRequestBody $QOS_LIMIT_REQUEST_BODY" >> "$CONF"
if [ -n "$QOS_BLOCK_LOCATION" ]; then
for p in $(printf '%s' "$QOS_BLOCK_LOCATION" | tr ',' ' '); do
[ -n "$p" ] && echo "SetEnvIf Request_URI ^$p QS_Limit=$QOS_BLOCK_EVENTS" >> "$CONF"
done
fi
echo "IncludeOptional $QOS_CONF_FILE" >> "$CONF"
if [ -n "$QOS_ALLOW_LOCATION" ]; then
for ap in $(printf '%s' "$QOS_ALLOW_LOCATION" | tr ',' ' '); do
[ -n "$ap" ] && echo "SetEnvIf Request_URI ^$ap !QS_Limit" >> "$CONF"
done
fi
hdr="$QOS_CLIENT_IP_FROM_HEADER"
[ -z "$hdr" ] && hdr="Remote_Addr"
[ "$hdr" = "#USERAGENT_IP" ] && hdr="Remote_Addr"
for ip in $(printf '%s' "$QOS_EXCLUDE_IP" | tr ',' ' '); do
[ -n "$ip" ] || continue
pattern=$(printf '%s' "$ip" | sed 's/\./\\./g')
echo "SetEnvIf ${hdr} ^${pattern} !QS_Limit" >> "$CONF"
done
for cidr in $(printf '%s' "$HEALTHZ_CIDRS" | tr ',' ' '); do
prefix=$(printf '%s' "$cidr" | cut -d. -f1-2)
[ -n "$prefix" ] || continue
pattern=$(printf '%s' "${prefix}." | sed 's/\./\\./g')
echo "SetEnvIf ${hdr} ^${pattern} !QS_Limit" >> "$CONF"
done
fi
rm -f /usr/local/apache2/logs/httpd.pid
exec httpd -DFOREGROUND "$@"