#!/usr/bin/perl #*************************************************************** # イマドコ #*************************************************************** require "jcode.pl"; # for local $dataDir = "data/"; #データディレクトリ $dataFileExt = ".dat"; #拡張子 # for server $dataDir = "../plus1/sr2/data/"; #データディレクトリ $dataFileExt = ".dat"; #拡張子 #*************************************************************** main(); exit(0); #*************************************************************** sub main() { my $pos = ""; getData(); $hexUser = $IN{"user"}; $orgUser = ""; for ($i = 0;$i < length($hexUser);$i+=2) { $buf = substr($hexUser, $i, 2); $orgUser .= chr(hex($buf)); } $IN{"user"} = $orgUser; debug("USER:".$IN{"user"}); $pos = getPosition(); print "Content-Type:text/html; charset=Shift_JIS\n\n"; print <
$IN{"user"}
EOD if ($pos eq "") { print < EOD } else { print < EOD } print <
EOD } #*************************************************************** sub getPosition { my $groupHash = ""; my $groupFile = ""; my $ret = ""; my @tmp; my $hexGroup = $IN{"group"}; my $orgGroup = ""; for ($i = 0;$i < length($hexGroup);$i+=2) { $buf = substr($hexGroup, $i, 2); $orgGroup .= chr(hex($buf)); } $groupHash = getHexValue($orgGroup); $IN{"info"} = "in=" . $IN{"group"}."/"; $IN{"info"} .= "org=" . $orgGroup."/"; $IN{"info"} .= "grp=" . $groupHash."/"; $groupFile = $dataDir.$groupHash.$dataFileExt; #getHexValue($IN{"group"}); #元々 hex で入力されるが、ファイルチェックを行うため、decode&encodeする if (-f $groupFile) { $IN{"info"} .= "found0/"; open(IN, $groupFile); while () { chomp; chomp; @tmp = split(/,/, $_); # TODO 5番目の st0 をイマドコフラグとする if ($tmp[0] eq $IN{"user"} && $tmp[5] eq "1") { debug("FOUND:NAME:".$tmp[0]."/".$IN{"user"}); $IN{"info"} .= "found1/"; debug(sprintf("FOUND:tmp1=%d,tmp2=%d", $tmp[1], $tmp[2])); if (-1 != $tmp[1] && -1 != $tmp[2]) { $IN{"info"} .= "found2/"; $ret = $tmp[1].",".$tmp[2]; } last; } } close(IN); } else { $IN{"info"} .= "not found"; } debug("RET=".$ret."/INFO=".$IN{"info"}); return $ret; } #*************************************************************** sub getHexValue { my $input = shift; my $ret = ""; my $i; my $oneChar = ""; for ($i = 0;$i < length($input);$i++) { $oneChar = substr($input, $i, 1); $ret .= sprintf("%02x", ord($oneChar)); } return $ret; } #*************************************************************** sub getData { my $cl; my $sq; my @contents; my $key; my $text; $cl = $ENV{"CONTENT_LENGTH"}; if ($cl > 0) { read(STDIN, $qs, $cl ); } else { $qs = $ENV{"QUERY_STRING"}; } @contents = split(/&/,$qs); foreach $i (0 .. $#contents) { ($key,$text)= split(/=/,$contents[$i]); $text =~ s/\+/ /g; $text =~ s/%(..)/pack("c",hex($1))/ge; $key =~ s/\+/ /g; $key =~ s/%(..)/pack("c",hex($1))/ge; $text =~ s/\r//g; $text =~ s/\n//g; $text =~ s/\t//g; jcode::convert(*text,'sjis'); $IN{$key}=$text; } } #*************************************************************** sub debug { my $msg = shift; my $isOutput = 0; if (1 == $isOutput) { open(OUT,">>debug.txt"); print OUT $msg."\n"; close(OUT); } }