summaryrefslogtreecommitdiff
path: root/sentinel-minipot/files/sentinel-firewall.sh
blob: f01ee867b77f7754db122ab5168cf39aabea68d1 (plain)
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
53
#!/bin/sh
set -e
SF_DIR="${0%/*}"
. "$SF_DIR/common.sh"
. /lib/functions.sh
. /lib/functions/sentinel.sh
. /usr/libexec/sentinel/minipot-defaults.sh

allowed_to_run "minipot" 2>/dev/null || return 0


config_load "sentinel"
config_get ftp_port "minipot" "ftp_port" "$DEFAULT_FTP_PORT"
config_get http_port "minipot" "http_port" "$DEFAULT_HTTP_PORT"
config_get smtp_port "minipot" "smtp_port" "$DEFAULT_SMTP_PORT"
config_get telnet_port "minipot" "telnet_port" "$DEFAULT_TELNET_PORT"


port_redirect_zone() {
	local config_section="$1"
	local zone enabled
	config_get zone "$config_section" "name"
	config_get_bool enabled "$config_section" "sentinel_minipot" "0"
	[ "$enabled" = "1" ] || return 0

	[ "$ftp_port" = "0" ] || \
		iptables_redirect "$zone" 21 "$ftp_port" "Minipot FTP"
	[ "$http_port" = "0" ] || \
		iptables_redirect "$zone" 80 "$http_port" "Minipot HTTP"
	[ "$smtp_port" = "0" ] || {
		iptables_redirect "$zone" 25 "$smtp_port" "Minipot SMTP"
		iptables_redirect "$zone" 587 "$smtp_port" "Minipot SMTP submission"
	}
	[ "$telnet_port" = "0" ] || \
		iptables_redirect "$zone" 23 "$telnet_port" "Minipot Telnet"
}

config_load "firewall"
config_foreach port_redirect_zone "zone"


if source_if_exists "$SF_DIR/dynfw-utils.sh"; then
	[ "$ftp_port" = "0" ] || \
		bypass_dynamic_firewall "tcp" "21" "Minipot FTP"
	[ "$http_port" = "0" ] || \
		bypass_dynamic_firewall "tcp" "80" "Minipot HTTP"
	[ "$smtp_port" = "0" ] || {
		bypass_dynamic_firewall "tcp" "25" "Minipot SMTP"
		bypass_dynamic_firewall "tcp" "587" "Minipot SMTP submission"
	}
	[ "$telnet_port" = "0" ] || \
		bypass_dynamic_firewall "tcp" "23" "Minipot Telnet"
fi