version 4.38, 2019/11/29 19:30:16 |
version 4.39, 2019/11/29 23:42:40 |
Line 55 use filetest qw(access); |
|
Line 55 use filetest qw(access); |
|
|
|
use vars qw ( |
use vars qw ( |
$VERSION $CheckoutMagic $MimeTypes $DEBUG |
$VERSION $CheckoutMagic $MimeTypes $DEBUG |
$config $allow_version_select |
|
@CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr %DEFAULTVALUE %MTYPES |
@CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr %DEFAULTVALUE %MTYPES |
@DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS |
@DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS |
%alltags %fileinfo %tags @branchnames %nameprinted |
%alltags %fileinfo %tags @branchnames %nameprinted |
|
|
$MimeTypes = undef if $@; |
$MimeTypes = undef if $@; |
|
|
$CheckoutMagic = '~checkout~'; |
$CheckoutMagic = '~checkout~'; |
$CMD{$_} = "/usr/bin/$_" for (qw(cvs rcsdiff rlog)); |
|
$CMD{tar} = "/bin/tar"; |
|
} |
} |
|
|
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
Line 190 delete(@ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}); |
|
Line 187 delete(@ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}); |
|
# with cvs >= 1.12.1 and doesn't hurt other versions. |
# with cvs >= 1.12.1 and doesn't hurt other versions. |
$ENV{CVSREADONLYFS} = 1; |
$ENV{CVSREADONLYFS} = 1; |
|
|
# Location of the configuration file inside the web server chroot: |
######## configuration defaults ######### |
$config = '/conf/cvsweb/cvsweb.conf'; |
|
|
|
######## Configuration parameters ######### |
%CMD = ( |
|
cvs => '/usr/bin/cvs', |
|
rcsdiff => '/usr/bin/rcsdiff', |
|
rlog => '/usr/bin/rlog', |
|
tar => '/bin/tar', |
|
); |
|
|
@CVSrepositories = @CVSROOT = %CVSROOT = %DEFAULTVALUE = |
%DEFAULTVALUE = ( |
%MTYPES = %tags = %alltags = %fileinfo = (); |
f => 'u', |
|
hideattic => 1, |
|
hidecvsroot => 0, |
|
hidenonreadable => 1, |
|
ignorecase => 0, |
|
ln => 0, |
|
logsort => 'date', |
|
sortby => 'file', |
|
); |
|
|
$logo = $defaulttitle = |
@ForbiddenFiles = ( |
$address = $shortLogLen = $show_author = |
qr|^CVSROOT/+passwd$|o, # CVSROOT/passwd should not be 'cvs add'ed though. |
$hr_breakable = $hr_ignwhite = |
qr|/\.cvspass$|o, # Ditto. Just in case. |
$hr_ignkeysubst = $mime_types = $allow_annotate = |
); |
$allow_markup = $allow_compress = $edit_option_form = |
|
$show_subdir_lastmod = $show_log_in_markup = $preformat_in_markup = |
|
$tabstop = $use_moddate = $gzip_open = $DEBUG = |
|
$allow_tar = undef; |
|
|
|
$allow_version_select = $allow_mailtos = $allow_log_extra = 1; |
%MTYPES = ( |
|
gif => 'image/gif', |
|
html => 'text/html', |
|
jpeg => 'image/jpeg', |
|
jpg => 'image/jpeg', |
|
png => 'image/png', |
|
); |
|
|
|
$address = 'CVSweb'; |
|
$allow_annotate = 1; |
|
$allow_compress = 0; |
|
$allow_dir_extra = 1; |
|
$allow_log_extra = 1; |
|
$allow_mailtos = 1; |
|
$allow_markup = 1; |
|
$allow_source_extra = 1; |
|
$allow_tar = 0; |
|
@annotate_options = qw(-f -R); |
|
$cssurl = '/css/cvsweb.css'; |
|
@cvs_options = qw(-f -R); |
|
@CVSrepositories = ('local', ['Local Repository', '/cvs']); |
|
$DEBUG = 0; |
|
$defaulttitle = 'CVS Repository'; |
|
$edit_option_form = 1; |
|
$file_list_len = 0; |
|
$hr_breakable = 1; |
|
$hr_ignkeysubst = 1; |
|
$hr_ignwhite = 0; |
|
$iconsdir = '/icons'; |
|
$logo = undef; |
|
$mancgi = 'https://man.openbsd.org/%s.%s'; |
|
$mime_types = '/conf/mime.types'; |
|
$preformat_in_markup = 0; |
|
@rcsdiff_options = qw(-q); |
|
$shortLogLen = 80; |
|
$show_author = 1; |
|
$show_log_in_markup = 1; |
|
$show_subdir_lastmod = 0; |
|
$tabstop = 8; |
|
@tar_options = qw(); |
|
$use_descriptions = 0; |
|
$use_moddate = 1; |
|
|
|
######## load configuration ######### |
|
|
|
{ |
|
my $config = '/conf/cvsweb/cvsweb.conf'; |
|
last unless -e $config; |
|
defined do $config and last; |
|
$@ and fatal '500 Internal Error', |
|
'Error loading configuration file "<code>%s</code>": <pre>%s</pre>', |
|
$config, $@; |
|
fatal '500 Internal Error', |
|
'Cannot read configuration file "<code>%s</code>": %s', |
|
$config, $! || 'unknown error'; |
|
} |
|
|
|
######## other global variables ######### |
|
|
@DIFFTYPES = qw(h H u c); |
@DIFFTYPES = qw(h H u c); |
@DIFFTYPES{@DIFFTYPES} = ( |
@DIFFTYPES{@DIFFTYPES} = ( |
{ |
{ |
Line 240 $allow_version_select = $allow_mailtos = $allow_log_ex |
|
Line 302 $allow_version_select = $allow_mailtos = $allow_log_ex |
|
{ descr => 'Revision', }, |
{ descr => 'Revision', }, |
); |
); |
|
|
##### End of configuration parameters ##### |
%alltags = (); |
|
@CVSROOT = (); |
|
%CVSROOT = (); |
|
%CVSROOTdescr = (); |
|
%fileinfo = (); |
|
$gzip_open = 0; |
|
%tags = (); |
|
|
|
######## end of global variables ######### |
|
|
my $pathinfo = ''; |
my $pathinfo = ''; |
if (defined($ENV{PATH_INFO}) && $ENV{PATH_INFO} ne '') { |
if (defined($ENV{PATH_INFO}) && $ENV{PATH_INFO} ne '') { |
($pathinfo) = ($ENV{PATH_INFO} =~ VALID_PATH) |
($pathinfo) = ($ENV{PATH_INFO} =~ VALID_PATH) |
Line 314 $maycompress = ( |
|
Line 384 $maycompress = ( |
|
qw(cvsroot hideattic ignorecase sortby logsort f only_with_tag ln |
qw(cvsroot hideattic ignorecase sortby logsort f only_with_tag ln |
hidecvsroot hidenonreadable); |
hidecvsroot hidenonreadable); |
|
|
# Load configuration. |
|
{ |
|
$config =~ m|^/| or fatal '500 Internal Error', |
|
'Configuration file name "<code>%s</code>" is not an absolute path.', |
|
$config; |
|
defined do $config and last; |
|
$@ and fatal '500 Internal Error', |
|
'Error loading configuration file "<code>%s</code>": <pre>%s</pre>', |
|
$config, $@; |
|
fatal '500 Internal Error', |
|
'Cannot read configuration file "<code>%s</code>": %s', |
|
$config, $! || 'unknown error'; |
|
} |
|
|
|
# Try to find a readable dir where we can cd into. Some abs_path() |
# Try to find a readable dir where we can cd into. Some abs_path() |
# implementations as well as various cvs operations require such a dir to |
# implementations as well as various cvs operations require such a dir to |
# work properly. |
# work properly. |
Line 477 for (my $i = 0; $i < scalar(@CVSrepositories); $i += 2 |
|
Line 533 for (my $i = 0; $i < scalar(@CVSrepositories); $i += 2 |
|
push(@CVSROOT, $key); |
push(@CVSROOT, $key); |
} |
} |
unless ($rootfound) { |
unless ($rootfound) { |
fatal('500 Internal Error', |
fatal('500 Internal Error', 'no valid CVS roots found'); |
'No valid CVS roots found! See <code>@CVSrepositories</code> in ' . |
|
'the configuration file (<code>%s</code>).', |
|
$config); |
|
} |
} |
undef $rootfound; |
undef $rootfound; |
|
|
Line 584 if ($iconsdir) { |
|
Line 637 if ($iconsdir) { |
|
$binfileicon = 'binfile'; |
$binfileicon = 'binfile'; |
} |
} |
|
|
my $config_cvstree = "$config-$cvstree"; |
|
|
|
# Do some special configuration for cvstrees |
|
if (-f $config_cvstree) { |
|
do "$config_cvstree" |
|
or fatal("500 Internal Error", |
|
'Error in loading configuration file: %s<br /><br />%s<br />', |
|
$config_cvstree, $@); |
|
} |
|
undef $config_cvstree; |
|
|
|
$fullname = catfile($cvsroot, $where); |
$fullname = catfile($cvsroot, $where); |
|
|
my $rewrite = 0; |
my $rewrite = 0; |
Line 2627 sub printLog($$$;$$) |
|
Line 2669 sub printLog($$$;$$) |
|
print ' - view: ', join(', ', @vlinks) if @vlinks; |
print ' - view: ', join(', ', @vlinks) if @vlinks; |
undef @vlinks; |
undef @vlinks; |
|
|
if (!$isbin && $allow_version_select) { |
unless ($isbin) { |
print ' - '; |
print ' - '; |
if ($isSelected) { |
if ($isSelected) { |
print '<b>[selected for diffs]</b>'; |
print '<b>[selected for diffs]</b>'; |