#!/usr/bin/perl ##################################################################### # # *** W a y - A D M I N *** # Version 1.2 #-------------------------------------------------------------------- # Developed by Lim, Dae-Ho # lawwal@bom.net # http://way.co.kr # ##################################################################### # 1999/04/16-04/19 by lawwal Ver 1.0 # 1999/04/23-04/24 by lawwal Ver 1.1 # 1999/04/27 by lawwal Ver 1.2 (Plus WinNT/98/95) ##################################################################### &input_data; &set_data; if($Field{'j'} eq "°Ô½ÃÆÇ °ü¸®") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_board; } if($Field{'j'} eq "°Ô½ÃÆÇ »ý¼º") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_board_add; &admin_board; } if($Field{'j'} eq "°Ô½ÃÆÇ »èÁ¦") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_board_del; &admin_board; } if($Field{'j'} eq "¼³Á¤ º¯°æ") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_board_cfg; &admin_board; } if($Field{'j'} eq "°Ô½ÃÆÇ º¸±â") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_board_view; } if($Field{'j'} eq "ºñ¹Ð¹øÈ£ º¯°æ") { if(!&admin_pass_check) { &admin_auth_fail; } &admin_pass_ch; &admin_auth; } &admin_auth; exit; ##################################################################### sub set_data { require "./conf-board.cgi"; umask 000; $cgi_name = $ENV{"SCRIPT_NAME"}; @cgi_name = split(/\/+/, $cgi_name); $cgi_name_index = $#cgi_name; $cgi_name = $cgi_name[$cgi_name_index]; $Field{'j'} =~ s/^ +| +$//g; $browser = $ENV{'HTTP_USER_AGENT'}; if($browser =~/MSIE/i) { $base_cols = 15; # board¸í, E-mail Á¶È¸, ¿î¿µÀÚ ºñ¹Ð¹øÈ£ $base2_cols = 7; # »ö±ò ÀԷºκРµî $base3_cols =25; # ¿î¿µÀÚ Á¤º¸ ºÎºÐ $title_cols = 50; # ¸ÞÀÏ Á¦¸ñ $text_cols = 80; # ¸ÞÀÏ ³»¿ë } else { $base_cols = 10; $base2_cols = 5; $base3_cols =16; $title_cols = 32; $text_cols = 51; } } ##################################################################### sub admin_auth_fail { &err_msg("¿î¿µÀÚ ÀÎÁõ ½ÇÆÐ", "- ºñ¹Ð¹øÈ£°¡ Ʋ¸³´Ï´Ù."); } ##################################################################### sub admin_auth { $msg = "¿î¿µÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇØ Áֽñâ ÇϽô ¹Ù¶ø´Ï´Ù."; $msg2="
  • ºñ¹Ð¹øÈ£ "; &pass_input("¿î¿µÀÚ ÀÎÁõ", "¿î¿µÀÚ ÀÎÁõ", $msg, $msg2); } ##################################################################### sub pass_input { local($html_h1, $html_h2, $msg, $msg2) = @_; &html_head($html_h1, $html_h2); print <<"__HTML__";

    $msg

    $msg2

    __HTML__ &html_tail; } ##################################################################### sub admin_board { &db_board; foreach $tmp (@db_board) { $db_board_html_2 .= "
  • »õ ºñ¹Ð¹øÈ£ È®ÀÎ


    "; &pass_input("ºñ¹Ð¹øÈ£ º¯°æ", "ºñ¹Ð¹øÈ£ º¯°æ", $msg, $msg2); } if($Field{'new_admin_pass'} ne $Field{'new_admin_pass2'}) { &err_msg("µÎ¹øÀÇ ÀԷ³»¿ëÀÌ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.", ""); } if(!$Field{'new_admin_pass'}) { &err_msg("»õ·Î¿î ºñ¹Ð¹øÈ£°¡ ÀԷµÇÁö ¾Ê¾Ò½À´Ï´Ù.", ""); } $mk_pass = &admin_pass_make($Field{'new_admin_pass'}); $FILE = "./lib/.conf-p.cgi"; open(FILE, ">$FILE") || &error_file_open($FILE); print FILE $mk_pass; close(FILE); } ##################################################################### sub db_board { &file_select($DB_DIR); &db_name_info; foreach $tmp(@file_board_rslt) { $cnt = 0; $tmp =~ s/$DB_DIR\///g; $FILE = "$DB_DIR/$tmp/$DB_FN-list.$DB_EXT"; if(-e $FILE) { open(FILE, "$FILE") || &error_file_open($FILE); while () { $cnt ++; } close(FILE); } else { $cnt = "Á¤º¸ ¾øÀ½"; } push(@db_board, $tmp); $db_board_html .= "  \n"; $db_board_html .= "$db_name{$tmp}"; $db_board_html .= "  ($cnt°³, $tmp)
    \n"; } } ##################################################################### sub db_name_info { $FILE_DB = "$DB_DIR/.db_idx.cgi"; if(!-e "$FILE_DB") { open(FILE_DB, ">$FILE_DB") || &error_file_open($FILE_DB); close(FILE_DB); } open(FILE_DB, "$FILE_DB") || &error_file_open($FILE_DB); while() { ($db_name_tmp, $db_dir_tmp) = split(/\|/, $_); push(@db_name, $db_name_tmp); $db_dir{$db_name_tmp} = $db_dir_tmp; $db_name{$db_dir_tmp} = $db_name_tmp; } close(FILE_DB); } ##################################################################### sub html_head { local($title, $html_title, $java) = @_; print "Content-type: text/html\n\n"; print <<"__HTML__"; $title __HTML__ if($java eq "JavaScript") { print <<"__HTML__"; __HTML__ } print <<"__HTML__";

    * * *   $html_title   * * *
    Way-ADMIN 1.2        

    __HTML__ } ##################################################################### sub html_tail { print <<"__HTML__";

    Copyright 1998-1999   - Way-CGI ½Ã¸®Áî -   All rights reserved.


    __HTML__ exit; } ##################################################################### sub err_msg { local($err_dv, $err_msg) = @_; &html_head("ÀÔ·Â(ó¸®) ¿À·ù", "ÀÔ·Â(ó¸®) ¿À·ù"); print <<"__HTML__";
  • $err_dv

    $err_msg

  • [ ÀÌÀüÈ­¸é ]
    __HTML__ &html_tail; } ##################################################################### sub error_file_open { local($FILE) = @_; die print "Content-type: text/html\n\n

    Error !

    FILE OPEN ERROR. (FILE NAME : $FILE)

    "; } ##################################################################### sub input_data { if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); } else { exit; } foreach $pair (@pairs) { local($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; if (defined($Field{$name})) { $Field{$name} = $value; } else { if ($Field{$name} && $value) { $Field{$name} = "$Field{$name}, $value"; } elsif ($value) { $Field{$name} = $value; } } } } ##################################################################### sub file_select { @file_board_rslt = (); local ($DB_DIR) = @_; opendir(DIR, $DB_DIR); @file_board = grep {!(/^\./)} readdir(DIR); closedir(DIR); foreach $file_board(@file_board) { if(-d "$DB_DIR/$file_board") { push(@file_board_rslt, $file_board); } } } ##################################################################### sub admin_pass_make { local($pass) = @_; if($pass) { $make_pass = crypt($pass, $PASS_SALT); } return $make_pass; } ##################################################################### sub admin_pass_check { $FILE = "./lib/.conf-p.cgi"; open(FILE, "$FILE") || &error_file_open($FILE); $pass_tmp = ; chomp $pass_tmp; close(FILE); if(!$pass_tmp) { return 1; } if(crypt($Field{'admin_pass'}, $PASS_SALT) eq $pass_tmp) { return 1; } } #####################################################################