#!/bin/bash

# $Id: ip_schreiber.sh,v 1.1.1.1 2003/10/04 16:01:42 karsten Exp $

###########################################################################
## EINSTELLUNGEN

INTERFACE="ppp0"
DOCPFAD=/tmp/
DOCNAME=ip.html
FTP_SERVER=ftp.tecneeq.de
FTP_USER=karsten
FTP_PASSWD=geheim

###########################################################################
## funktion info
info()
{
cat <<EOF

 ##########################################################################
 #                                                                        #
 #  »»»»FUNKTION««««                                                      #
 #                                                                        #
 #  Dieses  Script  schreibt  ein   einfaches   HTML-Dokument   mit  der  #
 #  derzeitigen IP des  Dial-Out-Interfaces. Es  wird  allgemein aus dem  #
 #  Script IP-UP.LOKAL aufgerufen                                         #
 #                                                                        #
 #  »»»»STANDARDNOTES««««                                                 #
 #                                                                        #
 #  Autor         : Karsten Kruse tecneeq@gmx.net                         #
 #  URL           : http://www.tecneeq.de/                                #
 #  Lizenz        : GPL2                                                  #
 #  Version       : v0.0.2                                                #
 #  Erstrelease   : 08.Mär.2001                                           #
 #  Lastmodified  : 18.Jul.2002                                           #
 #  Benoetigt     : bash, ifconfig, awk, sed, kaffee                      #
 #  Tabbreite     : 8                                                     #
 #  Copyright     : (C) 2001-02 by Karsten Kruse tecneeq@gmx.net          #
 #                                                                        #
 #  This program is free software; you can redistribute it and/or modify  #
 #  it under the terms of the GNU General Public License as published by  #
 #  the Free  Software  Foundation; either version 2 of the  License, or  #
 #  (at your option) any later version.                                   #
 #                                                                        #
 #  This program is  distributed in the hope that it will be useful, but  #
 #  WITHOUT   ANY  WARRANTY ;  without  even  the  implied  warranty  of  #
 #  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE.  See  the  #
 #  GNU General Public License for more details.                          #
 #                                                                        #
 #  You should have received a copy of the GNU  General  Public  License  #
 #  along  with  this  program ;  if  not,  write  to  the Free Software  #
 #  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.             #
 #                                                                        #
 #  »»»»CHANGES««««                                                       #
 #                                                                        #
 #  08.03.2001 v0.0.1                                                     #
 #  - erstrelease                                                         #
 #  18.07.2002 v0.0.2                                                     #
 #  - debugfunktion hinzugefügt                                           #
 #                                                                        #
 #  »»»»TODO««««                                                          #
 #                                                                        #
 #  wenn du eine idee hast lass es mich wissen, ich bau sie ein :)        #
 #                                                                        #
 #  »»»»BUGS««««                                                          #
 #                                                                        #
 #  wenn du fehler findest schick mir bitte eine mail.                    #
 #                                                                        #
 #  »»»»EINSTELLUNGEN««««                                                 #
 #                                                                        #
 # DOCNAME=/usr/local/httpd/htdocs/ip.html                                #
 # in welches verzeichnis soll das dokument abgelegt werden?              #
 # INTERFACE="ippp0"                                                      #
 # was ist das dial-out-interface?                                        #
 #                                                                        #
 ##########################################################################

EOF
}

###########################################################################
## funktion usage
usage()
{
echo "
 FUNKTION
    Dieses Script schreibt ein einfaches HTML-Dokument mit der
    derzeitigen IP des Dial-Out-Interfaces und laedt es bei Bedarf
    auf einen entfernten Server
    Siehe auch $0 --info
 SYNTAX
    $0 [option]
 OPTIONEN
    -i    --info     Infotext ausgeben
    -h    --help     Diese Hilfe ausgeben
    -w    --write    Schreibe das Dokument in eine lokale Datei
    -u    --upload   Schreibe und uploade das Dokument mit FTP
 BEISPIEL
    $0 --info
    $0 --help
    $0 -w
    $0 --upload
"
}

check_uid()
{
if [ ! `id -u` = "0" ]; then
echo -e "\nDu solltest Root für diese Aufgaben sein! Breche ab...\n"
	exit 1
fi
}

get_ip()
{
IP_OUT="$(ifconfig $INTERFACE | awk '/addr:/ {print $2}' | sed s/addr://)"
if [ -z "${IP_OUT}" ]; then
	exit 1
fi
}

output()
{
cat <<EOF
<html>
    <head>
        <title>Unsere IP</title>
    </head>
    <body>
        <h2>Unsere IP</h2>
        <hr noshade>
        <p>Unsere derzeitige IP ist
        <a href="http://$IP_OUT">$IP_OUT</a></p>
        <hr noshade>
    </body>
</html>
EOF
}

ftp_up(){
ftp -n << EOFTP
open $FTPSERVER
binary
user $FTP_USER $FTP_PASSWD
put $DOCPFAD$DOCNAME
bye
EOFTP
}

case $1 in
	-h|--help)	usage  ; exit 0 ;;
	-i|--info)	info | $PAGER ; exit 0 ;;
	-w|--write)	check_uid ; get_ip ; output > $DOCPFAD$DOCNAME ; exit ;;
	-u|--upload)	check_uid ; get_ip ; output > $DOCPFAD$DOCNAME ;
			ftp_up ; exit ;;
	*)		usage  ; exit 1 ;;
esac

