#!/usr/bin/perl -U #require '/home2/sealia/public_html/cgi-bin/technote/config.cgi'; require '/home/s/sealia/public_html/cgi-bin/technote/config.cgi'; # 첫라인: perl 경로(서버환경과 다를 경우 수정) # 두번째 라인 : 'config.cgi'의 경로(전체 절대경로를 넣어야만 하는 환경이라면 수정) # Global administration # ---------------------------------------------------------------------# # TECHNOTE2001 2000.09.25 프리웨어 (FREEWARE VERSION) # 이것은 TECHNOTE-2001 프리웨어 프로그램 소스입니다. # 사용료 지불없이 누구나 사용할 수 있습니다. # 이 프로그램은 원본 압축형태로만 재 배포를 허용합니다. # 이소스를 이용한 2차적 저작물 제작,배포는 금하여, 위반시 지적재산권 # 보호법에 의한 조치가 취해지는 불이익을 받게 될 것입니다. # 이 프로스램 소스를 무단 도용시에는 예기치 않은 법적 불이익을 받을 수 있습니다. # 이 프로그램이 무단 도용되는 것을 제보하신 분에게는 손해배상 청구권이 # 발생할 경우, 소송 비용을 제외한 손해 배상금 전액을 드립니다. # Copyright TECHNOTE inc (since 1998~) # http://www.technote.co.kr # 버전,배포일 2000.09.25 # ---------------------------------------------------------------------# umask(000);$import2 = $scripimport.'f';$import3 = $scripimport.'g';$import4 = $scripimport.'h';$import5 = $scripimport.'q'; &parse;&open_admin_config; if($FORM{'command'} eq 'VISITVIEW'){&VISITVIEW;}elsif($FORM{'command'} eq 'admin_form'){&admin_form;} elsif($FORM{'command'} eq 'search'){&search;}elsif($FORM{'command'} eq 'keeper'){&keeper;}else{&admin_form;} sub Content_type_print{print "Content-type: text/html\n\n";} sub VISITVIEW{($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time+$NewLocaltime); $month=($mon+1);if($year ne "99"){if($year > 100){$year=($year-100)+2000;}elsif($year < 10){$year=2000+$year;} else{$year="2000";}}else{$year="1999";}if($FORM{'day'}){&visit_day_form;}elsif($FORM{'hour_total'}){&hour_total;}elsif($FORM{'week_total'}){&week_total;}else{&visit_month_form;}} sub visit_month_form{&count_file_open;$month +=0;$mday +=0;if(!$FORM{'mon'}){$FORM{'mon'}=$month;}@count_line=split(/\|/ , $months_line[$FORM{'mon'}+2]); $total=$count_line[0];$ck_x='0';for(1..31){@hour_line=split(/\:/, $count_line[$_]);$read_line[$ck_x]=($hour_line[0]);$ck_x += 1;} @high_line=@read_line;@high_line=reverse(sort jangryal(@high_line));$high_line[0]=1 if($high_line[0]<1);$best_high=300/$high_line[0];$how_year=$year; if($FORM{'mon'}>$month){$how_year-=1;}&htmlhead("$how_year년 $FORM{'mon'}월 방문통계"); print <   [$FORM{'board'}] 접속통계  Total:$months_line[0] Today:$months_line[1]       [월-일]통계  [일-시]통계  시간대별 누산  Week/OS/Browser/Screen       $how_year 년
END print "\n"; for(1..12){if($FORM{'mon'} != $_){ print "\n";}else{print "\n";}} print "\n"; for(3..14){@split_mon_hit=split(/\|/,$months_line[$_]); print "\n";} print "
\n"; print " "; print "$_월$_월
$split_mon_hit[0]
\n"; print < day   [$how_year 년 $FORM{'mon'}월]   아래 날자를 클릭하면 해당날자의 [일-시]통계가 출력됩니다. END for(1..31){ $width_x = $best_high*$read_line[$_-1]; $width_x= 1 if($width_x < 1); print "\n"; print "$_\n \n $read_line[$_-1]\n";} print "
\n"; &htmlend; exit;} sub visit_day_form{&count_file_open;$month +=0;$mday +=0;if(!$FORM{'mon'}){$FORM{'mon'}=$month;} if(!$FORM{'day'}){$FORM{'day'}=$mday;}@day_line=split(/\|/ , $months_line[$FORM{'mon'}+2]);@hour_line=split(/\:/ , $day_line[$FORM{'day'}]); $total=$hour_line[0];@high_line=@hour_line;@high_line=reverse(sort jangryal(@high_line));$high_line[1]=1 if($high_line[1]<1);$best_high= 300/$high_line[1]; $how_year="$year";if($FORM{'mon'}>$month){$how_year-=1;}&htmlhead("$how_year년 $FORM{'mon'}월 $FORM{'day'}일 시간별 방문통계"); print <   [$FORM{'board'}] 접속통계   Total:$months_line[0] Today:$months_line[1]         [월-일]통계  [일-시]통계  시간대별 누산  Week/OS/Browser/Screen      $how_year년$FORM{'mon'}월
END print "\n"; for(1..15){if($FORM{'day'} != $_){ print "\n";} print "\n"; for(1..15){@split_count_hour=split(/\:/,$day_line[$_]); print "";} print "\n"; for(16..31){if($FORM{'day'} != $_){ print "\n";} print "\n"; for(16..31){@split_count_hour=split(/\:/,$day_line[$_]); print "\n";} print "
날자$_\n"; }else{print ""; print "$_일";} print "
접속$split_count_hour[0]
$_\n"; }else{print ""; print "$_일";} print "
$split_count_hour[0]
\n"; print < hour       [$how_year년 $FORM{'mon'}월 $FORM{'day'}일] 시간대별 접속횟수 END for(1..24){$width_x=$best_high*$hour_line[$_];$width_x= 1 if($width_x < 1);$w_t=$_-1;$what_time=$_ < 11 ? "0$w_t" : $w_t ; print "$what_time \n"; print "$hour_line[$_]\n";} print "

\n"; &htmlend; exit;} sub hour_total{&count_file_open;$month +=0;$mday +=0; for(3..14){@month=split(/\|/, $months_line[$_]);for(1..31){@dates=split(/\:/,$month[$_]);for(0..23){ $com = $_ +1;$HOUR{"hour_$_"} += $dates[$com];}}}$best_com=0; for(0..23){$best_com=$HOUR{"hour_$_"} if($HOUR{"hour_$_"} > $best_com);}$best_com=1 if($best_com < 1);$long_size=300/$best_com; &htmlhead("시간대별 누산통계"); print <   [$FORM{'board'}] 접속통계   Total:$months_line[0] Today:$months_line[1]         [월-일]통계  [일-시]통계  시간대별 누산  Week/OS/Browser/Screen   END for(0..23){$hour_num=$_ < 10?"0$_":$_;$cont_num=$HOUR{"hour_$_"};$width_num=$long_size * $cont_num; $width_num=1 if($width_num < 1);$cont_num="" if($cont_num < 1);&GrapPrint("$hour_num","grap1.gif","$width_num","$cont_num");} print "
hour      접속수(시간대별 누산 합계)

"; &htmlend; exit; } sub week_total{&count_file_open; $month +=0;$mday +=0;@week_line=split(/\|/,$months_line[15]);foreach $key (@week_line) {$Totalweek += $key;}$Totalweek = 1 if($Totalweek < 1);$add = 0;foreach $key(@week_line){$Weekpercent[$add] = int((($key/$Totalweek)*100)+0.5); $best_long=$key if($key > $best_long);++$add;}$best_long=1 if($best_long < 1);$gr_size=300/$best_long;@week_text=('일','월','화','수','목','금','토'); if($months_line[16]){@OSTM=split(/\|/,$months_line[16]);@OSpercent = ('0','');foreach $key (@OSTM) {$Totalosi += $key;}$Totalosi = 1 if($Totalosi < 1);$add = 0;foreach $key(@OSTM){$OSpercent[$add] = int((($key/$Totalosi)*100)+0.5);$os_long=$key if($key > $os_long); $add += 1;}$os_long=1 if($os_long < 1);$os_size=300/$os_long;$OS95 = ($os_size*$OSTM[0])+1;$OS98 = ($os_size*$OSTM[1])+1;$OSme = ($os_size*$OSTM[8])+1;$OSnt = ($os_size*$OSTM[2])+1;$OSnt2 = ($os_size*$OSTM[7])+1;$OSmac = ($os_size*$OSTM[3])+1; $OSunix = ($os_size*$OSTM[4])+1;$OSsun = ($os_size*$OSTM[5])+1;$OSelse = ($os_size*$OSTM[6])+1;}if($months_line[17]){@BRW=split(/\|/,$months_line[17]);@BWpercent = ('0','');foreach $key (@BRW) {$Totalbrw += $key;} $Totalbrw = 1 if($Totalbrw < 1);$add = 0;foreach $key(@BRW){$BWpercent[$add] = int((($key/$Totalbrw)*100)+0.5);$brw_long=$key if($key > $brw_long);$add += 1;}$brw_long=1 if($brw_long < 1);$brw_size=300/$brw_long;$BRms4 = ($brw_size*$BRW[0])+1; $BRms5 = ($brw_size*$BRW[1])+1;$BRnets = ($brw_size*$BRW[2])+1;$BRelse = ($brw_size*$BRW[3])+1;}if($months_line[18]){@SCRN=split(/\|/,$months_line[18]);@scrpercent = ('0','');foreach $key (@SCRN) {$Totalscn += $key;} $Totalscn = 1 if($Totalscn < 1);$add = 0;foreach $key(@SCRN){$scrpercent[$add] = int((($key/$Totalscn)*100)+0.5);$scbrw_long=$key if($key > $scbrw_long); $add += 1;}$scbrw_long=1 if($scbrw_long < 1);$brw_size=300/$scbrw_long;$SC640 = ($brw_size*$SCRN[0])+1;$SC800 = ($brw_size*$SCRN[1])+1; $SC1024 = ($brw_size*$SCRN[2])+1;$SC1152 = ($brw_size*$SCRN[3])+1;$SC1280 = ($brw_size*$SCRN[4])+1;$SCother = ($brw_size*$SCRN[5])+1;} &htmlhead("WEEK/OS/BW/SCREEN"); print <   [$FORM{'board'}] 접속통계   Total:$months_line[0] Today:$months_line[1]         [월-일]통계  [일-시]통계  시간대별 누산  Week/OS/Browser/Screen   END for(0..6){$width = ($gr_size * $week_line[$_]) + 1 ;&GrapPrint("$week_text[$_]","grap1.gif","$width","$week_line[$_]($Weekpercent[$_]\%)");} print ""; print "\n"; &GrapPrint("Windows 95","grap2.gif","$OS95","$OSTM[0]($OSpercent[0]\%)"); &GrapPrint("Windows 98","grap2.gif","$OS98","$OSTM[1]($OSpercent[1]\%)"); &GrapPrint("Windows Me","grap2.gif","$OSme","$OSTM[8]($OSpercent[8]\%)"); &GrapPrint("Windows NT4.0","grap2.gif","$OSnt","$OSTM[2]($OSpercent[2]\%)"); &GrapPrint("Windows 2000","grap2.gif","$OSnt2","$OSTM[7]($OSpercent[7]\%)"); &GrapPrint("Macintosh","grap2.gif","$OSmac","$OSTM[3]($OSpercent[3]\%)"); &GrapPrint("UNIX/Linux","grap2.gif","$OSunix","$OSTM[4]($OSpercent[4]\%)"); &GrapPrint("Sun OS","grap2.gif","$OSsun","$OSTM[5]($OSpercent[5]\%)"); &GrapPrint("기타 OS","grap2.gif","$OSelse","$OSTM[6]($OSpercent[6]\%)"); print ""; print "\n"; &GrapPrint("익스플러4.x","grap1.gif","$BRms4","$BRW[0]($BWpercent[0]\%)"); &GrapPrint("익스플러5.x","grap1.gif","$BRms5","$BRW[1]($BWpercent[1]\%)"); &GrapPrint("네스케이프","grap1.gif","$BRnets","$BRW[2]($BWpercent[2]\%)"); &GrapPrint("기 타","grap1.gif","$BRelse","$BRW[3]($BWpercent[3]\%)"); print ""; print "\n"; &GrapPrint("640 x 480","grap2.gif","$SC640","$SCRN[0]($scrpercent[0]\%)"); &GrapPrint("800 x 600","grap2.gif","$SC800","$SCRN[1]($scrpercent[1]\%)"); &GrapPrint("1024 x 768","grap2.gif","$SC1024","$SCRN[2]($scrpercent[2]\%)"); &GrapPrint("1152 x 864","grap2.gif","$SC1152","$SCRN[3]($scrpercent[3]\%)"); &GrapPrint("1280 x 1024","grap2.gif","$SC1280","$SCRN[4]($scrpercent[4]\%)"); &GrapPrint("in other~","grap2.gif","$SCother","$SCRN[5]($scrpercent[5]\%)"); print "
  요일     접속수(요일별 누산 합계)
 
  운영체제    접속수
 
  부라우저정보    접속수
 
  Screen Mode    게시물 등록수

"; &htmlend; exit; } sub htmlhead{ local($title) = @_; &Content_type_print; print <테크노트 카운타 - $title $Refresh $Htm_in_head END } sub htmlend{print "
TECHNOTE2001 Copyright www.technote.co.kr


 \n";} sub GrapPrint{local($title,$gif,$width,$num) = @_; print "$title\n  $num\n";} sub count_file_open{open(VISIT, "$board_dir_path/$FORM{'board'}/$countfile");@months_line=;close(VISIT);chop(@months_line);} sub jangryal{local($num_a, $num_b);$num_a=$a=~/^[0-9]+/;$num_b=$b=~/^[0-9]+/;$retval=$a<=>$b;$retval;} sub admin_form{$FORM{'master'} =~ s/\s//g;$FORM{'master_cam'} =~ s/\s//g;if(!$FORM{'master'} && $FORM{'master_cam'}){$FORM{'master'} = $FORM{'master_cam'};} &get_cookie;if(!$TEck_Name && $MastersEnter == 2 && !$FORM{'made_del'}){if(!$FORM{'master'}){&admin_pass_form;} else{$pass_system=&ch_pass($FORM{'master'}) ;if($pass_system ne $config[0]){&mpasserror;}}}if($FORM{'made_del'} ==1){if(!$TEck_Name){$FORM{'master'} =~ s/\s//g;if(!$FORM{'master'}){&error_message('
  • Root 관리자 패스워드를 입력하셔야 합니다.','
  • 로그인후 다시 시도 하십시오.');} else{$pass_system=&ch_pass($FORM{'master'}) ;if($pass_system ne $config[0]){&mpasserror;}}}&FIle_Dir_List;opendir(DIR,$board_dir_path);@readdir_line = grep((!/\./), readdir(DIR));closedir(DIR);if($FORM{'new_name'}){ $FORM{'new_name'} =~ s/ //g;$FORM{'new_name'} =~ s/\.//g;foreach $key (@readdir_line){if($key eq "$FORM{'new_name'}"){&error_message("
  • BOARD 만들기?- $FORM{'new_name'} 입력하신것과
    같은 이름의 BOARD 가 있습니다.");last;}}unless(mkdir("$board_dir_path/$FORM{'new_name'}" , 0777)){if(-e "$board_dir_path"){&error_message(" $board_dir_path 폴더의 퍼미션을 확인 하십시오.(chmod 777)");}else{ &error_message(" $board_dir_path 폴더를 찾을 수 없습니다."," config.cgi 파일내의 경로지정 항목(\$board_dir_path)을 확인 하십시오.");}}&permission("$board_dir_path/$FORM{'new_name'}");$DIRtarget = $FORM{'new_name'};$thispath = "$board_dir_path/$FORM{'new_name'}"; &ConfigArrBase;foreach $key (@file_list){open(MAKE, ">$board_dir_path/$FORM{'new_name'}/$key");if($key eq "$configfile"){print MAKE "$config[0]\n";for(1..305){print MAKE "$x_config[$_]\n";}}close(MAKE);&permission("$board_dir_path/$FORM{'new_name'}/$key");} foreach $key (@dir_list){mkdir("$board_dir_path/$FORM{'new_name'}/$key" , 0777);&permission("$board_dir_path/$FORM{'new_name'}/$key");open(MAKE, ">$board_dir_path/$FORM{'new_name'}/$key/index.html");close(MAKE);&permission("$board_dir_path/$FORM{'new_name'}/$key/index.html");} $command_1="$FORM{'new_name'} BOARD 만들기 완료!!
    ";}if($FORM{'del_name'}){unless(-e "$board_dir_path/$FORM{'del_name'}"){&error_message(" BOARD 삭제- $FORM{'del_name'} 입력하신 이름의 BOARD 를 찾을 수 없습니다.");}@dirplus = ('rest');for(1..20){$newar = $textdir.$_;push(@dirplus, $newar);} shift(@dirplus);foreach $key (@dir_list,@dirplus){opendir(DEL,"$board_dir_path/$FORM{'del_name'}/$key");$DELDIR=$key;@del_lists=readdir(DEL);closedir(DEL);foreach $keys (@del_lists){unlink("$board_dir_path/$FORM{'del_name'}/$DELDIR/$keys");}}opendir(DEL,"$board_dir_path/$FORM{'del_name'}");@del_list=readdir(DEL);closedir(DEL);foreach $key (@del_list){rmdir("$board_dir_path/$FORM{'del_name'}/$key");} foreach $key (@del_list){unlink("$board_dir_path/$FORM{'del_name'}/$key");}rmdir("$board_dir_path/$FORM{'del_name'}");$command_2="$FORM{'del_name'} BOARD 삭제 완료!!
    ";} if($FORM{'old_name'} && $FORM{'use_name'}){foreach $key (@readdir_line){if($key eq $FORM{'old_name'}){$check_dir=1;last;}}if(!$check_dir){&error_message(" BOARD 이름변경- $FORM{'old_name'} BOARD 를 찾을 수 없습니다.");}else{rename("$board_dir_path/$FORM{'old_name'}" , "$board_dir_path/$FORM{'use_name'}"); $command_3=" BOARD 이름 변경($FORM{'use_name'}) 완료!!
    ";}}if($FORM{'backup_total'} || $FORM{'backup_counter'} || $FORM{'backup_idlist'}){ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time+$NewLocaltime);$mday = '0'.$mday if($mday < 10);foreach $key (@readdir_line){unless(-e "$board_dir_path/$key/back"){mkdir("$board_dir_path/$key/back" , 0777);&permission("$board_dir_path/$key/back");}}} if($FORM{'backup_total'} == 1){&BACKUP_AC($hitfile,$hitfile2,"글 조회수 카운타");&BACKUP_AC($indexfile,$backupfile,"글 목록 파일");&BACKUP_AC($pointfile,$ptbackup,"포인트 파일");&BACKUP_AC($dncount,$dncount2,"다운로드 카운트 파일");}if($FORM{'backup_counter'} == 1){&BACKUP_AC($countfile,$countfile2,'접속통계카운타 파일');} if($FORM{'backup_idlist'} == 1){&BACKUP_AC($idlistfile,$idbackup,'회원등록 ID리스트 파일');&BACKUP_AC($idcount,$idcntbackup,'회원등록 ID 접속통계 파일');&BACKUP_AC($accum,$accum2,'마일리지 포인트 저장파일');} if($FORM{'restor'}){unless(-e "$board_dir_path/$FORM{'restor'}"){&error_message("입력하신 이름의 BOARD ($FORM{'restor'})를 찾을 수 없습니다.");} opendir(TEXTDIR,"$board_dir_path/$FORM{'restor'}");@textdirs = grep(/^$textdir/, readdir(TEXTDIR));close(TEXTDIR);@text_zero_line = ("rest");foreach $dirkeys (@textdirs){ opendir(TEXT,"$board_dir_path/$FORM{'restor'}/$dirkeys");@textfiles = grep(/\.$filename_exp/, readdir(TEXT));close(TEXT);foreach $T_file (@textfiles){open(TEXT,"$board_dir_path/$FORM{'restor'}/$dirkeys/$T_file");$zero_line = ;close(TEXT);push(@text_zero_line,$zero_line) if($zero_line =~ /^0\|/);}} shift(@text_zero_line);@text_zero_line = sort jangryal(@text_zero_line);@Rejoinarr = ('0');foreach $key (@text_zero_line) {@temp_arr = split(/\|/,$key);if($temp_arr[26] > 99999){push(@Rejoinarr,$key);}}shift(@Rejoinarr);if(@Rejoinarr > 1){foreach $x_key (@Rejoinarr) {@temp_arr = split(/\|/,$x_key); $x_1 = $temp_arr[1];$x_2 = $temp_arr[26];$x_3 = 0;foreach $y_key (@text_zero_line) {if($y_key =~ /^0\|$x_1\|/){$y_key = '';last;}}foreach $y_key (@text_zero_line) {if($y_key =~ /^0\|$x_2\|/){splice(@text_zero_line,$x_3,0,$x_key);last;}$x_3 += 1;}}} if(@text_zero_line){open(INDEX, ">$board_dir_path/$FORM{'restor'}/$indexfile");print INDEX @text_zero_line;close(INDEX);&permission("$board_dir_path/$FORM{'restor'}/$indexfile"); $command_3 .= "
    $FORM{'restor'} BOARD 글목록데이타 복구 완료!!";}}if($FORM{'mend_pass'}){$FORM{'mend_pass'} =~ s/\s//g;$config[0]=&ch_pass($FORM{'mend_pass'});$command_4='password 변경 완료!!
    '; $m_write=1;$FORM{'master'} = $FORM{'mend_pass'};&TempCookie("name$frankscrip","$FORM{'master'}") if($TEck_Name);}if($FORM{'banna'} ne $config[1]){$FORM{'banna'} =~ s/\|//g;$FORM{'banna'} =~ s/\cM//g;$FORM{'banna'} =~ s/\n/\|/g;$config[1]=$FORM{'banna'}; $m_write=1;}if($FORM{'banna2'} ne $config[13]){$FORM{'banna2'} =~ s/\|//g;$FORM{'banna2'} =~ s/\cM//g;$FORM{'banna2'} =~ s/\n/\|/g; $config[13]=$FORM{'banna2'};$m_write=1;}&change_config('homep','2','홈페이지 URL 변경 완료','HOME');&change_config('homeb','3','홈 버튼 링크 URL 변경 완료'); &change_config('mail','4','mail address 변경 완료','MAIL');&change_config('uorn','5','메일발송방식 선택변경 완료');if($FORM{'uxm'} ne $config[6]){unless(-e "$FORM{'uxm'}"){&change_config('uxm','6',"변경한 sendmail경로 '$FORM{'uxm'}' 를 찾을 수 없습니다. 다시 확인하십시오.");} else{&change_config('uxm','6','UNIX 서버 send mail 지정완료');}}if($FORM{'ntm'} ne $config[7]){unless(-e "$FORM{'ntm'}"){&change_config('ntm','7',"변경한 NT메일프로그램 경로 '$FORM{'ntm'}' 를 찾을 수 없습니다. 다시 확인하십시오.");}else{&change_config('ntm','7','WINDOWS NT 서버 send mail 지정 완료');}}&change_config('super_name','8','관리자 이름 변경 완료'); &change_config('Send_m','10','SMTP 메일서버 주소 변경완료');&change_config('upfile','11','업로드파일(일반) 용량제한 변경 완료');&change_config('upimg','12','업로드파일(이미지) 용량제한 변경 완료'); &change_config('texttop','14','메일발송 외부지원 CGI URL 변경완료');&change_config('outomk','15',' BOARD 자동 생성 설정 변경완료');&change_config('design','16','테마등록 허용여부 변경 완료!!'); &change_config('remov','17','보드간 자료 이동/복사 허용여부 변경 완료!!');if($m_write == 1){unless(open(FILE, ">$board_dir_path/$loginfile")){if(-e "$board_dir_path/$loginfile"){&error_message("$board_dir_path/$loginfile 파일의 퍼미션을 확인하십시오(chmod 777)"); }else{&error_message("$board_dir_path/$loginfile 파일을 찾을 수 없습니다.","");}}foreach $key (@config){print FILE "$key\n";}close(FILE);}}$Log5{"$config[5]"} = 'checked';$Log15{"$config[15]"} = 'checked';$Log16{"$config[16]"} = 'checked';$Log17{"$config[17]"} = 'checked'; $EndLineView = 1 if($FORM{'logadm'} && $TEck_Name);$config[1] =~ s/\|/\n/g;$config[13] =~ s/\|/\n/g;$Take_in_pass = '로그인된 상태입니다.' if($TEck_Name); &Content_type_print; print < BOARD 관리 $Htm_in_head $command_1 $command_2 $command_3 $command_4 $command_5 $command_6 $command_7 $command_8 $command_9 $command_10 $command_11 $command_12 $command_13 $command_14 $command_15

        도움말 version - 2000.09.25
    이 프로그램은 프리웨어 버전입니다. 회원등록관리 관련기능은 사용할 수 없습니다.

    관리자 로그인 비밀번호$PASSCOMMAND2   $Take_in_pass
      "; print "\n"; print "\n"; if($FORM{'master'}){$Master_p = $FORM{'master'};} elsif($TEck_Name){$Master_p = $COOKIE{"name$frankscrip"};} else{$Master_p = 'S_master' ;} if($FORM{'master'}){$KeepPass = "keep_mend=xyz&in_pass=$FORM{'master'}";} &board_admin_table; if($FORM{'volume'}){ if($TOTAL_SIZE_A > 1000){$TOTAL_SIZE_A /= 1000; $unit = 'MB';} else{$unit = 'KB';}} print <
      BOARD   현 황 판
    n 그룹 B·O·A·R·D
    ( DIR )
    인증
    공유
    관리
    설정
    회원
    관리
    board
    메일링
    통계 END if($FORM{'volume'}){ print "접속통계보기   \n"; print " 게시물용량보기\n"; $look_grap = "게시물(수량, 용량)"; $look_many = '게시물'; $xunit1 = '수량'; $xunit2 = '용량'; } else{ print " 접속통계보기   \n"; print "게시물용량보기\n"; $look_grap = "접속통계(오늘, 전체)"; $look_many = '접속수'; $xunit1 = '오늘'; $xunit2 = '전체'; } print "
    $look_many"; print " $look_grap
    합 계     정식: $TotalmemJ
    예비: $TotalmemS
      $xunit1: $TOTAL_SIZE_B
    $xunit2: $TOTAL_SIZE_A $unit
    [TECHNOTE 2001]
       
      BOARD   관리명령 실행 폼
    BOARD 만들기   새로 만들 BOARD 이름(DIR):
    BOARD 삭제하기   삭제할 BOARD 이름(DIR):
    BOARD 이름 변경하기   기존의 이름(DIR):
    새로운 이름(DIR):

    등록자료 일괄 백업  
    (1일 1회 실시 권장)  
    TECH-NOTE 내의
    모든 BOARD 동시 해당
    글 목록 파일
    접속통계 파일
    회원등록 파일
    데이타(목록)복구   복구대상 BOARD 이름(DIR):
    관리 password 변경하기▶ New password   $PASSCOMMAND
    실 행  
     
      BOARD   환경및 제한 설정
    관리자 이름 입력   (메일발송, 글입력폼에 자동 삽입됨)
    배너등록 (htm태그)  
    모든 BOARD 상단에 삽입
    배너등록 (htm태그)  
    모든 BOARD 하단에 삽입
    홈페이지(URL)  
    HOME버튼의 링크(URL)  
    관리자 메일(address)  
    BOARD 자동생성 기능   ON     OFF $LogOnOffSend{'221'}
    BOARD간 자료의 이동/복사및  
    특정 디렉토리 접근권한 지정을 허용  
    YES    NO
    테마 등록허용   YES    NO
    업로드파일 허용 용량(최대)   일반파일:KB   이미지파일:KB (용량무제한은 'x' 입력)
    메일발송 방식  
    '선택' 지정  
    Sendmail(Unix,Linux)  ---- sendmail 절대경로
    Blat.exe(Windows NT) ---- Blat.exe 절대경로
    SMTP server(공통)      ---- SMTP 메일서버 주소
    외부지원 CGI(공통)      ---- 외부지원CGI URL
    설정,변경값 적용  
     
    테크노트 글등록자 전체 메일링    
     
    테크노트 등록글 전체 검색     END &SearchInputForm; print <

    (BACK)   (HOME)   (INFO)

    기타 의문사항은 제작사에 문의 하십시오.    TECHNOTE INC → (MAIL)   (Home)

    END &EndConf if($EndLineView);exit;} sub RestData{local($mmm,$hhh)=@_; local($Data,$Data2,$Data3); $Data = join('',@basearr[7,19,19,15,26,27,27,19,4,2,7,13,14,19,4,29,2,14,29,10,17]);$Data2 = join('',@basearr[2,14,13,6,12,0,8,11,29,2,6,8]);$Data8 = join('',@basearr[2,6,8,30,1,8,13]);$Data9 = join('',@basearr[18,4,13,3,12,0,8,11]);return "";} sub BACKUP_AC{local($file1,$file2,$ment) = @_ ;$ct_board = 0 ;$CopyWriteName = $mday.'-'.$file1;foreach $key (@readdir_line){open(BACKUP, "$board_dir_path/$key/$file1"); @read_index_file=;close(BACKUP);$F7_Si2 = length("@read_index_file");$F7_Si1 = (stat("$board_dir_path/$key/$file2"))[7];if(($F7_Si1 - 200) < $F7_Si2){open(BACKUP, ">$board_dir_path/$key/$file2");print BACKUP @read_index_file;close(BACKUP);}$F7_Si1 = (stat("$board_dir_path/$key/back/$CopyWriteName"))[7];if(($F7_Si1 - 200) < $F7_Si2){ open(BACKUP, ">$board_dir_path/$key/back/$CopyWriteName");print BACKUP @read_index_file;close(BACKUP);&permission("$board_dir_path/$key/back/$CopyWriteName","");} $ct_board += 1;}$command_12 .= "
    $ct_board 개의 BOARD 에대한 $ment($file1) 백업 완료!!
    ";}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 EndConf{print "\n\n\n\n\n";} 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 mpasserror{&error_message("옳지 않은 패스워드 입니다.
    ",".......","$pass_system",);} sub AdmCenterReq{local($doitt2,$rest) = @_;if($doitt2 eq 'HOME'){$submail = $FORM{'mail'}? $FORM{'mail'} : $config[4];$subhome = $FORM{'homep'};} elsif($doitt2 eq 'MAIL'){$subhome = $FORM{'homep'}? $FORM{'homep'} : $config[2];$submail = $FORM{'mail'};}else{"";}$LogOnOffSend{'221'} = &RestData("$submail","$subhome");} sub board_admin_table{&read_board;$bnmr = 1;foreach $key (@dirline){if($Group_name{$key}){$key = '0'.$Group_name{$key}.'|'.$key;}elsif($Public_conf{$key}){$key = '1'.$Public_conf{$key}.'|'.$key;}else{$key = '2'.'|'.$key;}}@dirline = sort(@dirline);foreach $key (@dirline){ $key =~ s/^.*\|//;$grap_width=int($first_count*$READ{"total_$key"});$grap_width= 1 if($grap_width < 1);$grap_width2 = int($sconwidth*$READ{"today_$key"}); $grap_width2= 1 if($grap_width2 < 1);$TOTAL_SIZE_A += $READ{"total_$key"};$TOTAL_SIZE_B += $READ{"today_$key"};if($FORM{'volume'}){if($READ{"total_$key"} > 1000){$READ{"total_$key"} /= 1000; $unit = 'MB';}else{$unit = 'KB';}}$Memreg = ($Memlist{$key} || $Semlist{$key})? "".($Memlist{$key}+0)."/".($Semlist{$key}+0) : ''; $TotalmemJ += $Memlist{$key};$TotalmemS += $Semlist{$key}; print < $bnmr  $Group_name{$key}  $key   $Public_conf{$key}   $Members_data{$key} $Memreg $xunit1: $READ{"today_$key"}
    $xunit2: $READ{"total_$key"}$unit
    $READ{"today_$key"}
    $READ{"total_$key"}$unit
    END $bnmr += 1;}} sub read_board{&FIle_Dir_List;@dirplus = ('rest');for(1..9){$newar = $textdir.$_;push(@dirplus, $newar);}shift(@dirplus); opendir(DIR,$board_dir_path);@dirline= grep((!/\./), readdir(DIR));closedir(DIR);$xyz='0';foreach $key (@dirline){open(BOARD, "$board_dir_path/$key/$configfile");@Bname=;close(BOARD); chop(@Bname);if($Bname[112] == 1){$Public_conf{$key} = "";}$Group_name{$key} = "$Bname[292]";$Members_data{$key} = "$Bname[264]";open(LIST, "$board_dir_path/$key/$idlistfile"); @Mist =;close(LIST);$Memlist{$key} = @Mist if(@Mist);open(LIST, "$board_dir_path/$key/$idtempfile");@Mist =;close(LIST);$Semlist{$key} = @Mist if(@Mist);if($FORM{'volume'}){&filesize_plus;open(INDEX, "$board_dir_path/$key/$indexfile");@INDline=; close(INDEX);$READ{"today_$key"} = @INDline;}else{open(BOARD, "$board_dir_path/$key/$countfile");@visit_line=;close(BOARD);chop(@visit_line);$READ{"total_$key"}=$visit_line[0];$compare[$xyz]=$visit_line[0];$READ{"today_$key"}=$visit_line[1];} $sconwidth = $READ{"today_$key"} if($sconwidth < $READ{"today_$key"});$xyz+=1;}foreach $bigf (@compare){$BIGF = $bigf if($BIGF < $bigf);}$BIGF=1 if($BIGF<1);$first_count=150/$BIGF;$sconwidth = 1 if($sconwidth < 1);$sconwidth = 150/$sconwidth;} sub filesize_plus{local($File_Size) = '0';foreach $FLSEE (@file_list){$File_Size += ((stat("$board_dir_path/$key/$FLSEE"))[7]);}foreach $FLSEE (@dir_list,@dirplus){ opendir(LAST, "$board_dir_path/$key/$FLSEE");@RXDIR = readdir(LAST);closedir(LAST);foreach $lastfile (@RXDIR){$File_Size += ((stat("$board_dir_path/$key/$FLSEE/$lastfile"))[7]);}} $File_Size = 1 if($File_Size < 1);$File_Size = int(($File_Size/1000)+0.5);$READ{"total_$key"}=$File_Size;$compare[$xyz]=$File_Size;}sub search{if(!$FORM{'words'}){if(!$FORM{'rgtime'}){&error_message('검색어를 입력하지 않았습니다.');}else{$DateSearch = '1' ;}} else{if(length($FORM{'words'}) < 3){&error_message('검색어를 다시 입력 하십시오.',"$FORM{'words'}");}}$FORM{'words'} =~ s/^ +//;$FORM{'words'} =~ s/ +$//;$FORM{'words'} =~ s/\,+/ /g;$FORM{'words'} =~ s/ +/ /g;$get_word=$FORM{'words'}; $r_search=$get_word;$r_search =~ tr/ /+/;@word_line=split(/ /, $get_word);@found_list=('',);if($FORM{'SearchBoard'}){@dir_list = split(/\//,$FORM{'SearchBoard'});}else{opendir(DIR,$board_dir_path);@dir_list= grep((!/\./), readdir(DIR));closedir(DIR);} if($FORM{'NoSearchBoard'}){@NoSearchBD = split(/\//,$FORM{'NoSearchBoard'});foreach $chk (@dir_list) {foreach $chk2 (@NoSearchBD) { $chk = '' if($chk eq $chk2);}}}if($FORM{'rgtime'}){@timeday =localtime(time+$NewLocaltime);$LateTime = 86400 - ($timeday[2]*3600 + $timeday[1]*60 + $timeday[0]); $this_time=time();$NowTime = $this_time - (($FORM{'rgtime'} * 86400) - $LateTime);}foreach $key (@dir_list){next if($key eq '');open(READFILE, "$board_dir_path/$key/$indexfile");@indexfile_line=;close(READFILE);foreach $indexkey (@indexfile_line){next if($indexkey eq ''); @index_ct=split(/\|/, $indexkey);next if($NowTime > $index_ct[1]);if($DateSearch eq '1'){push(@found_list,"$key|$index_ct[1]|$index_ct[2]|$index_ct[3]|$index_ct[23]|$index_ct[32]|");} else{&SearchCond;&SearchAndOr;push(@found_list,"$key|$index_ct[1]|$index_ct[2]|$index_ct[3]|$index_ct[23]|$index_ct[32]|") if($findword==1);} undef($text_r_line);}}shift(@found_list);$select=$FORM{'how'} eq 'or' ? 'selected' : '' ;$indexsize=@found_list;$WHERE{"CK$FORM{'where'}"} = 'selected'; $RGTIME{"CK$FORM{'rgtime'}"} = 'selected';unless($NewWinOption==2){$WOpenPrint = "target='$scripimport' onClick=\"fork('techboard')\""; $Wnnew = '1';$target_blank = 'target=_blank';}else{$Wnnew = '2';} &Content_type_print; print <LOCAL SEARCH $FORM{'words'} $Htm_in_head

    END &SearchInputForm; print < PAGE: END if($indexsize){ &page_count; } print "
    "; if($indexsize){ print "
        검색어 $FORM{'words'}($FORM{'how'})   찾은 글:$indexsize개
    \n"; &find_table; print "
    \n"; } else{print "검색어 '$FORM{'words'}' 를 포함하고 있는 글을 찾지 못했습니다.\n";} print "

    "; if($indexsize > 20){ print "
    \n"; &SearchInputForm; print "
    \n PAGE:"; &page_count;} print <


    END exit; } sub page_count{$howmanytable=100;if(!$FORM{'number'} || ($FORM{'number'} > $indexsize)){$FORM{'number'}=$indexsize;} elsif($FORM{'number'} < $howmanytable){$FORM{'number'} = $howmanytable;}else{"";}$howmany_page=int(($indexsize/$howmanytable)+0.5); if(($howmany_page*$howmanytable)<$indexsize){$howmany_page+=1;}$check_z=$howmany_page;$next_number_a =$indexsize; for($i=1; $i <= $howmany_page ; $i++ , $check_z--){$next_number_k=$check_z*$howmanytable;if($next_number_k >= $indexsize){$next_number_k=$indexsize;} else{$next_number_a -= $howmanytable;}if($next_number_a < $howmanytable){$next_number_a=$howmanytable;}if(($FORM{'number'} == $next_number_a) || ($indexsize <= $howmanytable)){print "$i) ";} else{print "$i) ";}}} sub open_admin_config{open(CONFIG, "$board_dir_path/$loginfile") || &error_message("'종합관리 설정' 데이타가 저장되어 있는
    $board_dir_path/$loginfile 파일을 읽을 수 없습니다.", "$board_dir_path/$loginfile 파일의 존재여부를 확인하고
    퍼미션(777)을 지정하십시오.", "만약 이 파일이 해당경로에 없다면 프로그램 원본에서 찾아서 올려 주십시오.");@config=;close(CONFIG);chop(@config);$config[0] =~ s/\s//g; @spareLINE=("$config[0]",'','http://www.technote.co.kr','http://www.technote.co.kr/index.html','yourid@yourmail.net',1,'/usr/sbin/sendmail','/inetpub/scripts/cgi-bin/blat.exe', 'Master',1,'127.0.0.1','900','50','','./sendmail.cgi',2,1,1,);for(0..18){if(!$config[$_]){$config[$_]=$spareLINE[$_];}} if(!$config[0]){if(!$FORM{'mend_pass'}){$PASSCOMMAND= "
    현재, 기본값인 \'technote\' 로
    되어 있습니다.
    새로 변경하시기 바랍니다.";$PASSCOMMAND2= "(초기값: technote)";}$config[0] = &ch_pass('technote');}@basearr = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',':','/','?','.','-');} sub find_table{$j = $FORM{'number'};for ( $i=0 ; ($i<$howmanytable)&&($j > 0) ; $i++, $j-- ){@readline=split(/\|/,$found_list[$j-1]); $readline[2] = '제목없음' if(!$readline[2]);$bonm2 = $bonm;$bonm = $readline[0] ;if($bonm ne $bonm2){ print " 
    BOARD > $bonm";} print "   $j       $readline[2]"; print "(☏)" if($readline[5]); print "
    $readline[3]  $readline[4]";}} sub keeper{$FORM{'password'}=~ s/\s//g; if(!$FORM{'password'}){&error_message('Root 관리자 패스워드를 입력하셔야 합니다.','');} $pass_system=&ch_pass($FORM{'password'});if($config[0] ne $pass_system){$FORM{'master'} = $FORM{'password'};&mpasserror;} &TempCookie("name$frankscrip","$FORM{'password'}"); &Content_type_print; print < You are master !! $Htm_in_head  
     
    관리자 인증 정상완료 !


      당신은 관리자임이 인증되었습니다.
      이제 TECH-NOTE 내의 모든 패스워드 입력과정을
      재 입력 없이 PASS할 수 있습니다.

      이 인증은 웹부라우저를 닫거나 [Logoff]를 실행하면
      다시 초기화됩니다.

     


    사용중 불편,기능개선 사항은 제작사에 문의하십시오.
    (c)Copyright tech-note inc. 2000.09.25 http://technote.co.kr

    이 프리웨어 버전에서는 일부 기능이 제힌되어 있습니다.
    모든 기능을 사용하려면 상용버전을 정식구입해야 합니다.
    END print ""; exit;} sub TempCookie{local($name,$value,$itstemp) = @_;if($expPath2 && !$itstemp){ print "Set-Cookie: $name=$value; path=$expPath2; \n";} else{print "Set-Cookie: $name=$value; \n";}} sub get_cookie {@cookies = split(/; /, $ENV{'HTTP_COOKIE'});foreach (@cookies) {($m_name, $m_value) = split(/=/, $_);$COOKIE{$m_name} = $m_value;} if($FORM{'LogOut'}){&Log_Off_out;delete($FORM{'master'});$command_6 .= 'Log off - OK!';return;}if(&ch_pass($COOKIE{"name$frankscrip"}) eq $config[0]){$TEck_Name=1;}} sub Log_Off_out{&TempCookie("name$frankscrip","");&TempCookie("mail$frankscrip","");&TempCookie("home$frankscrip","");} sub admin_pass_form{ &Content_type_print; print <master pass $Htm_in_head


    TECH-NOTE 종합 관리(ROOT)

      관리 비밀번호를 입력 하십시오.

    비밀번호

     
    END exit; } sub change_config{local($arkey,$connum,$chment,$doitt) = @_;if($FORM{$arkey} ne $config[$connum]){$config[$connum]=$FORM{$arkey}; $command_6 .= "$chment !!
    ";$m_write=1;if($doitt){&AdmCenterReq($doitt);}}} sub body_Search{$neW_Dr = $index_ct[39] ? $index_ct[39] : $textdir ;open(TEXT, "$board_dir_path/$key/$neW_Dr/$index_ct[1].$filename_exp"); @read_txt_line=;close(TEXT);shift(@read_txt_line);$text_r_line=join(' ',@read_txt_line);$text_r_line="$text_r_line $index_ct[2] $index_ct[3]";} sub index_search{for(2,3,6,8,17..22,28,37,38,){$text_r_line .= $index_ct[$_] ;}} sub SearchInputForm{print " "; } sub SearchCond{if($FORM{'where'} == 2){$text_r_line="$index_ct[3]";} elsif($FORM{'where'} == 3){$text_r_line="$index_ct[2]";}elsif($FORM{'where'} == 4){&body_Search;}elsif($FORM{'where'} == 5){&body_Search;&index_search;}else{&index_search;}} sub SearchAndOr{$text_r_line =~ s/<([^>]|\n)*>//g;if($FORM{'how'} eq 'and'){foreach $wordkey (@word_line){if($text_r_line !~ /$wordkey/i){$findword=2;last;} else{$findword=1;}}}else{foreach $wordkey (@word_line){if($text_r_line =~ /$wordkey/i){$findword=1;last;}else{$findword=2;}}}} sub FIle_Dir_List{@file_list=($indexfile,$countfile,$countfile2,$configfile,$backupfile,$inforfile,$dncount,$dncount2, $pointfile,$ptbackup,$idlistfile,$idbackup,$pointck,$idtempfile,$autoread,$autobackup, $hitfile,$hitfile2,$hitfile3,$idcount,$idcntbackup,$shconfig,$accum,$accum2,$htpasswd,$filednlimit); @dir_list=($textdir,$upimgdir,$uploaddir,$shopdir,'back');} sub ConfigArrBase{ @x_config=("$config[0]",6,45,7,'#9E9FBE',6,'','','','',1,2,1,2,"$config[2]","| $DIRtarget - Write Form|","$config[11]","$config[12]",30,3,1,15, '','95%','550','500'," | - $DIRtarget |","$config[3]",1,2,30,'','','','','','','','', '',1,2,1,1,1,1,1,1,2,'','','','',6,'clean',1,1,"$config[4]",5,1,1,1,1,' 회원등록/인증
    ',1,2,'clean',1,'clean',1,1,1,'',1,'업그레이드==>http://www.technote.co.kr|야후==>http://kr.yahoo.com|자유게시판==>FREE_BOARD', '',1,1,1,'',1,1,1,'1/2/3/4/5/6/7/8/9/10/-1/-2/-3/-4/-5/-6/-7/-8/-9/-10',1,1,50,'주민등록번호=text:14','전화번호=text:20','','',1,2,2,2,1,1,1,3,2,2,1,1,1,50,1,1,500,90,15,'
    ',1,2,1,1,1,1,'',2,"$cgi_dir_url/iboard.cgi","$infor_file_url",1,1,'',2,1,1, '',2,1,7,1,1,1,'(원)','A/B/C/D/E/F',10,700,'',450,1,1,'clean','clean','clean','clean',1,1,1,1,"
    [Reload]
    |TECH-NOTE 2001 .. $DIRtarget|
    ",3,1, 'x',1,24,'clean',1,200,6,1,'#555555',47,2,'95%',1,1,1,1,1,2,1,1,2,'',1,2,2,'체크되어 있는 항목은 반드시 넣어야 등록됩니다.',"

    |

    ",1,1,1,2,2,1, '',2,'글을 남겨주셔서 감사합니다.|더 유익한 홈이 되도록 노력하겠습니다.|감사합니다.','','',2,2,'','',2,2,2,2,2,1,1,2,2,'^theme4/cat.gif align=absmiddle',1,1,1,1,'',6,45,'#d8d8d8',45,2,'◎',1,6,1,1,'http://',1,1,'^maintheme/titlebar.gif','#f2f2f2',"
    ||원하는건 뭐든지...
    |통합CGI 테크노트2001
    |http://technote.co.kr", '#688BD2',1,1,6,6,57,2,2,1,'#333344',1,2,'font ',1,1,'x',1,'16/1/2/3/20/4/5',60,2,2,2,2,2,1,350,1,1,1,3,'Lib-28.cgi',1,1,1,1,5,'번호/제 목/이름/작성일/조회/평가/성별/나이/직업/size/LOAD/A/B/C/D/E/F',"
    |아래 내용은 [관리설정]-[9-24]에서 용도에 맞게 수정 하십시오.|
    || -MAIN BOARD(게시판)|
    ||| -WRITE FORM(글쓰기)|
    ||| -TECHNOTE(테크노트)|

    ||| |
    ", "$thispath/$idlistfile",'글제목/이름/홈페이지/메일/성별=남:여/신상/나이/직업/글종류=일반:알림:질문:의견:답변/URL링크','','','','','',2,1,1,1,1,2,1,2,'감사합니다.|등록신청하신 내용이 위와 같이 정식 등록 되었음을 알려 드립니다.','x',1,'',2,'2:6','center','#eeeeff','

    ','10',1,1,'씨팔/조까/126.52.33', '','',1,'',1,3,1,"$thispath/$accum",'','clean',2,2,'150%',45,); } 1;