source: trunk/server/common/oursrc/execsys/upd-execsys @ 2797

Last change on this file since 2797 was 2797, checked in by leee, 8 years ago
Complete r2795 and r2796.
File size: 2.3 KB
Line 
1#!/usr/bin/perl -w
2use strict;
3
4# upd-execsys
5# Copyright (C) 2006  Jeff Arnold <jbarnold@mit.edu>
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License
9# as published by the Free Software Foundation; either version 2
10# of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
20#
21# See /COPYRIGHT in this repository for more information.
22
23my @dynamic = qw(
24 pl
25 php
26 py
27 cgi
28 scm
29 exe
30);
31
32my @static = qw(
33 html
34 css
35 gif
36 jpg
37 png
38 htm
39 jpeg
40 js
41 ico
42 xml
43 xsl
44 tiff
45 tif
46 tgz
47 tar
48 jar
49 zip
50 pdf
51 ps
52 doc
53 xls
54 ppt
55 dot
56 docx
57 dotx
58 docm
59 dotm
60 xlt
61 xla
62 xlsx
63 xltx
64 xlsm
65 xltm
66 xlam
67 xlsb
68 pot
69 pps
70 ppa
71 pptx
72 potx
73 ppsx
74 ppam
75 pptm
76 potm
77 ppsm
78 swf
79 mp3
80 mov
81 wmv
82 mpg
83 mpeg
84 avi
85 il
86 xhtml
87 svg
88 xaml
89 xap
90 wav
91 mid
92 midi
93 ttf
94 otf
95 odc
96 odb
97 odf
98 odg
99 otg
100 odi
101 odp
102 otp
103 ods
104 ots
105 odt
106 odm
107 ott
108 oth
109 eot
110 woff
111 woff2
112);
113
114my %map;
115open(TYPES, "./mime.types");
116while(my $line = <TYPES>) {
117        next if($line =~ /^\#/ or $line =~ /^\s*$/);
118        my ($type, $exts) = ($line =~ /^(\S*)\s+(.*)$/);
119        next if($exts =~ /^\s*$/);
120       
121        foreach my $ext (split " ", $exts) {
122                $map{$ext} = $type;
123        }
124}
125close(TYPES);
126
127undef $/;
128my $regexp = '(.*[\/\#]+\sSTART-AUTOGENERATED:[^!]*!).*\s([\/\#]+\sEND-AUTOGENERATED.*)';
129
130open(CONF, ">./execsys.conf");
131
132foreach my $ext (@dynamic, @static) {
133        print CONF <<END
134<FilesMatch "(?i)\\.$ext\$">
135        SetHandler cgi-script
136        Options +ExecCGI
137</FilesMatch>
138
139END
140}
141close(CONF);
142
143open(CAT, "./static-cat.c.pre");
144my $file = <CAT>;
145my ($fstart, $fend) = ($file =~ /$regexp/s);
146close(CAT);
147
148open(CAT, ">./static-cat.c");
149print CAT $fstart, "\n";
150print CAT '#define NEXTS ', scalar(@static), "\n";
151print CAT "const char *map[2 * NEXTS] = {\n";
152for(my $i = 0; $i < scalar(@static); $i++) {
153        my $comma = ( $i < scalar(@static)-1 ? "," : "" );
154        print CAT "\t\"$static[$i]\", \"$map{$static[$i]}\"$comma\n";
155}
156print CAT "};\n";
157print CAT $fend;
158close(CAT);
Note: See TracBrowser for help on using the repository browser.