
<?xml version="1.0"?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/transitional.dtd">
<html>
<head>
<title>--&lt;[ JAIME PEREZ ]&gt;--</title>

 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta name="Generator" content="Vi Improved">
 <meta name="Author" content="Jaime Perez">
 
 <LINK rel="stylesheet" type="text/css" href="/~japecre/css/doc.css">
</HEAD>

<BODY>
 <PRE>#!/bin/bash
#####################################################
# Script de creacion de tneles SSH para conexiones #
# POP                                               #
# Autor: Jaime Prez Crespo                         #
# Fecha: 5 de Agosto del 2003                       #
# Licencia: GPL                                     #
#####################################################

echo "Tnel POP a travs de SSH, por Jaime Prez"
echo

CONF_FILE=$HOME/.ssh/pop.conf

if [ -e $CONF_FILE ]; then
   # configuracin bsica del tnel
   PORTFORWARD=`cat $CONF_FILE | grep -v "#" | grep PORTFORWARD | cut -d = -f 2 | sed 's/"//g'`
   POP_CLIENT=`cat $CONF_FILE | grep -v "#" | grep POP_CLIENT | cut -d = -f 2 | sed 's/"//g'`
   SSHSERVER_USERNAME=`cat $CONF_FILE | grep -v "#" | grep SSHSERVER_USERNAME | cut -d = -f 2 | sed 's/"//g'`
   SSHSERVER_HOST=`cat $CONF_FILE | grep -v "#" | grep SSHSERVER_HOST | cut -d = -f 2 | sed 's/"//g'`
   POPSERVER_HOST=`cat $CONF_FILE | grep -v "#" | grep POPSERVER_HOST | cut -d = -f 2 | sed 's/"//g'`
   POPSERVER_PORT=`cat $CONF_FILE | grep -v "#" | grep POPSERVER_PORT | cut -d = -f 2 | sed 's/"//g'`
   # configuracin avanzada
   COMPRESION=`cat $CONF_FILE | grep -v "#" | grep COMPRESION | cut -d = -f 2 | sed 's/"//g'`
   BACKGROUND=`cat $CONF_FILE | grep -v "#" | grep BACKGROUND | cut -d = -f 2 | sed 's/"//g'`
else
   # no existe el fichero de configuracin, abortamos
   echo "[ERROR] No se encontr el archivo de configuracin $CONF_FILE."
   echo "[ERROR] Verifique que existe y tiene los permisos necesarios (rw-r--r--)."
   echo
   echo "Creacin del tnel abortada."
   exit 1;
fi

# configuracin realizada con xito, comprobamos si es correcta
if [ -z "$PORTFORWARD" ]; then
   echo "[ERROR] PORTFORWARD no especificado."
   CONF_OK="NO"
else
   echo "[CONF] Usando $PORTFORWARD como puerto local."
fi
if [ -z "$POP_CLIENT" ]; then
   echo "[CONF] No se arrancar ningn cliente POP."
else
   echo "[CONF] Usando $POP_CLIENT como cliente POP."
fi
if [ -z "$SSHSERVER_USERNAME" ]; then
   echo "[ERROR] SSHSERVER_USERNAME no especificado."
   CONF_OK="NO"
else
   echo "[CONF] Nombre de usuario SSH configurado como $SSHSERVER_USERNAME."
fi
if [ -z "$SSHSERVER_HOST" ]; then
   echo "[ERROR] SSHSERVER_HOST no especificado."
   CONF_OK="NO"
else
   echo "[CONF] Servidor SSH configurado como $SSHSERVER_HOST."
fi
if [ -z "$POPSERVER_HOST" ]; then
   echo "[ERROR] POPSERVER_HOST no especificado."
   CONF_OK="NO"
else
   echo "[CONF] Servidor POP configurado como $POPSERVER_HOST."
fi
if [ -z "$POPSERVER_PORT" ]; then
   echo "[ERROR] POPSERVER_PORT no especificado."
   CONF_OK="NO"
else
   echo "[CONF] Puerto POP configurado como $POPSERVER_PORT."
fi
if [ -n "$COMPRESION" ]; then
   if [ "$COMPRESION" != "-C" ]; then
      echo "[ERROR] Parmetro de COMPRESION modificado e incorrecto."
      CONF_OK="NO"
   else
      echo "[CONF] Usando compresin en el tnel."
   fi
fi
if [ -n "$BACKGROUND" ]; then
   if [ "$BACKGROUND" != "-f" ]; then
      echo "[ERROR] Parmetro de BACKGROUND modificado e incorrecto."
      CONF_OK="NO"
   else
      echo "[CONF] Abriendo tnel en segundo plano."
   fi
fi


if [ -z $CONF_OK ]; then
   echo
   echo "Configuracin exitosa, abriendo tnel..."
   if [ -n "$POP_CLIENT" ]; then
      echo "Arrancando $POP_CLIENT..."
      $POP_CLIENT 2>/dev/null 1>/dev/null &
   fi
   if ssh $COMPRESION $BACKGROUND -L $PORTFORWARD:$POPSERVER_HOST:$POPSERVER_PORT $SSHSERVER_USERNAME@$SSHSERVER_HOST; then
      exit 0;
   else
      echo "SSH no pudo conectar a $SSHSERVER_HOST. Compruebe que la configuracin suministrada es correcta."
   fi
else
   echo
   echo "La configuracin fu errnea. Por favor revise su configuracin en $CONF_FILE."
fi
exit 1;</PRE>
</BODY>
</HTML>