diff --git a/gopher.pl b/gopher.pl index 26c0fae..ae9c821 100644 --- a/gopher.pl +++ b/gopher.pl @@ -56,20 +56,27 @@ sub connection_thread { $directory = $basedir . "/" . $directory; $directory =~ s/\/$//; + unless (-e $directory) { + print("Requested file or directory not readable : $directory \n"); + $listen_socket->send("No entry found with this name ...\r\n"); + $listen_socket->send(".\r\n"); + return 0; + } + if (-f $directory) { $listen_socket->send(send_blog_entry($directory)); + $listen_socket->send(".\r\n"); } else { - my $header = generate_header($directory); + my $header = generate_header("."); my $blog_entries = list_blog_entries($directory); my $tags_entries = list_entries_by_tag($directory); - $listen_socket->send($header . "\r\n"); - $listen_socket->send("\r\n"); + $listen_socket->send($header); $listen_socket->send("i----- Blog entries ---------------\tfake\tfake\t0\r\n"); - $listen_socket->send($blog_entries . "\r\n"); + $listen_socket->send($blog_entries); $listen_socket->send("i----- Blog entries by tags---------------\tfake\tfake\t0\r\n"); - $listen_socket->send($tags_entries . "\r\n"); - $listen_socket->send("\r\n.\r\n"); + $listen_socket->send($tags_entries); + $listen_socket->send(".\r\n"); } $listen_socket->close(); @@ -81,15 +88,16 @@ sub generate_header { my ($directory) = @_; $directory .= "/" if ($directory); - return "\r\n" unless (-T $directory . "header"); + return "" unless (-T $directory . "header"); my $message = ""; open FILE, $directory . "header"; while () { + s/\r*\n*//g; $message .= "i" . $_ . "\tfake\tfake\t0\r\n"; } close FILE; - $message .= "0About this gopher server\theader\t" . $server . "\t" . $port . "\r\n"; + #$message .= "0About this gopher server\theader\t" . $server . "\t" . $port . "\r\n"; return $message; } @@ -114,7 +122,7 @@ sub filter_content { sub list_blog_entries { my ($blog_dir) = @_; unless (opendir(IMD, $blog_dir)) { - die("Requested file or directory not readable : $blog_dir "); + return ""; } my @files = readdir(IMD); closedir(IMD); @@ -123,7 +131,7 @@ sub list_blog_entries { @files = map map_blog_entry($_, $blog_dir), @files; @files = sort sort_entry_line($a,$b), @files; - return join("\r\n", @files); + return join "\r\n", @files; } sub list_entries_by_tag {