#!/usr/bin/perl -w # Interactive Bookmarks Viewer # Release 2.07(27-Nov-99) # (c) - 1999, Eastwright Corporation # http://www.eastwright.com print "Content-type: text/html\n\n"; require "../members/cgi-bin/config.pl"; $page_title = "Bookmarks"; $maxnote = 400; $CURFOLDERFONT=""; $FOLDERFONT=""; $DFLTFONT=""; # ============================================================== global vars @user_fld; @user_lnk; @user_dat; $user = $defaultuser; $cur_fld; $cur_cat; $command; $fldtoedit; $fldcat; $fldref; $fldname; $cur_lnk; $lnkref; $lnkname; $lnkurl; $lnknote; $lnktoedit; @banners; $topbanner; $tmpuser; # ============================================================== main # parsing args @cmds = split(/&/, $ENV{'QUERY_STRING'}); foreach $cmd (@cmds) { ($name, $value) = split(/=/, $cmd); $value =~ tr/+/ /; $value =~ s/%0D%0A/
/g; $value =~ s/%0A%0D/
/g; $value =~ s/
/\n/g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $value =~ s/<.*?>//g; if ($name eq 'cmd') { $command = $value; } elsif ($name eq 'usr') { $user = $value; } elsif ($name eq 'fld') { $cur_fld = $value; $fldref = $cur_fld; $fldref =~ s/\+/%2B/g; $fldref =~ s/=/%3D/g; $fldref =~ s/#/%23/g; $fldref =~ tr/ /+/; $fldref =~ s/&/%26/g; $fldref =~ s/\"/%22/g; $fldname = $cur_fld; $fldname =~ s/"/"/g; } elsif ($name eq 'lnk') { $cur_lnk = $value; $lnkref = $cur_lnk; $lnkref =~ s/\+/%2B/g; $lnkref =~ s/=/%3D/g; $lnkref =~ tr/ /+/; $lnkref =~ s/&/%26/g; $lnkref =~ s/\"/%22/g; $lnkref =~ s/#/%23/g; $lnkname = $cur_lnk; $lnkname =~ s/"/"/g; } elsif ($name eq 'url') { $lnkurl = $value; } elsif ($name eq 'note') { $lnknote = substr($value, 0, $maxnote); } elsif ($name eq 'fldtoedit') { $fldtoedit = $value; } elsif ($name eq 'lnktoedit') { $lnktoedit = $value; } elsif ($name eq 'fldcat') { $fldcat = $value; } } &header; &loguser; &initfolders; &bookmarks; &footer; exit; # ============================================================== bookmarks sub bookmarks { print "\n"; print "
"; print ""; print "\n"; print "\n"; print "
User:$user"; print "
Access your bookmarks online--anytime, anywhere. Join now!\n"; print "
Members Log In

\n"; print $DFLTFONT; print "\n"; print "\n"; print "
"; print ""; print "\n"; print "\n"; print "
Folders"; print "
"; print ""; print "\n"; print "\n"; print "
Bookmarks - [$cur_fld]
"; print ""; print $FOLDERFONT; if ($alpha_sort) { @user_fld = sort {"\U$a" cmp "\U$b"} @user_fld; @user_lnk = sort {"\U$a" cmp "\U$b"} @user_lnk; } for ($i=$[; $i <= $#user_fld; $i++) { @fields=split('\|', $user_fld[$i]); if ($fields[0] eq $cur_fld) { print $CURFOLDERFONT; print @fields[0]; print ""; print $FOLDERFONT; } else { $ref = $fields[0]; $ref =~ s/\+/%2B/g; $ref =~ s/=/%3D/g; $ref =~ s/#/%23/g; $ref =~ tr/ /+/; $ref =~ s/&/%26/g; $ref =~ s/\"/%22/g; print "@fields[0]"; } print "
\n"; } print "
"; &smallads; print "
"; print $FOLDERFONT; for ($i=$[; $i <= $#user_lnk; $i++) { @fields=split('\|', $user_lnk[$i]); if ($fields[0] eq $cur_fld) { print "@fields[1]"; if (length($fields[3])) { print "\n
$fields[3]
\n"; } else { print "

\n"; } } } print "

"; print "
"; print "

\n"; print "

\n"; print "

URL of this page is http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}?fld=$fldref&usr=$user\n"; } # ============================================================== smallads sub smallads { } # ============================================================== verifyfolder sub verifyfolder { $tmp_fld; for ($j=$[; $j <= $#user_fld; $j++) { @fields=split('\|', $user_fld[$j]); if ($fields[0] eq $cur_fld) { return; } $tmp_fld = $fields[0]; } $cur_fld = $tmp_fld; } # ============================================================== initfolders # Sets cur_fld variable sub initfolders { if (! length($cur_fld)) { for ($i=$[; $i <= $#user_dat; $i++) { @fields=split('\|', $user_dat[$i]); $cur_fld = $fields[1]; $fldref = $cur_fld; $fldref =~ tr/ /+/; $fldref =~ s/&/%26/g; $fldref =~ s/\"/%22/g; $fldname = $cur_fld; $fldname =~ s/"/"/g; if ($fields[0] eq 'default_folder') { &verifyfolder; return; } } } else { for ($i=$[; $i <= $#user_dat; $i++) { @fields=split('\|', $user_dat[$i]); if ($fields[0] eq 'default_folder') { &verifyfolder; $user_dat[$i] = join('|', 'default_folder', $cur_fld); return; } } } } # ============================================================== loguser # Checks whether 'user' variable set, opens or creates user's # files, initializes @user_fld, @user_lnk, @user_dat sub loguser { if (! &loaduser) { &errexit; } for ($i=$[; $i <= $#user_dat; $i++) { @fields=split('\|', $user_dat[$i]); if ($fields[0] eq 'public') { if ($fields[1] eq 'on') { return; } } } $user=$defaultuser; if (! &loaduser) { &errexit; } } # ============================================================== loaduser sub loaduser { $file=join('.', $user, "fld"); $file=join('/', $bm_user_dir, $file); if (!open(FLD, "<$file")) { return 0; } $i=0; while ($line = ) { chop($line); $user_fld[$i] = $line; $i++; } close(FLD); $file=join('.', $user, "lnk"); $file=join('/', $bm_user_dir, $file); if (!open(LNK, "<$file")) { &errexit; } $i=0; while ($line = ) { chop($line); $user_lnk[$i] = $line; $i++; } close(LNK); $file=join('.', $user, "dat"); $file=join('/', $bm_user_dir, $file); if (!open(DAT, "<$file")) { &errexit; } $i=0; while ($line = ) { chop($line); $user_dat[$i] = $line; $i++; } close(DAT); return 1; } # ============================================================== errexit sub errexit { print "
Missing data. Probably you are trying to edit bookmark from already deleted folder. Please try to re-enter Bookmarks
\n"; &footer; exit; } # ============================================================== header sub header { if (length($header_file)) { if (open(HDR, "<$header_file")) { @lines = ; close(HDR); print @lines; return; } } print<\n $page_title\n EOF } # ============================================================== footer sub footer { if (length($footer_file)) { if (open(FTR, "<$footer_file")) { @lines = ; close(FTR); print "

 
"; print @lines; return; } } print "

"; print "

Bookmarks Engine (c) - 1999, Eastwright Corp.
"; print "Support: Bookmarks Support"; print "

\n"; } # ============================================================== setcurcat sub setcurcat { for ($i=$[; $i <= $#user_fld; $i++) { @fields=split('\|', $user_fld[$i]); if ($fields[0] eq $cur_fld) { $cur_cat = $fields[1]; } } } # ============================================================== loadbans sub loadbans { &setcurcat; $file = join('.', $cur_cat, 'txt'); $file = join('/', $bm_ads_dir, $file); if (!open(ADS, "<$file")) { &errexit; } @banners = ; close(ADS); } # ============================================================== topban sub topban { &loadbans; ($ip)=($ENV{"REMOTE_ADDR"}=~s/\.//g); srand($$+$ip); if ($#banners < $[) { return; } $topbanner = int rand($#banners + 1); print $banners[$topbanner]; } # ============================================================== btmban sub btmban { if ($#banners < $[) { return; } $topbanner++; if ($topbanner > $#banners) { $topbanner = 0; } print $banners[$topbanner]; }