#!/usr/bin/perl # The preceding line must contain the path to the Perl installation on your web server. # # For further details see the installation manual. # ######################################################################################### # Cont·Ray - Professional Website Engine [wwww.contray.de] # # Cont·Ray R3 Enterprise # # Last Modified 28/07/2003 # # Copyright © 2001-2003 EXERGY websolutions [www.exergy.de] # # All rights reserved. # # # # Please read these terms before using the software! If you bought Cont·Ray with a # # different license arrangement the guarantee agreement stated there might be the # # valid one. # # # # An extended license arrangement can be found on the Cont·Ray web site and is added to # # the software. # # # # Users who install and use Cont·Ray without a valid license are subject to German and # # international law and will be prosecuted. Venue is Hamburg, Germany. # # # # You agree to these terms by buying, installing, downloading or receiving the software # # in a different way, by viewing, copying, changing or using the software, the source # # code or part of the source code (including these terms). If you do not agree to these # # terms you must delete the software irrevocably from your computer and you must delete # # each copy of the software you have. # # # # The owners of the Copyright and/or the vendors of the software cannot be held liable # # for the error-free working of the software. Cont·Ray is a script software with an # # open source code. An error-free working cannot be guaranteed due to the fact that # # there is no automatic installation routine. # # If the licensee wishes the vendor will install the software for a charge. # # If the software is not installed by the vendor it is sold without any warranty. # # Since the vendor cannot influence installation and configuration the licensee assumes # # all risks of running the software. As with all software of this kind running the # # software can cause a complete breakdown of the systems that run the software and a # # complete breakdown of the systems that are in the same network. It is also possible # # that all data on the server is lost. By installing the software the licensee assumes # # this risk. # # NEITHER THE PRODUCER OF THE SOFTWARE NOR THE VENDOR IS LIABLE FOR THESE DAMAGES. # # # # # ######################################################################################### # In der ersten Zeile dieses Skriptes (#!/usr/bin/perl) muss der Pfad zur Perl-Version # # auf Ihrem WebServer angegeben sein. Weitere Details ersehen Sie in der # # Installationsanleitung. # ######################################################################################### # # # Lesen Sie diese Bedingungen vor dem Einsatz der Software! Sollten Ihnen eine # # abweichende Lizenzvereinbarung beim Kauf von Cont·Ray zugrunde gelegen haben, # # haben ggf. die dortigen Garantiebestimmungen Gültigkeit. # # # # Eine erweiterte Lizenzbestimmung steht Ihnen auf der Cont·Ray Website zur Verfügung # # und ist der Software beigefügt. # # # # Unrechtmäßige Benutzer von Cont·Ray, die Cont·Ray ohne den Erwerb einer gültigen # # Lizenz benutzen, unterliegen dem deutschen und internationalen Recht und werden # # aufgrund von Lizenzbetrug von uns verfolgt und angeklagt. Der Gerichtsstand # # ist Hamburg, Deutschland. # # # # Mit dem Kauf, der Installation, dem Download oder anderer Art und Weise des # # in Besitzbringens dieser Software und dem betrachten, kopieren, verändern oder # # sonstiger Behandlung dieser Software, dem Sourcecode oder Teilen des # # Sourcecodes (inklusive diesen Bedingungen) erklären Sie sich mit diesen # # Bedingungen einverstanden. Sofern Sie damit nicht einverstanden sind, löschen # # Sie die Software unwiderruflich von Ihrem Computer und vernichten Sie ggf. # # vorhandene Kopien der Software. # # # # Die Copyright-Inhaber und/oder die Verkäufer dieser Software übernehmen unter # # keinen Umständen eine Haftung für die fehlerfreie Funktion dieser Software. # # Cont·Ray ist eine Script-Software mit voller Sourcecode-Verfügbarkeit. Eine # # korrekte Funktionsweise kann aufgrund der nicht vorhanden automatischen # # Installationsmöglichkeit durch eine Setuproutine nicht zugesichert werden. # # Auf Wunsch installiert der Verkäufer gegen Berechnung die Software. # # Sofern die Software von anderen, als von den Verkäufern selbst installiert # # wird, gilt die Software als Verkauft unter Ausschluss jeglicher Gewährleistung. # # Da der Verkäufer keinerlei Einfluss auf die korrekte Intallation und # # Konfiguration der Software nehmen kann, trägt der Käufer alle Risiken des # # Betriebes der Software. Wie bei anderer Software dieser Art kann der Einsatz # # der Software einen vollständigen Ausfall der Systeme, auf denen die Software # # betrieben wird und der im Netzwerk verbundenen System zur Folge haben. Ebenso # # ist ein vollständiger Verlust aller Daten in der betriebenen Serverumgebung # # möglich. Dieses Risiko gehen Sie mit der Installation dieser Software ein. # # EINE HAFTUNG HIERFÜR IST AUSDRÜCKLICH AUSGESCHLOSSEN. # ######################################################################################### # Geben Sie denn vollen Pfad zur Datei variables.cfg an, z.B.: # require("/home/yourdomain/cgi-bin/contray/variables.cfg"); require("variables.cfg"); ######################################################################################### # NEHMEN SIE KEINE ÄNDERUNGEN UNTERHALB DIESER POSITION VOR! # ======================================================================================= # DO NOT MODIFY BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING. ######################################################################################### require($contraypath."language.".$languageFile); require($contraypath."admin/session-lib.pl"); use CGI qw(:standard); # variables $status = 0; $VARIABLE = ""; $VAR = ""; # Get parameters $ID = param("ID"); $GROUP = param("GROUP"); $temppath = param("DATA"); # Set path to $temppath (for preview mode) if ($temppath ne "") { $livepath = $temppath; } if(($ID eq "") or ($GROUP eq "")) { $ID = "000"; $GROUP = "001"; } # read data from index.dat and id.group.dat &read_data(); # show header &show_header($TITLE, $MENU); &show_template(); &show_footer(); ExitProc; ############################################################################ ### Name: PrintLoop ############################################################################ sub PrintLoop { if($SORT eq "TRUE") { @SORTIERT = sort @ZEILE; } else { @temparray = (); foreach $NAME (@ZEILE) { ($P1,$P2,$P3,$P4,$P5,$P6,$P7,$P8) = split(/:/, $NAME); push(@temparray, "$P8:$P1:$P2:$P3:$P4:$P5:$P6:$P7"); } @temparray2 = sort numericbyte @temparray; @ZEILE = (); foreach $NAME (@temparray2) { ($P1,$P2,$P3,$P4,$P5,$P6,$P7,$P8) = split(/:/, $NAME); push(@ZEILE, "$P2:$P3:$P4:$P5:$P6:$P7:$P8"); } } for($c = 0 ; $c < @ZEILE ; $c ++) { $OUTPUT = $VARLOOP; if($SORT eq "TRUE") { ($mTITLE,$mID,$mGROUP,$mTYPE,$mTEMPLATE,$mSORT,$mINFO) = split(/:/,@SORTIERT[$c]); } else { ($mTITLE,$mID,$mGROUP,$mTYPE,$mTEMPLATE,$mSORT,$mINFO) = split(/:/,@ZEILE[$c]); } $mINFO =~ s/³/:/g; $mTITLE =~ s/³/:/g; if (($mID eq $ID) and ($mGROUP eq $GROUP)) { $OUTPUT =~ s//g; $OUTPUT =~ s/<%TITLE%>/$mTITLE/g; $OUTPUT =~ s/<%INFO%>/$mINFO/g; $OUTPUT =~ s/<%COUNTER%>/$c/g; $OUTPUT =~ s/<%ID%>/$mID/g; $OUTPUT =~ s/<%GROUP%>/$mGROUP/g; $OUTPUT =~ s/contray.cgi\?/contray.cgi\?DATA=$temppath&/g; $OUTPUT =~ s/sitemap.cgi/sitemap.cgi\?DATA=$temppath/g; if (($xTYPE eq "D") and ($ID eq "000")) { $OUTPUT = ""; } elsif ($mTYPE eq "H") { $OUTPUT = ""; } else { print "$OUTPUT \n"; } } } ############################################################################ ### Name: numericbyte ############################################################################ sub numericbyte { ($ID1,$ID2,$ID3,$ID4,$ID5,$ID6,$ID7,$ID8) = split(/:/, $a); ($IX1,$IX2,$IX3,$IX4,$IX5,$IX6,$IX7,$IX8) = split(/:/, $b); $ID1 <=> $IX1; } ############################################################################ ### Name: PrintMainMenu ############################################################################ sub PrintMainMenu { ($sTITLE,$sID,$sGROUP,$sTYPE,$sTEMPLATE,$sSORT,$sINFO,$sCOUNT) = split(/:/,@MainMenu[0]); if ($sCOUNT ne "") { @temparray = (); foreach $NAME (@MainMenu) { ($P1,$P2,$P3,$P4,$P5,$P6,$P7,$P8) = split(/:/, $NAME); push(@temparray, "$P8:$P1:$P2:$P3:$P4:$P5:$P6:$P7"); } @temparray2 = sort numericbyte @temparray; @MainMenu = (); foreach $NAME (@temparray2) { ($P1,$P2,$P3,$P4,$P5,$P6,$P7,$P8) = split(/:/, $NAME); push(@MainMenu, "$P2:$P3:$P4:$P5:$P6:$P7:$P8"); } } for ($c = 0 ; $c < @MainMenu; $c ++) { $temp = $_; chomp($temp); ($sTITLE,$sID,$sGROUP,$sTYPE,$sTEMPLATE,$sSORT,$sINFO,$sCOUNT) = split(/:/,@MainMenu[$c]); if (($sTYPE eq "L") and (substr($sINFO,0,5) eq "/$sTITLE/g; $temp =~ s/<%ID%>/$sID/g; $temp =~ s/<%GROUP%>/$sGROUP/g; if($sTYPE eq "U") { $T1 = "ID=$sID&GROUP=$sGROUP"; $T2 = "ID=$sID&GROUP=$sGROUP"; $OpenB = ") { ($FID,$FGROUP,$FTYPE,$FTITLE,$FTEMPLATE,$FSORT,$FINFO,$FCOUNT) = split(/:/,$_); chomp($FTITLE,$FTEMPLATE); $FTEMPLATE =~ s/ //g; $FTITLE =~ s/³/:/g; for($T = 0; $T <= length($ID) ; $T +=3) { $A = substr $ID,0,$T ; $B = substr $ID,$T,3 ; if (($FID eq $A) and ($FGROUP eq $B)) { if($FTYPE eq "D") { $MENU.=" / $FTITLE"; } elsif($FTYPE eq "U") { $MENU.=" / $FTITLE"; } elsif(($T < length($ID)) and (substr($FINFO,0,5) eq "$FTITLE"; } elsif(($FTYPE eq "L") and (substr($FINFO,0,5) ne "$FTITLE"; } } } if (($ID eq $FID) and ($GROUP eq $FGROUP)) { $TITLE = $FTITLE; $DATAFILE = "$ID$GROUP.dat"; $TEMPLATE = $FTEMPLATE; $MENU.=" / $FTITLE"; # only write to log-File if $accesslog-Variable is set and $temppath-Variable is # NOT set, to be sure that we are on the live-system if (($accesslog ne "") and ($temppath eq "")) { if (open(LOG,">> $accesslog")) { $datum = &get_date(); print LOG $ENV{'REMOTE_ADDR'}."~".$ID.":".$GROUP."~".$TITLE."~".$datum."\n"; close(LOG); } } } if(($FID eq "000") and ($FTYPE ne "H")) { push (@MainMenu,"$FTITLE:$FID:$FGROUP:$FTYPE:$FTEMPLATE:$FSORT:$FINFO:$FCOUNT"); } if(($FID eq "000") and ($FGROUP eq "001")) { $MENU = "$FTITLE"; } if(($ID eq "000") and ($GROUP eq "001")) { $MENU = ""; } } close(FILE); reset @DATABASE; $DATABASE{'CONTENT'} = ""; $DATABASE{'LASTUPDATE'} = "---"; $DATABASE{'CONVERT'} = "FALSE"; open(FILE, $livepath."$DATAFILE"); while() { $_ =~ s/\n//g; ($KEY,$VALUE) = split(/=/,$_); chomp($VALUE); $VALUE =~ s/<%root%>/$webwww/g; $VALUE =~ s/<%gfxurl%>/$webgfx/g; $VALUE =~ s/<%contrayurl%>/$webcgi/g; $VALUE =~ s/<%media%>/$webmedia/g; $VALUE =~ s/contray.cgi\?/contray.cgi\?DATA=$temppath&/g; $VALUE =~ s/\[spc\]/ /g; $VALUE =~ s/InternerLink:/contray.cgi\?DATA=$temppath&/g; $KEY =~ s/ //g; $KEY = uc($KEY); $DATABASE{$KEY} = $VALUE; } close(FILE); $TEMPLATE =~ s/_input//g; if (open (FILE, $livepath."index.dat")) { while() { chomp($_); ($fID,$fGROUP,$fTYPE,$fTITLE,$fTEMPLATE,$fSORT,$fINFO,$fNUM) = split(/:/,$_); if (($fID eq $ID) and ($fGROUP eq $GROUP)) { $xTYPE = $fTYPE; } } close(FILE); } if (open (FILE, $livepath."index.dat")) { while() { chomp($_); ($fID,$fGROUP,$fTYPE,$fTITLE,$fTEMPLATE,$fSORT,$fINFO,$fNUM) = split(/:/,$_); $xID = "$ID$GROUP"; if ($xTYPE eq "L") { if ($fID eq $xID) { push (@ZEILE, "$fTITLE:$fID:$fGROUP:$fTYPE:$fTEMPLATE:$fSORT:$fINFO:$fNUM"); } } elsif ($xTYPE eq "D") { if ($fID eq $ID) { push (@ZEILE, "$fTITLE:$fID:$fGROUP:$fTYPE:$fTEMPLATE:$fSORT:$fINFO:$fNUM"); } } } close(FILE); } if (length($ID) > 3) { $TopID = substr $ID,3,3; } else { $TopID = $GROUP; } } ############################################################################ ### Name: show_template ############################################################################ sub show_template { open(FILE, $templatepath."$TEMPLATE")|| &cgi_error; $IFSTRING = ""; $IF = "FALSE"; $CopyCheck = "FALSE"; $VARLOOP = ""; while() { if($_ =~ /<%BEGIN_LEVEL_NAV%>/) { $_ =~ s/<%BEGIN_LEVEL_NAV%>//g; $LOOP = "BEGIN"; } if($_ =~ /<%END_LEVEL_NAV%>/) { $LOOP = "END"; $_ =~ s/<%END_LEVEL_NAV%>//g; &PrintLoop; } if($LOOP eq "BEGIN") { $_ =~ s/<%root%>/$webwww/g; $_ =~ s/<%gfxurl%>/$webgfx/g; $_ =~ s/<%contrayurl%>/$webcgi/g; $VARLOOP.="$_"; } else { if($_ =~ /<%IF/) { $IF = "BEGIN"; ($IFVAR) = $_ =~ /.*<%(.*)%>/; $_ =~ s/<%$IFVAR%>//g; ($M,$IFVAR) = split(/ /,$IFVAR); $IFVAR = uc($IFVAR); } if($_ =~ /<%ENDIF%>/) { $IF = "END"; $_ =~ s/<%ENDIF%>//g; $IFSTRING.="$_"; if($DATABASE{$IFVAR} ne "") { $_ = $IFSTRING; } else { $_ = ""; } $IFSTRING = ""; } if($_ =~ /<%MAINMENU%>/) { &PrintMainMenu; } if($_ =~ /<%COPYRIGHT%>/) { $Copyright = $LangCopyright; # The following three lines can be removed, if you aquired our # "Permission to remove the Copyright notices". $Copyright.= "
\n"; if ($languageFile eq "de") { $Copyright.= "["; } else { $Copyright.= "["; } $Copyright.= "Powered by ContRay R3 - Professional Website Engine]\n"; if($temppath ne "") { $Copyright.= "

- preview mode - \n"; } $_ =~ s/<%COPYRIGHT%>/$Copyright/g; } if($IF eq "BEGIN") { if($_ =~ /<%/) { while ($_ =~ /.*<%(.*)%>/) { $_ =~ s/<%ID%>/$ID/g; $_ =~ s/<%TOPID%>/$TopID/g; $_ =~ s/<%GROUP%>/$GROUP/g; $_ =~ s/<%root%>/$webwww/g; $_ =~ s/<%contrayurl%>/$webcgi/g; $_ =~ s/<%NAVIGATION%>/$MENU/g; $_ =~ s/<%DATAPATH%>/$temppath/g; $_ =~ s/<%gfxurl%>/$webgfx/g; $_ =~ s/<%media%>/$webmedia/g; ($VARIABLE) = $_ =~ /.*<%(.*)%>/; $VAR = uc($VARIABLE); $_ =~ s/<%$VAR%>/$DATABASE{$VAR}/i; } } $IFSTRING.="$_"; $_ = ""; } if($_ =~ /<%/) { while ($_ =~ /.*<%(.*)%>/) { $_ =~ s/<%ID%>/$ID/g; $_ =~ s/<%TOPID%>/$TopID/g; $_ =~ s/<%GROUP%>/$GROUP/g; $_ =~ s/<%root%>/$webwww/g; $_ =~ s/<%contrayurl%>/$webcgi/g; $_ =~ s/<%NAVIGATION%>/$MENU/g; $_ =~ s/<%DATAPATH%>/$temppath/g; $_ =~ s/<%gfxurl%>/$webgfx/g; $_ =~ s/<%media%>/$webmedia/g; ($VARIABLE) = $_ =~ /.*<%(.*)%>/; $VAR = uc($VARIABLE); $_ =~ s/<%$VARIABLE%>/$DATABASE{$VAR}/i; } } if($VAR =~ /BILDPOS/) { if($DATABASE{$VAR} eq "NOPIC") { $_ =~ s/IMG/NOPICTURE/g; } } if($VAR =~ /IMAGE/) { if($DATABASE{$VAR} eq "") { $_ =~ s/IMG/NOPICTURE/g; } } if ($DATABASE{CONVERT} eq "FALSE") { $_ =~ s/~CR~/
/g; } else { $_ =~ s/~CR~/\n/g; } $_ =~ s/~EQ~/=/g; print $_; } } close(FILE); } ############################################################################ ### Name: show_header ############################################################################ sub show_header { $l_TITLE = $_[0]; $l_MENU = $_[1]; print header(); if (open(FILE, $templatepath."header.html")) { while() { if($_ =~ /<\/title>/i) { $_ =~ s/<\/title>/<\/title>\n /ig; } $_ =~ s/<%TITLE%>/$l_TITLE/g; $_ =~ s/<%NAVIGATION%>/$l_MENU/g; $_ =~ s/<%root%>/$webwww/g; $_ =~ s/<%gfxurl%>/$webgfx/g; $_ =~ s/<%contrayurl%>/$webcgi/g; $_ =~ s/<%DATAPATH%>/$temppath/g; $_ =~ s/<%TOPID%>/$TopID/g; if($_ =~ /<%MAINMENU%>/) { &PrintMainMenu; } else { $_ =~ s/<%ID%>/$ID/g; $_ =~ s/<%GROUP%>/$GROUP/g; print "$_"; } } close(FILE); } } ############################################################################ ### Name: show_footer ############################################################################ sub show_footer { if (open(FILE, $templatepath."footer.html")) { while() { $_ =~ s/<%root%>/$webwww/g; $_ =~ s/<%gfxurl%>/$webgfx/g; $_ =~ s/<%contrayurl%>/$webcgi/g; if($_ =~ /<%COPYRIGHT%>/) { $Copyright = $LangCopyright; # The following three lines can be removed, if you aquired our # "Permission to remove the Copyright notices". $Copyright.= "
\n"; if ($languageFile eq "de") { $Copyright.= "["; } else { $Copyright.= "["; } $Copyright.= "Powered by ContRay R3 - Professional Website Engine]\n"; if($temppath ne "") { $Copyright.= "

- preview mode - \n"; } $_ =~ s/<%COPYRIGHT%>/$Copyright/g; } $_ =~ s/<%LASTUPDATE%>/$DATABASE{'LASTUPDATE'}/i; print "$_"; } close(FILE); } } ############################################################################ ### Name: cgi_error ############################################################################ sub cgi_error { print "



\n"; print "No Template "; print "[".$templatepath.$TEMPLATE."]"; print " for Title: "; print "$TITLE\n"; print "
\n"; } ############################################################################## # Name : get_date ############################################################################## sub get_date { $datum = localtime(); $datum =~ s/\s\s/ /g; ($var1, $monatsname, $tag, $var2, $jahr) = split (/ /, $datum); if ($monatsname eq "Jan") { $mon1 = "01"; } elsif ($monatsname eq "Feb") { $mon1 = "02"; } elsif ($monatsname eq "Mar") { $mon1 = "03"; } elsif ($monatsname eq "Apr") { $mon1 = "04"; } elsif ($monatsname eq "May") { $mon1 = "05"; } elsif ($monatsname eq "Jun") { $mon1 = "06"; } elsif ($monatsname eq "Jul") { $mon1 = "07"; } elsif ($monatsname eq "Aug") { $mon1 = "08"; } elsif ($monatsname eq "Sep") { $mon1 = "09"; } elsif ($monatsname eq "Oct") { $mon1 = "10"; } elsif ($monatsname eq "Nov") { $mon1 = "11"; } elsif ($monatsname eq "Dec") { $mon1 = "12"; } ($hour,$minute, undef) = split (/:/, $var2); if (length($tag) <= 1) { $tag = "0".$tag; } $mytime = "$hour$minute"; return "$jahr$mon1$tag$mytime"; }