[interchange-cvs] interchange - racke modified lib/Vend/Dispatch.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Tue Apr 15 18:16:01 2003


User:      racke
Date:      2003-04-15 22:15:07 GMT
Modified:  lib/Vend Dispatch.pm
Log:
allow access to global job files

Revision  Changes    Path
1.14      +20 -6     interchange/lib/Vend/Dispatch.pm


rev 1.14, prev_rev 1.13
Index: Dispatch.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Dispatch.pm,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Dispatch.pm	1 Apr 2003 04:12:32 -0000	1.13
+++ Dispatch.pm	15 Apr 2003 22:15:07 -0000	1.14
@@ -1,6 +1,6 @@
 # Vend::Dispatch - Handle Interchange page requests
 #
-# $Id: Dispatch.pm,v 1.13 2003/04/01 04:12:32 mheins Exp $
+# $Id: Dispatch.pm,v 1.14 2003/04/15 22:15:07 racke Exp $
 #
 # Copyright (C) 2002 ICDEVGROUP <interchange@icdevgroup.org>
 # Copyright (C) 2002 Mike Heins <mike@perusion.net>
@@ -26,7 +26,7 @@
 package Vend::Dispatch;
 
 use vars qw($VERSION);
-$VERSION = substr(q$Revision: 1.13 $, 10);
+$VERSION = substr(q$Revision: 1.14 $, 10);
 
 use POSIX qw(strftime);
 use Vend::Util;
@@ -673,24 +673,38 @@
 	my $dir;
 	my @itl;
 	if($job) {
-		my $ct = $jobscfg->{base_directory} || 'etc/jobs';
-		my $gt = '';
-		$gt = "$Global::ConfDir/jobs" if $jobscfg->{use_global};
+		my ($d, $global_dir, $tmp);
+		my @jobdirs = ([$jobscfg->{base_directory} || 'etc/jobs', 0]);
 
-		for my $d ($ct, $gt) {
+		if ($jobscfg->{use_global}) {
+			push (@jobdirs, ["$Global::ConfDir/jobs", 1]);
+		}
+
+		for my $r (@jobdirs) {
 #::logGlobal("check directory=$d for $job");
+			($d, $global_dir) = @$r;
 			next unless $d;
 			next unless -d "$d/$job";
 			$dir = "$d/$job";
 			last;
 		}
+
 		if($dir) {
+			if ($global_dir) {
+				$tmp = $Vend::Cfg->{AllowedFileRegex};
+				$Vend::Cfg->{AllowedFileRegex} = qr{^$dir};
+			}
+			
 			my @f = glob("$dir/*");
 			@f = grep ! -d $_, @f;
 			@f = grep $_ !~ /$Vend::Cfg->{HTMLsuffix}$/, @f;
 			for(@f) {
 #::logGlobal("found jobs piece file=$_");
 				push @itl, [$_, readfile($_)];
+			}
+
+			if ($global_dir) {
+				$Vend::Cfg->{AllowedFileRegex} = $tmp;
 			}
 		}
 	}