#!/usr/bin/perl # # Note: The first line may have to be adjusted to point to the location # of the Perl interpreter. # # Program name: forms.cgi # Author: Jerry Hermel, Agent Solutions # E-mail: jerryxh@earthlink.net # Creation date: 11/6/05 # Last modified: $prog = "forms.cgi"; $prog_version = 1.0; # # Copyright 2005 Agent Solutions. All rights reserved. # ######################################################################## # Do not change anything after this point!!! # ######################################################################## require 5.004; push(@INC, '/var/www/vhosts/calinspect.com/httpdocs/cgi-local/'); # Configuration file require "../adm/forms.cfg.txt"; # Include libraries use DBI; use XBase; use MIME::Entity; use URI::Escape; use Email::Valid; use Time::Local; use Date::Format; use Time::Zone; use POSIX; # Define databases $database1 = "$html_root/adm/$database1"; ### Main program ### # tokens to put in HTML documents to be replaced with responses @token = ('', '*Username*', '*Remember_Username*', '*Customer*', '*Cookie_Test*', '*Date*', '*DateOrd*', '*Insured*', '*Address*', '*Address1*', '*Address2*', '*Address3*', '*Address4*', '*Address5*', '*City*', '*City1*', '*City2*', '*City3*', '*City4*', '*City5*', '*Zip*', '*Zip1*', '*Zip2*', '*Zip3*', '*Zip4*', '*Zip5*', '*Contact*', '*ContactP*', '*Type*', '*Agency*', '*Agent*', '*AgentPh*', '*Company*', '*Policy*', '*Special*', '*Class1*', '*Class2*', '*Class3*', '*Class4*'); @message = (); $error = ""; $error_msg = " There was an ERROR in your submission!
"; %IN = (); %user_info = (); %cookies_in = (); %cookies_out = (); %cookie_test = (); # split the POST data into the IN array if ($ENV{'REQUEST_METHOD'} eq 'POST') { &split_post_data; } else { $split_value = $ENV{'QUERY_STRING'}; &split; } $page_path = $html_root . "/$IN{page}.html"; # Shut-down system if requested to by administrator $lock_file = "$html_root/adm/lock_file"; if ($IN{on} eq "" && $IN{off} eq "") { open(INFILE, $lock_file) or &sys_error("$prog: Cannot open lock_file: $!"); flock (INFILE, 1); $lock = ; flock (INFILE, 8); close (INFILE); if($lock eq "Off") { if ($IN{logout} eq "") { print "Location: http://www.calinspect.com/down4maintenance.html\n\n"; } } } # get cookies %cookies_in = get_cookies(); if ($IN{logout} ne "") { if($cookies_in{sid} ne "") { ($sid, $sid_time) = split /\|/, $cookies_in{sid}; $cookies_out{sid} = encode($sid) . "%7C" . ($sid_time - 3600); set_cookies(0, %cookies_out); } if($IN{logout} == 1) { print "Location: http://www.calinspect.com/index1.html\n\n"; } else { $msg = ""; if ($IN{msg} ne "") { $msg = $IN{msg}; } print "Location: $cgi/forms.cgi?msg=$msg\n\n"; } } if ($IN{sign_in} ne "" || $IN{signin} ne "" || $IN{remindme} ne "" || $IN{msg} ne "" || $IN{cookies} ne "" || $IN{enable} ne "") { &signin; } elsif ($IN{order_inspection} ne "" || $IN{order_another} ne "" || $IN{order_reset} ne "" || $IN{welcome} ne "") { require "order_inspections.pl"; &order_inspections; } elsif ($IN{order_audit} ne "" || $IN{order_another2} ne "" || $IN{order_reset2} ne "") { require "order_audits.pl"; &order_audits; } elsif ($IN{view_orders} ne "" || $IN{kw_search} ne "" || $IN{dr_search} ne "" || $IN{show_order} ne "") { if ($IN{show_order} ne "") { require "show_order.pl"; &show_order; } else { require "view.pl"; &view_orders; exit; } } elsif ($IN{view_orders2} ne "" || $IN{kw_search2} ne "" || $IN{dr_search2} ne "" || $IN{show_order2} ne "") { if ($IN{show_order2} ne "") { require "show_order2.pl"; &show_order2; } else { require "view2.pl"; &view_orders2; exit; } } elsif ($IN{on} ne "" || $IN{off} ne "") { open (OUT, ">$lock_file") || &sys_error("$prog: Cannot open lock_file: $!"); flock (OUT, 2); if ($IN{on} ne "") { print OUT "On"; $message[0] = "On"; } else { print OUT "Off"; $message[0] = "Off"; } flock (OUT, 8); close (OUT); @file_list = ("$lock_file"); chmod (0644, @file_list); } else { $IN{sign_in} = 1; &signin; } # just the content type because the HTML is all done in the HTML page parsed &html_header; # parse the HTML page and replace the tokens &parse_html; exit 0; # split the POST data into the IN array sub split_post_data { read(STDIN, $buffer, $ENV{CONTENT_LENGTH}); # Split the name/value pairs on '&' @pairs = split(/&/, $buffer); # Determine the name and value for each form variable foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # split on equals $value =~ tr/+/ /; # turn pluses into spaces # convert hex values $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($IN{$name} ne "") { $IN{$name} .= "\0$value"; } else { $IN{$name} = "$value"; } $IN{$name} =~ s/