#!/bin/perl # to use, embed # # in your html file if ($#ARGV >= 0) { $counterfile = @ARGV[0]; if ($#ARGV > 0) { if (@ARGV[1] eq "i") { $inv = 1; } } } else { die "need filename as argument"; } #require('sys/file.ph') || die "can\'t do sys/file.ph: $@"; require('ctime.pl') || die "can\'t do ctime.pl: $@"; # be suspicious, very suspicious $counterfile =~ tr/[a-z,A-Z,0-9,-,_,\/]//cd; $counterfile = "/n/opus/u/rasia/luca/personal/" . $counterfile; # bitmap for each digit @digits = (0xff,0xff,0xff,0xc3,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x99,0xc3,0xff,0xff,0xff, 0xff,0xff,0xff,0xcf,0xc7,0xcf,0xcf,0xcf, 0xcf,0xcf,0xcf,0xcf,0xcf,0xff,0xff,0xff, 0xff,0xff,0xff,0xc3,0x99,0x9f,0x9f,0xcf, 0xe7,0xf3,0xf9,0xf9,0x81,0xff,0xff,0xff, 0xff,0xff,0xff,0xc3,0x99,0x9f,0x9f,0xc7, 0x9f,0x9f,0x9f,0x99,0xc3,0xff,0xff,0xff, 0xff,0xff,0xff,0xcf,0xcf,0xc7,0xc7,0xcb, 0xcb,0xcd,0x81,0xcf,0x87,0xff,0xff,0xff, 0xff,0xff,0xff,0x81,0xf9,0xf9,0xf9,0xc1, 0x9f,0x9f,0x9f,0x99,0xc3,0xff,0xff,0xff, 0xff,0xff,0xff,0xc7,0xf3,0xf9,0xf9,0xc1, 0x99,0x99,0x99,0x99,0xc3,0xff,0xff,0xff, 0xff,0xff,0xff,0x81,0x99,0x9f,0x9f,0xcf, 0xcf,0xe7,0xe7,0xf3,0xf3,0xff,0xff,0xff, 0xff,0xff,0xff,0xc3,0x99,0x99,0x99,0xc3, 0x99,0x99,0x99,0x99,0xc3,0xff,0xff,0xff, 0xff,0xff,0xff,0xc3,0x99,0x99,0x99,0x99, 0x83,0x9f,0x9f,0xcf,0xe3,0xff,0xff,0xff ); @invdigits = (0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x38,0x30,0x30,0x30, 0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x30, 0x18,0x0c,0x06,0x06,0x7e,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x38, 0x60,0x60,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x38,0x38,0x34, 0x34,0x32,0x7e,0x30,0x78,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x06,0x06,0x06,0x3e, 0x60,0x60,0x60,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x38,0x0c,0x06,0x06,0x3e, 0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x7e,0x66,0x60,0x60,0x30, 0x30,0x18,0x18,0x0c,0x0c,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x3c, 0x66,0x66,0x66,0x66,0x3c,0x00,0x00,0x00, 0x00,0x00,0x00,0x3c,0x66,0x66,0x66,0x66, 0x7c,0x60,0x60,0x30,0x1c,0x00,0x00,0x00 ); $hex = "0123456789abcdef"; # Read and increment the counter file while (-f "${counterfile}.lock") { sleep 1 } open(LOCK,">${counterfile}.lock"); if (open(COUNTERFILE,"<$counterfile")) { $text = ; close(COUNTERFILE); } else { $text = 0; } $text++; $len = length($text) > 6 ? length($text) : 6; open(COUNTERFILE,">$counterfile") || die "can\'t open $counterfile: $!\n"; printf COUNTERFILE "%0${len}u\n",$text; $text = sprintf("%0${len}u",$text); #flock(COUNTERFILE,&LOCK_UN); close(COUNTERFILE); unlink("${counterfile}.lock"); # Generate an X11 bitmap on STDOUT printf STDOUT "Cache-control: no-cache\n"; printf STDOUT "Content-type: image/x-bitmap\n\n"; printf STDOUT "#define count_width %d\n#define count_height 16\n", $len*8; printf STDOUT "static char count_bits[] = {\n"; for ($y=0; $y < 16; $y++) { for ($x=0; $x < $len; $x++) { $d = substr($text,$x,1) - '0'; print STDOUT '0x'; if ($inv) { # $inv = 1 for inverted text printf STDOUT "%1x",($invdigits[($d * 16) + $y] >> 4) & 0xf; printf STDOUT "%1x",$invdigits[($d * 16) + $y] & 0xf; } else { printf STDOUT "%1x",($digits[($d * 16) + $y] >> 4) & 0xf; printf STDOUT "%1x",$digits[($d * 16) + $y] & 0xf; } if ($x < $len-1) { print STDOUT ','; } } if ($y==15) { print STDOUT '};'; } else { print STDOUT ','; } print STDOUT "\n"; } open(HOSTSFILE,">>${counterfile}.hosts") || die "can\'t open ${counterfile}.hosts: $!\n"; #printf HOSTSFILE "%s@%s\n",$ENV{'REMOTE_USER'},$ENV{'REMOTE_HOST'}; #printf HOSTSFILE "%s@%s - - ",$ENV{'REMOTE_USER'},$ENV{'REMOTE_HOST'}; printf HOSTSFILE "%s - - ", $ENV{'REMOTE_HOST'}; $Date = &ctime(time); printf HOSTSFILE "%s",$Date; #($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); #printf HOSTSFILE "[%02d/%s/19%02d:%02d:%02d:%02d %s]\n",$mday,$MoY[$mon],$year,$hour,$min,$sec, $TZ; close HOSTSFILE; open(HOSTSFILE,">>${counterfile}.fing") || die "can\'t open ${counterfile}.fing: $!\n"; printf HOSTSFILE "%s - - ", $ENV{'REMOTE_HOST'}; $Date = &ctime(time); chop $Date; printf HOSTSFILE "%s",$Date; $limit=5; $more =0; $host=$ENV{'REMOTE_HOST'}; open(RESULT,"finger \@$host |"); while($_=) { if (!(/]/ || /Idle/ || /week/ || /days/)) { print HOSTSFILE " - -" unless $more--; @foo = split; printf HOSTSFILE " $foo[0]" unless $saw{$foo[0]}++; break unless --$limit; } } print HOSTSFILE "\n"; close HOSTSFILE;