#!/usr/bin/perl # CGI-Script zur Steuerung von Relais # Das Skript liest die Dateni eines Formulars ein und nimmt # dann Kontakt zum eigentlichen Steuer-Server auf. use strict; use IO::Socket; use Digest::MD5 qw(md5 md5_hex md5_base64); # Sicherheitsmassnahmen: # 1. Formular nur von einem bestimmten Rechner aus zulassen # 2. Passwort im Formular. my $referer = "http://www.netzmafia.de/skripten/server/relais.html"; my $PASS= ''; # Der Server, an dem das Relais-Interface angeschlossen ist my $SERVER = "blackhole.ee.fhm.edu"; # Server-Port des obigen Servers my $PORT = 666; my $eingabe = ''; my $ausgabe = ''; my $rs = ''; my $key = ''; my $buffer = ''; my $pair = ''; my $name = ''; my $value = ''; my $stat = ''; my $cmd = ''; my %in = (); my @nvpairs = (); my $sock = ''; # Formulardaten einlesen. Alle Daten bis auf das Passwort # werden im Hash %in gesammelt. if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } @nvpairs = split(/&/,$buffer); foreach $pair (@nvpairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($name eq "PASS") { $PASS = $value; } else { $in{$name} = $value; } } # Ausgabe des Skripts: Kopfzeilen print "Content-type: text/html\n\n"; print "
| \n"; # Formular kommt vom anderen Rechner --> verboten! if ($ENV{HTTP_REFERER} ne $referer) { print "You are not allowed to do this!"; print " |