HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: /volume1/@appstore/ProxyServer/tools/synoproxynat.sh
#!/bin/sh
LOGGER="/usr/bin/logger"
SERVICE_NAME="synoproxyserver"
KERNEL_MODULES_NAT="nf_nat.ko iptable_nat.ko ipt_REDIRECT.ko ipt_MASQUERADE.ko"
KERNEL_MODULES_CORE="x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko nf_defrag_ipv4.ko nf_conntrack_ipv4.ko ipt_LOG.ko"
KERNEL_MODULES_COMMON="xt_multiport.ko xt_tcpudp.ko xt_state.ko xt_limit.ko xt_iprange.ko"
KERNEL_MODULES_TOTAL="${KERNEL_MODULES_CORE} ${KERNEL_MODULES_NAT} ${KERNEL_MODULES_COMMON}"

reverse_syno() {
        local modules=$1
        local mod
        local ret=""

        for mod in $modules; do
                ret="$mod $ret"
        done

        echo $ret
}


log_msg()
{
        $LOGGER -s warn -t "Proxy Server" "$1"
}
load_kernel_module()
{
        /usr/syno/bin/synomoduletool --insmod ${SERVICE_NAME} ${KERNEL_MODULES_TOTAL}
}
unload_kernel_module()
{
        MODULES_REVERSE=`reverse_syno "${KERNEL_MODULES_TOTAL}"`
        /usr/syno/bin/synomoduletool --rmmod ${SERVICE_NAME} ${MODULES_REVERSE}
}
add_rule()
{
        load_kernel_module

        local IPADDR=$1
        local NETMASK=$2
        local IFNAME=$3
        local SQUID_PORT=`/bin/cat /var/packages/ProxyServer/target/squid/etc/general_setting_syno.conf  | /bin/grep http_port | /usr/bin/awk '{print $2}'`
        NETWORK=`/bin/ipcalc -n ${IPADDR} ${NETMASK} | /usr/bin/awk -F = '{print $2}'` # set $NETWORK
        PREFIX=`/bin/ipcalc -p ${IPADDR} ${NETMASK} | /usr/bin/awk -F = '{print $2}'` # set $PREFIX
        /sbin/iptables -t nat -I PREROUTING -i $IFNAME -s ${NETWORK}/${PREFIX} -p tcp --dport 80 -j REDIRECT --to-ports $SQUID_PORT
}
remove_rule()
{
        local SQUID_PORT=`/bin/cat /var/packages/ProxyServer/target/squid/etc/general_setting_syno.conf  | /bin/grep http_port | /usr/bin/awk '{print $2}'`
        /sbin/iptables -t nat -S PREROUTING | /bin/grep $SQUID_PORT | /usr/bin/cut -d " " -f 3- | while read line
        do 
                /sbin/iptables -t nat -D PREROUTING $line
        done

        unload_kernel_module || true  #XXX unload module may return value>0, WR

}
case $1 in
        --add)
        shift
        add_rule $@
        ;;
        --remove)
        remove_rule
        ;;
esac