#!/sw/local/bin/perl
# Konfigurering
if ($ENV{SERVER_NAME} eq "razor.rydnet.lysator.liu.se")
{
$mottagare="kent\@razor.rydnet.lysator.liu.se";
$msg="Som du vet är detta bara ett test, eftersom du använder sidan som ligger på Razor. ";
}
else
{
$mottagare="register\@rydnet.lysator.liu.se";
$msg="";
}
# Gemensamma data
$ansltyptxts{A}="ethernet";
$ansltyptxts{B}="seriekabel";
$anslstatustxts{J}="ansluten";
$anslstatustxts{N}="väntar på anslutning för första gången";
$anslstatustxts{T}="tillfälligt oansluten; har varit ansluten";
$anslstatustxts{V}="vilande; kan ej anslutas just nu";
$inktyptxts{E}="ethernet/koax";
$inktyptxts{T}="ethernet/TP";
$inktyptxts{S}="seriekabel";
$inkstatustxts{J}="inkopplad";
$inkstatustxts{N}="ej inkopplad";
# Subrutiner
sub table_begin
{
if ($tables)
{
print "
\n";
}
}
sub table_end
{
if ($tables)
{
print "
\n";
}
}
sub separator
{
local($txt)=@_;
if ($tables)
{
print "
$txt
\n";
}
else
{
print "
$txt
\n";
}
}
sub hidden_field
{
local($field,$data)=@_;
print "\n";
}
sub text_field
{
local($txt,$field,$len)=@_;
if ($tables)
{
print "
$txt
\n";
}
else
{
print "
$txt
\n";
}
}
sub text_field_prefill
{
local($txt,$field,$len,$val)=@_;
if ($tables)
{
print "
$txt
\n";
}
else
{
print "
$txt
\n";
}
}
sub text_area
{
local($txt,$field,$rows,$cols)=@_;
if ($tables)
{
print "
$txt
\n";
}
else
{
print "
$txt
\n";
}
}
sub radio_2_field
{
local($txt,$name,$v1,$t1,$v2,$t2)=@_;
if ($tables)
{
print "
$txt
$t1 ";
print " $t2
\n";
}
else
{
print "
$txt
";
print " $t1\n";
print " $t2 \n";
}
}
sub radio_3_field
{
local($txt,$name,$v1,$t1,$v2,$t2,$v3,$t3)=@_;
if ($tables)
{
print "
$txt\n";
}
}
sub explain2
{
local($txt)=@_;
if ($tables)
{
print "
$txt
\n";
}
else
{
print "
$txt\n";
}
}
sub submitreset
{
local($txt1,$txt2)=@_;
if ($tables)
{
print "
\n";
}
else
{
print " \n";
}
}
sub produce_form
{
$referer=$ENV{HTTP_REFERER};
if ($referer ne "")
{
print "[Tillbaka till sidan du kom från]";
}
else
{
print "[Till registermenyn]";
}
print "\n";
if ($ENV{SUPPORTS_forms} eq "")
{
print "Enligt Lysators WWW-server klarar din klient inte ";
print "formulär. Skyll dig själv om du ";
print "försöker använda denna sida :-\).\n";
}
print "
Uppgifter till RydNet-registret
";
print "\n";
}
sub justadd
{
local($data,$rub)=@_;
return sprintf("%-20s %s\n", $rub.":",$data);
}
sub rawfieldadd
{
local($f,$t,$mand)=@_;
$data=$ENV{$f};
if ($data ne "" || $mand)
{
return &justadd($data,$t);
}
else
{
return "";
}
}
sub fieldadd
{
local($f,$t,$mand)=@_;
return &rawfieldadd("QUERY_".$f,$t,$mand);
}
sub receive_form
{
# Komponera brevtext/svarstext (gemensamma delar)
if ($ENV{QUERY_regtyp} eq "ny")
{
$t="NYREGISTRERING\n\n";
}
elsif ($ENV{QUERY_regtyp} eq "uppdat")
{
$t="UPPDATERING\n\n";
}
else
{
$t="REGISTRERING (NY ELLER UPPDATERING)\n\n";
}
$ansltyp=$ENV{QUERY_ansltyp};
$ansltyptxt=$ansltyptxts{$ansltyp};
$ansltyptxt="okänd" if $ansltyptxt eq "";
$anslstatus=$ENV{QUERY_anslstatus};
$anslstatustxt=$anslstatustxts{$anslstatus};
$anslstatustxt="okänd" if $anslstatustxt eq "";
$t.=&fieldadd("login","Lysatorkonto",1);
$t.=&fieldadd("fnamn","Förnamn",0);
$t.=&fieldadd("enamn","Efternamn",0);
$t.=&fieldadd("email","Elpost",0);
$t.=&justadd("$ansltyp ($ansltyptxt)","Anslutningstyp") if $ansltyp ne "";
$t.=&justadd("$anslstatus ($anslstatustxt)","Anslutningsstatus",0) if $anslstatus ne "";
$t.="\n";
$t.=&fieldadd("adress","Adress",0);
$t.=&fieldadd("telefon","Telefon",0);
$t.=&fieldadd("betbelopp","Betalt belopp",0);
$t.=&fieldadd("betdatum","Betalningsdatum",0);
$t.="\nDATOR\n\n";
$inktyp=$ENV{QUERY_inktyp};
$inktyptxt=$inktyptxts{$inktyp};
$inktyptxt="okänd" if $inktyptxt eq "";
$inkstatus=$ENV{QUERY_inkstatus};
$inkstatustxt=$inkstatustxts{$inkstatus};
$inkstatustxt="okänd" if $inkstatustxt eq "";
$t.=&fieldadd("dator","Namn",0);
$t.=&fieldadd("ip","IP-adress",0);
$t.=&fieldadd("hi1","Datortyp",0);
$t.=&fieldadd("hi2","Operativsystem",0);
$t.=&justadd("$inktyp ($inktyptxt)","Inkopplingstyp",0) if $inktyp ne "";
$t.=&justadd("$inkstatus ($inkstatustxt)","Inkopplingsstatus",0) if $inkstatus ne "";
$exu=$ENV{QUERY_extrauppg};
if ($exu ne "")
{
$t.="\n--- Frivilliga extrauppgifter ---\n$exu\n";
}
$ovr=$ENV{QUERY_fritext};
if ($ovr ne "")
{
$t.="\nÖVRIGT\n\n$ovr\n";
}
$t.="\nAUTOMATPOSTER\n\n";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
$dagens=sprintf("%02d%02d%02d",$year,$mon+1,$mday);
$t.="$ENV{QUERY_login}#$ENV{QUERY_dator}#$ansltyp#$anslstatus#$ENV{QUERY_enamn}, $ENV{QUERY_fnamn}#$ENV{QUERY_email}#$ENV{QUERY_adress}#$ENV{QUERY_telefon}#$ENV{QUERY_betbelopp},$ENV{QUERY_betdatum} (egen uppgift)####$dagens\n";
($ips=$ENV{QUERY_ip}) =~ s/\./\#/g;
while (($ips =~ tr/\#/\#/) < 3)
{
$ips.="\#";
}
$t.="$ENV{QUERY_dator}#$ips#$ENV{QUERY_login}#$inktyp#$inkstatus#$ENV{QUERY_hi1}#$ENV{QUERY_hi2}#$dagens\n";
$t.="\nSYSTEMUPPGIFTER (FÖR SPÅRBARHET)\n\n";
$t.=&rawfieldadd("REMOTE_HOST","DNS-namn");
$t.=&rawfieldadd("REMOTE_ADDR","IP-adress");
$t.=&rawfieldadd("REMOTE_PORT","Port");
$t.=&rawfieldadd("HTTP_USER_AGENT","Klient");
$nu=localtime();
$t.=&justadd($nu,"Inskickat");
# Maila
$b="To: $mottagare\n";
$b.="From: RydNet-WWW\n";
$b.="Subject: RydNet: $ENV{QUERY_login} - $ENV{QUERY_dator}\n";
if ($ENV{QUERY_email} ne "")
{
$replyaddr=$ENV{QUERY_email}
}
elsif ($ENV{QUERY_login} ne "")
{
$replyaddr.="$ENV{QUERY_login}\@lysator.liu.se (gissning)";
}
else
{
$replyaddr="Ingen Adress ";
}
$b.="Reply-To: $replyaddr\n";
$b.="\n".$t;
if (open(MAIL,"|/usr/lib/sendmail -t"))
{
print MAIL $b;
close MAIL;
$mailfel=0;
}
else
{
$mailfel=1;
}
# Visa texten
$referer=$ENV{QUERY_referer};
if ($referer ne "")
{
print "[Tillbaka till sidan du kom från]";
}
else
{
print "[Till registermenyn]";
}
print "\n";
print "
Uppgifter till RydNet-registret
\n";
if ($mailfel)
{
print "
\n";
}
else
{
print "
Följande uppgifter har skickats in:\n";
print "
$t
\n";
print "
Du kommer att få ett registerutdrag via elpost inom en-två dagar. Om du inte får det bör du kontakta RydNet på annat sätt än via detta formulär.\n";
}
}
# **** MAIN ****
$tables=1 if $ENV{SUPPORTS_tables} ne "";
print "Content-type: text/html\n\n";
print "
RydNet-registrering";
print "";
if ($ENV{QUERY_is_response} eq "")
{
do produce_form();
}
else
{
do receive_form();
}
print "";