#!/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"; print " $t1
"; print " $t2
"; print " $t3\n"; } else { print "

$txt

\n"; print " $t1\n"; print " $t2\n"; print " $t3
\n"; } } sub radio_4_field { local($txt,$name,$v1,$t1,$v2,$t2,$v3,$t3,$v4,$t4)=@_; if ($tables) { print "$txt\n"; print " $t1
"; print " $t2
"; print " $t3
"; print " $t4\n"; } else { print "

$txt

\n"; print " $t1\n"; print " $t2\n"; print " $t3\n"; print " $t4
\n"; } } sub explain { local($txt)=@_; if ($tables) { print "$txt\n"; } else { 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 "
"; do table_begin(); do explain2("När du använder detta formulär skickas uppgifter till ".$mottagare.". Uppgifterna kontrollerar av en människa innan registret uppdateras. $msg"); do separator("Typ av registrering"); do radio_2_field("Typ av registrering","regtyp","ny","Nyregistrering","uppdat","Ändring av registeruppgifter"); do explain("Tänker du ansluta dig till RydNet? Du vet väl om att Stångåstaden planerar för ett nät i Ryd E till hösten? Läs mer och bestäm vad du vill ha. Om du skickar in ändringar behöver du bara fylla i ditt kontonamn på Lysator, eventuellt datornamn, samt de fält som ska ändras. "); do separator("Offentliga uppgifter om dig"); do text_field_prefill("Konto på Lysator","login",10,$ENV{QUERY_login}); do explain("Du måste ha ett konto på Lysator för att bli RydNet-ansluten. Du måste alltid ange kontonamn då du skickar registeruppgifter."); do text_field("Förnamn","fnamn",20); do text_field("Efternamn","enamn",20); do text_field("Elpostadress","email",32); do explain("Ange den elpostadress du läser oftast och som du vill ska vara din officiella adress i registret."); do radio_2_field("Anslutningstyp","ansltyp", "A","A (ethernet)", "B","B (seriekabel)"); do explain("Anslutningstyp A betyder ethernetanslutning till RydNet. Alternativ B innebär att du kopplar din dator eller terminal med seriekabel till någon annan ansluten."); do radio_4_field("Anslutningsstatus","anslstatus", "J","Ansluten", "N","Väntar på anslutning för första gången", "T","Tillfälligt oansluten (har varit ansluten)", "V","Vilande (kan ej anslutas just nu)"); do separator("Interna uppgifter om dig"); do explain2("Uppgifterna i denna del lämnas inte ut i RydNet-katalogen. De kan dock lämnas ut till personer som ingår i RydNet-administrationen (t.ex. ekonomiskt ansvarig och byggare)."); do text_field("Adress","adress",12); do explain("Skriv t.ex. på formen: Bk 6C12, Al 5C25, Rv 260A36"); do text_field("Telefon","telefon",12); do explain("Inga mellanslag. Ange inte riktnummer om det är 013."); do text_field("RydNet-avgift","betbelopp",5); do explain("Skriv hur många kronor du betalt i RydNet-avgift till RydNets postgirokonto. Medlemsavgiften i Lysator ska inte räknas in."); do text_field("Betalningsdatum","betdatum",7); do explain("Ange datum på formen ÅÅMMDD"); do separator("Offentliga uppgifter om din dator"); do explain2("Om du behöver registrera mer än en dator kan du skicka in flera gånger. Du behöver då bara fylla i kontonamn på Lysator i personuppgiftsavdelningen när du registrerar extradatorerna."); do text_field_prefill("Datornamn","dator",20,$ENV{QUERY_dator}); do explain("Din dator måste ha ett namn för att kunna kopplas in. Använd a-z (inga åäö) och små bokstäver. Glöm inte att uppge datornamn då du skickar in ändringar om din dator."); do text_field("IP-adress","ip",18); do explain("Om du har fått en IP-adress redan skriver du den här, annars lämnar du detta fält blankt. IP-adresser ser ut så här: 192.168.130.72"); do text_field("Datortyp","hi1",20); do explain("Ange vilken datortyp du har. Exempel på hur några av de vanligaste sorterna skrivs: PC-386, PC-486, PC-586, AMIGA-3000, MAC-P630"); do text_field("Operativsystem","hi2",20); do explain("Ange vilket operativsystem din dator kör. Om du kör flera kan du ange alla om du vill. Skriv då det mest körda först och skilj dem åt med snedstreck (/). Exempel på hur några av de vanligaste OS:en skrivs: LINUX, MSDOS, UNIX, WIN95, WINDOWS, MACOS, AMIGA-OS, VMS"); do radio_3_field("Inkopplingstyp","inktyp", "E","Ethernet/koax", "T","Ethernet/TP", "S","Seriekabel"); do radio_2_field("Inkopplingsstatus","inkstatus", "J","Inkopplad", "N","Ej inkopplad"); do text_area("Extrauppgifter","extrauppg",4,40); do explain("Om du vill ha in fler uppgifter om din dator i katalogen kan du skriva dem här. Du kan t.ex. skriva noggrannare vilken sorts dator du har och vilka tjänster du erbjuder till dina grannar på RydNet."); do separator("Övriga uppgifter"); do text_area("Övriga uppgifter","fritext",6,40); do explain("Här kan du tala om annat som inte får plats i de fasta fälten."); do separator("Skicka in eller börja om"); do submitreset("Skicka in uppgifterna","Töm blanketten"); do hidden_field("referer",$referer); do hidden_field("is_response","Yes"); do table_end(); 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ågot gick fel när uppgifterna skulle skickas in!\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 "


";