Small iptables profile manager script
This commit is contained in:
parent
37393bcee0
commit
8f88967ffc
1 changed files with 99 additions and 0 deletions
99
scripts/firewall.sh
Executable file
99
scripts/firewall.sh
Executable file
|
@ -0,0 +1,99 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIGS=${XDG_CONFIG_HOME:-~/.config}
|
||||
PROFILES=$CONFIGS/firewall.d
|
||||
[ ! -d "$PROFILES" ] && mkdir -p "$PROFILES"
|
||||
DEFAULT_PROFILE="$PROFILES/default"
|
||||
|
||||
get_profile_path() {
|
||||
profile=$1
|
||||
if [ -z "$profile" ]; then
|
||||
echo $DEFAULT_PROFILE
|
||||
else
|
||||
echo "$PROFILES/${profile}.rules"
|
||||
fi
|
||||
}
|
||||
|
||||
set_default_profile() {
|
||||
profile=$1
|
||||
if [ -n "$profile" ]; then
|
||||
profile_path=$(get_profile_path "$profile")
|
||||
ln -sf "$profile_path" "$DEFAULT_PROFILE"
|
||||
fi
|
||||
}
|
||||
|
||||
load_profile() {
|
||||
profile=$1
|
||||
profile_path=$(get_profile_path $profile)
|
||||
if [ ! -e "$profile_path" ]; then
|
||||
return 1
|
||||
else
|
||||
iptables-restore < $profile_path
|
||||
return $?
|
||||
fi
|
||||
}
|
||||
|
||||
save_profile() {
|
||||
profile=$1
|
||||
profile_path=$(get_profile_path $profile)
|
||||
iptables-save > $profile_path
|
||||
return $?
|
||||
}
|
||||
|
||||
do_load() {
|
||||
profile=$1
|
||||
|
||||
if load_profile $profile; then
|
||||
echo "Profile ${profile:-default} loaded successfully."
|
||||
set_default_profile $profile
|
||||
else
|
||||
echo "Loading profile ${profile:-default} failed."
|
||||
fi
|
||||
}
|
||||
|
||||
do_save() {
|
||||
profile=$1
|
||||
|
||||
if save_profile $profile; then
|
||||
echo "Profile ${profile:-default} saved successfully."
|
||||
set_default_profile $profile
|
||||
else
|
||||
echo "Saving profile ${profile:-default} failed."
|
||||
fi
|
||||
}
|
||||
|
||||
do_list() {
|
||||
echo "List of profiles:"
|
||||
ls $PROFILES | egrep '.rules$' | sed 's/.rules$//g'
|
||||
}
|
||||
|
||||
|
||||
if [ "$1" == "-h" -o "$1" == "help" ]; then
|
||||
cat <<EOF
|
||||
$0 <command>
|
||||
|
||||
Commands:
|
||||
- load
|
||||
- save
|
||||
- list
|
||||
EOF
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$UID" -ne 0 ]; then
|
||||
echo "You have to be root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
load)
|
||||
do_load $2
|
||||
;;
|
||||
save)
|
||||
do_save $2
|
||||
;;
|
||||
list)
|
||||
do_list
|
||||
;;
|
||||
esac
|
||||
|
Loading…
Reference in a new issue