Archive for 16. April 2007

Feedback.cgi von Schlund bzw. 1&1 und nms Formmailer Ersatz

16 April 2007

1&1 welche dieses Jahr voll Schlund integriert haben, hat eigentlich zum 1.4.2007 die Unterstützung für das feedback.cgi, über welches man frühers E-Mails versenden konnte, eingestellt.

Allerdings ist das feedback.cgi zum aktuellen Zeitpunkt noch nicht abgeschaltet, allerdings bekommt man mit jeder E-Mail welche darüber versandt wird, immer eine lästige Benachrichtigung das die Unterstützung aufgekündigt ist.

From: support@kundenserver.de
To: mail@xyz.de
Sent: Wednesday, April 11, 2007 1:30 AM
Subject: Abschaltung Feedback-Formular-Script
Sehr geehrte Damen und Herren,

Sie setzen in Verbindung mit Ihrer Webseite

http://www.xyz.de/Hauptseite.htm

ein über die URL
http://service.kundenserver.de/cgi-bin/feedback/feedback.cgi bereit
gestelltes CGI-Script („Feedback-Formular“) ein, über das in den letzten
Tagen 1 E-Mail(s) an Ihre E-Mail-Adresse versandt wurden.

Da das Script immer häufiger von Dritten zum Versand sogenannter Spam-Mails
genutzt wird, sehen wir uns gezwungen, das Script zum Schutz vor Missbrauch
zum Monatsende zu deaktivieren.
 
Als Alternative stehen Ihnen in Ihrem Konfigurationsmenü / Control-Center
z.B. die CGI-Programme oder die WebElements zur Verfügung.

Wenn Sie eine eigene Lösung bevorzugen, können wir den Einsatz des
NMS-Formmail-CGI-Scripts (http://nms-cgi.sourceforge.net) empfehlen.
Bitte beachten Sie, dass Sie diese E-Mail mehrfach erhalten können, sofern
weiterhin E-Mails über das Script an Ihre Adresse versandt werden.
 
Vielen Dank für Ihr Verständnis.

Mit freundlichen Grüßen

Ihr kundenserver.de-Team

Eigentlich hätte man etwas mehr Unterstützung erwarten können, vor allem wenn man bedenkt dass ursprünglich als Provider extra Schlund gewählt wurde um eine optimale Unterstützung zu erhalten. Aber weit gefehlt. Hier läßt sich noch jemand zum Thema aus: http://www.perl-archiv.de/cgi-bin/forum/forum_thread.cgi?tid=19881&mid=40313&fid=&show=30&showthread=2 derselbige nochmal hier: http://forum.de.selfhtml.org/archiv/2007/4/t149633/ und hier:  http://www.nabble.com/nms-Formmailer-als-Ersatz-f%C3%BCr-feedback.cgi-von-Schlund-verwenden-tf3502752.html#a9782470. Unter google wird man zum Thema unter http://www.google.de/search?q=schlund+feedback.cgi+felder fündig.

Das war nun der Punkt sich mit Perl oder PHP Auseinanderzusetzen. Da der NMS-Formmailer genannt wurde, sollte zuerst dieser eingespielt werden. Allerdings ist das was auf der Seite http://nms-cgi.sourceforge.net geboten wird, nicht gerade erhellend.

Selbst ist der Mann, wenn man schon Perl ans Laufen bekommen soll, dann kann man die Sache auch gleich selber schreiben. Leider gibt es keine Beschreibung mehr zu allen Feldern und die Vorgehensweise, da der Link http://hilfe-center.1und1.de/sp-service/service/tools/tools_feedback.php3 ins Leere führt. Allerdings sind auf diesen Seiten die Felder und Vorgehensweisen beschrieben: http://www.michaelkaufmann.net/html/formulare_allg_.html
http://www.michaelkaufmann.net/html/formulare_fusion.html

Unter Zuhilfename von http://www.perl.org/books/library.html, http://perldoc.perl.org/, generell http://www.perl.org, http://perl.about.com/, http://www.unix.org.ua/orelly/perl/  sowie http://de.selfhtml.org/perl/index.htm entstand dann folgendes Perl Script welches die benötigten Punkte des ursprünglichen feedback.cgi unterstützt.

#
# Ansatz für PERL-Script als Ersatz für Schlund/1&1-feedback.cgi
#
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;

# bestimmt ob Debugausgaben erzeugt werden 0=nein, 1=ja
my $debugOn = 0;

# Zeichenkette für Felder die Pflicht sind
my $requiredID = "_R";
# Flag wo bestimmt ob ein Pflichtfeld fehlt (1) oder nicht (0)
my $fieldrequired = 0;

# bekannte variablen aus dem Feedback.cgi
my $fbsubject = "Feedback"; # Mailsubject
my $fbmail = "";
my $fbfrom = "";
my $fburl = "danke.html"; # Danke
my $fbbackurl = "fehler.html"; # Feld fehlt

my $fbtext = "";

if ($debugOn)
{
  # damit kein internal Error angezeigt wird!
  print "Content-type: text/html\n\n";

  print "Alle Parameter: ".$cgi->param()."<br><br>";

  my @Namen = $cgi->param();
  my $Elements = scalar (@Namen);

  for (my $i = 0; $i < $Elements; $i++)
  {
    print "$Namen[$i]: $element = ". $cgi->param($Namen[$i])."<br>";
  }

  print "<br><br>";
  print "Parameterauflistung :\n <br>";
}

# Form-Parameter in Hashliste übertragen
my %args = map {$_ => $cgi->param($_) } $cgi->param;

# alle Form-Felder durchgehen und prüfen ob welche mit _R angegeben wurden
# und wenn ja flag setzen damit eine Fehlermeldung angezeigt werden kann
while (($key, $value) = each %args)
{

  # key in Großbuchstaben wandeln und neuer Variablen zuweisen
  my $fieldname = uc ($key);

  # prüfen ob der Identifer für required am Ende des Feldnamen angegeben wurde
  if (rindex ($fieldname, $requiredID) == length ($fieldname) - length ($requiredID))
  {
    # nun überprüfen ob ein Wert angegeben ist
    if ("" eq $value)
    {
      $fieldrequired = 1;
    }
  }
  if ($debugOn)
  {
    print "$key = $value\n<br>";
  }
}
if ($debugOn)
{
  print "ParameterauflistungEnde\n <br>";
}

# nun noch die benötigten Felder für den E-Mailversand überprüfen
if (defined $cgi->param ('FBSUBJECT'))
{
  $fbsubject = $cgi->param ('FBSUBJECT');
}
if (defined $cgi->param ('FBURL'))
{
  $fburl = $cgi->param ('FBURL');
}
if (defined $cgi->param ('FBBACKURL'))
{
  $fbbackurl = $cgi->param ('FBBACKURL');
}
if (defined $cgi->param ('FBMAIL'))
{
  $fbmail = $cgi->param ('FBMAIL');
}
else
{
  $fieldrequired = 1;
}

# fbtext mit den angegebenen Werten erzeugen, wird für den E-Mail Body benötigt
my @Namen = $cgi->param();
my $Elements = scalar (@Namen);
my $value = "";

for (my $i = 0; $i < $Elements; $i++)
{
  $value = $cgi->param($Namen[$i]);

  if ($debugOn)
  {
    print "Index $Namen[$i]:", index ("FBURL FBBACKURL FBMAIL FBSUBJECT", $Namen[$i]), "<br>";
  }

  # nur Wertepaare aufnehmen in denen ein Wert hinterlegt wurde
  if ("" ne $value && index ("FBURL FBBACKURL FBMAIL FBSUBJECT", $Namen[$i]) == -1)
  {
    $fbtext .= "$Namen[$i]=".$value."\n";
  }
}

if ($debugOn)
{
  print "<br><br>$fbtext<br>";
}

if ($fieldrequired == 1)
{
  if ($debugOn)
  {
    print "Würde nun nach Backurl springen!";
  }
  else
  {
    print "Location: $fbbackurl\n\n";
  }
}
else
{
  if ($debugOn)
  {
    print "Email senden!";
  }

  # perfekt, alles Paletti und nun E-Mail erzeugen und versenden
  sendEmail ($fbmail, "absender\@xyz.de", $fbsubject, $fbtext);

  # und auf Dankeseite weiterspringen
  if ($debugOn)
  {
    print "auf Dankeseite weiterspringen: $fburl";
  }
  else
  {
    print "Location: $fburl\n\n";
  }
}

# Simple Email Function
# ($to, $from, $subject, $message)
# frei nach http://faq.1und1.de/access//internet_profi_faq/homepage/eigene_scripte/perl/6.html
sub sendEmail
{
  my ($to, $from, $subject, $message) = @_;
  my $sendmail = '/usr/sbin/sendmail';
  open(MAIL, "|$sendmail $to") || die "Fehler bei Mailversand!";
  print MAIL "From: $from\n";
  print MAIL "To: $to\n";
  print MAIL "Subject: $subject\n\n";
  print MAIL "$message\n";
  close(MAIL);
}

#EOF: feedback.pl
#################

Die Fehlerbehandlungen könnten sicherlich besser sein, aber für den benötigten Zweck reicht es erstmal aus. Wenn es Probleme gibt, kann man DebugOn auf 1 setzen, dann werden verscheidene Zusatzinfos ausgegeben.

Was momentan noch fehlt ist die Template Unterstützung für Dateien, sowie alle Mailfelder wie CC und ReplyTo aber ein Anfang ist gemacht.

Werbeanzeigen

Tipps & Tricks zum Samsung SGH-i600

16 April 2007

Hier sind die Insider Tipps zum neuen Samsung SGH-i600 zu finden: http://www.ppc-welt.info/community/showthread.php?t=108293

Teilweise gesperrte Registrierung bei Windows Mobile 5 öffnen

16 April 2007

Bei vielen neueren Windows Mobile 5 AKU Version, vornehmlich 3.4 und 3.5, scheint zwar kein ApplicationLock allerdings ein teilweises RegistryLock aktiv zu sein.

Aktuell war bei einem Samsung SGH-i600, so ein RegistryLock aktiv, der z. B. den Einsatz von GPSCOM um die Bluetooth-Schnittstelle für den GPS-Empfänger in GoogleMapsMobile zu setzen verhinderte.

Die Lösung ist ein kleines Programm von http://wiki.spv-developers.com/SDA_ApplicationUnlock, ist zwar für den SDA, funktioniert allerdings trotzdem.

Effektiv verändert das Programm per XML-Datei folgende Einstellungen:
<wap-provisioningdoc> <characteristic type=“SecurityPolicy“>
<parm name=“4119″ value=“16″/> (SECROLE_USER_AUTH)
<parm name=“4101″ value=“16″/> (SECROLE_USER_AUTH)
<parm name=“4102″ value=“1″/> (1 = allow unsigned applications)
<parm name=“4097″ value=“1″/> (1 = allow full access to RAPI Policy)
<parm name=“4123″ value=“1″/> (1 TIER SECURITY MODEL) </characteristic>
</wap-provisioningdoc>  

Weitere Infos zu den Parametern findet man bei MS unter http://msdn2.microsoft.com/en-us/library/ms844865.aspx.

Damit man dann die Änderungen an der Registrierung vornehmen kann, kann man folgenden Remote Editor verwenden https://newyear2006.wordpress.com/2006/06/13/remote-registrierungseditor-fur-windows-mobile-5/ oder man verwendet RegEditSTG, welches z. B. hier zu finden ist: http://www.mysmartphone.ch/Freeware/system/15464.aspx. Als kommerzieller Editor steht noch der Resco Explorer zur Verfügung, der einen Registry Editor enthält: http://www.resco.net/pocketpc/explorer/default.asp