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