Date: Wed, 11 Jan 2006 23:33:32 -0500 From: Jonathan Noack <noackjr@alumni.rice.edu> To: Manuel Lemos <mlemos@acm.org> Cc: freebsd-cvsweb@freebsd.org Subject: Re: Hiding some directories Message-ID: <43C5DC1C.9040209@alumni.rice.edu> In-Reply-To: <43C5CEBC.6070908@acm.org> References: <OF96243472.5A043BB8-ON072570F3.0070D138-072570F3.0071175F@microchip.com> <43C5CEBC.6070908@acm.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------040608050106060802090807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Manuel Lemos wrote:
> on 01/11/2006 06:35 PM Jerry.Nairn@microchip.com said the following:
> >> Is there a way to hide some directories besides CVSROOT?
> >
> > See the @ForbiddenFiles array in cvsweb.conf.
>
> Thanks, that is what I am looking for.
>
> BTW, I am not familiar enough with Perl. Although I was able to
> configure that array to forbid all directories that I did not want, I
> wonder if is there a way to specify in that array just a few top level
> directories that I want.
How about an @AllowedFiles list that only displays files and directories
that match? See attached patches for cvsweb.cgi and cvsweb.conf.
-Jonathan
--------------040608050106060802090807
Content-Type: text/plain;
name="cvsweb.cgi.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="cvsweb.cgi.diff"
--- cvsweb.cgi.old Wed Jan 11 22:12:42 2006
+++ cvsweb.cgi Wed Jan 11 23:15:30 2006
@@ -82,7 +82,7 @@
$allow_log_extra $allow_dir_extra $allow_source_extra
$allow_cvsgraph $cvsgraph_config $use_java_script $edit_option_form
$show_subdir_lastmod $show_log_in_markup $preformat_in_markup
- $tabstop $state $annTable $sel @ForbiddenFiles
+ $tabstop $state $annTable $sel @ForbiddenFiles @AllowedFiles
$use_descriptions %descriptions @mytz $dwhere
$use_moddate $gzip_open $file_list_len
$allow_tar @tar_options @gzip_options @zip_options @cvs_options
@@ -4339,7 +4339,10 @@
#
-# See if a file/dir is listed in the config file's @ForbiddenFiles list.
+# If a file/dir is listed in the config file's @ForbiddenFiles list,
+# forbid access to it. If the @AllowedFiles list is defined in the config
+# file then a file/dir must be listed for access to be granted.
+# @ForbiddenFiles takes precedence over @AllowedFiles.
# Takes a full file system path or one relative to $cvsroot, and strips the
# trailing ",v" if present, then compares. Returns 1 if forbidden, else 0.
#
@@ -4349,6 +4352,12 @@
$path =~ s|^$cvsroot/+||;
for my $forbidden_re (@ForbiddenFiles) {
return 1 if ($path =~ $forbidden_re);
+ }
+ if (($cvsroot ne $path) && (defined(@AllowedFiles))) {
+ for my $allowed_re (@AllowedFiles) {
+ return 0 if ($path =~ $allowed_re);
+ }
+ return 1;
}
return 0;
}
--------------040608050106060802090807
Content-Type: text/plain;
name="cvsweb.conf.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="cvsweb.conf.diff"
--- cvsweb.conf.dist Thu Dec 1 23:10:10 2005
+++ cvsweb.conf Wed Jan 11 23:24:16 2006
@@ -266,6 +266,17 @@
#qr|^my/+secret/+dir|o,
);
+# Regular expressions for files and directories which should be shown.
+# Each regexp is compared against a path relative to a CVS root, after
+# stripping the trailing ",v" if present. Only matching files and
+# directories are displayed.
+# @ForbiddenFiles takes precedence over @AllowedFiles.
+# If @AllowedFiles is not defined, only @ForbiddenFiles is enforced.
+#
+#@AllowedFiles = (
+ #qr|^my/+public/+dir|o,
+#);
+
# Use CVSROOT/descriptions for describing the directories/modules?
# See INSTALL, section 9.
#
--------------040608050106060802090807--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43C5DC1C.9040209>
