³¯Â¥: 1996-04-27 | ±Û¾´ÀÌ: µµ¾Æ | 14384 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 27°­ - °Ë»ö¿£Áø


¿©±â¼­ ¼³¸íÇÏ´Â °Ë»ö¿£ÁøÀº AltaVista¿Í °°Àº Çü½ÄÀÇ Å°¿öµå °Ë»ö¿£ÁøÀÌ´Ù. ´Ù¸¸ AltaVista¿Í °°Àº °Ë»ö¿£Áø°úÀÇ °¡Àå ÁÖµÈ Â÷ÀÌÁ¡Àº ´Ù¸¥ »çÀÌÆ®¸¦ °Ë»öÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÀÚ½ÅÀÇ »çÀÌÆ®¸¦ °Ë»öÇÑ´Ù´Â °Í°ú dB¸¦ ÀÌ¿ëÇؼ­ °Ë»öÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó µî·ÏµÈ µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÀ» °Ë»öÇÑ´Ù´Â °ÍÀÌ´Ù. µ¿ÀÛ¿ø¸®

µ¿ÀÛ¿ø¸®´Â ´ÙÀ½°ú °°ÀÌ ¾ÆÁÖ °£´ÜÇÏ´Ù.

°Ë»ö¿£Áø ±¸¼º CGI ÆÄÀÏ

search.cgi*			»çÀÌÆ® °Ë»ö CGI
				chmod 755 search.cgi
mycgilib.pl			°Ë»ö¿£Áø¿ë Library
				chmod 644 mycgilib.pl
				
¼³Á¤ÆÄÀÏ

search.cfg			°Ë»ö¿£ÁøÀÇ ¼³Á¤ÆÄÀÏ
				chmod 644 search.cfg
				´ëºÎºÐÀÇ ¼³Á¤ÀÇ ÀÚ½ÅÀÇ È¯°æ¿¡ ¸Â°Ô º¯°æ
Æû¹®¼­ ÆÄÀÏ

sindex.html			ÇÁ·¹ÀÓÀ» ¸¸µå´Â HTML ÆÄÀÏ
				chmod 644 sindex.html
stop.html			°Ë»ö ÆûÀ» Æ÷ÇÔÇÏ´Â HTML ¹®¼­
				chmod 644 stop.html
				FORMÀÇ actionÀ» Àڽſ¡ ¸Â°Ô º¯°æ
sbelow.html			°Ë»ö¿£Áø¿¡ ´ëÇÑ µµ¿ò¸» ÆÄÀÏ
				chmod 644 sbelow.html
style.css			Cascading Style Sheet ÆÄÀÏ
				chmod 644 style.css
search.js			ÀÔ·ÂÆûÀ» °Ë»çÇÏ´Â ÀÚ¹Ù½ºÅ©¸³Æ®
				chmod 644 search.js
°Ë»ö¿£Áø ¼³Á¤

# User = »ç¿ëÀÚ À̸§. search·Î µÎ¸éµÊ
# Refer = ¹æ¸í·ÏÀ» ±âµ¿ÇÒ ¼­¹öÀÇ IP¿Í DNS
User = search
Refer = 210.206.89.230, comp.mailx2.com, 127.0.0.1, localhost

# SearchForm = °Ë»öÆûÀÇ URL
# Style = ¼­½ÄÆÄÀÏÀÇ URL
SearchForm = /~artech/search/sindex.htm
Style = /~artech/style.css

# TitleLen = TitleÀ» »ç¿ëÇÏÁö ¾ÊÀº °æ¿ì Title·Î »ç¿ëÇÒ ´Ü¾îÀÇ ¼ö
# SummaryLen = ¿ä¾àÀ» ÃßÃâÇÒ ¶§ ÃßÃâÇÒ ÁÙÀÇ ¼ö
TitleLen = 5
SummaryLen = 5
# SearchDir = °Ë»öÇÒ ±âº» µð·ºÅ丮. ÀÌ µð·ºÅäÀÇ ÇÏÀ§µð·ºÅ丮°¡ °Ë»öµÊ.
# SearchUrl = °Ë»öÇÒ µð·ºÅ丮ÀÇ URL
# SearchExt = °Ë»öÇÒ ÆÄÀÏÀÇ È®Àå.
# SearchStyle = °á°ú È­¸é¿¡ »ç¿ëÇÒ ¼­½Ä Å©·¡½º. search·Î µÎ¸éµÊ.
SearchDir = /home/artech/public_html
SearchUrl =  /~artech
SearchExt = *.htm*, *.txt
SearchStyle = search

# NoSearch = °Ë»ö¿¡¼­ Á¦¿ÜÇÒ µð·ºÅ丮
NoSearch = /~artech/html40, /~artech/report
°Ë»ö¿£Áø ¼Ò½º search.cgi

  1 : #!/usr/local/bin/perl
  2 : require './mycgilib.pl';
  3 : 
  4 : $conf_path = './search.cfg';
  5 : %FORM = &read_parse;
  6 : %CONF = &read_conf($conf_path, 'search');
  7 : 
  8 : @refer = split(/, */, $CONF{'Refer'});
  9 : @nosearch = split(/, */, $CONF{'NoSearch'});
 10 : 
 11 : $search_form = $CONF{'SearchForm'};
 12 : $style = $CONF{'Style'};
 13 : $search_dir = $CONF{'SearchDir'};
 14 : $search_url = $CONF{'SearchUrl'};
 15 : @EXT = split(/, */, $CONF{'SearchExt'});
 16 : $style_class = $CONF{'SearchStyle'};
 17 : $title_length = $CONF{'TitleLen'};
 18 : $summary_length = $CONF{'SummaryLen'};
 19 : 
 20 : MAIN:
 21 : {
 22 : 	$keyword = $FORM{'keyword'};
 23 : 	$method = $FORM{'method'};
 24 : 	$case = $FORM{'case'};
 25 : 	$sortmeth = $FORM{'sortmeth'};
 26 : 	
 27 : 	&redirect($search_form) 
		if(&no_refer || $keyword eq '' || $method eq '');
 28 : 
 29 : 	%result = &search;
 30 : 
 31 : 	@key = sort(keys %result);
 32 : 	@key = reverse @key if($sortmeth eq 'desc');
 33 : 	@keylist = split(/  */, $keyword);
 34 : 
 35 : 	for(0..$#keylist) {
 36 : 		if($method eq 'and' || $method eq 'or') {
 37 : 			$key .= "$keylist[$_]";
 38 : 			$key .= '|' if($_ != $#keylist);
 39 : 		}else{
 40 : 			$key = $keyword;
 41 : 		}		
 42 : 	}
 43 : 
 44 : 	$num = $#key + 1;
 45 : 
 46 : 	print &print_header;
 47 : 	print &html_top("°Ë»ö°á°ú","$style", "$style_class");
 48 : 	print &print_title("Search Result", "°Ë »ö °á °ú");
 49 : 	print "<p class=info>ÃÑ $num°³°¡ °Ë»öµÇ¾ú½À´Ï´Ù.</p>\n";
 50 : 	print "<hr noshade>\n";
 51 : 
 52 : 	if ($num == 0) {
 53 : 		print &no_result;
 54 : 	}else {
 55 : 		print "<DL>\n";
 56 : 		$count=1;
 57 : 
 58 : 		foreach $key_index (@key) {
 59 :		($url, $title, $summary, $file_date, $file_size)
			=split(/\c\V/, $result{$key_index});
 60 : 
 61 : 			if($case eq '') {
 62 : 			$summary =~ s/($key)/<span><\/span>/gi;
 63 : 			}else{
 64 : 			$summary =~ s/($key)/<span><\/span>/g;
 65 : 			}
 66 : 
 67 : 			print &table_site;
 68 : 			$count++;
 69 : 		}
 70 : 
 71 : 		print "</DL>\n";
 72 : 	}
 73 : 	print &html_bot;
 74 : 	exit;
 75 : }
 76 : 
 77 : sub no_result {
 78 : my($no) =<<No;
 79 : 
 80 : <p class=info>
 81 : ã´Â ÆÄÀÏÀÌ ¾ø½À´Ï´Ù. °Ë»ö¾î¸¦ ÁÙÀÌ´ø°¡ ³í¸®ÇÕÀ¸·Î °Ë»öÇϱ⠹ٶø´Ï´Ù.
 82 : No
 83 : 	return $no;
 84 : }
 85 : 
 86 : sub table_site {
 87 : 
 88 : my($table);
 89 : 	$table =<<Table_Row;
 90 : <DT> <STRONG>$count</STRONG>. <a href="$url">$title</a> <DT>
 91 : <DD> $summary <BR>
 92 : <B>°»½ÅÀÏÀÚ</B>: $file_date - <B>ÆÄÀÏÅ©±â</B>: $file_size
 93 : </DD>
 94 : <P>
 95 : Table_Row
 96 : 	return $table;
 97 : }
 98 : 
 99 : sub search_path {
100 : my($path, $list, $key);
101 : 
102 : 	$search_dir =~ s/\/\//g;
103 : 
104 : 	for(0..$#EXT) {
105 : 		if($^O =~ /mswin32/i) {
106 : 			$path = "$search_dir/$EXT[$_]";
107 : 			$list .= `dir /b/S "$path"`;
108 : 			$list .= `dir /b/S/a:h "$path"`;
109 : 		}else {
110 : 			$list .= `find $search_dir -name '$EXT[$_]*' -print`;
111 : 		}
112 : 	}
113 : 
114 : 	$list =~ s/\/\//g;
115 : 
116 : 	my (@LIST) = split(/\s+/, $list);
117 : 
118 : 	if ($#nosearch >= 0) {
119 : 			$key = join('|', @nosearch);
120 : 			@LIST = grep(!/$key/i, @LIST);
121 : 	}
122 : 
123 : 	return @LIST;
124 : }
125 : 
126 : sub search {
127 : my($id, $file);
128 : my (@LIST) = &search_path;
129 : my ($search_count) = '00000';
130 : 
131 : 	foreach $file (@LIST) {
132 : 		my($title,$summary,$file_date,$file_size,$result) 
			= &extract_info($file);
133 : 
134 : 		$file =~ s/^$search_dir//ig;
135 : 		$file = "$search_url/$file";
136 : 		$file =~ s!//!/!g;
137 : 
138 : 		if($result >= 1) {
139 : 			my($search_result) 
			= "$file\cV$title\cV$summary\cV$file_date\cV$file_size";
140 : 
141 : 			if($FORM{'sort'} eq 'file') {
142 : 				$id = "$file$search_count";
143 : 				$result{$id} = $search_result;
144 : 			}elsif($FORM{'sort'} eq 'title'){
145 : 				$id = "$title$search_count";
146 : 				$result{$id} = $search_result;
147 : 			}elsif($FORM{'sort'} eq 'fsize'){
148 : 				my($file_size_temp) = $file_size;
149 : 				$file_size_temp =~ s/([1-9][0-9]*)k//ig;
150 : 				if(length($file_size_temp) <= 5) {
151 : 				$file_size_temp=('0' x
				 (5-length($file_size_temp)) . $file_size_temp);
152 : 				}
153 : 				$id = "$file_size_temp$search_count";
154 : 				$result{$id} = $search_result;
155 : 			}elsif($FORM{'sort'} eq 'fdate'){
156 : 				$id = "$file_date$search_count";
157 : 				$result{$id} = $search_result;
158 : 			}else{
159 : 				$result{$search_count} = $search_result;
160 : 			}
161 : 			$search_count++;
162 : 		}
163 : 	}
164 : 	return %result;
165 : }
166 : 
167 : sub extract_info {
168 : my($path) = @_;
169 : my($file_date,$file_size,$headline,$i,
		$join_file,$key,$len,$line,$num,$result,$summary,$title);
170 : my(@file, @keylist, @word);
171 : 
172 : 	$headline = '';
173 : 	$title = '';
174 : 
175 : 	open(FILE, $path) || die "$!";
176 : 	@file = <FILE>;
177 : 	close(FILE);
178 : 
179 : 	$path =~ tr/[A-Z]/[a-z]/;
180 : 
181 : 	($file_size, $file_date) = (stat($path))[7,9];
182 : 	$file_date = &get_date($file_date);
183 : 	$file_size = ( $file_size > 1023 ? int($file_size/1024) . "k" 
		: $file_size . "b" );
184 : 	
185 : 	if($path =~ /htm.?$/){
186 : 
187 : 		for(0..$#file) {
188 : 			$line = $file[$_];
189 : 			$headline .= $line;
190 : 			if (( $line =~/<\/head>/i ) 
				|| ( $line =~ /<\/title>/i )) {
191 : 				last;
192 : 	    		}
193 :         	}
194 : 
195 : 		$headline =~ s/\n/ /g;
196 : 		if($headline =~ m!<title>(.*)</title>!i) {
197 : 			$title = ;
198 : 		}
199 : 	}
200 : 	
201 : 	$join_file = "@file";
202 : 	$join_file =~ s/<([^>]|\n)*>//g;
203 : 	$join_file =~ s/\n\n*/\n\cV/g;
204 : 	@file = split(/\cV/, $join_file);
205 : 
206 : 	@file = &search_array(@file);
207 : 
208 : 	$result = (@file > $summary_length ? $summary_length : @file);
209 : 	for($i=0; $i < $result; $i++) {
210 : 		$len = length($file[$i]);
211 : 
212 : 		if( $len >= 70 && $#file > $result) {
213 : 			$file[$i] =~ s/(.{69}[^ |.]*)  *.*/\n/g;
214 : 		}
215 : 
216 : 		if($title eq '') {
217 : 			@word = split(/\s+/,$file[$i]);
218 : 			$num = (@word > $title_length ? $title_length : @word);
219 : 			$title = "@word[0..$num-1]";
220 : 		}
221 : 		$summary .= $file[$i];
222 : 		$summary =~ s/\n\n*/ /g;
223 : 	}
224 : 	return ($title, $summary, $file_date, $file_size, $result);
225 : }
226 : 
227 : sub search_array {
228 : my(@file) = @_;
229 : my(@keylist);
230 : 
231 : 	if($FORM{'method'} eq 'and') {
232 : 		@keylist = split(/  */, $FORM{keyword});
233 : 
234 : 		if($FORM{'case'} eq '') {
235 : 			foreach $key (@keylist) {
236 : 				@file = grep(/$key/i, @file);
237 : 			}
238 : 		}else{
239 : 			foreach $key (@keylist) {
240 : 				@file = grep(/$key/, @file);
241 : 			}
242 : 		}
243 : 	}
244 : 
245 : 	if($FORM{'method'} eq 'or') {
246 : 		@keylist = split(/  */, $FORM{keyword});
247 : 		for(0..$#keylist) {
248 : 			$key .= "$keylist[$_]";
249 : 			$key .= '|' if($_ != $#keylist);
250 : 		}
251 : 		if($FORM{'case'} eq '') {
252 : 			@file = grep(/$key/i, @file);
253 : 		}else{
254 : 			@file = grep(/$key/, @file);
255 : 		}
256 : 	}
257 : 
258 : 	if($FORM{'method'} eq 'phrase') {
259 : 		$key = $FORM{keyword};
260 : 		if($FORM{'case'} eq '') {
261 : 			@file = grep(/$key/i, @file);
262 : 		}else{
263 : 			@file = grep(/$key/, @file);
264 : 		}
265 : 	}
266 : 	return @file;
267 : }
mycgilib.pl

¹æ¸í·ÏÀÇ mycgilib.plÀ» ÂüÁ¶ ½ÇÇà°á°ú

°Ë»ö¿£Áø



´ÙÀ½±Û: Á¦ 28°­ - À¥ ¸ÞÀÏ(Mail Gateway) - ÀÛ¼ºÁß (6505)1996-04-28
ÀÌÀü±Û: Á¦ 26°­ - ¹æ¸í·Ï(Guestbook) - ¼Ò½º º¯°æÁß (6455)1996-04-26

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.