#!/usr/bin/perl #!/usr/bin/perl ########################################################## ## Castle Links ## Created: 06/17/1999 ########################################################## # By: Castle CGI # WebSite: www.castellum.net ########################################################## ########################################################## # (C)Copyright 1999-2001 Castellum.net, All rights reserved ########################################################## # DISCLAIMER: # THIS PROGRAM IS PROVIDED WITHOUT WARRANTIES OF ANY # KIND, WHETHER EXPRESSED OR IMPLIED. THIS PROGRAM IS # PROVIDED WIThOUT WARRANTIES AS TO PERFORMANCE, OR # MERCHANTABILITY OF THIS PROGRAM. # TERMS OF USE: # THIS SCRIPT MAY BE MODIFIED, BUT NOT REDISTRIBUTED IN # ANY WAY, SHAPE, OR FORM. IN ANY CASE, COPYRIGHT AND # SCRIPT INFORMATION MUST BE KEPT IN PLACE ########################################################## use Fcntl qw(:DEFAULT :flock); ################################## ## GET QUERY STRING INTO %query ################################## my %query = (); foreach my $pair (split(/&/,$ENV{'QUERY_STRING'})){ my($name,$value) = split(/=/,$pair); $name =~ s/\+/ /g; $name =~ s/%(..)/chr(hex($1))/ge; $value =~ s/\+/ /g; $value =~ s/%(..)/chr(hex($1))/ge; $query{$name}.= $value; } ################################## ## GET FORM INPUT INTO %input ################################## my $in = undef; my %input = (); read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); foreach my $pair (split(/&/,$in)){ my($name,$value) = split(/=/,$pair); $name =~ s/\+/ /g; $value =~ s/\+/ /g; $name =~ s/%(..)/chr(hex($1))/ge; $value =~ s/%(..)/chr(hex($1))/ge; if ($input{$name}){$input{$name}.= ",";} $input{$name}.= $value } ################################## ## LOAD SETUP INTO LOCAL %setup ## ################################## my %setup = (); open(SETUP, "clinks_setup.pl")||&TrueDie("Opening clinks_setup.pl: $!"); while(){ chomp; my($name,$value) = split(/=/); $setup{$name} .= $value; } close(SETUP); my $t_dir = $setup{'template_dir'}; ################################### ## LOAD CATEGORIES ################################### my %categories = (); my $category_options = ''; open(CATS, "$setup{'category_file'}")||&Error("Opening $setup{'category_file'}: $!"); if ($setup{'flock'} == 1){flock(CATS,LOCK_SH);} while(){ chomp; my($title,$count,$path,$addto,$desc) = split(/\|\|/); $categories{$path} = $_; } if ($setup{'flock'} == 1){flock(CATS,8);} close(CATS); foreach my $category (sort(keys %categories)){ $category_options .= ""; } my $base_path = $query{'category'}; my $start = $query{'start'}; if ($input{'category'} ne ''){ $base_path = $input{'category'}; $start = 0; if ($base_path eq '/'){ print "Location: main.cgi\n\n"; exit; } } if (!$start > 0){$start = 0;} ################################### ## LOAD TEMPLATE ################################### open(MASTER, "$t_dir/master.htm")||&DieNice("Openeing: $t_dir/master.htm $!"); my($temp1,$temp2) = split(/!INSERT!/,join('',)); close(MASTER); open(TEMPLATE, "$t_dir/category.htm")||&DieNice("Opening: $t_dir/category.htm $!"); my $html = $temp1 . join('',