AWS-Lambda
view release on metacpan or search on metacpan
examples/cgi/WwwCounter/wwwcount.cgi view on Meta::CPAN
#!/usr/bin/env perl
use strict;
#==================================================================
# åç§°ï¼ WwwCount 4.0
# ä½è
ï¼ æç«ã
# ææ°çå
¥æå
ï¼ https://www.tohoho-web.com/wwwsoft.htm
# åãæ±ãï¼ ããªã¼ã½ãããå©ç¨/æ¹é /åé
å¸å¯è½ã確èªã¡ã¼ã«ä¸è¦ã
# è使¨©ï¼Copyright (C) 1996-2021 æç«ã
#==================================================================
#==================================================================
# 使ãããï¼
#==================================================================
# (æ¸å¼1) wwwcount.cgi?test
# CGIã使ç¨ã§ããããã¹ããè¡ãã
#
# (æ¸å¼2) wwwcount.cgi?text
# ã«ã¦ã³ãã¢ãããè¡ããã«ã¦ã³ã¿ãããã¹ãã§è¡¨ç¤ºããã
#
# (æ¸å¼3) wwwcount.cgi?gif
# ã«ã¦ã³ãã¢ãããè¡ããã«ã¦ã³ã¿ãGIFã§è¡¨ç¤ºããã
#
# (æ¸å¼4) wwwcount.cgi?hide+xxx.gif
# ã«ã¦ã³ãã¢ãããè¡ããxxx.gifã表示ããã
#
# (ãªãã·ã§ã³) wwwcount.cgi?(ç¥)+name+counter2
# è¤æ°ã«ã¦ã³ã¿ã¼ãè¨ç½®ããå ´åã«ã«ã¦ã³ã¿ã¼åãæå®ããã
#
# (ãªãã·ã§ã³) wwwcount.cgi?(ç¥)+ref+xxxxxx
# ãªã³ã¯å
æ
å ±ãã«ã¦ã³ã¿ã¼ã«ä¼ãã
#==================================================================
# ã«ã¹ã¿ãã¤ãºï¼
#==================================================================
# â
ãã®ãã¡ã¤ã«ã® 1è¡ç®ã®ã#!/usr/local/bin/perlãã perl ã®ãã¹
# åã«ãããã¦é©åã«æ¸ãæãã¦ãã ããããã¹åãåããªãå ´åã¯ã
# ãããã¤ãããµã¼ãã¼ç®¡çè
ã«åãåããã¦ãã ããã#! ã®åã«ã¯
# 空è¡ãã¹ãã¼ã¹æåãå
¥ããªãããã«ãã¦ãã ãããï¼å¿
é ï¼
# â
Windows NT ã§ IIS ã使ç¨ããå ´åã¯ãwwwcount.cgi ãã¤ã³ã¹ãã¼
# ã«ããã¦ãããã©ã«ãåã 'C:/HomePage/cgi-bin' ãªã©ã®ããã«æ
# å®ãã¦ãã ãããï¼å¿
é ï¼
my $g_chdir = '';
# â
SSIã®ããã¹ãã¢ã¼ãã§ä½¿ç¨ããå ´åã¯ã$g_mode = "text"; ã¨ãã¦ã
# ã ãããï¼å¿
é ï¼
my $g_mode = "";
# â
è¡¨ç¤ºæ¡æ°ãä¾ãã°5æ¡ã«æå®ããå ´åã¯ã$g_figure = 5;ãã®ããã«æ
# å®ãã¦ãã ããã0 ãæå®ããã¨æ¡æ°èªå調æ´ã«ãªãã¾ãã
my $g_figure = 6;
# â
ãã¡ã¤ã«ããã¯æ©è½ããªã³ã«ããå ´å㯠1 ãããªãã«ããå ´å㯠0
# ãæå®ãã¦ãã ãããé常㯠1 ã§ããã§ãããã
my $g_lock_flag = 1;
# â
åã¢ãã¬ã¹ãã§ãã¯æ©è½ããªã³ã«ããå ´å㯠1 ãæå®ãã¦ãã ããã
# åãæ¥ã«åã IP ã¢ãã¬ã¹ããã®ã¢ã¯ã»ã¹ãã«ã¦ã³ãã¢ããããªã
# ãªãã¾ãã
my $g_address_check = 0;
# â
çç¥æã®ã«ã¦ã³ã¿ã¼åãæå®ãã¾ããã«ã¦ã³ã¿ã¼å㯠*.cnt ã *.dat
# ãªã©ã®ãã¡ã¤ã«åã«å¯¾å¿ãã¦ãã¾ãã
my $g_counter_name = "wwwcount";
# â
ã¬ãã¼ãæ©è½ã使ãå ´åã¯ã$g_mailto = 'admin@example.com';ãã®
# ããã«èªåã®ã¡ã¼ã«ã¢ãã¬ã¹ãè¨å®ãã¦ãã ããããµã¼ãã¼ã§
# sendmailã³ãã³ãããµãã¼ãããã¦ããå¿
è¦ãããã¾ãã
# ã¬ãã¼ãæ©è½ã使ç¨ããªãå ´åã¯ç©ºæå('')ãæå®ãã¦ãã ããã
my $g_mailto = '';
# â
ã¬ãã¼ãæ©è½ã®éä¿¡å
ã¡ã¼ã«ã¢ãã¬ã¹ï¼é常ã¯èªåã®ã¢ãã¬ã¹ï¼ã
# æå®ãã¦ãã ãããçç¥æã¯ã«ã¦ã³ã¿åã«ãªãã¾ããããããã¤ã
# ã«ãã£ã¦ã¯ãéä¿¡å
ã¡ã¼ã«ã¢ãã¬ã¹ãé©åãªãã®ããã§ãã¯ãã¦ã
# ãã±ã¼ã¹ãããã¾ãã
my $g_mailfrom = 'admin <admin@example.com>';
# â
ã¬ãã¼ãæ©è½ã§ãsendmail ã³ãã³ãã®ãã¹åã /usr/lib/sendmail
# ã¨ç°ãªãå ´åã¯ãé©åã«ä¿®æ£ãã¦ãã ããã
my $g_sendmail = '/usr/sbin/sendmail';
# â
ã¬ãã¼ãæ©è½ã§ã詳細æ
å ±ãæ·»ä»ãããã¢ã¯ã»ã¹ä»¶æ°ã®ã¿ãã¬ãã¼
# ãããå ´åã¯ã0 ãæå®ãã¦ãã ããã
my $g_report_detail = 1;
# â
ã¬ãã¼ãæ©è½ã§ãã¢ã¯ã»ã¹å
ã®ãã¹ãåãåå¾ã§ããªãå ´åã«ãã¯ã
# ãã®å¤ã 1 ã«å¤æ´ããã¨ãIPã¢ãã¬ã¹ãããã¹ãåã¸ã®å¤æã試ã¿
# ãããã«ãªãã¾ãããã ãããã¹ãå夿ã¯ããµã¼ãã¼è² è·ã®åå
# ã«ãªãã®ã§ã注æãã ããã
my $g_addr_to_host = 0;
# â
ã¬ãã¼ãæ©è½ã«ããã¦ãã$g_my_url = 'http://www.yyy.zzz/';ãã¨ã
# ãã¨ããã®ã¢ãã¬ã¹ã«ããããããµã¤ãããã® FROM ã¯è¡¨ç¤ºããªããª
# ãã¾ãã
my $g_my_url = '';
# â
ã¬ãã¼ãæ©è½ã§ã%7E ãªã©ã®ã¨ã³ã³ã¼ãæåããã³ã¼ããã¦è¨é²ãã
# å ´å㯠1 ãããã®ã¾ã¾è¨é²ããå ´å㯠0 ãæå®ãã¦ãã ããã
my $g_decode_url = 1;
my $count_dir = $ENV{WWWCOUNT_DIR} // ".";
# â
ããã¯ãã¡ã¤ã«ã使ãããã©ã«ãåãæå®ãã¾ãã
my $g_lock_dir = "$count_dir/lock";
#==================================================================
# ãã®ä»å¤æ°
#==================================================================
# é ãã«ã¦ã³ã¿ã¼ã§è¡¨ç¤ºããGIFãã¡ã¤ã«å
my $g_gif_file = "";
# ã¢ã¯ã»ã¹å
æ
å ±
my $g_referer = "";
examples/cgi/WwwCounter/wwwcount.cgi view on Meta::CPAN
}
}
close(IN);
}
return $do_countup;
}
#
# CGIã¹ã¯ãªããã®çµæã¨ãã¦ã«ã¦ã³ã¿ã¼ãæ¸ãåºã
#
sub outputCounter {
my($count) = @_;
my($count_str, @files, $size, $n, $buf);
# ã«ã¦ã³ã¿ã¼æåå(ä¾:000123)ãå¾ã
if ($g_figure != 0) {
$count_str = sprintf(sprintf("%%0%dld", $g_figure), $count);
} else {
$count_str = sprintf("%ld", $count);
}
# ããã¹ãã¢ã¼ã
if ($g_mode eq "text") {
printf("Content-type: text/html\n");
printf("\n");
printf("$count_str\n");
# GIFã¢ã¼ã
} elsif ($g_mode eq "gif") {
printf("Content-type: image/gif\n");
printf("\n");
@files = ();
for (my $i = 0; $i < length($count_str); $i++) {
$n = substr($count_str, $i, 1);
push(@files, "$n.gif");
}
require "./gifcat.pl";
binmode(STDOUT);
print gifcat'gifcat(@files);
# é ãã«ã¦ã³ã¿ã¼ã¢ã¼ã
} elsif ($g_mode eq "hide") {
printf("Content-type: image/gif\n");
printf("\n");
$size = -s $g_gif_file;
open(IN, $g_gif_file);
binmode(IN);
binmode(STDOUT);
read(IN, $buf, $size);
print $buf;
close(IN);
}
}
#
# ããã¯ãå¾ã
#
sub doLock {
my($mtime);
if ($g_lock_flag) {
for (my $i = 1; $i <= 6; $i++) {
if (mkdir("$g_file_lock", 0755)) {
# ããã¯æåãæ¬¡ã®å¦çã¸ã
last;
} elsif ($i == 1) {
# 10å以ä¸å¤ãããã¯ãã¡ã¤ã«ã¯åé¤ããã
($mtime) = (stat($g_file_lock))[9];
if ($mtime < time() - 600) {
rmdir($g_file_lock);
}
} elsif ($i < 6) {
# ããã¯å¤±æã1ç§å¾
ã£ã¦åãã©ã¤ã
sleep(1);
} else {
# ä½åº¦ãã£ã¦ãããã¯å¤±æããããããã
exit(1);
}
}
}
# éä¸ã§çµäºãã¦ãããã¯ãã¡ã¤ã«ãæ®ããªãããã«ãã
sub sigexit { rmdir($g_file_lock); exit(0); }
$SIG{'PIPE'} = $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "sigexit";
}
#
# ããã¯ãéæ¾ãã
#
sub unlockLock {
if ($g_lock_flag) {
rmdir($g_file_lock);
}
}
#
# CGIã使ç¨ã§ããããã¹ããè¡ãã
#
sub test {
print "Content-type: text/html\n";
print "\n";
print "<!doctype html>\n";
print "<html>\n";
print "<head>\n";
print "<meta charset='utf-8'>\n";
print "<title>Test</title>\n";
print "</head>\n";
print "<body>\n";
print "<p>OK. CGIã¹ã¯ãªããã¯æ£å¸¸ã«åãã¦ãã¾ãã</p>\n";
if ($g_mailto ne "") {
if (! -f $g_sendmail) {
print "<p>ERROR: $g_sendmail ãåå¨ãã¾ããã</p>\n";
}
}
if (!-d $g_lock_dir) {
print "<p>ERROR: $g_lock_dir ãã©ã«ããããã¾ããã</p>\n";
}
if (-d $g_file_lock) {
print "<p>ERROR: $g_file_lock ãæ®ã£ã¦ãã¾ãã</p>\n";
}
if (! -r $g_file_count) {
print "<p>ERROR: $g_file_count ãåå¨ãã¾ããã</p>\n";
} elsif (! -w $g_file_count) {
print "<p>ERROR: $g_file_count ãæ¸ãè¾¼ã¿å¯è½ã§ã¯ããã¾ããã</p>\n";
}
if (! -r $g_file_date) {
print "<p>ERROR: $g_file_date ãåå¨ãã¾ããã</p>\n";
} elsif (! -w $g_file_date) {
print "<p>ERROR: $g_file_date ãæ¸ãè¾¼ã¿å¯è½ã§ã¯ããã¾ããã</p>\n";
}
if (! -r $g_file_access) {
print "<p>ERROR: $g_file_access ãåå¨ãã¾ããã</p>\n";
} elsif (! -w $g_file_access) {
print "<p>ERROR: $g_file_access ãæ¸ãè¾¼ã¿å¯è½ã§ã¯ããã¾ããã</p>\n";
}
if (($g_chdir ne "") && (! -d $g_chdir)) {
print "<p>ERROR: $g_chdir ãåå¨ãã¾ããã</p>\n";
}
print "</body>\n";
print "</html>\n";
}
( run in 0.891 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )