[Bio] / RAST / rast.cgi Repository:
ViewVC logotype

Diff of /RAST/rast.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11, Mon Jul 20 14:24:43 2009 UTC revision 1.12, Wed Aug 26 20:32:04 2009 UTC
# Line 7  Line 7 
7  use WebLayout;  use WebLayout;
8  use WebConfig;  use WebConfig;
9    
10    #use IO::Handle;
11    #open(TICKLOG, ">/dev/pts/9") or open(TICKLOG, ">&STDERR");
12    #TICKLOG->autoflush(1);
13    
14    use Time::HiRes 'gettimeofday';
15    my $start = gettimeofday;
16    my $time_last;
17    sub tick {
18        my($w) = @_;
19        my $now = gettimeofday;
20        my $t = $now - $start;
21        my $tms = int(($now - $time_last) * 1000);
22        $time_last = $now;
23        my ($package, $filename, $line) = caller;
24    
25        printf TICKLOG "$$ %-40s %5d %5d %.3f\n", $filename, $line, $tms, $t;
26        TICKLOG->flush();
27    }
28    
29    my $have_fcgi;
30    eval {
31        require CGI::Fast;
32        $have_fcgi = 1;
33    };
34    
35    
36    #
37    # If no CGI vars, assume we are invoked as a fastcgi service.
38    #
39    my $n_requests = 0;
40    if ($have_fcgi && $ENV{REQUEST_METHOD} eq '')
41    {
42        #
43        # Precompile modules. Find where we found one, and use that path
44        # to walk for the rest.
45        #
46    
47        my $mod_path = $INC{"WebComponent/Ajax.pm"};
48        if ($mod_path && $mod_path =~ s,WebApplication/WebComponent/Ajax\.pm$,,)
49        {
50            local $SIG{__WARN__} = sub {};
51            for my $what (qw(SeedViewer RAST WebApplication))
52            {
53                for my $which (qw(WebPage WebComponent DataHandler))
54                {
55                    opendir(D, "$mod_path/$what/$which") or next;
56                    my @x = grep { /^[^.]/ } readdir(D);
57                    for my $mod (@x)
58                    {
59                        $mod =~ s/\.pm$//;
60                        my $fullmod = join("::", $what, $which, $mod);
61                        eval " require $fullmod; ";
62                    }
63                    closedir(D);
64                }
65            }
66        }
67        my $max_requests = 100;
68        while ((my $cgi = new CGI::Fast()) &&
69               ($max_requests == 0 || $n_requests++ < $max_requests))
70        {
71            eval {
72                warn Dumper($cgi, \%ENV
73                           );
74                &main($cgi);
75            };
76            if ($@)
77            {
78                if ($@ =~ /^cgi_exit/)
79                {
80                    # this is ok.
81                }
82                elsif (ref($@) ne 'ARRAY')
83                {
84                    warn "code died, cgi=$cgi returning error '$@'\n";
85                    print $cgi->header(-status => '500 error in body of cgi processing');
86                    print $@;
87                }
88            }
89        endloop:
90        }
91    
92    }
93    else
94    {
95        my $cgi = new CGI();
96        eval { &main($cgi); };
97    
98        if ($@)
99        {
100            my $error = $@;
101            Warn("Script error: $error") if T(SeedViewer => 0);
102    
103            print CGI::header();
104            print CGI::start_html();
105    
106            # print out the error
107            print '<pre>'.$error.'</pre>';
108    
109            print CGI::end_html();
110        }
111    }
112    
113    sub main {
114        my($cgi) = @_;
115    
116  # read local WebConfig because we need it here  # read local WebConfig because we need it here
117  &WebConfig::import_local_config('RAST');  &WebConfig::import_local_config('RAST');
118    
# Line 34  Line 140 
140  $menu->add_entry('Your Jobs', 'Private Organism Preferences', '?page=PrivateOrganismPreferences');  $menu->add_entry('Your Jobs', 'Private Organism Preferences', '?page=PrivateOrganismPreferences');
141  $menu->add_category('Import Control', 'rast.cgi?page=ControlCenter', undef, [ 'import' ]);  $menu->add_category('Import Control', 'rast.cgi?page=ControlCenter', undef, [ 'import' ]);
142    
   
143  # init the WebApplication  # init the WebApplication
144  my $WebApp = WebApplication->new( { id       => 'RAST',  my $WebApp = WebApplication->new( { id       => 'RAST',
145                                      menu     => $menu,                                      menu     => $menu,
146                                      layout   => $layout,                                      layout   => $layout,
147                                                cgi => $cgi,
148                                      default  => 'Home',                                      default  => 'Home',
149                                    } );                                    } );
150    
151  $WebApp->page_title_prefix('RAST Server - ');  $WebApp->page_title_prefix('RAST Server - ');
152    
153  $WebApp->run();  $WebApp->run();
154    }

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3