]> i-scream Git - www.i-scream.org.git/blob - cgi-bin/docs.cgi
URL's are actually linked now... which is nice :-)
[www.i-scream.org.git] / cgi-bin / docs.cgi
1 #!/usr/bin/perl -w
2
3 #------------------------------------------------------------
4 # docs.cgi
5
6 # Web-based text file viewer.
7 # Copyright Paul Mutton, 2000.
8 #------------------------------------------------------------
9
10 use strict;
11 use CGI;
12
13 $| = 1;
14
15 # Settings
16 my ($left) = "../left.inc" ;
17 my ($title) = "../title.inc";
18 my ($bottom) = "../bottom.inc";
19
20
21 my ($query) = new CGI;
22 my ($doc) = ($query->param('doc') =~ /^\s*(.*?\.txt)\s*$/);
23 $doc = "../documentation/".$doc;
24
25 print "Content-type: text/html\n\n";
26
27 print <<"END";
28 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
29
30 <!--
31     docs.cgi
32     Web-based text file viewer and formatter.
33     Created by pjm2 19/10/2000
34     Last modified 02/11/2000
35 -->
36
37 <html>
38
39 <head>
40  <title>The i-scream Project Documentation Viewer</title>
41  <meta name="description" content="The i-scream Project is a central monitoring system for Unix, Linux and NT servers.">
42  <meta name="keywords" content="i-scream, project, central monitoring system, unix, linux, nt, server, alert">
43  <meta name="generator" content="notepad on acid, aye.">
44 </head>
45
46 <body bgcolor="#ffffff" link="#0000ff" alink="#3333cc" vlink="#3333cc" text="#000066">
47
48 <table border="0" cellpadding="2" cellspacing="2">
49  <tr>
50   <td valign="top">
51 END
52
53 &print_html($left);
54
55 print <<"END";
56
57   </td>
58   <td valign="top">
59 END
60
61 &print_html($title);
62 &print_file($doc);
63 &print_html($bottom);
64
65 print <<"END";
66
67   </td>
68  </tr>
69 </table>
70
71 </body>
72
73 </html>
74 END
75
76 exit 0;
77
78 # Print a file, whilst escaping HTML: -
79 sub print_file ($) {
80     my ($urls) = '(' . join ('|', qw{
81                        http
82                        telnet
83                        gopher
84                        file
85                        wais
86                        ftp
87                        } )
88                    . ')';
89     
90     my ($ltrs) = '\w';
91     my ($gunk) = '/#~:.?+=&%@!\-';
92     my ($punc) = '.:?\-';
93     my ($any) = "${ltrs}${gunk}${punc}";
94     my ($filename) = @_;
95     open(FILE, $filename) or die "Cannot open $filename: $!\n";
96     print "<pre>\n";
97     # Use $_ implicitly throughout.
98     while (<FILE>) {
99         # Must do the next line first!
100         s/&/&amp;/g;
101         s/</&lt;/g;
102         s/>/&gt;/g;
103         s/"/&quot;/g;
104         s/\b($urls:[$any]+?)(?=[$punc]*[^$any]|$)/<a href="$1">$1<\/a>/igox;
105         print;
106     }
107     print "</pre>";
108 }
109
110 # Print a file without escaping HTML: -
111 sub print_html ($) {
112     my ($filename) = @_;
113     print `cat $filename`;
114 }