summaryrefslogtreecommitdiff
path: root/fml/lib/FML/Process/CGI.pm
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-11-08 15:36:21 +0000
committerfukachan <fukachan>2001-11-08 15:36:21 +0000
commit0ec512b6a5c2c81d1d88c93009c6e99df9a3f9ce (patch)
treea20380a995661140d119b9193e9c1c21264be9d5 /fml/lib/FML/Process/CGI.pm
parent269dd48f3ddaa9fb15de54b2e10f8911e13490f1 (diff)
downloadfml8-0ec512b6a5c2c81d1d88c93009c6e99df9a3f9ce.tar.gz
fml8-0ec512b6a5c2c81d1d88c93009c6e99df9a3f9ce.tar.bz2
fml8-0ec512b6a5c2c81d1d88c93009c6e99df9a3f9ce.zip
use FML::Process::CGI::{Kernel,Param}
Diffstat (limited to 'fml/lib/FML/Process/CGI.pm')
-rw-r--r--fml/lib/FML/Process/CGI.pm213
1 files changed, 5 insertions, 208 deletions
diff --git a/fml/lib/FML/Process/CGI.pm b/fml/lib/FML/Process/CGI.pm
index 1c8e2591..6d57f6f1 100644
--- a/fml/lib/FML/Process/CGI.pm
+++ b/fml/lib/FML/Process/CGI.pm
@@ -4,7 +4,7 @@
# All rights reserved. This program is free software; you can
# redistribute it and/or modify it under the same terms as Perl itself.
#
-# $FML: CGI.pm,v 1.17 2001/11/07 14:11:46 fukachan Exp $
+# $FML: CGI.pm,v 1.18 2001/11/07 14:25:55 fukachan Exp $
#
package FML::Process::CGI;
@@ -12,6 +12,10 @@ use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
use Carp;
+use FML::Process::CGI::Kernel;
+use FML::Process::CGI::Param;
+@ISA = qw(FML::Process::CGI::Kernel FML::Process::CGI::Param);
+
=head1 NAME
FML::Process::CGI - CGI basic functions
@@ -30,213 +34,6 @@ This new() creates CGI object which wraps C<FML::Process::Kernel>.
the base class of CGI programs.
It provides basic functions and flow.
-=head1 METHODS
-
-=head2 C<new()>
-
-ordinary constructor which is used widely in FML::Process classes.
-
-=cut
-
-use FML::Process::Kernel;
-use FML::Log qw(Log LogWarn LogError);
-use FML::Config;
-
-# load standard CGI routines
-use CGI qw/:standard/;
-
-@ISA = qw(FML::Process::Kernel);
-
-
-# XXX now we re-evaluate $ml_home_dir and @cf again.
-# XXX but we need the mechanism to re-evaluate $args passed from
-# XXX libexec/loader.
-sub new
-{
- my ($self, $args) = @_;
- my $type = ref($self) || $self;
-
- # we should get $ml_name from HTTP.
- my $ml_home_prefix = $args->{ ml_home_prefix };
- my $ml_name = safe_param_ml_name($self) || do {
- croak("not get ml_name from HTTP") if $args->{ need_ml_name };
- };
-
- use File::Spec;
- my $ml_home_dir = File::Spec->catfile($ml_home_prefix, $ml_name);
- my $config_cf = File::Spec->catfile($ml_home_dir, 'config.cf');
-
- # fix $args { cf_list, ml_home_dir };
- my $cflist = $args->{ cf_list };
- push(@$cflist, $config_cf);
- $args->{ ml_home_dir } = $ml_home_dir;
-
- # o.k. load configurations
- my $curproc = new FML::Process::Kernel $args;
- return bless $curproc, $type;
-}
-
-
-=head2 C<prepare()>
-
-print HTTP header.
-The charset is C<euc-jp> by default.
-
-=cut
-
-# XXX FML::Process::Kernel::prepare() parses incoming_message
-# XXX CGI do not parse incoming_message;
-sub prepare
-{
- my ($curproc) = @_;
- my $config = $curproc->{ config };
- my $charset = $config->{ cgi_charset } || 'euc-jp';
-
- print header(-type => "text/html; charset=$charset");
-}
-
-
-=head2 C<verify_request()>
-
-dummy method now.
-
-=head2 C<finish()>
-
-dummy method now.
-
-=cut
-
-sub verify_request { 1;}
-sub finish { 1;}
-
-
-=head2 C<run()>
-
-dispatch *.cgi programs.
-
-=cut
-
-# See CGI.pm for more details
-sub run
-{
- my ($curproc, $args) = @_;
- my $config = $curproc->{ config };
- my $myname = $config->{ program_name };
-
- # model specific ticket object
- if ($myname eq 'fmlticket.cgi') {
- my $module = $config->{ ticket_driver };
- my $ticket = $curproc->load_module($args, $module);
- $ticket->mode({ mode => 'html' });
- $ticket->run_cgi($curproc, $args);
- }
- elsif ($myname eq 'makefml.cgi') {
- $curproc->_makefml($args);
- }
- else {
- croak("Who am I ($myname)? I don't know $myname\n");
- }
-}
-
-
-sub _makefml
-{
- my ($curproc, $args) = @_;
- my $method = $curproc->safe_param_method;
- my $ml_name = $curproc->safe_param_ml_name;
- my $address = $curproc->safe_param_address || '';
- my $argv = $curproc->command_line_argv();
- my @options = ();
-
- # arguments to pass off to each method
- my $optargs = {
- command => $method,
- ml_name => $ml_name,
- address => $address,
- options => \@options,
- argv => $argv,
- args => $args,
- };
-
- Log("makefml.cgi ml_name=$ml_name command=$method address=$address");
-
- # here we go
- require FML::Command;
- my $obj = new FML::Command;
- $obj->$method($curproc, $optargs);
-}
-
-
-=head1 Input Data Diagnostic
-
-=head2 safe_param(str, filter)
-
-=cut
-
-
-# Descriptions:
-# Arguments: $self $args
-# Side Effects:
-# History: fml 4.0's SecureP()
-# Return Value: none
-sub safe_param
-{
- my ($key, $filter) = @_;
- my $value = param($key);
-
- if (defined $filter && defined $value) {
- if ($value =~ /^$filter$/) {
- return $value;
- }
- else {
- return undef;
- }
- }
- else {
- return undef;
- }
-}
-
-
-=head2 safe_param_xxx()
-
-get and filter param('xxx') via AUTOLOAD().
-
-=cut
-
-
-my %allow_regexp = (
- 'address' => '[-a-z0-9_]@[-A-Z0-9\.]+',
- 'ml_name' => '[-a-z0-9_]+',
- 'method' => '[a-z]+',
- 'user' => '[-a-z0-9_]+',
- );
-
-
-sub AUTOLOAD
-{
- my ($curproc) = @_;
-
- return if $AUTOLOAD =~ /DESTROY/;
-
- my $comname = $AUTOLOAD;
- $comname =~ s/.*:://;
-
- if ($comname =~ /^safe_param_(\S+)/) {
- my $varname = $1;
-
- # diagnostic
- unless (defined $allow_regexp{ $varname }) {
- croak("no allow_regexp for $comname");
- }
- return safe_param($varname, $allow_regexp{ $varname });
- }
- else {
- croak("unknown method $comname");
- }
-}
-
-
=head1 AUTHOR
Ken'ichi Fukamachi