update default notes and footer
[freeside.git] / htetc / handler.pl-1.0x
1 #!/usr/bin/perl
2 #
3 # This is a basic, fairly fuctional Mason handler.pl.
4 #
5 # For something a little more involved, check out session_handler.pl
6
7 package HTML::Mason;
8
9 # Bring in main Mason package.
10 use HTML::Mason;
11
12 # Bring in ApacheHandler, necessary for mod_perl integration.
13 # Uncomment the second line (and comment the first) to use
14 # Apache::Request instead of CGI.pm to parse arguments.
15 use HTML::Mason::ApacheHandler;
16 # use HTML::Mason::ApacheHandler (args_method=>'mod_perl');
17
18 # Uncomment the next line if you plan to use the Mason previewer.
19 #use HTML::Mason::Preview;
20
21 use strict;
22
23 # List of modules that you want to use from components (see Admin
24 # manual for details)
25 #{  package HTML::Mason::Commands;
26 #   use CGI;
27 #}
28
29 # Create Mason objects
30 #
31 my $parser = new HTML::Mason::Parser;
32 my $interp = new HTML::Mason::Interp (parser=>$parser,
33                                       comp_root=>'/var/www/freeside',
34                                       data_dir=>'/usr/local/etc/freeside/masondata',
35                                       out_mode=>'stream',
36                                      );
37 my $ah = new HTML::Mason::ApacheHandler ( interp => $interp,
38                                           #auto_send_headers => 0,
39                                         );
40
41 # Activate the following if running httpd as root (the normal case).
42 # Resets ownership of all files created by Mason at startup.
43 #
44 chown (Apache->server->uid, Apache->server->gid, $interp->files_written);
45
46 sub handler
47 {
48     my ($r) = @_;
49
50     # If you plan to intermix images in the same directory as
51     # components, activate the following to prevent Mason from
52     # evaluating image files as components.
53     #
54     #return -1 if $r->content_type && $r->content_type !~ m|^text/|i;
55
56     #rar
57     { package HTML::Mason::Commands;
58       use strict;
59       use vars qw( $cgi $p );
60       use CGI;
61       #use CGI::Carp qw(fatalsToBrowser);
62       use Date::Format;
63       use Date::Parse;
64       use Time::Local;
65       use Tie::IxHash;
66       use HTML::Entities;
67       use IO::Handle;
68       use IO::File;
69       use String::Approx qw(amatch);
70       use Chart::LinesPoints;
71       use HTML::Widgets::SelectLayers 0.02;
72       use FS::UID qw(cgisuidsetup dbh getotaker datasrc driver_name);
73       use FS::Record qw(qsearch qsearchs fields dbdef);
74       use FS::Conf;
75       use FS::CGI qw(header menubar popurl table itable ntable idiot eidiot
76                      small_custview myexit http_header);
77       use FS::Msgcat qw(gettext geterror);
78
79       use FS::agent;
80       use FS::agent_type;
81       use FS::domain_record;
82       use FS::cust_bill;
83       use FS::cust_bill_pay;
84       use FS::cust_credit;
85       use FS::cust_credit_bill;
86       use FS::cust_main;
87       use FS::cust_main_county;
88       use FS::cust_pay;
89       use FS::cust_pkg;
90       use FS::cust_refund;
91       use FS::cust_svc;
92       use FS::nas;
93       use FS::part_bill_event;
94       use FS::part_pkg;
95       use FS::part_referral;
96       use FS::part_svc;
97       use FS::part_svc_router;
98       use FS::pkg_svc;
99       use FS::port;
100       use FS::queue qw(joblisting);
101       use FS::raddb;
102       use FS::session;
103       use FS::svc_acct;
104       use FS::svc_acct_pop qw(popselector);
105       use FS::svc_acct_sm;
106       use FS::svc_domain;
107       use FS::svc_forward;
108       use FS::svc_www;
109       use FS::router;
110       use FS::part_router_field;
111       use FS::router_field;
112       use FS::addr_block;
113       use FS::part_sb_field;
114       use FS::sb_field;
115       use FS::svc_broadband;
116       use FS::type_pkgs;
117       use FS::part_export;
118       use FS::part_export_option;
119       use FS::export_svc;
120       use FS::msgcat;
121
122       *CGI::redirect = sub {
123         my( $self, $location ) = @_;
124
125         #http://www.masonhq.com/docs/faq/#how_do_i_do_an_external_redirect
126         $m->clear_buffer;
127         # The next two lines are necessary to stop Apache from re-reading
128         # POSTed data.
129         $r->method('GET');
130         $r->headers_in->unset('Content-length');
131         $r->content_type('text/html');
132         #$r->err_header_out('Location' => $location);
133         $r->header_out('Location' => $location);
134          $r->header_out('Content-Type' => 'text/html');
135          $m->abort(302);
136
137         '';
138       };
139
140       $cgi = new CGI;
141       &cgisuidsetup($cgi);
142       #&cgisuidsetup($r);
143       $p = popurl(2);
144     }
145
146     $r->content_type('text/html');
147     #eorar
148
149     my $headers = $r->headers_out;
150     $headers->{'Pragma'} = $headers->{'Cache-control'} = 'no-cache';
151     #$r->no_cache(1);
152     $headers->{'Expires'} = '0';
153
154 #    $r->send_http_header;
155
156     my $status = $ah->handle_request($r);
157
158     $status;
159 }
160
161 1;