From f6e5b55ae22f3fda6863e8a14e07bc8ca6664564 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 15 Feb 2007 14:41:35 +0000 Subject: [PATCH] =?utf8?q?Benutze=20das=20Perl-Modul=20"YAML",=20um=20$for?= =?utf8?q?m=20in=20einen=20String=20umzuwandeln=20und=20sp=C3=A4ter=20dara?= =?utf8?q?us=20wieder=20herzustellen,=20da=20YAML=20im=20Gegensatz=20zu=20?= =?utf8?q?"Data::Dumper"=20ohne=20Perls=20"eval()"=20auskommt,=20sondern?= =?utf8?q?=20einen=20sicheren=20Parser=20zur=20Verf=C3=BCgung=20stellt.=20?= =?utf8?q?Damit=20kann=20die=20serialisierte=20$form=20auch=20=C3=BCber=20?= =?utf8?q?ein=20Formular=20vom=20Benutzer=20stammen,=20ohne=20ein=20Sicher?= =?utf8?q?heitsproblem=20darzustellen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/InstallationCheck.pm | 1 + bin/mozilla/common.pl | 22 ++++++++++++---------- doc/INSTALL | 3 ++- doc/UPGRADE | 3 ++- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/SL/InstallationCheck.pm b/SL/InstallationCheck.pm index 84ee43d67..5f44cd2d4 100644 --- a/SL/InstallationCheck.pm +++ b/SL/InstallationCheck.pm @@ -12,6 +12,7 @@ use vars qw(@required_modules); { "name" => "Archive::Zip", "url" => "http://search.cpan.org/~adamk/" }, { "name" => "Text::Iconv", "url" => "http://search.cpan.org/~mpiotr/" }, { "name" => "Time::HiRes", "url" => "http://search.cpan.org/~jhi/" }, + { "name" => "YAML", "url" => "http://search.cpan.org/~ingy/" }, ); sub module_available { diff --git a/bin/mozilla/common.pl b/bin/mozilla/common.pl index ea34189db..6793a1ddc 100644 --- a/bin/mozilla/common.pl +++ b/bin/mozilla/common.pl @@ -9,21 +9,20 @@ # ###################################################################### -use Data::Dumper; +use YAML; use SL::Common; sub save_form { $lxdebug->enter_sub(); - my (@names, @values); - foreach my $key (keys(%{$form})) { - push(@names, "\$form->{\"$key\"}"); - push(@values, $form->{$key}); - } - my $dumper = Data::Dumper->new(\@values, \@names); - $dumper->Indent(0); - my $old_form = $dumper->Dump(); + my $yaml = new YAML; + $yaml->Indent(1); + my $old_form = $yaml->dump($form); + $old_form =~ s|!|!!|g; + $old_form =~ s|\n|!n|g; + $old_form =~ s|\r|!r|g; + $lxdebug->message(0, "yeah!???\n\n$old_form\n\n\n"); $lxdebug->leave_sub(); @@ -36,7 +35,10 @@ sub restore_form { my ($old_form, $no_delete) = @_; map({ delete($form->{$_}); } keys(%{$form})) unless ($no_delete); - eval($old_form); + $old_form =~ s|!r|\r|g; + $old_form =~ s|!n|\n|g; + $old_form =~ s|!!|!|g; + $form = YAML::Load($old_form); $lxdebug->leave_sub(); } diff --git a/doc/INSTALL b/doc/INSTALL index 258220411..1a0da658a 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -31,9 +31,10 @@ sind: * Class::Accessor * Archive::Zip * Text::Iconv +* YAML Diese Pakete können bei den unterschiedlichen Distributionen anders heißen. -(Debian: apache, postgresql, libdbi-perl, libdbd-pg-perl, libpgperl, libhtml-template-perl, libclass-accessor-perl, libarchive-zip-perl, libtext-iconv-perl) +(Debian: apache, postgresql, libdbi-perl, libdbd-pg-perl, libpgperl, libhtml-template-perl, libclass-accessor-perl, libarchive-zip-perl, libtext-iconv-perl, libyaml-perl) (Fedora: httpd, postgresql-server, perl-DBI, perl-DBD-Pg) (SuSE: apache2, postgresql-server, perl-DBI, perl-DBD-Pg) diff --git a/doc/UPGRADE b/doc/UPGRADE index 095c21386..3358ee767 100644 --- a/doc/UPGRADE +++ b/doc/UPGRADE @@ -13,7 +13,8 @@ aus zwei Teilen: den Dateien (einfaches Entpacken und Kopieren in das Installationsverzeichnis genügen) sowie dem Datenbankupgrade. Bitte beachten Sie auch die Liste der benötigten Perl-Module am Anfang -der Datei "doc/INSTALL". +der Datei "doc/INSTALL". Besonders nach einem Upgrade auf 2.4.2 muss +sichergestellt werden, dass das Modul "YAML" installiert ist. Das Datenbankupgrade wird automatisch gestartet, wenn sich der erste Benutzer nach dem Upgrade der Dateien an Lx-Office anmeldet. -- 2.20.1