#!/usr/bin/perl
# Erzeugt einen grafischen Counter auf der Webseite
# (Ich weiss, den braucht eigentlich niemand - statt eines
# 'echten' Counters kann man ja auch Zufallszahlen generieren)
# Auf der Webseite muss es eine Referenz auf den Counter geben,
# zum Beispiel:
# ...
# Sie sind der Besucher Nummer: <IMG SRC="/cgi-bin/count.pl">
# ...

use strict;
use GD;

# Konfiguration: Die Counter-Datei
my $COUNTER = "/opt/www/etc/count";

# --------------------------------------------------------------

my $num = 0;
if (open IN_FILE, "<$COUNTER") 
  {
  $num = <IN_FILE>;
  chomp($num);
  close(IN_FILE);
  }

print "Content-type: image/png\n\n";

my $font = gdGiantFont;
my $char_x = $font->width;
my $char_y = $font->height;
my $picture_x = (1 + $char_x) * length($num) + 1;
my $picture_y = (1 + $char_y);

my $image = new GD::Image($picture_x, $picture_y);
my $background = $image->colorAllocate(0,0,0);
my $red = $image->colorAllocate(255,0,0);

$image->transparent($background);
$image->string($font, 0, 0, $num ,$red);
print $image->png;

$num++;
if (open OUT_FILE, ">$COUNTER") 
  {
  flock(IN_File, 1);  # Zugriff (schreiben) sperren
  print OUT_FILE $num;
  flock(IN_File, 8);  # Zugriff (schreiben) freigeben
  }
close OUT_FILE;
