redir: propozycja

Daniel Mróz beorn w send.gromada.pl
Czw, 7 Lut 2002, 12:37:53 CET


Czesc

   Pobawilem sie troche redirem i dla latwiejszej konfiguracji
zrobilem uruchamianie podobne do PLDowskiego (z jednym wyjatkiem).
Moze Wam sie przyda.
W katalogu /etc/sysconfig utworzylem podkatalog `redirection' z
plikami w takim oto formacie (przyklad pliku `www'):

------------------------
# Adres interfejsu, na którym chcemy nasłuchiwać
REDIR_LADDR=jakis.sobie.adres.IP

# Numer portu, na którym chcemy nasłuchiwać
REDIR_LPORT=80

# Adres docelowy przekierowania
REDIR_CADDR=jakis.inny.adres.IP

# Port docelowy przekierowania
REDIR_CPORT=80

# Czy mamy logować przez syslog(1)?  [yes/no]
REDIR_SYSLOG=yes

# Czy logi mają być bardziej szczegółowe?  [yes/no]
REDIR_DEBUG=no

# Czas nieaktywności, po którym ma nastąpić rozłączenie
REDIR_TIMEOUT=0

# Czy przekierowujemy połaczenie FTP, a jeśli tak, to jakie? [no/port/pasv/both]#       no      - nie przekierowujemy połączenia FTP
#       port    - obsługujemy tylko PORT
#       pasv    - obsługujemy tylko PASV
#       both    - obsługujemy PORT i PASV
REDIR_FTP=no

# Czy ma być włączone wsparcie dla transparent proxy?  [yes/no]
REDIR_TPROXY=no

# Czy przekierowujemy połączenie poprzez proxy z obsługą CONNECT?  [yes/no]
REDIR_CONNECT=no

# This must be last line !
# vi:syntax=sh:tw=78:ts=8:sw=4
----------------------------------

Takich plikow moze byc kilka(-nascie, -dziesiat, ...) z roznymi
ustawieniami.
Dodatkowo w skryptach startowych mam pliczek:
----------------------------------
#!/bin/sh

CONF_DIR=/etc/sysconfig/redirection

for REDIR_CONF in ${CONF_DIR}/*
do
        echo "Ustawiam przekierowanie dla `basename ${REDIR_CONF}`..."
        . ${REDIR_CONF}

        REDIR_OPTS=''
        [ "${REDIR_SYSLOG}" == 'yes' ] && REDIR_OPTS="${REDIR_OPTS} --syslog"
        [ "${REDIR_DEBUG}" == 'yes' ] && REDIR_OPTS="${REDIR_OPTS} --debug"
        [ ${REDIR_TIMEOUT} -ne 0 ] &&   \
                REDIR_OPTS="${REDIR_OPTS} --timeout=${REDIR_TIMEOUT}"
        if [ "${REDIR_FTP}" != 'no' ]
        then
                case "${REDIR_FTP}" in
                        'pasv'|'PASV')
                                REDIR_OPTS="${REDIR_OPTS} --ftp=pasv"
                                ;;
                        'port'|'PORT')
                                REDIR_OPTS="${REDIR_OPTS} --ftp=port"
                                ;;
                        'both'|'BOTH')
                                REDIR_OPTS="${REDIR_OPTS} --ftp=both"
                                ;;
                        *)
                                # Blah
                                ;;
                esac
        fi
        [ "${REDIR_TPROXY}" == 'yes' ] &&       \
                REDIR_OPTS="${REDIR_OPTS} --transproxy"
        [ "${REDIR_CONNECT}" == 'yes' ] && "${REDIR_OPTS} --connect"
        [ -z "${REDIR_LADDR}" ] && REDIR_LADDR=0.0.0.0
        if [ -z "${REDIR_LPORT}" -o -z "${REDIR_CADDR}" -o -z "${REDIR_CPORT}" ]
        then
                echo "Błąd konfiguracji"
                exit 1
        fi

        redir                                   \
                --laddr="${REDIR_LADDR}"        \
                --lport="${REDIR_LPORT}"        \
                --caddr="${REDIR_CADDR}"        \
                --cport="${REDIR_CPORT}"        \
                ${REDIR_OPTS} &
done
--------------------------------------

Jeszcze tylko dodanie
--------------------------------------
destination redir       { file("/var/log/redir"); };
filter f_redir          { program(redir); };
log { source(src); filter(f_redir); destination(redir); };
--------------------------------------

do syslog-ng.conf i... dziala :)
Oczywiscie trzeba by to wszystko popoprawiac, przerobic na rc-scripts
itp., itd.
To tylko propozycja. Nie bijcie ;)


Pozdrawiam
Beorn

-- 
----------------------------------------------------------------------
Daniel `Beorn' Mróz      <beorn w alpha.pl>       http://127.0.0.1/beorn
GCS/E d-(pu) s-:- a--@ C++++ UL++++$ P+++ L+++ E--- X W+>++ N+++ o? K-
w--- O M- V- PS PE- !Y PGP+ t- 5- R tv-- b+ DI++ D+++ G++ e h+ r--- y?
----------------------------------------------------------------------



Więcej informacji o liście dyskusyjnej pld-devel-pl