[Catalyst-commits] r13144 - in trunk/Catalyst-Controller-WrapCGI: .
lib/Catalyst/Controller t t/lib t/lib/TestCGIBin/root/cgi-bin
caelum at dev.catalyst.perl.org
caelum at dev.catalyst.perl.org
Wed Apr 7 17:49:16 GMT 2010
Author: caelum
Date: 2010-04-07 18:49:16 +0100 (Wed, 07 Apr 2010)
New Revision: 13144
Added:
trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin/root/cgi-bin/ignored.cgi
Modified:
trunk/Catalyst-Controller-WrapCGI/Changes
trunk/Catalyst-Controller-WrapCGI/lib/Catalyst/Controller/CGIBin.pm
trunk/Catalyst-Controller-WrapCGI/t/cgibin.t
trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin.pm
Log:
added cgi_file_pattern option
Modified: trunk/Catalyst-Controller-WrapCGI/Changes
===================================================================
--- trunk/Catalyst-Controller-WrapCGI/Changes 2010-04-07 16:26:24 UTC (rev 13143)
+++ trunk/Catalyst-Controller-WrapCGI/Changes 2010-04-07 17:49:16 UTC (rev 13144)
@@ -1,6 +1,6 @@
Revision history for Catalyst-Controller-WrapCGI
- - added cgi_chain_root option for CGIBin
+ - added cgi_chain_root and cgi_file_pattern options for CGIBin
0.027 2010-02-19 04:34:50
- fix tests for Perl < 5.8.9
Modified: trunk/Catalyst-Controller-WrapCGI/lib/Catalyst/Controller/CGIBin.pm
===================================================================
--- trunk/Catalyst-Controller-WrapCGI/lib/Catalyst/Controller/CGIBin.pm 2010-04-07 16:26:24 UTC (rev 13143)
+++ trunk/Catalyst-Controller-WrapCGI/lib/Catalyst/Controller/CGIBin.pm 2010-04-07 17:49:16 UTC (rev 13144)
@@ -22,10 +22,6 @@
Catalyst::Controller::CGIBin - Serve CGIs from root/cgi-bin
-=head1 VERSION
-
-Version 0.027
-
=cut
our $VERSION = '0.027';
@@ -41,9 +37,12 @@
In your .conf:
<Controller::Foo>
- cgi_root_path cgi-bin
- cgi_dir cgi-bin
- cgi_chain_root /optional/private/path/to/Chained/root
+ cgi_root_path cgi-bin
+ cgi_dir cgi-bin
+ cgi_chain_root /optional/private/path/to/Chained/root
+ cgi_file_pattern *.cgi
+ # or regex
+ cgi_file_pattern /\.pl\z/
<CGI>
username_field username # used for REMOTE_USER env var
pass_env PERL5LIB
@@ -88,11 +87,20 @@
Path from which to read CGI files. Can be relative to C<$MYAPP_HOME/root> or
absolute. Defaults to C<$MYAPP_HOME/root/cgi-bin>.
+=head2 cgi_file_pattern
+
+By default all files in L</cgi_dir> will be loaded as CGIs, however, with this
+option you can specify either a glob or a regex to match the names of files you
+want to be loaded.
+
+Can be an array of globs/regexes as well.
+
=cut
-has cgi_root_path => (is => 'ro', isa => 'Str', default => 'cgi-bin');
-has cgi_chain_root => (is => 'ro', isa => 'Str');
-has cgi_dir => (is => 'ro', isa => 'Str', default => 'cgi-bin');
+has cgi_root_path => (is => 'ro', isa => 'Str', default => 'cgi-bin');
+has cgi_chain_root => (is => 'ro', isa => 'Str');
+has cgi_dir => (is => 'ro', isa => 'Str', default => 'cgi-bin');
+has cgi_file_pattern => (is => 'rw', default => sub { ['*'] });
sub register_actions {
my ($self, $app) = @_;
@@ -105,7 +113,16 @@
my $class = ref $self || $self;
- for my $file (File::Find::Rule->file->in($cgi_bin)) {
+ my $patterns = $self->cgi_file_pattern;
+ $patterns = [ $patterns ] if not ref $patterns;
+ for my $pat (@$patterns) {
+ if ($pat =~ m{^/(.*)/\z}) {
+ $pat = qr/$1/;
+ }
+ }
+ $self->cgi_file_pattern($patterns);
+
+ for my $file (File::Find::Rule->file->name(@$patterns)->in($cgi_bin)) {
my $cgi_path = abs2rel($file, $cgi_bin);
next if any { $_ eq '.svn' } splitdir $cgi_path;
@@ -365,5 +382,4 @@
=cut
1; # End of Catalyst::Controller::CGIBin
-
-# vim: expandtab shiftwidth=4 ts=4 tw=80:
+# vim:et sw=4 sts=4 tw=0:
Modified: trunk/Catalyst-Controller-WrapCGI/t/cgibin.t
===================================================================
--- trunk/Catalyst-Controller-WrapCGI/t/cgibin.t 2010-04-07 16:26:24 UTC (rev 13143)
+++ trunk/Catalyst-Controller-WrapCGI/t/cgibin.t 2010-04-07 17:49:16 UTC (rev 13144)
@@ -49,6 +49,10 @@
is($response->code, 500, 'POST to Perl CGI with nonzero exit()');
+$response = request '/my-bin/ignored.cgi';
+
+is($response->code, 500, "file not matching 'cgi_file_pattern' is ignored");
+
$response = request POST '/cgihandler/mtfnpy', [
foo => 'bar',
bar => 'baz'
Added: trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin/root/cgi-bin/ignored.cgi
===================================================================
--- trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin/root/cgi-bin/ignored.cgi (rev 0)
+++ trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin/root/cgi-bin/ignored.cgi 2010-04-07 17:49:16 UTC (rev 13144)
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use CGI ':standard';
+
+print header;
+print "THIS CGI SHOULD NOT RUN\n";
Property changes on: trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin/root/cgi-bin/ignored.cgi
___________________________________________________________________
Added: svn:executable
+ *
Modified: trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin.pm
===================================================================
--- trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin.pm 2010-04-07 16:26:24 UTC (rev 13143)
+++ trunk/Catalyst-Controller-WrapCGI/t/lib/TestCGIBin.pm 2010-04-07 17:49:16 UTC (rev 13144)
@@ -3,6 +3,12 @@
use Catalyst::Runtime '5.70';
use parent 'Catalyst';
+__PACKAGE__->config({
+ Controller::CGIHandler => {
+ cgi_file_pattern => ['*.sh', qr/\.pl\z/]
+ },
+});
+
__PACKAGE__->setup(qw/Static::Simple/);
1;
More information about the Catalyst-commits
mailing list