]> granicus.if.org Git - apache/blob - build/installwinconf.awk
Backport 1363853:
[apache] / build / installwinconf.awk
1 #
2 # InstallConf.awk Apache HTTP 2.2 script to rewrite the @@ServerRoot@@ 
3 # tags in httpd.conf.in to original\httpd.conf - then duplicate the
4 # conf files to the 'live' configuration if they don't already exist.
5 #
6 # Note that we -don't- want the ARGV file list, so no additional {} blocks
7 # are coded.  Use explicit args (more reliable on Win32) and use the fact
8 # that ARGV[] params are -not- '\' escaped to process the C:\Foo\Bar Win32
9 # path format.  Note that awk var=path would not succeed, since it -does-
10 # escape backslashes in the assignment.  Note also, a trailing space is
11 # required for paths, or the trailing quote following the backslash is 
12 # escaped, rather than parsed.
13 #
14 BEGIN { 
15     domainname = ARGV[1];
16     servername = ARGV[2];
17     serveradmin = ARGV[3];
18     serverport = ARGV[4];
19     serversslport = ARGV[5];
20     serverroot = ARGV[6];
21     sourceroot = ARGV[7];
22
23     delete ARGV[7];
24     delete ARGV[6];
25     delete ARGV[5];
26     delete ARGV[4];
27     delete ARGV[3];
28     delete ARGV[2];
29     delete ARGV[1];
30
31     gsub( /\\/, "/", serverroot );
32     gsub( /[ \/]+$/, "", serverroot );
33     tstfl = serverroot "/logs/install.log"
34     confroot = serverroot "/conf/";
35     confdefault = confroot "original/";
36
37     if ( sourceroot != "docs/conf/" ) {
38         sourceroot = serverroot "/" sourceroot;
39     }
40
41     usertree = ENVIRON["USERPROFILE"]
42     if ( usertree > "" ) {
43         gsub( /\\/, "/", usertree );
44         gsub( /\/[^\/]+$/, "", usertree );
45     } else {
46         usertree = "C:/Documents and Settings";
47     }
48
49     print "Installing Apache HTTP 2.0 server with" >tstfl;
50     print " DomainName =    " domainname >tstfl;
51     print " ServerName =    " servername >tstfl;
52     print " ServerAdmin =   " serveradmin >tstfl;
53     print " ServerPort =    " serverport >tstfl;
54     print " ServerSslPort = " serverport >tstfl;
55     print " ServerRoot =    " serverroot >tstfl;
56
57     filelist["httpd.conf"] = "httpd.conf.in";
58     filelist["httpd-autoindex.conf"] = "httpd-autoindex.conf.in";
59     filelist["httpd-dav.conf"] = "httpd-dav.conf.in";
60     filelist["httpd-default.conf"] = "httpd-default.conf.in";
61     filelist["httpd-info.conf"] = "httpd-info.conf.in";
62     filelist["httpd-languages.conf"] = "httpd-languages.conf.in";
63     filelist["httpd-manual.conf"] = "httpd-manual.conf.in";
64     filelist["httpd-mpm.conf"] = "httpd-mpm.conf.in";
65     filelist["httpd-multilang-errordoc.conf"] = "httpd-multilang-errordoc.conf.in";
66     filelist["httpd-ssl.conf"] = "httpd-ssl.conf.in";
67     filelist["httpd-userdir.conf"] = "httpd-userdir.conf.in";
68     filelist["httpd-vhosts.conf"] = "httpd-vhosts.conf.in";
69     filelist["proxy-html.conf"] = "proxy-html.conf.in";
70
71     for ( conffile in filelist ) {
72
73       if ( conffile == "httpd.conf" ) {
74         srcfl = sourceroot filelist[conffile];
75         dstfl = confdefault conffile;
76         bswarning = 1;
77       } else {
78         srcfl = sourceroot "extra/" filelist[conffile];
79         dstfl = confdefault "extra/" conffile;
80         bswarning = 0;
81       }
82
83       while ( ( getline < srcfl ) > 0 ) {
84
85         if ( bswarning && /^$/ ) {
86           print "#" > dstfl;
87           print "# NOTE: Where filenames are specified, you must use forward slashes" > dstfl;
88           print "# instead of backslashes (e.g., \"c:/apache\" instead of \"c:\\apache\")." > dstfl;
89           print "# If a drive letter is omitted, the drive on which httpd.exe is located" > dstfl;
90           print "# will be used by default.  It is recommended that you always supply" > dstfl;
91           print "# an explicit drive letter in absolute paths to avoid confusion." > dstfl;
92           bswarning = 0;
93         }
94         if ( /@@LoadModule@@/ ) {
95           print "LoadModule access_compat_module modules/mod_access_compat.so" > dstfl;
96           print "LoadModule actions_module modules/mod_actions.so" > dstfl;
97           print "LoadModule alias_module modules/mod_alias.so" > dstfl;
98           print "LoadModule allowmethods_module modules/mod_allowmethods.so" > dstfl;
99           print "LoadModule asis_module modules/mod_asis.so" > dstfl;
100           print "LoadModule auth_basic_module modules/mod_auth_basic.so" > dstfl;
101           print "#LoadModule auth_digest_module modules/mod_auth_digest.so" > dstfl;
102           print "#LoadModule authn_anon_module modules/mod_authn_anon.so" > dstfl;
103           print "LoadModule authn_core_module modules/mod_authn_core.so" > dstfl;
104           print "#LoadModule authn_dbd_module modules/mod_authn_dbd.so" > dstfl;
105           print "#LoadModule authn_dbm_module modules/mod_authn_dbm.so" > dstfl;
106           print "LoadModule authn_file_module modules/mod_authn_file.so" > dstfl;
107           print "#LoadModule authn_socache_module modules/mod_authn_socache.so" > dstfl;
108           print "#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so" > dstfl;
109           print "LoadModule authz_core_module modules/mod_authz_core.so" > dstfl;
110           print "#LoadModule authz_dbd_module modules/mod_authz_dbd.so" > dstfl;
111           print "#LoadModule authz_dbm_module modules/mod_authz_dbm.so" > dstfl;
112           print "LoadModule authz_groupfile_module modules/mod_authz_groupfile.so" > dstfl;
113           print "LoadModule authz_host_module modules/mod_authz_host.so" > dstfl;
114           print "#LoadModule authz_owner_module modules/mod_authz_owner.so" > dstfl;
115           print "LoadModule authz_user_module modules/mod_authz_user.so" > dstfl;
116           print "LoadModule autoindex_module modules/mod_autoindex.so" > dstfl;
117           print "#LoadModule buffer_module modules/mod_buffer.so" > dstfl;
118           print "#LoadModule cache_module modules/mod_cache.so" > dstfl;
119           print "#LoadModule cache_disk_module modules/mod_cache_disk.so" > dstfl;
120           print "#LoadModule cern_meta_module modules/mod_cern_meta.so" > dstfl;
121           print "LoadModule cgi_module modules/mod_cgi.so" > dstfl;
122           print "#LoadModule charset_lite_module modules/mod_charset_lite.so" > dstfl;
123           print "#LoadModule data_module modules/mod_data.so" > dstfl;
124           print "#LoadModule dav_module modules/mod_dav.so" > dstfl;
125           print "#LoadModule dav_fs_module modules/mod_dav_fs.so" > dstfl;
126           print "#LoadModule dav_lock_module modules/mod_dav_lock.so" > dstfl;
127           print "#LoadModule dbd_module modules/mod_dbd.so" > dstfl;
128           print "#LoadModule deflate_module modules/mod_deflate.so" > dstfl;
129           print "LoadModule dir_module modules/mod_dir.so" > dstfl;
130           print "#LoadModule dumpio_module modules/mod_dumpio.so" > dstfl;
131           print "LoadModule env_module modules/mod_env.so" > dstfl;
132           print "#LoadModule expires_module modules/mod_expires.so" > dstfl;
133           print "#LoadModule ext_filter_module modules/mod_ext_filter.so" > dstfl;
134           print "#LoadModule file_cache_module modules/mod_file_cache.so" > dstfl;
135           print "#LoadModule filter_module modules/mod_filter.so" > dstfl;
136           print "#LoadModule headers_module modules/mod_headers.so" > dstfl;
137           print "#LoadModule heartbeat_module modules/mod_heartbeat.so" > dstfl;
138           print "#LoadModule heartmonitor_module modules/mod_heartmonitor.so" > dstfl;
139           print "#LoadModule ident_module modules/mod_ident.so" > dstfl;
140           print "#LoadModule imagemap_module modules/mod_imagemap.so" > dstfl;
141           print "LoadModule include_module modules/mod_include.so" > dstfl;
142           print "#LoadModule info_module modules/mod_info.so" > dstfl;
143           print "LoadModule isapi_module modules/mod_isapi.so" > dstfl;
144           print "#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so" > dstfl;
145           print "#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so" > dstfl;
146           print "#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so" > dstfl;
147           print "#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so" > dstfl;
148           print "#LoadModule ldap_module modules/mod_ldap.so" > dstfl;
149           print "#LoadModule logio_module modules/mod_logio.so" > dstfl;
150           print "LoadModule log_config_module modules/mod_log_config.so" > dstfl;
151           print "#LoadModule log_debug_module modules/mod_log_debug.so" > dstfl;
152           print "#LoadModule log_forensic_module modules/mod_log_forensic.so" > dstfl;
153           print "#LoadModule lua_module modules/mod_lua.so" > dstfl;
154           print "LoadModule mime_module modules/mod_mime.so" > dstfl;
155           print "#LoadModule mime_magic_module modules/mod_mime_magic.so" > dstfl;
156           print "LoadModule negotiation_module modules/mod_negotiation.so" > dstfl;
157           print "#LoadModule proxy_module modules/mod_proxy.so" > dstfl;
158           print "#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so" > dstfl;
159           print "#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so" > dstfl;
160           print "#LoadModule proxy_connect_module modules/mod_proxy_connect.so" > dstfl;
161           print "#LoadModule proxy_express_module modules/mod_proxy_express.so" > dstfl;
162           print "#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so" > dstfl;
163           print "#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so" > dstfl;
164           print "#LoadModule proxy_html_module modules/mod_proxy_html.so" > dstfl;
165           print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl;
166           print "#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so" > dstfl;
167           print "#LoadModule ratelimit_module modules/mod_ratelimit.so" > dstfl;
168           print "#LoadModule reflector_module modules/mod_reflector.so" > dstfl;
169           print "#LoadModule remoteip_module modules/mod_remoteip.so" > dstfl;
170           print "#LoadModule request_module modules/mod_request.so" > dstfl;
171           print "#LoadModule reqtimeout_module modules/mod_reqtimeout.so" > dstfl;
172           print "#LoadModule rewrite_module modules/mod_rewrite.so" > dstfl;
173           print "#LoadModule sed_module modules/mod_sed.so" > dstfl;
174           print "#LoadModule session_module modules/mod_session.so" > dstfl;
175           print "#LoadModule session_cookie_module modules/mod_session_cookie.so" > dstfl;
176           print "#LoadModule session_crypto_module modules/mod_session_crypto.so" > dstfl;
177           print "#LoadModule session_dbd_module modules/mod_session_dbd.so" > dstfl;
178           print "LoadModule setenvif_module modules/mod_setenvif.so" > dstfl;
179           print "#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so" > dstfl;
180           print "#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so" > dstfl;
181           print "#LoadModule socache_dbm_module modules/mod_socache_dbm.so" > dstfl;
182           print "#LoadModule socache_memcache_module modules/mod_socache_memcache.so" > dstfl;
183           print "#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so" > dstfl;
184           print "#LoadModule speling_module modules/mod_speling.so" > dstfl;
185           print "#LoadModule ssl_module modules/mod_ssl.so" > dstfl;
186           print "#LoadModule status_module modules/mod_status.so" > dstfl;
187           print "#LoadModule substitute_module modules/mod_substitute.so" > dstfl;
188           print "#LoadModule unique_id_module modules/mod_unique_id.so" > dstfl;
189           print "#LoadModule userdir_module modules/mod_userdir.so" > dstfl;
190           print "#LoadModule usertrack_module modules/mod_usertrack.so" > dstfl;
191           print "#LoadModule version_module modules/mod_version.so" > dstfl;
192           print "#LoadModule vhost_alias_module modules/mod_vhost_alias.so" > dstfl;
193           print "#LoadModule watchdog_module modules/mod_watchdog.so" > dstfl;
194           print "#LoadModule xml2enc_module modules/mod_xml2enc.so" > dstfl;
195           continue;
196         }
197         gsub( /^SSLMutex.*/, "SSLMutex default" );
198         gsub( /@@ServerRoot@@/,   serverroot );
199         gsub( /@exp_cgidir@/,     serverroot "/cgi-bin" );
200         gsub( /@exp_sysconfdir@/, serverroot "/conf" );
201         gsub( /@exp_errordir@/,   serverroot "/error" );
202         gsub( /@exp_htdocsdir@/,  serverroot "/htdocs" );
203         gsub( /@exp_iconsdir@/,   serverroot "/icons" );
204         gsub( /@exp_manualdir@/,  serverroot "/manual" );
205         gsub( /@exp_runtimedir@/, serverroot "/logs" );
206         if ( gsub( /@exp_logfiledir@/, serverroot "/logs" ) ||
207              gsub( /@rel_logfiledir@/, "logs" ) ) {
208           gsub( /_log"/, ".log\"" )
209         }
210         gsub( /@rel_runtimedir@/, "logs" );
211         gsub( /@rel_sysconfdir@/, "conf" );
212         gsub( /\/home\/\*\/public_html/, \
213               usertree "/*/My Documents/My Website" );
214         gsub( /UserDir public_html/, "UserDir \"My Documents/My Website\"" );
215         gsub( /@@ServerName@@|www.example.com/,  servername );
216         gsub( /@@ServerAdmin@@|you@example.com/, serveradmin );
217         gsub( /@@DomainName@@|example.com/,      domainname );
218         gsub( /@@Port@@/,                        serverport );
219         gsub( /@@SSLPort@@|443/,                 serversslport );
220         print $0 > dstfl;
221       }
222       close(srcfl);
223
224       if ( close(dstfl) >= 0 ) {
225         print "Rewrote " srcfl "\n to " dstfl > tstfl;
226         gsub(/\//, "\\", srcfl);
227         if ( sourceroot != "docs/conf/" ) {
228           if (system("del \"" srcfl "\"")) {
229             print "Failed to remove " srcfl > tstfl;
230           } else {
231             print "Successfully removed " srcfl > tstfl;
232           }
233         }
234       } else {
235         print "Failed to rewrite " srcfl "\n to " dstfl > tstfl;
236       }
237       filelist[conffile] = "extra/";
238     }
239
240     filelist["httpd.conf"] = "";
241     filelist["charset.conv"] = "";
242     filelist["magic"] = "";
243     filelist["mime.types"] = "";
244
245     for ( conffile in filelist ) {
246       srcfl = confdefault filelist[conffile] conffile;
247       dstfl = confroot filelist[conffile] conffile;
248       if ( ( getline < dstfl ) < 0 ) {
249         while ( ( getline < srcfl ) > 0 ) {
250           print $0 > dstfl;
251         }
252         print "Duplicated " srcfl "\n to " dstfl > tstfl;
253       } else {
254         print "Existing file " dstfl " preserved" > tstfl;
255       }
256       close(srcfl);
257       close(dstfl);
258     }
259
260     if ( sourceroot != "docs/conf/" ) {
261       srcfl = confdefault "installwinconf.awk";
262       gsub(/\//, "\\", srcfl);
263       if (system("del \"" srcfl "\"")) {
264         print "Failed to remove " srcfl > tstfl;
265       } else {
266         print "Successfully removed " srcfl > tstfl;
267       }
268     }
269     close(tstfl);
270 }