Dear misc@ readers,

I'm trying to set-up a cvsweb server (OpenBSD 5.9 i386) with stock httpd(8); this is the relevant part of my httpd.conf:

# Name-based web server
server $web_domain {
        listen on $ext_if port 80

        location "/cgi-bin/*" {
                fastcgi
                # The /cgi-bin directory is outside of the document root
                root "/"
        }

        location "/cvsweb/*" {
                root { "/htdocs/cvsweb", strip 1 }
        }

        root "/htdocs/www.atlantide.t28.net"
}

I strictly followed the guidelines in
/usr/local/share/doc/pkg-readmes/cvsweb-2.0.6p20, but ended up with the following: when I click on a revision number, the header is not recognizes as a markup language, but shown by the browser as plain text:

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>dotfiles/bashrc - view - 1.13</title>
<meta name="robots" content="nofollow">
<meta name="generator" content="FreeBSD-CVSweb 2.0.6">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
</head>
<body text="#000000" bgcolor="#eeeeee">
<table width="100%" style="border: none; background-color: #9999ee" cellspacing="0" cellpadding="1">
<tr valign="bottom"><td>
<a href="./bashrc#rev1.13"><img src="/cvsweb/icons/back.gif" alt="[BACK]" border="0" width="20" height="22"></a><b>Return to <a href="./bashrc#rev1.13">bashrc</a> CVS log</b> <img src="/cvsweb/icons/text.gif" alt="[TXT]" border="0" width="20" height="22"></td><td align="right"><img src="/cvsweb/icons/dir.gif" alt="[DIR]" border="0" width="20" height="22"> <b>Up to <a href="/cgi-bin/cvsweb/#dirlist">[env]</a> / <a href="/cgi-bin/cvsweb/dotfiles/#dirlist">dotfiles</a></b></td></tr></table><hr noshade><table width="100%">
<tr>
<td style="background-color: #ffffff">File: <a href="/cgi-bin/cvsweb/#dirlist">[env]</a> / <a href="/cgi-bin/cvsweb/dotfiles/#dirlist">dotfiles</a> / <a href="/cgi-bin/cvsweb/dotfiles/bashrc">bashrc</a>&nbsp;(<a href="/cgi-bin/cvsweb/~checkout~/dotfiles/bashrc?rev=1.13" target="cvs_checkout" onclick="window.open('/cgi-bin/cvsweb/~checkout~/dotfiles/bashrc?rev=1.13','cvs_checkout','resizable,scrollbars');return false"><b>download</b></a>)<br>
<p>
Revision <b>1.13</b>, <i>Wed Aug 10 13:14:16 2016 UTC</i> (19 hours, 58 minutes ago) by <i>just22</i>
<br>Branch: <b>MAIN</b>
<br>CVS Tags: <b>HEAD</b><br>Changes since <b>1.12: +2 -2 lines</b>
</p>
<pre>
Reverted commit 1.11: \[ and \] are needed for correct prompt char counting (e.g. when using BS)
</pre>
</td>
</tr>
</table><hr noshade><pre># ----------------------------------------------------------------------
#  $Id: bashrc,v 1.13 2016/08/10 13:14:16 just22 Exp $
#
#  ~/.bashrc: executed by bash(1) for non-login shells
#
#  This file is sourced by all *interactive* bash shells on startup,
#  including some apparently interactive shells such as scp and rcp
#  that can't tolerate any output.  So make sure this doesn't display
#  anything or bad things will happen!
#
#  It should contain stuff that applies only to bash itself, such
#  as alias and function definitions, shell options and prompt settings
# ----------------------------------------------------------------------

# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]]; then
        # Shell is non-interactive.  Be done now!
        return
fi
[...]

I tried different browsers (Firefox, Surf, Chromium) and the behavior doesn't change. I suspected a problem with MIME types ('cause misbehaving files show trailing "content-type=text/x-cvsweb-markup" - maybe not recognized by default?); copying mime.types from an apache-httpd installation in /conf doens't have any effects, too.

This is my cvsweb.conf:

# -*-perl-*-
# Configuration of cvsweb.cgi, the
# CGI interface to CVS Repositories.
#
# (c) 1998-1999 H. Zeller    <zel...@think.de>
#     1999      H. Nordstrom <h...@hem.passagen.se>
#     2000-2002 A. MUSHA     <k...@freebsd.org>
#     2002      V. Skyttä    <s...@freebsd.org>
#          based on work by Bill Fenner  <fen...@freebsd.org>
#
# $FreeBSD: projects/cvsweb/cvsweb.conf,v 1.36.2.3 2002/09/23 05:30:17 scop Exp $
# $Id: cvsweb.conf,v 1.29 2001/07/23 09:14:52 hzeller Exp $
# $Idaemons: /home/cvs/cvsweb/cvsweb.conf,v 1.27 2001/08/01 09:48:39 knu Exp $
#
###

# Set the path for the following commands:
#   uname, cvs, rlog, rcsdiff
#   gzip (if you enable $allow_compress)
#   tar, rm, zip (if you enable $allow_tar)
$command_path = '/bin:/usr/bin:/usr/local/bin';

# Search the above directories for each command
for (qw(uname cvs rlog rcsdiff gzip tar rm zip)) {
        $CMD{$_} = search_path($_);
}

# The name of the operating system implementation
chomp($uname = `$CMD{uname}`);

##############
# CVS Root
##############
# CVSweb can handle several CVS-Repositories
# at once. Enter a short symbolic names and the
# full path of these repositories here.
# NOTE that the symbolic names may not contain
# whitespaces.
# Note, that cvsweb.cgi currently needs to have physical access
# to the CVS repository so :pserver:some...@xyz.com:/data/cvsroot
# won't work!

# 'symbolic_name' => ['name_to_display', 'path_to_the_actual_repository']
# Listed in the order specified:
@CVSrepositories = (
#       'local'   => ['Local Repository', '/home/cvs'],
#       'freebsd' => ['FreeBSD',          '/home/ncvs'],
#       'openbsd' => ['OpenBSD',          '/home/ncvs'],
#       'netbsd'  => ['NetBSD',           '/home/ncvs'],
#       'ruby'    => ['Ruby',             '/var/anoncvs/ruby'],
        'env'     => ['Env',              '/cvs/env.cvsrepo'],
        'prj'     => ['Projects',         '/cvs/prj.cvsrepo'],
);

# This tree is enabled by default when
# you enter the page
$cvstreedefault = $CVSrepositories[2 * 0];    # The first one

##############
# Bug tracking system options
# ("PR" means Problem Report, as in GNATS)
##############
#@prcategories = qw(
#    advocacy
#    alpha
#    bin
#    conf
#    docs
#    gnu
#    i386
#    kern
#    misc
#    pending
#    ports
#    sparc
#);

#
#$prcgi = "http://www.FreeBSD.org/cgi/query-pr.cgi?pr=%s";;
#
#$prkeyword = "PR";

##############
# Manual gateway
##############
$mancgi = "http://www.openbsd.org/cgi-bin/man.cgi?&sec=%s&query=%s";;

##############
# Defaults for UserSettings
##############
%DEFAULTVALUE = (

        # sortby: File sort order
        #   file   Sort by filename
        #   rev    Sort by revision number
        #   date   Sort by commit date
        #   author Sort by author
        #   log    Sort by log message

        "sortby" => "file",

        # hideattic: Hide or show files in Attic
        #   1      Hide files in Attic
        #   0      Show files in Attic

        "hideattic" => "1",

        # logsort: Sort order for CVS logs
        #   date   Sort revisions by date
        #   rev    Sort revision by revision number
        #   cvs    Don't sort them. Same order as CVS/RCS shows them.

        "logsort" => "date",

        # f:     Default diff format
        #   h      Human readable
        #   u      Unified diff
        #   c      Context diff
        "f" => "u",

        # hidecvsroot: Don't show the CVSROOT directory
        #   1      Hide CVSROOT directory
        #   0      Show CVSROOT directory
        "hidecvsroot" => "1",

        # hidenonreadable: Don't show entries which cannot be read
        #   1      Hide non-readable entries
        #   0      Show non-readable entries
        "hidenonreadable" => "1",
);

##############
# some layout stuff
##############

# The body-tag for directory views and logs
$body_tag = '<body text="#000000" bgcolor="#ffffff">';

# The body-tag for diffs and annotations
$body_tag_for_src = '<body text="#000000" bgcolor="#eeeeee">';

# Wanna have a logo on the page ?
$logo = '<p><img src="/icons/apache_pb.gif" alt="Powered by Apache"></p>';

# The title of the Page on startup.  This will be put inside a <h1> tag.
$defaulttitle = "CVS Repository";

# The address is shown on the footer. This will be put inside a <address> tag. $address = '<span style="font-size: smaller">FreeBSD-CVSweb &lt;<a href="mailto:freebsd-cvs...@freebsd.org";>freebsd-cvs...@freebsd.org</a>&gt;</span>';

# color of navigation Header for
# diffs and annotations
$navigationHeaderColor = '#9999ee';

$long_intro = <<EOT;
<p>
This is a WWW interface for CVS Repositories.
You can browse the file hierarchy by picking directories
(which have slashes after them, <i>e.g.</i>, <b>src/</b>).
If you pick a file, you will see the revision history
for that file.
Selecting a revision number will download that revision of
the file.  There is a link at each revision to display
diffs between that revision and the previous one, and
a form at the bottom of the page that allows you to
display diffs between arbitrary revisions.
</p>
<p>
This script has been written by Bill Fenner and improved by Henner Zeller,
Henrik Nordstr&ouml;m, and Ken Coar, then Akinori MUSHA brought it
back to FreeBSD community and made further improvements; it is covered
by <a
href="http://www.opensource.org/licenses/bsd-license.html";>The BSD Licence</a>.
</p>
<p>
If you would like to use this CGI script on your own web server and
CVS tree, download the latest version from &lt;URL:<a
href="http://www.FreeBSD.org/projects/cvsweb.html";>http://www.FreeBSD.org/projects/cvsweb.html</a>&gt;.
</p>
<p>
Feel free to send any patches, suggestions and comments to the FreeBSD-CVSweb
mailing list at
&lt;<a
href="mailto:freebsd-cvsweb\@FreeBSD.org";>freebsd-cvsweb\@FreeBSD.org</a>&gt;.
</p>
EOT

$short_instruction = <<EOT;
<p>
Click on a directory to enter that directory. Click on a file to display
its revision history and to get a chance to display diffs between revisions.
</p>
EOT

# used icons; if icon-url is empty, the text representation is used; if
# you do not want to have an ugly tooltip for the icon, remove the
# text-representation.
# The width and height of the icon allow the browser to correcly display
# the table while still loading the icons.
# These default icons are coming with apache.
# If these icons are too large, check out the miniicons in the
# icons/ directory; they have a width/height of 16/16
my $iconsdir = "/cvsweb/icons";

# format:             TEXT      ICON-URL              width height
%ICONS = (
        back => [("[BACK]", "$iconsdir/back.gif", 20, 22)],
        dir  => [("[DIR]",  "$iconsdir/dir.gif",  20, 22)],
        file => [("[TXT]",  "$iconsdir/text.gif", 20, 22)],
);
undef $iconsdir;

# the length to which the last logentry should
# be truncated when shown in the directory view
$shortLogLen = 80;

# Show author of last change
$show_author = 1;

##############
# table view for directories
##############

# Show directory as table
# this is much more readable but has one
# drawback: the whole table has to be loaded
# before common browsers display it which may
# be annoying if you have a slow link - and a
# large directory ..
$dirtable = 1;

# show different colors for even/odd rows
@tabcolors = ('#ffffff', '#ffffff');
$tablepadding = 2;

# Color of Header
$columnHeaderColorDefault = '#ffffcc';
$columnHeaderColorSorted  = '#ffcc66';

#
# If you want to have colored borders
# around each row, uncomment this
$tableBorderColor = '#cccccc';

#
# Modules in the repository that should not be displayed, either by default
# nor by explicit path specification.
#
@HideModules = (
#       "^my/secret/module",
);

#
# Files matching these pathnames shouldn't be checked out with cvsweb,
# since they may contain sensitive information. Simple file name based
# filter. Often, the CVSROOT/passwd is exposed and some people tend
# to check in their .cvspass, though this is a bad idea. These files
# shouldn't be readable by default. Thanks to Damian Gryski to point
# this out.
# Note that this affects only files, not directories.
@ForbiddenFiles = (
        "^CVSROOT/passwd\$",   # CVSROOT/passwd should not be cvs add'ed, though
        "/\\.cvspass\$",       # Ditto.  Just in case.
);

#
# Use CVSROOT/CVSROOT/descriptions for describing the directories/modules
# See INSTALL section 8
#
$use_descriptions = 0;

##############
# Human Readable Diff
##############

# (c) 1998 H. Zeller <zel...@think.de>
#
# Generates two columns of color encoded
# diff; much like xdiff or emacs-ediff mode.
#
# The diff-stuff is a piece of code I once made for
# cvs2html which is under GPL,
# see http://www.sslug.dk/cvs2html
# (c) 1997/98 Peter Toft <p...@sslug.imm.dtu.dk>
#
# some parameters to screw:
##

# make lines breakable so that the columns do not
# exceed the width of the browser
$hr_breakable = 1;

# ignore whitespaces for human readable diffs
# (indendation and stuff ..)
# ( '-w' option to diff)
$hr_ignwhite = 0;

# ignore diffs which are caused by
# keyword-substitution like $Id - Stuff
# ( '-kk' option to rcsdiff)
$hr_ignkeysubst = 1;

# Colors and font to show the diff type of code changes
$diffcolorHeading = '#99cccc'; # color of 'Line'-head of each diffed file
$diffcolorEmpty      = '#cccccc';    # color of 'empty' lines
$diffcolorRemove     = '#ff9999';    # Removed line(s) (left)  (  -  )
$diffcolorChange     = '#99ff99';    # Changed line(s) (     both    )
$diffcolorAdd        = '#ccccff';    # Added line(s)   (  - )  (right)
$diffcolorDarkChange = '#99cc99';    # lines, which are empty in change
$difffontface = "Helvetica,Arial";
$difffontsize = "-1";

# the width of the textinput of the
# request-diff-form
$inputTextSize = 12;

##############
# Mime Types
##############

# mapping to mimetypes to help
# cvsweb to guess the correct mime-type on
# checkout; you can use the mime.types from
# apache here:
#$mime_types = '/var/www/conf/mime.types';
$mime_types = '/conf/mime.types';

# quick mime-type lookup; maps file-suffices to
# mime-types for displaying checkouts in the browser.
# Further MimeTypes will be found in the
# file $mime_types (apache style mime.types - file)
# - add common mappings here for faster lookup
%MTYPES = (
        "html"  => "text/html",
        "shtml" => "text/html",
        "gif"   => "image/gif",
        "jpeg"  => "image/jpeg",
        "jpg"   => "image/jpeg",
        "png"   => "image/png",
        "xpm"   => "image/xpm",
        "*"     => "text/plain",
);

# Charset for HTML output
$charset = '';

# e.g.
#$charset = $where =~ m,/ru[/_-], ? 'koi8-r'
#  : $where =~ m,/zh[/_-], ? 'big5'
#  : $where =~ m,/ja[/_-], ? 'x-euc-jp'
#  : $where =~ m,/ko[/_-], ? 'x-euc-kr'
#  : 'iso-8859-1';

# Output filter
$output_filter = '';

# e.g.
## unify/convert Japanese code into EUC-JP
#$output_filter= '/usr/local/bin/nkf -e';

##############
# Misc
##############
# allow annotation of files
# this requires rw-access to the
# CVSROOT/history file (if you have one)
# and rw-access to the subdirectory to
# place the lock so you maybe don't want it
$allow_annotate = 1;

# allow pretty-printed version of files
$allow_markup = 1;

# allow extra hlink formatting (such as PR xrefs) in logs
$allow_log_extra = 1; # default: enabled

# allow extra hlink formatting (such as PR xrefs) in directories
$allow_dir_extra = 1;

# allow extra hlink formatting in source code/formatted diff views
$allow_source_extra = 1;

# allow compression with gzip
# of output if the Browser accepts
# it (HTTP_ACCEPT_ENCODING=gzip)
# [make sure to have gzip in the path]
$allow_compress = 0;

# Make use of javascript functions.
# This way you can select one of your CVSroot
# without pressing 'Go' (.. if you do have more
# than one CVSROOT defined)
$use_java_script = 1;

# open Download-Links in another window
$open_extern_window = 1;

# The size of this extern window; this size option
# needs use_java_script to be defined
# just comment them if you don't want to have a fixed
# size
#$extern_window_width = 600;
#$extern_window_height = 440;

# Edit Options
# Enable form to edit your options (hideattic,sortbydate)
# this isn't necessary if you've $dirtable defined 'cause
# this allows editing of all your options more intuitive
$edit_option_form = (not $dirtable);

# If you have files which automatically refers to other files
# (such as HTML) then this allows you to browse the checked
# out files as if outside CVS.
$checkout_magic = 1;

# Show last changelog message for sub directories
# The current implementation makes many assumptions and may show the
# incorrect file at some times. The main assumption is that the last
# modified file has the newest filedate. But some CVS operations
# touches the file without even when a new version is't checked in,
# and TAG based browsing essientially puts this out of order, unless
# the last checkin was on the same tag as you are viewing.
# Enable this if you like the feature, but don't rely on correct results.
$show_subdir_lastmod = 0;

# Background color of logentry in markup
$markupLogColor = "#ffffff";

# Show CVS log when viewing file contents
$show_log_in_markup = 1;

# Preformat when viewing file contents.  This should be turned off
# when you have files in the repository that are in a multibyte
# encoding which uses HTML special characters ([<>&"]) as part of a
# multi-byte character. (such as iso-2022-jp, ShiftJIS, etc.)
# Otherwise those files will get screwed up in markup.
$preformat_in_markup = '';

# Tabstop used to expand tabs in colored diffs. If undefined then
# tabs are always expanded to 8 spaces.
$tabstop = 8;

# if you wish to display absolute times in your local timezone,
# then define mytz and fill in the strings for your standard and
# daylight time. Note that you must also make sure the system
# timezone is correctly set.
# @mytz=("EST", "EDT");

# cvsweb is friendly to caches by indicating a suitable
# last-modified timestamp. Doing this uses slightly more
# CPU so you might want to disable it if you have a slow
# server
$use_moddate = 1;

# Allows downloading a tarball of the current directory if set.
# Bear in mind that this allows downloading a tarball of your entire
# repository, which can take a lot of time and disk space to create!
# If you enable this, you may need to make sure that cvsweb can write to
# CVSROOT/val-tags, due to a bug in cvs.
$allow_tar = '';

# Options to pass to tar(1).
@tar_options = qw();

# e.g. @tar_options = qw(--ignore-failed-read);
#      GNU tar has some useful options against unexpected errors.

# Options to pass to gzip(1) when compressing a tarball to download.
@gzip_options = qw();

# e.g. @gzip_options = qw(-3);
#      Try lower compression level than 6 (default) if you want faster
#      compression, or higher, for better compression.

# Options to pass to zip(1) when compressing a zip archive to download.
@zip_options = qw();

# e.g. @zip_options = qw(-3);
#      Try lower compression level than 6 (default) if you want faster
#      compression, or higher, for better compression.

# Options to pass to cvs(1).
# For cvs versions prior to 1.11, the '-l' option doesn't work; If you want
# working checkouts with an older cvs version, you'll have to make sure that
# the cvsweb user can read and write to CVSROOT/history.
@cvs_options = qw(-lf);

push @cvs_options, '-R' if ($uname eq 'FreeBSD' || $uname eq 'OpenBSD');
push @cvs_options, '-u' if ($uname eq 'NetBSD');

#      Only FreeBSD's and OpenBSD's cvs(1) supports -R (read only access
#      mode) option, which considerably speeds up checkouts over NFS.
#      A similar effect is provided by -u on NetBSD.

# Options to pass to the 'cvs annotate' command, usually the normal
# @cvs_options are good enough here.
@annotate_options = @cvs_options;

#      To make annotate work against a read only repository, add -n, e.g.:
#      @annotate_options = (@cvs_options, '-n');

1;

#EOF

I would really appreciate suggestions...

Thanks in advance

--
Alessandro DE LAURENZIS
[mailto:jus...@atlantide.t28.net]
LinkedIn: http://it.linkedin.com/in/delaurenzis

Reply via email to