l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
September 2: Social gathering
Next Installfest:
TBD
Latest News:
Aug. 18: Discounts to "Velocity" in NY; come to tonight's "Photography" talk
Page last updated:
2002 Feb 20 17:39

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Need help securing a simple perl CGI
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Need help securing a simple perl CGI



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I have re-writen this script so that it does not take in the file name directly, but instead reads in a number and gets the file name from an external config file.

I still need to figure out how to get it to work with non-html mime types.



#!/usr/bin/perl

# Perl CGI script to decompress gzip'd html files on-the-fly to
# save disk space on the server. This will likely slow things
# a bit...

# Edit line 13 to if needed. files.lst should contain one file name per line, with
# path relitive to $filepath. The first entry is called with 'decomp.pl?filenum=0',
# the second with 'decomp.pl?filenum=1', etc. First entry shoul be an error page.

use CGI::Carp qw(fatalsToBrowser);                      # Tell user if we crap out.

my $filepath = "/var/home/ryan/WWW/";                   # Set to your web directory

my $request;

if ($ENV{'REQUEST_METHOD'} eq "GET") {                  # Was this 'GET' request?
        $request = $ENV{'QUERY_STRING'};                # Store query string
        $request =~ s/\+/ /g;                           # undo encoding
        $request =~ s/%(..)/pack("c",hex($1))/ge;       # ditto
} else {
        $request = ;                            # Handle a POST request
}

open(FILES, 'files.lst')                                # open the file list
        or die "Can't open files.lst: $!";              # whine and die if fail

my %data = split (/=/, $request);                       # Turn the request into a hash
my @filelist = ;                                        # Put file list into array
my $pagenum = $data{'page'};                            # What file num does user want?
my $filename = $filelist[$pagenum];                     # Get the needed entry
my $filename = "$filepath"."$filename";                 # Merge root path into file name
                                                        # There ought to be error handling here

print "Content-Type: text/html\n\n";                    # Tell browser to render html
print `zcat $filename`;                                 # Decompress and output the file


- -- 
No Microsoft products were used in any way for the creation of this message.
PGP Public key at http://mother.com/~ryan/ryan_at_mother_dot_com.asc
It is also on the servers: Key ID 0x72177BC7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8dEqFEd9E83IXe8cRAjofAKCm6zmlrVXJFOehhpVx397aeK3MIQCeLsIH
kUY3Lll0uB9p4gE4HpyK4Zs=
=pjee
-----END PGP SIGNATURE-----
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.