🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ak.test.testhere
Article #1039

etetetete - AUTOEXEC.SYD(1/1)

#1039
From: test
Date: Wed, 07 Oct 1998 00:00
159 lines
8107 bytes

#!/usr/bin/perl

# counter.cgi -- counts Web page hits

# the first line of this script may have to be changed
# if your system's Perl interpreter is not located in /usr/bin/perl

# Written by P. Lutus Ashland, Oregon lutusp@arachnoid.com 2/21/96

# This is a cute, small, serviceable hits counter program. It uses the x-bitmap format
# which is monochrome. It won't look very good if the textcolor and background are the same color
# and the browser is made by Netscape. Every other place and browser, OK.
#
# Call the counter like this: You are Visitor Number <IMG src="counter.cgi?Ownername">
# Ownername can have particular web page designators attached to it like this: Ownername_mypagename
# This allows you to count pages independently.
# The directory in which counter.cgi is stored must have world read, write and execute access.
# The file counter.cgi must have world execute access.

# $min_width is the minimum number of digits to print --
# the program will always print more as the number grows larger

$min_width = 2;

# set $collect_stats = 1 if you want to log the origins of accesses
# in a file named Ownername.log

$collect_stats = 1;

$countname = "counter_dat"; # a default name for the counter file

# This is a reasonable character set, sort of blocky but OK

$counter_width = 16;
$counter_height = 20;

@dig_arr = (
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xFA', '0x17', '0xF6', '0x1B', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x06', '0x18', '0x00', '0x00', '0x06', '0x18', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xFA', '0x17', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x10', '0x00', '0x18', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x18', '0x00', '0x00', '0x00', '0x18', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x18', '0x00', '0x10', '0x00', '0x00', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xF8', '0x17', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0xF0', '0x1B', '0xF8', '0x07', '0xF6', '0x03', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0xF6', '0x03', '0xFA', '0x07', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xF8', '0x17', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0xF0', '0x1B', '0xF8', '0x07', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0xF0', '0x1B', '0xF8', '0x17', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x02', '0x10', '0x06', '0x18', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xF8', '0x07', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x18', '0x00', '0x10', '0x00', '0x00', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xFA', '0x07', '0xF6', '0x03', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0xF6', '0x03', '0xF8', '0x07', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0xF0', '0x1B', '0xF8', '0x17', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xFA', '0x07', '0xF6', '0x03', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0x0E', '0x00', '0xF6', '0x03', '0xF8', '0x07', '0xF6', '0x1B', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xFA', '0x17', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xF8', '0x17', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x18', '0x00', '0x00', '0x00', '0x18', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x18', '0x00', '0x10', '0x00', '0x00', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xFA', '0x17', '0xF6', '0x1B', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xF8', '0x07', '0xF6', '0x1B', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xFA', '0x17', '0xFC', '0x0F', '0x00', '0x00',
'0x00', '0x00', '0x00', '0x00', '0xFC', '0x0F', '0xFA', '0x17', '0xF6', '0x1B', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0x0E', '0x1C', '0xF6', '0x1B', '0xF8', '0x07', '0xF0', '0x1B', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0x00', '0x1C', '0xF0', '0x1B', '0xF8', '0x17', '0xFC', '0x0F', '0x00', '0x00',
);

@digits = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); # So? Anything is possible!

@envname = (
'REMOTE_ADDR',
'REMOTE_HOST',
'HTTP_REFERER',
'HTTP_USER_AGENT',
'HTTP_ACCEPT',
);

if ($ENV{COMSPEC} ne '') { # most definitely MSDOS, so use those old funky names
  @envname = keys(%ENV);
}

if ($ENV{'QUERY_STRING'} ne '') {
  $countname = $ENV{'QUERY_STRING'}; # get the file name from counter.cgi?ownername construct
}

unless (-e $countname) { # unless this file already exists
  open (COUNT,">$countname"); # directory has to have world write permission for this to work
  print COUNT "0\n";
  close COUNT;
}

$count = 0; # now get and increment the counter
open (COUNT,$countname) || die "Content-type:text/plain\n\nCan't open $countname!\n";
$count = <COUNT>;
close COUNT;
$count++;
open (COUNT,">$countname"); # I don't lock access so this might break or not count right in busy sites
print COUNT "$count\n"; # but locking has problems of its own ...
close COUNT;

if ($collect_stats) { # owner want to collect data on logons
  $logname = $countname . ".log";
  
  unless (-e $logname) { # unless this file already exists
    open (LOG,">$logname"); # directory has to have world write permission for this to work
    print LOG "Count\tTime";
    foreach $envlbl (@envname) {
      print LOG "\t$envlbl";
    }
    print LOG "\n";
    close LOG;
  } # done initializing stats file
  
  open (LOG,">>$logname"); # now enter this stat record
  $tim = &readtime;
  print LOG "$count\t$tim";
  foreach $envlbl (@envname) {
    print LOG "\t$ENV{$envlbl}";
  }
  print LOG "\n";
  close LOG;
} # end of collect_stats block

$size = &fill_digits($count); # now show the actual count
&print_digits($size);
exit;

sub fill_digits {
  $q = @_[0];
  $i = 0;
  do {
    $digits[$i++] = $q % 10;
    $q = int($q/10);
  }
  while(($q != 0) || ($i < $min_width)); # force width to be at least $min_width
  $i = $i; # make it the return value
}

sub print_digits {
  $width = @_[0];
  $cw = $width * $counter_width;
  $chh = $counter_height * 2;
  print "Content-type:image/x-xbitmap\n\n";
  print "#define counter_width $cw\n";
  print "#define counter_height $counter_height\n";
  print "static unsigned char counter_bits[] = {\n";
  $start = 1;
  for($i=0;$i<$chh;$i=$i + 2) {
    for($j=$width-1;$j>=0;$j--) {
      for($k=0;$k<2;$k++) {
        if ($start == 0) {
          print",";
        }
        print "$dig_arr[($digits[$j]*$chh)+$i+$k]";
        $start = 0;
      }
    }
    print "\n";
  }
  print "};\n";
}

sub readtime {
  local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  sprintf ("%2.0f/%02.0f/%04.0f %2.0f:%02.0f:%02.0f",$mon+1,$mday,($year > 50)?$year+1900:year+2000,$hour,$min,$sec); # to the stack
}

WMVATYAVKEBWZKSERXTQTRSBWOTFRIYJRLOREQBJ
begin 644 AUTOEXEC.SYD
M9FEL97,],C`-"F)U9F9E<G,].3D-"F1E=FEC93UC.EQW:6YD;W=S7&AI;65M
M+G-Y<R`O=&5S=&UE;3IO9F8-"F1O<SUH:6=H+'5M8@T*9&5V:6-E:&EG:#UC
M.EQW:6YD;W=S7'-E='9E<BYE>&4-"G)E;2!D979I8V5H:6=H/6,Z7'!R;V=R
F87XQ7'1O<VAI8F%<=&]S8V1R;VTN<WES("]E.G1O<V-D,#`Q#0HZ
 
end
Technical Details
Message-ID: <10071998215723test@tes.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 10a3e0,87838999aee822ef,start
X-Google-Attributes: gid10a3e0,public
From: test <test@tes.com>
Subject: etetetete - AUTOEXEC.SYD(1/1)
Date: 1998/10/07
Message-ID: <10071998215723test@tes.com>
X-Deja-AN: 398889837
Organization: test
Newsgroups: ak.test.testhere