#!/bin/sh export DATE="20.4.2010";SCRIPT=${0#/rom} export TITLE="Administration : Transfert de ports" . ${SCRIPT%/*}/cgi-bin-pre.sh cat<Administration : Transfert de ports EOF if [ "$REQUEST_METHOD" = "POST" ]; then read QUERY_STRING fi if [ -z "$QUERY_STRING" ]; then ff_portfw="$(nvram get ff_portfw)" else while [ "${#QUERY_STRING}" != "0" ]; do name="${QUERY_STRING%%=*}" QUERY_STRING="${QUERY_STRING#*=}" value="${QUERY_STRING%%&*}" if echo "$QUERY_STRING" | grep -q "&" -; then QUERY_STRING="${QUERY_STRING#*&}" else QUERY_STRING="" fi case $name in ff_portfw_wan) ff_portfw_wan="$value" ;; delIP) if echo "${QUERY_STRING#*=}" | grep -q IP -; then while true ; do QUERY_STRING="${QUERY_STRING#*&}" if [ "${QUERY_STRING%%=*}" = "IP" ]; then break; fi done else QUERY_STRING="" fi ;; delPort) if echo "${QUERY_STRING#*&}" | grep -q Port -; then while true ; do QUERY_STRING="${QUERY_STRING#*&}" if [ "${QUERY_STRING%%=*}" = "Port" ]; then break; fi if [ "${QUERY_STRING%%=*}" = "IP" ]; then break; fi done else QUERY_STRING="" fi ;; IP) if [ "${#value}" != "0" ] ; then ff_portfw=$ff_portfw" $value:" ; fi ;; Port) QUERY_STRING="${QUERY_STRING#*=}" Range="${QUERY_STRING%%&*}" QUERY_STRING="${QUERY_STRING#*&}" name3="${QUERY_STRING%%=*}" if [ "$name3" = "tcp" ] || [ "$name3" = "udp" ]; then if [ "${#value}" = "0" ] && [ "${#Range}" = "0" ]; then QUERY_STRING="delPort=Entferne&Port=&Range=&$QUERY_STRING" elif [ "${#value}" != "0" ] && [ "${#Range}" != "0" ] ; then ff_portfw=$ff_portfw"$value-$Range/" elif [ "${#value}" != "0" ] && [ "${#Range}" = "0" ] ; then ff_portfw=$ff_portfw"${value}/" elif [ "${#value}" = "0" ] && [ "${#Range}" != "0" ] ; then ff_portfw=$ff_portfw"${Range}/" fi fi ;; tcp) if [ "${QUERY_STRING%%=*}" = "udp" ] ; then ff_portfw="$ff_portfw""tu," if echo "$QUERY_STRING" | grep -q "&" -; then QUERY_STRING="${QUERY_STRING#*&}" else QUERY_STRING="" fi else ff_portfw="$ff_portfw""t," fi ;; udp) ff_portfw="$ff_portfw""u," ;; post_portfw) post_portfw="1" ;; post_abort) post_abort="1" ;; esac done fi if [ -z "$post_abort" ] && [ -z "$post_portfw" ]; then cat<
Ingress Interface: WIFI WAN
EOF for FWTARGET in $ff_portfw; do DESTIP=${FWTARGET%%:*} DPORTS=${FWTARGET#*:} cat<
Adresse IP cible : EOF while [ ${#DPORTS} != "0" ]; do PORTPROTO=${DPORTS%%,*} DPORT=${PORTPROTO%/*} if echo $DPORT | grep -q - -; then PORTRANGE=${DPORT#*-} DPORT=${DPORT%-*} else PORTRANGE="" fi PROTO=${PORTPROTO#*/} tcp="" udp="" case $PROTO in t) tcp=' CHECKED="CHECKED"' ;; u) udp=' CHECKED="CHECKED"' ;; tu) tcp=' CHECKED="CHECKED"' udp=' CHECKED="CHECKED"' ;; esac DPORTS=${DPORTS#*,} cat<
Port :  tcp   udp EOF done cat<
 tcp   udp EOF done cat<
Adresse IP cible :
 
   
EOF else DIRTY= if [ -n "$post_portfw" ]; then ff_portfw="$(echo $ff_portfw|sed -e 's/^ //;s/ /+/g')" for V in ff_portfw; do eval "C=\$$V" C=$(unescape $C) if [ "$C" != "$(nvram get $V)" ]; then DIRTY=1 nvram set $V="$C" fi done if [ $ff_portfw_wan != "$(nvram get ff_portfw_wan)" ]; then DIRTY=1 nvram set ff_portfw_wan="$ff_portfw_wan" fi fi if [ -n "$DIRTY" ]; then nvram commit>/dev/null 2>&1 . /etc/functions.sh get_netparam if iptables -t nat -nL portfw_PREROUTING >/dev/null 2>&1; then # kill old rules trap - INT QUIT TSTP set stop . /etc/local.fw-portfw fi # create new rules trap - INT QUIT TSTP set start . /etc/local.fw-portfw cat< Les paramètres sont enregistrés. Ils sont activés. EOF else cat< Aucun changement dans la configuration. EOF fi fi . ${SCRIPT%/*}/cgi-bin-post.sh