]> git.donarmstrong.com Git - debbugs.git/blobdiff - debian/debbugsconfig
unfinalize; document XSS fix
[debbugs.git] / debian / debbugsconfig
index 8819962d939b4bb4a82d18f728eade520e456fd5..e98decc7255d402110ff6e19daa4af8bc302a57f 100755 (executable)
@@ -1,8 +1,13 @@
 #!/usr/bin/perl
 # debbugsconfig: copies debbugs configuration files from templates, and
 #                creates documentation in HTML and text
+# Copyright (C) 1999 Darren Benham
+# Copyright (C) 2000 Josip Rodin
+# Licensed under the version 2 of the GNU General Public License as
+# published by the Free Software Foundation
 
 use POSIX qw(strftime);
+use File::Path;
 
 if (@ARGV) {
   print STDOUT <<EOF;
@@ -18,18 +23,39 @@ EOF
 }
 
 $gConfigDir = "/etc/debbugs" if (!defined($gConfigDir));
-&template("config");
+&template("config", $gConfigDir);
 require "$gConfigDir/config";
 unshift @INC, $gConfigDir;
 
-&template("text");
+&template("text", $gConfigDir);
 require "text";
 
-&template("nextnumber");
+&template("Maintainers", $gConfigDir);
+&template("Maintainers.override", $gConfigDir);
+&template("pseudo-packages.description", $gConfigDir);
+&template("sources", "$gConfigDir/indices");
+
+&template("nextnumber", $gSpoolDir);
+&touch("$gSpoolDir/index.archive.realtime");
+&touch("$gSpoolDir/index.db.realtime");
+print "Creating directories in $gSpoolDir:\n";
+for my $num (0 .. 99) {
+  &spooldirectory(sprintf('archive/%02d', $num));
+  &spooldirectory(sprintf('db-h/%02d', $num));
+}
+print "\n";
+
+# stuff used when testing (comment out the above)
+#unshift @INC, "../";
+#require "../scripts/config.in";
+#require "../scripts/text.in";
+#$gWebDir = "gWebDir";
+#$gDocDir = "gWebDir";
 
 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
 $gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;
 
+print "Creating files in $gWebDir:\n";
 require('html/index.html.in');
 &writefiles ('index', '', $gIndexHtml );
 require('html/Access.html.in');
@@ -44,41 +70,70 @@ require('html/server-refcard.html.in');
 &writefiles ('server-refcard', 'bug-mailserver-refcard', $gRefcardHtml );
 require('html/server-request.html.in');
 &writefiles ('server-request', 'bug-log-mailserver', $gRequestHtml );
+print "\n";
 
 exit(0);
 
 # -------------------------------------------------------------------------- #
 
 sub template {
-  my ($name) = @_;
-  if (! -f "$gConfigDir/$name") {
-  system("cp /usr/share/doc/debbugs/examples/$name $gConfigDir/$name") == 0 ||
+  my ($name, $destdir) = @_;
+  if (! -f "$destdir/$name") {
+  system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
        die "$!";
-  print "created $gConfigDir/$name from template.";
+  print "created $destdir/$name from template.\n";
   }
 } 
 
+sub touch {
+  my $name = shift;
+  unless (-f $name) {
+    open TOUCH, ">> $name" or die "open $name: $!";
+    close TOUCH;
+    print "created empty $name.\n";
+  }
+}
+
+sub spooldirectory {
+  my $name = shift;
+  unless (-d "$gSpoolDir/$name") {
+    mkpath("$gSpoolDir/$name");
+    print "$name ";
+  }
+}
+
 sub writefiles {
   local ($html, $text, $name) = @_;
 # first HTML
   unlink("$gWebDir/$html.html");
-  open(DEST, ">$gWebDir/$html.html") || die "$gWebDir/$html.html: $!";
+  open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
   print DEST $name;
   close(DEST);
-  print "wrote $gWebDir/$html.html\n";
+  print "$html.html ";
 # now text
   return if ($text eq ""); # for index.html
 # This should be done with pipes instead of a temporary files, but lynx
 # doesn't read HTML from stdin :/
-  open(DEST, ">$gDocDir/$text.html") || die "$gDocDir/$text.html: $!";
+  open(DEST, ">$gDocDir/$text.html") || die "\n$gDocDir/$text.html: $!";
   $name =~ s,\nOther pages:\n.*?<hr>,,si;
   print DEST $name;
   close(DEST);
   unlink("$gDocDir/$text.txt");
-  $ENV{'HOME'} = "/dev/null";
+  $ENV{'HOME'} = "/tmp";
   $ENV{'TERM'} = "linux";
-  system ("lynx -nolist -dump -cfg=$gConfigDir/html/lynx-cfg $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
-    die "unable to write $gDocDir/$text.txt\n";
-  unlink("$gDocDir/$text.html") || die "can't remove temporary file $gDocDir/$text.html: $!";
-  print "wrote $gDocDir/$text.txt\n";
+  if (-x "/usr/bin/links") {
+    system ("rm -rf /tmp/.links/") == 0 || die;
+    system ("links -dump $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
+      die "\nunable to write $gDocDir/$text.txt\n";
+    system ("rm -rf /tmp/.links/");
+  } elsif (-x "/usr/bin/lynx") {
+    system ("lynx -nolist -dump -cfg=/dev/null $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
+      die "\nunable to write $gDocDir/$text.txt\n";
+  } else {
+    print "unable to write text versions of the HTMLs!";
+    print "if you need them, install links or lynx and run debbugsconfig again";
+    return;
+  }
+  unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";
+  print "$text.txt ";
 }