#!/usr/bin/perl -w
#
# $Id: benutzerantrag.pl,v 1.2 1997/06/23 09:26:34 webadm Exp $
#
#
# DESCRIPTION: benutzerantrag.pl - read CGI-Input and return a WWW-formular
#
# URL: none yet
#
# AUTHOR: Cord Beermann (cord@Wunder-Nett.org)
#
# Thanks to: Ralf Begemann (begemann@cc.fh-lippe.de)
#	     Stefan Hegger (hegger@cc.fh-lippe.de)
#	     Gerold Meerkoetter (gerold@noc.fh-lippe.de)
#
# 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.
#
#
# A Perl script is "correct" if it gets the job done before your boss fires
# you.
# ('Programming Perl Second Edition' by Larry Wall, Tom Christiansen
#   & Randal. L. Schwartz)
#
# Bugs and shortcomings
# none yet
#
# Todo
# * write instructions
#
### Configuration ###
#
#
### End of Configuration ###

# include perl-modules
use CGI::Carp;
use CGI qw(:standard);
use CGI qw(:shortcuts);
use CGI qw(:html3);

# initialize the CGI-Module and load the form-input
$query = new CGI;
$query->autoEscape(undef);

# print HTTP and HTML-Header
print $query->header;
print($query->start_html(-"title"=>'Benutzerantrag f&uuml;r die zentralen Rechneranlagen der Fachhochschule Lippe',
			 -"author"=>'gnats@thalassa.cc.fh-lippe.de',
			 -"base"=>'true',
			 -"text"=>'#000000',
			 -"BGCOLOR"=>'#FFFFF7'
			 )
      );

print(img({-src=>'/Images/fhl/fh-picto.030tc3d-2.gif',
	   -alt=>'Logo'}),
      a({href=>'/'},'Einstiegsseite'),
      ' / ',
      a({href=>'/fhl/'},'FH Lippe'),
      ' / ',
      a({href=>'/fhl/dvz/'},'DVZ'),
      hr
      );

# check if the browser tells us what it is.
unless (defined($query->user_agent())) {
    # if not print an error-msg
    print(p('Ihr Browser ist falsch konfiguriert, oder nicht zum
	    Ausf&uuml;llen dieses Formulars geeignet, deaktivieren Sie den
	    Proxy und versuchen Sie es erneut.'));
    goto ENDE;
# check if the browser is known as problematic
} elsif ($query->user_agent() =~ m#(NCSA_Mosaic/2\.(6|7)|UdiWWW/1\.2\.000)#) {
    print(p('Ihr Browser ist nicht zum Ausf&uuml;llen dieses Formulars
	    geeignet. Bitte verwenden Sie einen anderen Browser.'));
    goto ENDE;
}

# print the HTML-Form
print <<'HTMLENDE';

<H1>Benutzerantrag f&uuml;r die zentralen Rechneranlagen der FH Lippe</H1>

<p>Die DVZ verwaltet UNIX-, Novell- und Windows-NT-Rechner.  &Uuml;ber
dieses Formular k&ouml;nnen Sie einen Zugang zu diesen Systemen beantragen.
Bei Fragen zu den verschiedenen Systemen wenden Sie Sich bitte an die <A
HREF="/fhl/dvz/loesungen/misc/benutzerberatung.html">Benutzerberatung</a>.</p>

<HR>

<FORM method="post"
action="http://www.fh-lippe.de/local-bin/benutzerantrag_check.pl">

<p>Bitte geben Sie Ihren Namen ein.</p>
HTMLENDE

# print Name-input field and put given value in
print(pre('Name:   ',
	  $query->textfield(-name=>'name',
			    -size=>'40',
			    -default=>$query->param('name')
			    ),
	  "\n",
	  '        (Vorname Nachname)'));
	  

print(p('Bitte geben Sie Ihren Fachbereich oder Ihre Organisationseinheit
	an:'));

print('<PRE>Fachbereich oder Organisationseinheit:');

local @oe =("Fachbereich 1 Architektur und Innenarchitektur",
	    "Fachbereich 3 Bauingenieurwesen",
	    "Fachbereich 4 Lebensmitteltechnologie",
	    "Fachbereich 5 Elektrotechnik",
	    "Fachbereich 6 Maschinenbau",
	    "Fachbereich 7 Produktions- und Fertigungstechnik",
	    "Zentralverwaltung",
	    "Zentrale Einrichtungen",
	    "Hochschulbibliothek",
	    "andere Hochschule"
	    );

# print Radiobuttons and check one button
foreach $oe (@oe) {
    if (defined($query->param('oe')) && $oe eq $query->param('oe')) {
	print("\n<INPUT TYPE=\"radio\" NAME=\"oe\" VALUE=\"$oe\" CHECKED> $oe");
    } else {
	print("\n<INPUT TYPE=\"radio\" NAME=\"oe\" VALUE=\"$oe\"> $oe");
    }
}

# print a textfield
print(': ',
      $query->textfield(-name=>'sonstige',
			-size=>'20',
			-default=>$query->param('sonstige')
			)
      );

print <<'HTMLENDE';
</pre>

<p>Bitte w&auml;hlen Sie ein Feld aus und tragen Sie Ihre Telefonnummer oder
Ihre Matrikelnummer in das dazugeh&ouml;rige Feld ein.</p>

<pre>
Status:
HTMLENDE

# print Radiobuttons
if (defined($query->param('status')) && 'Dozentin / Dozent' eq
    $query->param('status')) {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Dozentin / Dozent\" CHECKED> Dozentin / Dozent");
} else {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Dozentin / Dozent\"> Dozentin / Dozent");
}

if (defined($query->param('status')) && 'Mitarbeiterin / Mitarbeiter' eq
    $query->param('status')) {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Mitarbeiterin / Mitarbeiter\" CHECKED> Mitarbeiterin / Mitarbeiter");
} else {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Mitarbeiterin / Mitarbeiter\"> Mitarbeiterin / Mitarbeiter");
}

# print additional Textfield
print("\n",
      '                        Telefon dienstlich: ',
      $query->textfield(-name=>'telefond',
			-size=>'3',
			-maxlength=>'3',
			-default=>$query->param('telefond')
			)
      );

# print last related radiobutton
if (defined($query->param('status')) && 'Studentin / Student' eq
    $query->param('status')) {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Studentin / Student\" CHECKED> Studentin / Student");
} else {
    print("\n<INPUT TYPE=\"radio\" NAME=\"status\" VALUE=\"Studentin / Student\"> Studentin / Student");
}

# print Textfield
print("\n",
      '                        Matrikelnummer: ',
      $query->textfield(-name=>'matrikel',
			-size=>'8',
			-maxlength=>'8',
			-default=>$query->param('matrikel')
			)
      );

print <<'HTMLENDE';

</pre>

<hr>

<p>Das System identifiziert den Benutzer &uuml;ber Benutzernamen und
Pa&szlig;wort.  Der Benutzername soll aus vier bis acht Kleinbuchstaben
bestehen. (in Kreuzwortr&auml;tselschreibweise (also ae, oe, ue, ss)</p>

<p>Wir empfehlen als Benutzername den Nachnamen oder eine naheliegende
Verk&uuml;rzung zu verwenden.</p>

<table>
<tr><th>Name<th>Benutzerkennung (Vorschlag)</tr>

<tr><td>Helga Beimer<td>beimer</tr>

<tr><td>G&uuml;nter Jauch<td>jauch</tr>

<tr><td>Herr Doktor Kl&ouml;bner<td>kloebner</tr>

<tr><td>Herr M&uuml;ller-L&uuml;denscheid<td>muelue</tr>

<tr><td>Stefan Derrick<td>tappert</tr>

<tr><td>Sabine Leutheuser-Schnarrenberger<td>...</table>

<p>Bitte geben Sie Ihren gew&uuml;nschten Benutzernamen ein:</p>

HTMLENDE

# print a restricted Textfield
print("\n",
      'Benutzername: ',
      $query->textfield(-name=>'login',
			-size=>'8',
			-maxlength=>'8',
			-default=>$query->param('login')
			)
      );

print <<'HTMLENDE';

<p>Das Pa&szlig;wort erm&ouml;glicht die Kontrolle einer Zugangsberechtigung
zu einem Rechner. Durch eine korrekte Verwendung k&ouml;nnen unberechtigte
Nutzungen von Rechnersystemen weitgehend verhindert werden. Damit werden
unter anderem Daten vor unerw&uuml;nschten Zugriffen dritter gesch&uuml;tzt.
Au&szlig;erdem wird der Rechnerzugang f&uuml;r Unbefugte erschwert und damit
eine Gef&auml;hrdung der Daten <EM>aller</EM> Benutzer entscheidend
vermindert.</P>

<p>Bitte lesen Sie die ausf&uuml;hrlichen <A
HREF="/fhl/dvz/hilfe/verhalten/passwd.html">Hinweise zum Umgang mit
Pa&szlig;w&ouml;rten</a></p>

<P>Jedes Pa&szlig;wort sollte Zeichen aus m&ouml;glichst vielen der hier 
aufgef&uuml;hrten Gruppen enthalten:</P>

<UL>
 
<LI>Gro&szlig;buchstaben <SAMP>A-Z</SAMP></LI>
 
<LI>Kleinbuchstaben <SAMP>a-z</SAMP></LI>
 
<LI>Ziffern <SAMP>0-9</SAMP></LI>
 
<LI>Satz- und Sonderzeichen <SAMP>,.-;:_+*?=()/&amp;!"$%</SAMP></LI></UL>

<P>Einige Zeichen sollten nicht verwendet werden:</P>

<ul>

<LI>Weil sie nicht auf jeder Tastatur problemlos zu erreichen sind:
<SAMP>\~{}[]^'`</SAMP> und l&auml;nderspezifische Sonderzeichen wie
Umlaute,</LI>
 
<LI>oder Steuerfunktionen haben: <SAMP>#, @, &lt;TAB&gt;,
&lt;BACKSPACE&gt;,</SAMP> alle Zeichen, die mit Hilfe der Taste
<SAMP>&lt;CTRL&gt;</SAMP> bzw. <SAMP>&lt;STRG&gt;</SAMP> eingegeben werden
(dazu geh&ouml;rt auch das Paragraphenzeichen, welches auf deutschen
Tastaturen zu finden ist).</LI></UL>

<P>Eine "bew&auml;hrte" Methode, mit der sich Unbefugte immer wieder Zugang
zu Systemen verschaffen, ist das Raten von Pa&szlig;w&ouml;rtern. Aus diesem
Grund sind <STRONG>ungeeignete</STRONG> Pa&szlig;w&ouml;rter:</P>
 
<UL>
 
<LI>solche, die aus mehr oder weniger &ouml;ffentlich zug&auml;nglichen
Informationen bestehen: Autokennzeichen, Geburtsdatum (auch das der Freundin
oder Ehefrau!), Matrikelnummer, Benutzername, Telefonnummer etc.</LI>
 
<LI>solche, die einer Sprache angeh&ouml;ren und daher in einem
W&ouml;rterverzeichnis vorkommen k&ouml;nnen. Es dauert nicht sehr lange,
alle W&ouml;rter aus frei erh&auml;ltlichen Listen als Pa&szlig;wort
"auszuprobieren", und &uuml;belwollende Zeitgenossen sind bereit, dazu
immensen Aufwand zu treiben.</LI></UL>

<p>Eine relativ sichere Methode zum W&auml;hlen eines Pa&szlig;wortes ist
die Verwendung von Spr&uuml;chen:</p>

<p>aus '<u>S</u>teht <u>ein</u> <u>M</u>anta <u>v</u>or <u>d</u>er <u>FH</u>'
wird 'S1MvdFH'</p>

<p>Achtung: die Pa&szlig;wort-Eingabe erfolgt immer ohne
Bildschirmanzeige</p>

<p>Sie m&uuml;ssen zweimal dasselbe Pa&szlig;wort eingeben:</p>

<pre>
HTMLENDE

# print two password-field
print('Pa&szlig;wort: ',
      $query->password_field(-name=>'password1',
			     -size=>'8',
			     -maxlength=>'8',
			     -default=>$query->param('password1')
			     ),
      "\n",
      '         ',
      $query->password_field(-name=>'password2',
			     -size=>'8',
			     -maxlength=>'8',
			     -default=>$query->param('password2')
			     )
      );

print <<'HTMLENDE';
</pre>

<hr>

<p>Die folgenden Angaben werden nicht &ouml;ffentlich zug&auml;nglich
gemacht:</p>

<pre>
HTMLENDE

# print another textfield
print('Stra&szlig;e, Hausnummer: ',
      $query->textfield(-name=>'strasse',
			-size=>'32',
			-default=>$query->param('strasse')
			),
      "\n",
      '               PLZ: ',
      $query->textfield(-name=>'plz',
			-size=>'5',
			-maxlength=>'5',
			-default=>$query->param('plz')
			),
      ' Ort: ',
      $query->textfield(-name=>'ort',
			-size=>'20',
			-default=>$query->param('ort')
			),
      "\n",
      '   Telefon, privat: ',
      $query->textfield(-name=>'telefonp',
			-size=>'20',
			-default=>$query->param('telefonp')
			),
      $query->hidden(-name=>'inode',
		     -default=>$query->param('inode')
		     )
      );

# print text and a submit and a reset button
print <<'HTMLENDE';
</pre>
<hr>

<p>Die oben angegebenen Daten werden im Falle einer Zugangserteilung
zum Zwecke der Benutzerverwaltung gespeichert.</p>

<p><strong>Mit der Abgabe des Benutzerantrages erkennt der Benutzer die
<em>Hinweise zur Benutzung der EDV Einrichtungen</em> an und
verpflichtet sich, die Ressourcen schonend zu nutzen.</strong></p>

<input type="submit" name="Weiter" value="Weiter"> <input type="reset" 
name="reset" value="Alles L&ouml;schen">

</FORM>

HTMLENDE

# jumpmark to finish the form
ENDE:

print <<'HTMLENDE';

<HR>

<address>Original-Formular: <A HREF="http://www.fh-lippe.de/~hegger/">Stefan Hegger</A></address>
<address>WWW-Interface: <A HREF="http://Cord.de/">Cord Beermann</A></address>
<address>Letzte &Auml;nderung: <!--#config timefmt="%d.%m.%y" --><!--#echo
var="LAST_MODIFIED" --> <A HREF="http://www.fh-lippe.de/fhl/dvz/webadm/">Webmaster</a></address>
</BODY></HTML>

HTMLENDE
