#!/usr/bin/perl -U #---À§ ù¶óÀÎÀÇ perl °æ·Î È®ÀÎÇÏ°í ¼­¹öȯ°æ°ú ´Ù¸£´Ù¸é ¼öÁ¤ÇÒ°Í (¾Õ¿¡ #! ´Â ¹Ýµå½Ã ºÙÀÏ°Í) #---config.cgi ÀÇ °æ·Î´ëÀÔ require './config.cgi'; # ÀÌÆÄÀÏÀº 'Å×Å©³ëÆ®' ¿î¿ë¿¡ ²À ÇÊ¿äÇÑ ÆÄÀÏÀº ¾Æ´Ï´Ï ÇÊ¿äÇÑ °æ¿ì¿¡¸¸ # ¿ëµµ¿¡ ¸ÂÃß¾î »ç¿ëÇϽʽÿÀ. ÇÁ¸®¿þ¾î¿Í »ó¿ë¹öÀüÀÌ µ¿ÀÏÇÑ ÆÄÀÏÀÔ´Ï´Ù. # °¢ º¸µåÀÇ Àüüµî·Ï±Û ¼ö¿Í ¿À´Ã µî·Ï±Û ¼ö¸¦ Ãâ·ÂÇÔ # Àüü ÅëÇÕ°Ë»ö ÆûÀ» Ãâ·ÂÇÔ # ¸Þ¸ðÀå Ãâ·ÂÇÔ # ¾Æ·¡ÀÇ htm ű׸¦ Á÷Á¢ ¼öÁ¤Çؼ­ ¿øÇÏ´Â ÇüÅ·Π¼öÁ¤ÇÏ¿© »ç¿ëÇÏ¸é µË´Ï´Ù. # ¼öÁ¤È®ÀÎ Ç׸ñ # [1] BOARD À̸§ ¾ÕÀÇ ball ¾ÆÀÌÄÜ $boardicon = ""; # [2] Ȩ ¹öÆ°ÀÇ ¸µÅ© url $homeiconlink = 'http://www.technote.co.kr'; # [3] ¸Þ¸ð±Û Àüü ÀúÀå ¶óÀμö(ÆÄÀÏ) $MemoSave = '200' ; # [4] ¸Þ¸ð±Û ÆäÀÌÁö´ç Ãâ·Â ¶óÀμö(È­¸é) $MemoPrint = '15'; # [5] ¸Þ¸ð±Û¿¡ html ÅÂ±× Çã¿ë¿©ºÎ 'Y' or 'N' $HtmlMemo = 'N'; # [6] ¸Þ¸ð±Û ¿¬¼Ó¾²±â Á¦ÇÑ() $Writecut = '10'; # [7] º¸µåº° °Ô½Ã¹°¼ö¸¦ ÀоîµéÀÏ °ÍÀΰ¡¸¦ ÁöÁ¤. # °¢ BOARDÀÇ µî·ÏµÈ °Ô½Ã¹°ÀÇ °¹¼ö¸¦ Ç¥½Ã ÇÒ ÇÊ¿ä°¡ ¾øÀ»¶§´Â # ¾Æ·¡¿¡ 'N' ¸¦ ÁöÁ¤ÇÏ¿© ºÒÇÊ¿äÇÑ µ¿ÀÛÀ» ¾Ê°Ô ÇÒ°Í $CountMany = 'Y'; &parse; &ReadBoardIndex; &WriteExplian; &ExplianOpenWindows; &ReadMemoText; print "Content-type: text/html\n\n"; print < TECHNOTE INFORMATION INDEX $Htm_in_head
ÀÌ ÆäÀÌÁö´Â 'infor.cgi' ÆÄÀÏ¿¡ ÀÇÇؼ­ Ãâ·ÂµÇ¾ú½À´Ï´Ù.
Å×Å©³ëÆ®¿î¿µ¿¡ ¹Ýµå½Ã ÇÊ¿äÇÑ ÆÄÀÏÀº ¾Æ´Ï´Ï ÇÊ¿äÇÒ °æ¿ì¿¡¸¸ ¿ëµµ¿¡ ¸Â°Ô ÆíÁýÇØ »ç¿ëÇϽʽÿÀ,
°¢ º¸µåº° [Àüü/¿À´Ã] ±Ûµî·Ï¼ö¸¦ Ç¥½ÃÇØ ÁÖ°í , ÀüüÅëÇÕ°Ë»ö , ¸Þ¸ðÀå µîÀ» Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸Ã¼Àû ¼³¸íÀº infor.cgi ¼Ò½º³»¿¡ ÀÖ½À´Ï´Ù.


¡á BOARD INDEX - °¢ º¸µå¿¡ ´ëÇÑ [Àüü/¿À´Ã] ±Û µî·Ï¼ö°¡ ÀÚµ¿ Ç¥½ÃÇϱâ
$boardicon ÀÚÀ¯°Ô½ÃÆÇ $MANY{'FREE_BOARD'} $boardicon Áú¹®´äº¯ $MANY{'qaboard'} $boardicon ÆË´Ï´Ù $MANY{'sail'}
$boardicon ÅõÇ¥, Åä·Ð¹æ $MANY{'vote'} $boardicon °ø°³ÀÚ·á½Ç $MANY{'pds'} $boardicon »ð´Ï´Ù $MANY{'buy'}
$boardicon ¾ÆÀÌÄÜ ¹ðÅ© $MANY{'iconbank'} $boardicon ȸ¿øÀü¿ë ¹æ $MANY{'members'} $boardicon ÀÚÀ¯È«º¸ $MANY{'guestpr'}
$boardicon ¸Þ½ÃÁö $MANY{'masage'} $boardicon ¹æ¸í·Ï $MANY{'guestbook'} $boardicon °ü¸®ÀÚ ¸Þ¸ð $MANY{'mastermemo'}


¡á Àüü º¸µå ÅëÇÕ°Ë»öÇϱâ

(¡è)º¹¼ö°Ë»ö¾î´Â ½ºÆäÀ̽º³ª ÄÞ¸¶·Î ±¸ºÐ


 $UnWriteMemo END_LINE # ¸Þ¸ð±Û ¸®½ºÆ® Ãâ·ÂÇÔ &GusetMemoPrint; print "
¡á ¸Þ¸ðÀå È°¿ëÇϱâ
 
\n\n
"; # ¸Þ¸ð±Û °ü¸®µµ±¸ ¸µÅ© ºÎºÐ(admin) &MemoAdminForm; print < END_LINE exit; ##################### ##################### ##################### ##################### # °ü¸®ÀÚÀÇ ¸Þ¸ð±Û ¼öÁ¤ µµ±¸ Ãâ·Â sub MemoAdminForm{ if($FORM{'ADMpass'}){ if(&ch_pass("$FORM{'ADMpass'}") ne &ReadMpass){ delete $FORM{'ADMpass'}; print "ºñ¹Ð¹øÈ£¸¦ Àç È®ÀÎ ÇϽʽÿÀ"; } } if($FORM{'ADMpass'}){ @mprint = @memo; foreach $key (@mprint) { $key =~ s/\r//g; $key =~ s/\n+//; $memobody .= "$key\n"; } $textbody =~ s/\ \;/\&\;nbsp\;/g; print < ¸Þ¸ð±ÛÀ» ¼öÁ¤ÇÕ´Ï´Ù

password:     END_LINE } else{ print <admin]
END_LINE } } # ------memo print------------------------# sub GusetMemoPrint{ chop(@memo); $Size = @memo; $ManyPage = ($Size/$MemoPrint) + 1; $ManyPage += 1 if(($ManyPage*$MemoPrint) < $size); $StartLine = $FORM{'memonum'} ? $FORM{'memonum'} : '0' ; $j = $StartLine+($MemoPrint-1) ; for($StartLine..$j){ next if(!$memo[$_]); @Memoarr = split(/\|/,$memo[$_]); $txtnum = $Size - $_; print ""; # ¼ø¼­¸¦ ¹Ù²Ù°Å³ª Ãß°¡»ðÀÔ È¤Àº Å×À̺í ÀÚü¸¦ º¯ÇüÇصµ µÊ. # À̸§ print "  $Memoarr[1] "; # ³»¿ë print "\"$Memoarr[3]\" $Memoarr[2] "; # ³¯ÀÚ print "  $Memoarr[0]"; # ¹øÈ£ print "$txtnum "; print "\n"; print ""; } print ""; print "
"; for(1..$ManyPage){ $tnum = ($_ - 1) * $MemoPrint; if($StartLine != $tnum){ print "[$_] \n"; } else{ print "[$_] \n"; } } $GsWrName = $FORM{'name'} if($FORM{'name'}); $GsWrName = 'Name' if(!$GsWrName); print "\n"; # ¸Þ¸ð±Û ÀÔ·Â Æû print "
"; print ""; print "\n"; print "\n"; print "
"; } sub parse{ $_ = $ENV{'REQUEST_METHOD'}; if (/POST/) {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); $ENV{'QUERY_STRING'} = $buffer; }else {$buffer = $ENV{'QUERY_STRING'};} @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value;} } sub ch_pass{local($inpass_x,)=@_; $inpass_x =~ s/\s//g; $inpass_x .= 'IlIl' if(2 > length($inpass_x)); $inpass=$inpass_x; $chop1=chop($inpass); $chop2=chop($inpass); $chop3=chop($inpass); $chop4=chop($inpass); $cryptword=$chop1.$chop2.$chop3.$chop4; $firstcrypt= crypt($cryptword,"$chop2$chop3"); $chop1=chop($firstcrypt); $chop2=chop($firstcrypt); return crypt($inpass_x,"$chop1$chop2"); } sub ReadBoardIndex{ @timeday =localtime(time+$NewLocaltime); $cc = ($timeday[4]+1)."$timeday[3]"; return if($CountMany eq 'N'); opendir(DIR,$board_dir_path); @BoardDir = grep((!/\./), readdir(DIR)); closedir(DIR); foreach $key (@BoardDir) { open(TODAY,"$board_dir_path/$key/today.txt"); @todayRT = ; close(TODAY); chop(@todayRT); if($todayRT[0] eq $cc){ $zz = "$todayRT[1]/"; }else{ $zz = ''; } open(BOARD,"$board_dir_path/$key/$indexfile"); @temparr = ; close(BOARD); $MANY{$key} = '['.$zz.(@temparr + 0).']' ; undef @temparr ; undef @todayRT ; } } sub WriteExplian{ if($FORM{'comment'} && $FORM{'pass'} && $FORM{'where'}){ if(&ReadMpass eq &ch_pass("$FORM{'pass'}")){ open(Write,">$config_dir_path/infortext/$FORM{'where'}"); print Write $FORM{'comment'}; close(Write); &permission("$config_dir_path/infortext/$FORM{'where'}"); } else{ $ErrorMsg = '    " ERROR - Wrong password ! "

'; } } } sub ReadMpass{ open(PASS,"$board_dir_path/$loginfile"); $readpass = ; $readpass =~ s/\n//g; $readpass =~ s/\r//g; close(PASS); $readpass = &ch_pass('technote') if(!$readpass); return ($readpass); } sub ExplianOpenWindows{ $OpenWin1 = "target=\"aa\" onClick=\"NewWindows('1')\""; $OpenWin2 = "target=\"bb\" onClick=\"NewWindows('2')\""; } sub ReadMemoText{ $cooname = $scripimport.'GssMo'; &lock; open(READ,"$config_dir_path/infortext/guestmemo.txt"); @memo = ; close(READ); $FORM{'memo'} =~ s/\s+/ /g; $FORM{'name'} =~ s/\s+//g; $CooDay = $timeday[3].$timeday[2]; &GetCooKie; if($FORM{'memo'} && $FORM{'name'} && ($FORM{'memo'} ne 'Comments') && ($FORM{'name'} ne 'Name')){ unless($Wnum < $Writecut){ &unlock; $UnWriteMemo = '¿¬¼Ó¾²±â Çã¿ëȽ¼ö ÃÊ°ú !'; return; } if(((length($FORM{'memo'})) < 80) && ((length($FORM{'name'})) < 15)){ $mon = $timeday[4]+1 ; @week = ('ÀÏ','¿ù','È­','¼ö','¸ñ','±Ý','Åä','ÀÏ'); $timeday[2] = '0'.$timeday[2] if($timeday[2] < 10); $timeday[1] = '0'.$timeday[1] if($timeday[1] < 10); $readdate = "$mon/$timeday[3]\[$week[$timeday[6]]\] $timeday[2]:$timeday[1]"; foreach $key (@del_x_word) { $FORM{'memo'} =~ s/$key/xx/g; $FORM{'name'} =~ s/$key/xx/g; } if($HtmlMemo eq 'Y'){ $FORM{'memo'} =~ s/script//gi; $FORM{'name'}=~ s/script//gi; } else{ $FORM{'memo'} =~ s/$config_dir_path/infortext/guestmemo.txt"); print PRINT @memo2; close(PRINT); chmod(0777,"$config_dir_path/infortext/guestmemo.txt"); } print "Set-Cookie: $cooname=$FORM{'name'}|$Wnum|$CooDay \n"; } } &unlock; } sub GetCooKie{ @cookies = split(/; /, $ENV{'HTTP_COOKIE'}); foreach $key (@cookies) {$key =~ /([^=]*)=(.*)/; $COOKIE{$1} = $2;} # foreach (@cookies) { # ($m_name, $m_value) = split(/=/, $_); # $COOKIE{$m_name} = $m_value; # } ($GsWrName,$Wnum,$NotWr) = split(/\|/,"$COOKIE{$cooname}"); if($CooDay == $NotWr){ $Wnum += '1'; }else{ $Wnum = '0'; } } sub lock{ $Nowtime = time+20; while (-e "$config_dir_path/infortext/lock" && (time < $Nowtime)) { sleep(1); } open(LOCK, ">$config_dir_path/infortext/lock"); close(LOCK); } sub unlock{ unlink("$config_dir_path/infortext/lock"); } 1;