Script freenetis ipset: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
Řádek 1: Řádek 1:
<nowiki>##################################################################################
+
    ##################################################################################
#! /bin/sh                                                                      #
+
    #! /bin/sh                                                                      #
#                                                                                #
+
    #                                                                                #
# Skript pro presmerovani ip adres. Data jsou nacitana automaticky z freenetisu. #
+
    # Skript pro presmerovani ip adres. Data jsou nacitana automaticky z freenetisu. #
#                                                                                #
+
    #                                                                                #
# autor Sevcik Roman 2009                                                        #
+
    # autor Sevcik Roman 2009                                                        #
# email sevcik.roman@slfree.net                                                  #
+
    # email sevcik.roman@slfree.net                                                  #
#                                                                                #
+
    #                                                                                #
##################################################################################
+
    ##################################################################################
 +
   
 +
    IPTABLES=/usr/local/sbin/iptables
 +
    IP_SELF=10.143.128.1
 +
    IP_SELF1=10.143.129.0
 +
    IP_TARGET=212.111.4.121
 +
    PORT_WEB=80
 +
    PORT_REDIRECT=36000
  
IPTABLES=/usr/local/sbin/iptables
+
    SET_URL_RANGES=http://freenetis.slfree.net/cs/redirect/ipset/ranges
IP_SELF=10.143.128.1
+
    SET_URL_PARTNERS=http://freenetis.slfree.net/cs/redirect/ipset/partners
IP_SELF1=10.143.129.0
+
    SET_URL_MEMBERS=http://freenetis.slfree.net/cs/redirect/ipset/members
IP_TARGET=212.111.4.121
 
PORT_WEB=80
 
PORT_REDIRECT=36000
 
  
SET_URL_RANGES=http://freenetis.slfree.net/cs/redirect/ipset/ranges
+
    # Funkce testuje jestli je dana ip validne zapsana
SET_URL_PARTNERS=http://freenetis.slfree.net/cs/redirect/ipset/partners
+
    # @param ip adresa
SET_URL_MEMBERS=http://freenetis.slfree.net/cs/redirect/ipset/members
+
    # return 1 pokud je ip validni
 +
    function valid_ip()
 +
    {
 +
        local  ip=$1
 +
        local  stat=1
  
# Funkce testuje jestli je dana ip validne zapsana
+
        if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
# @param ip adresa
+
          OIFS=$IFS
# return 1 pokud je ip validni
+
          IFS='.'
function valid_ip()
+
          ip=($ip)
{
+
          IFS=$OIFS
    local  ip=$1
+
          [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
    local  stat=1
+
          stat=$?
 +
        fi
 +
        return $stat
 +
    }
  
     if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
+
     # Funkce testuje jestli je dany subnet validne zapsany
      OIFS=$IFS
+
    # @param subnet
      IFS='.'
+
    # return 1 pokud je subnet validni
      ip=($ip)
+
    function valid_subnet()
      IFS=$OIFS
+
    {
      [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
+
        local  subnet=$1
      stat=$?
+
        local  stat=1
    fi
 
    return $stat
 
}
 
  
# Funkce testuje jestli je dany subnet validne zapsany
+
        if [[ $subnet =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$  ]]; then
# @param subnet
+
          OIFS=$IFS
# return 1 pokud je subnet validni
+
          IFS='/'
function valid_subnet()
+
          subnet=($subnet)
{
+
          IFS='.'
    local  subnet=$1
+
          ip=${subnet[0]}
    local  stat=1
+
          ip=($ip)
 +
          mask=${subnet[1]}
 +
          IFS=$OIFS
 +
          [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
 +
          [[ $mask -le 31 ]]
 +
          stat=$?
 +
        fi
 +
        return $stat
 +
    }
  
     if [[ $subnet =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$  ]]; then
+
     function update()
      OIFS=$IFS
+
    {
      IFS='/'
+
        #Vymazeme obsah vsech setu
      subnet=($subnet)
+
        echo "Erasing content of sets.";
      IFS='.'
+
        ipset -F ranges
      ip=${subnet[0]}
+
        ipset -F partners
      ip=($ip)
+
        ipset -F members
      mask=${subnet[1]}
 
      IFS=$OIFS
 
      [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
 
      [[ $mask -le 31 ]]
 
      stat=$?
 
    fi
 
    return $stat
 
}
 
  
function update()
+
        echo "Downloading data";
{
+
        wget -q -O /tmp/ranges $SET_URL_RANGES
    #Vymazeme obsah vsech setu
+
        wget -q -O /tmp/partners $SET_URL_PARTNERS
    echo "Erasing content of sets.";
+
        wget -q -O /tmp/members $SET_URL_MEMBERS
    ipset -F ranges
 
    ipset -F partners
 
    ipset -F members
 
  
    echo "Downloading data";
 
    wget -q -O /tmp/ranges $SET_URL_RANGES
 
    wget -q -O /tmp/partners $SET_URL_PARTNERS
 
    wget -q -O /tmp/members $SET_URL_MEMBERS
 
  
 +
        BAKIFS=$IFS
 +
        IFS=$(echo -en "\n\b")
 +
        exec 3<&0
  
    BAKIFS=$IFS
+
        #Plnime set partners
    IFS=$(echo -en "\n\b")
+
        echo "Filling set partnets.";
    exec 3<&0
+
        exec 0</tmp/partners
 +
        while read LINE
 +
        do
 +
          if valid_subnet $LINE; then echo "$LINE - added to set partners."; ipset -A partners $LINE; else echo "$LINE -  not valid subnet."; fi
 +
        done
  
    #Plnime set partners
+
        #Plnime set members
    echo "Filling set partnets.";
+
        echo "Filling set members.";
    exec 0</tmp/partners
+
        exec 0</tmp/members
    while read LINE
+
        while read LINE
    do
+
        do
      if valid_subnet $LINE; then echo "$LINE - added to set partners."; ipset -A partners $LINE; else echo "$LINE -  not valid subnet."; fi
+
          if valid_ip $LINE; then echo "$LINE - added to set members."; ipset -A members $LINE; else echo "$LINE -  not valid IP address."; fi
    done
+
        done
  
    #Plnime set members
+
        #Plnime set ranges  - je nutne aby se plnil az na konci. Jinak by byly presmerovane ip v dobe kdy se set nenbers a partners teprve plni.
    echo "Filling set members.";
+
        echo "Filling set ranges.";
    exec 0</tmp/members
+
        exec 0</tmp/ranges
    while read LINE
+
        while read LINE
    do
+
        do
      if valid_ip $LINE; then echo "$LINE - added to set members."; ipset -A members $LINE; else echo "$LINE -  not valid IP address."; fi
+
          if valid_subnet $LINE; then echo "$LINE - added to set ranges."; ipset -A ranges $LINE; else echo "$LINE -  not valid subnet."; fi
    done
+
        done
  
    #Plnime set ranges  - je nutne aby se plnil az na konci. Jinak by byly presmerovane ip v dobe kdy se set nenbers a partners teprve plni.
+
        exec 0<&3
    echo "Filling set ranges.";
+
        IFS=$BAKIFS
    exec 0</tmp/ranges
 
    while read LINE
 
    do
 
      if valid_subnet $LINE; then echo "$LINE - added to set ranges."; ipset -A ranges $LINE; else echo "$LINE -  not valid subnet."; fi
 
    done
 
  
    exec 0<&3
+
        #Cleaning up
     IFS=$BAKIFS
+
        rm /tmp/ranges
 +
        rm /tmp/partners
 +
        rm /tmp/members
 +
     }
  
     #Cleaning up
+
     case "$1" in
     rm /tmp/ranges
+
     start)
    rm /tmp/partners
 
    rm /tmp/members
 
}
 
  
case "$1" in
+
        echo "Adding sets.";
start)
+
        ipset -N ranges nethash --hashsize 1024 --probes 4 --resize 50
 +
        ipset -N partners nethash --hashsize 1024 --probes 4 --resize 50
 +
        ipset -N members iphash --hashsize 10000 --probes 8 --resize 50
  
    echo "Adding sets.";
+
        echo "Adding firewall rules.";
    ipset -N ranges nethash --hashsize 1024 --probes 4 --resize 50
+
        #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
    ipset -N partners nethash --hashsize 1024 --probes 4 --resize 50
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
    ipset -N members iphash --hashsize 10000 --probes 8 --resize 50
 
  
    echo "Adding firewall rules.";
+
        #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
    #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
+
        $IPTABLES -t nat -A PREROUTING -m set --set partners src -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
+
        $IPTABLES -t nat -A PREROUTING -m set --set members src -j ACCEPT
  
    #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
+
        #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
    $IPTABLES -t nat -A PREROUTING -m set --set partners src -j ACCEPT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -m set --set members src -j ACCEPT
 
  
    #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
+
        #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
  
    #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
+
        #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
 +
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
 +
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
  
    #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
 
  
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
 
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
 
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT
 
  
 +
        #Vyjimka pro kecalka pro podporu
 +
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
 +
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
  
    #Vyjimka pro kecalka pro podporu
+
        #Jinak vse ostatni zahod.
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
+
        $IPTABLES -t nat -A PREROUTING -m set --set ranges src -j DROP
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
 
  
    #Jinak vse ostatni zahod.
+
        exit 1
    $IPTABLES -t nat -A PREROUTING -m set --set ranges src -j DROP
+
      ;;
  
    exit 1
+
      restart)
  ;;
+
        $0 stop
 +
        $0 start
 +
        exit 1
 +
      ;;
  
  restart)
+
      update)
    $0 stop
+
        update
    $0 start
+
        exit 1
    exit 1
+
      ;;
  ;;
 
  
  update)
+
      stop)
    update
 
    exit 1
 
  ;;
 
  
  stop)
+
        echo "Deleting firewall rules.";
 +
        #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
 +
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
  
    echo "Deleting firewall rules.";
+
        #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
    #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
+
        $IPTABLES -t nat -D PREROUTING -m set --set partners src -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
+
        $IPTABLES -t nat -D PREROUTING -m set --set members src -j ACCEPT
  
    #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
+
        #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
    $IPTABLES -t nat -D PREROUTING -m set --set partners src -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set members src -j ACCEPT
 
  
    #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
+
        #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
  
    #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
+
        #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
 +
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
 +
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
  
    #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
 
  
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
+
        #Vyjimka pro kecalka pro podporu
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
  
    #Vyjimka pro kecalka pro podporu
+
        #Jinak vse ostatni zahod.
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
+
        $IPTABLES -t nat -D PREROUTING -m set --set ranges src -j DROP
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
 
  
    #Jinak vse ostatni zahod.
+
        echo "Deleting sets.";
    $IPTABLES -t nat -D PREROUTING -m set --set ranges src -j DROP
+
        ipset -X ranges
 +
        ipset -X partners
 +
        ipset -X members
  
    echo "Deleting sets.";
+
        exit 1
     ipset -X ranges
+
      ;;
    ipset -X partners
+
     esac
    ipset -X members
 
  
     exit 1
+
     exit 0
  ;;
 
esac
 
 
 
exit 0
 
 
 
</nowiki>
 

Verze z 1. 3. 2010, 08:26

   ##################################################################################
   #! /bin/sh                                                                       #
   #                                                                                #
   # Skript pro presmerovani ip adres. Data jsou nacitana automaticky z freenetisu. #
   #                                                                                #
   # autor Sevcik Roman 2009                                                        #
   # email sevcik.roman@slfree.net                                                  #
   #                                                                                #
   ##################################################################################
   
   IPTABLES=/usr/local/sbin/iptables
   IP_SELF=10.143.128.1
   IP_SELF1=10.143.129.0
   IP_TARGET=212.111.4.121
   PORT_WEB=80
   PORT_REDIRECT=36000
   SET_URL_RANGES=http://freenetis.slfree.net/cs/redirect/ipset/ranges
   SET_URL_PARTNERS=http://freenetis.slfree.net/cs/redirect/ipset/partners
   SET_URL_MEMBERS=http://freenetis.slfree.net/cs/redirect/ipset/members
   # Funkce testuje jestli je dana ip validne zapsana
   # @param ip adresa
   # return 1 pokud je ip validni
   function valid_ip()
   {
       local  ip=$1
       local  stat=1
       if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
         OIFS=$IFS
         IFS='.'
         ip=($ip)
         IFS=$OIFS
         [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
         stat=$?
       fi
       return $stat
   }
   # Funkce testuje jestli je dany subnet validne zapsany
   # @param subnet
   # return 1 pokud je subnet validni
   function valid_subnet()
   {
       local  subnet=$1
       local  stat=1
       if [[ $subnet =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$  ]]; then
         OIFS=$IFS
         IFS='/'
         subnet=($subnet)
         IFS='.'
         ip=${subnet[0]}
         ip=($ip)
         mask=${subnet[1]}
         IFS=$OIFS
         [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
         $mask -le 31 
         stat=$?
       fi
       return $stat
   }
   function update()
   {
       #Vymazeme obsah vsech setu
       echo "Erasing content of sets.";
       ipset -F ranges
       ipset -F partners
       ipset -F members
       echo "Downloading data";
       wget -q -O /tmp/ranges $SET_URL_RANGES
       wget -q -O /tmp/partners $SET_URL_PARTNERS
       wget -q -O /tmp/members $SET_URL_MEMBERS


       BAKIFS=$IFS
       IFS=$(echo -en "\n\b")
       exec 3<&0
       #Plnime set partners
       echo "Filling set partnets.";
       exec 0</tmp/partners
       while read LINE
       do
         if valid_subnet $LINE; then echo "$LINE - added to set partners."; ipset -A partners $LINE; else echo "$LINE -  not valid subnet."; fi
       done
       #Plnime set members
       echo "Filling set members.";
       exec 0</tmp/members
       while read LINE
       do
         if valid_ip $LINE; then echo "$LINE - added to set members."; ipset -A members $LINE; else echo "$LINE -  not valid IP address."; fi
       done
       #Plnime set ranges  - je nutne aby se plnil az na konci. Jinak by byly presmerovane ip v dobe kdy se set nenbers a partners teprve plni.
       echo "Filling set ranges.";
       exec 0</tmp/ranges
       while read LINE
       do
         if valid_subnet $LINE; then echo "$LINE - added to set ranges."; ipset -A ranges $LINE; else echo "$LINE -  not valid subnet."; fi
       done
       exec 0<&3
       IFS=$BAKIFS
       #Cleaning up
       rm /tmp/ranges
       rm /tmp/partners
       rm /tmp/members
   }
   case "$1" in
   start)
       echo "Adding sets.";
       ipset -N ranges nethash --hashsize 1024 --probes 4 --resize 50
       ipset -N partners nethash --hashsize 1024 --probes 4 --resize 50
       ipset -N members iphash --hashsize 10000 --probes 8 --resize 50
       echo "Adding firewall rules.";
       #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
       #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
       $IPTABLES -t nat -A PREROUTING -m set --set partners src -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set members src -j ACCEPT
       #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
       #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
       #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT


       #Vyjimka pro kecalka pro podporu
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
       #Jinak vse ostatni zahod.
       $IPTABLES -t nat -A PREROUTING -m set --set ranges src -j DROP
       exit 1
      ;;
      restart)
       $0 stop
       $0 start
       exit 1
      ;;
      update)
       update
       exit 1
      ;;
      stop)
       echo "Deleting firewall rules.";
       #Pravidlo pro pridani ip do setu members. Pokud projde firewallem packet na danou cilovou ip  prida se zdrojova ip do setu members.
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -d $IP_TARGET -j SET --add-set members src
       #Pokud uz je ip v setu members nebo partners neaplikuje se presmerovani.
       $IPTABLES -t nat -D PREROUTING -m set --set partners src -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set members src -j ACCEPT
       #Povoleni portu 36000 pro potreby presmerovani. Na tomto portu nasloucha webserver a provede presmerovani na zvolenou url.
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_REDIRECT -j ACCEPT
       #Presmerovani vseho co miri do internetu a ma cilovy port 80 na port 36000.
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp --dport $PORT_WEB -j REDIRECT --to-port $PORT_REDIRECT
       #Vyjimky ip adres a portu ktere budou fungovat i po presmerovani.
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF --dport 53 -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF --dport 22 -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p icmp -d $IP_SELF1 -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p udp -d $IP_SELF1 --dport 53 -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d $IP_SELF1 --dport 22 -j ACCEPT
       #Vyjimka pro kecalka pro podporu
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.29.84 --dport 80 -j ACCEPT
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -p tcp -d 67.23.27.61 --dport 80 -j ACCEPT
       #Jinak vse ostatni zahod.
       $IPTABLES -t nat -D PREROUTING -m set --set ranges src -j DROP
       echo "Deleting sets.";
       ipset -X ranges
       ipset -X partners
       ipset -X members
       exit 1
      ;;
   esac
   exit 0