#!/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/&GROUP=<%GROUP%>";
$OUTPUT =~ s/$T//i;
$OpenB = "/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";
}