summaryrefslogtreecommitdiffstats
path: root/build/installwinconf.awk
blob: ae0421f39005f8a674ad38e7142a1cc368df9722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
#
# InstallConf.awk Apache HTTP 2.x script to rewrite the @@ServerRoot@@
# tags in httpd.conf.in to original\httpd.conf - then duplicate the
# conf files to the 'live' configuration if they don't already exist.
#
# Note that we -don't- want the ARGV file list, so no additional {} blocks
# are coded.  Use explicit args (more reliable on Win32) and use the fact
# that ARGV[] params are -not- '\' escaped to process the C:\Foo\Bar Win32
# path format.  Note that awk var=path would not succeed, since it -does-
# escape backslashes in the assignment.  Note also, a trailing space is
# required for paths, or the trailing quote following the backslash is
# escaped, rather than parsed.
#
BEGIN {
    domainname = ARGV[1];
    servername = ARGV[2];
    serveradmin = ARGV[3];
    serverport = ARGV[4];
    serversslport = ARGV[5];
    serverroot = ARGV[6];
    sourceroot = ARGV[7];

    delete ARGV[7];
    delete ARGV[6];
    delete ARGV[5];
    delete ARGV[4];
    delete ARGV[3];
    delete ARGV[2];
    delete ARGV[1];

    gsub( /\\/, "/", serverroot );
    gsub( /[ \/]+$/, "", serverroot );
    tstfl = serverroot "/logs/install.log"
    confroot = serverroot "/conf/";
    confdefault = confroot "original/";

    if ( sourceroot != "docs/conf/" ) {
        sourceroot = serverroot "/" sourceroot;
    }

    usertree = ENVIRON["USERPROFILE"]
    if ( usertree > "" ) {
        gsub( /\\/, "/", usertree );
        gsub( /\/[^\/]+$/, "", usertree );
    } else {
        usertree = "C:/Documents and Settings";
    }

    print "Installing Apache HTTP Server 2.x with" >tstfl;
    print " DomainName    = " domainname >tstfl;
    print " ServerName    = " servername >tstfl;
    print " ServerAdmin   = " serveradmin >tstfl;
    print " ServerPort    = " serverport >tstfl;
    print " ServerSslPort = " serversslport >tstfl;
    print " ServerRoot    = " serverroot >tstfl;

    filelist["httpd.conf"] = "httpd.conf.in";
    filelist["httpd-autoindex.conf"] = "httpd-autoindex.conf.in";
    filelist["httpd-dav.conf"] = "httpd-dav.conf.in";
    filelist["httpd-default.conf"] = "httpd-default.conf.in";
    filelist["httpd-info.conf"] = "httpd-info.conf.in";
    filelist["httpd-languages.conf"] = "httpd-languages.conf.in";
    filelist["httpd-manual.conf"] = "httpd-manual.conf.in";
    filelist["httpd-mpm.conf"] = "httpd-mpm.conf.in";
    filelist["httpd-multilang-errordoc.conf"] = "httpd-multilang-errordoc.conf.in";
    filelist["httpd-ssl.conf"] = "httpd-ssl.conf.in";
    filelist["httpd-userdir.conf"] = "httpd-userdir.conf.in";
    filelist["httpd-vhosts.conf"] = "httpd-vhosts.conf.in";
    filelist["proxy-html.conf"] = "proxy-html.conf.in";

    for ( conffile in filelist ) {

      if ( conffile == "httpd.conf" ) {
        srcfl = sourceroot filelist[conffile];
        dstfl = confdefault conffile;
        bswarning = 1;
      } else {
        srcfl = sourceroot "extra/" filelist[conffile];
        dstfl = confdefault "extra/" conffile;
        bswarning = 0;
      }

      while ( ( getline < srcfl ) > 0 ) {

        if ( bswarning && /^$/ ) {
          print "#" > dstfl;
          print "# NOTE: Where filenames are specified, you must use forward slashes" > dstfl;
          print "# instead of backslashes (e.g., \"c:/apache\" instead of \"c:\\apache\")." > dstfl;
          print "# If a drive letter is omitted, the drive on which httpd.exe is located" > dstfl;
          print "# will be used by default.  It is recommended that you always supply" > dstfl;
          print "# an explicit drive letter in absolute paths to avoid confusion." > dstfl;
          bswarning = 0;
        }
        if ( /@@LoadModule@@/ ) {
          print "LoadModule access_compat_module modules/mod_access_compat.so" > dstfl;
          print "LoadModule actions_module modules/mod_actions.so" > dstfl;
          print "LoadModule alias_module modules/mod_alias.so" > dstfl;
          print "LoadModule allowmethods_module modules/mod_allowmethods.so" > dstfl;
          print "LoadModule asis_module modules/mod_asis.so" > dstfl;
          print "LoadModule auth_basic_module modules/mod_auth_basic.so" > dstfl;
          print "#LoadModule auth_digest_module modules/mod_auth_digest.so" > dstfl;
          print "#LoadModule auth_form_module modules/mod_auth_form.so" > dstfl;
          print "#LoadModule authn_anon_module modules/mod_authn_anon.so" > dstfl;
          print "LoadModule authn_core_module modules/mod_authn_core.so" > dstfl;
          print "#LoadModule authn_dbd_module modules/mod_authn_dbd.so" > dstfl;
          print "#LoadModule authn_dbm_module modules/mod_authn_dbm.so" > dstfl;
          print "LoadModule authn_file_module modules/mod_authn_file.so" > dstfl;
          print "#LoadModule authn_socache_module modules/mod_authn_socache.so" > dstfl;
          print "#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so" > dstfl;
          print "#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so" > dstfl;
          print "LoadModule authz_core_module modules/mod_authz_core.so" > dstfl;
          print "#LoadModule authz_dbd_module modules/mod_authz_dbd.so" > dstfl;
          print "#LoadModule authz_dbm_module modules/mod_authz_dbm.so" > dstfl;
          print "LoadModule authz_groupfile_module modules/mod_authz_groupfile.so" > dstfl;
          print "LoadModule authz_host_module modules/mod_authz_host.so" > dstfl;
          print "#LoadModule authz_owner_module modules/mod_authz_owner.so" > dstfl;
          print "LoadModule authz_user_module modules/mod_authz_user.so" > dstfl;
          print "LoadModule autoindex_module modules/mod_autoindex.so" > dstfl;
          print "#LoadModule brotli_module modules/mod_brotli.so" > dstfl;
          print "#LoadModule buffer_module modules/mod_buffer.so" > dstfl;
          print "#LoadModule cache_module modules/mod_cache.so" > dstfl;
          print "#LoadModule cache_disk_module modules/mod_cache_disk.so" > dstfl;
          print "#LoadModule cache_socache_module modules/mod_cache_socache.so" > dstfl;
          print "#LoadModule cern_meta_module modules/mod_cern_meta.so" > dstfl;
          print "LoadModule cgi_module modules/mod_cgi.so" > dstfl;
          print "#LoadModule charset_lite_module modules/mod_charset_lite.so" > dstfl;
          print "#LoadModule data_module modules/mod_data.so" > dstfl;
          print "#LoadModule dav_module modules/mod_dav.so" > dstfl;
          print "#LoadModule dav_fs_module modules/mod_dav_fs.so" > dstfl;
          print "#LoadModule dav_lock_module modules/mod_dav_lock.so" > dstfl;
          print "#LoadModule dbd_module modules/mod_dbd.so" > dstfl;
          print "#LoadModule deflate_module modules/mod_deflate.so" > dstfl;
          print "LoadModule dir_module modules/mod_dir.so" > dstfl;
          print "#LoadModule dumpio_module modules/mod_dumpio.so" > dstfl;
          print "LoadModule env_module modules/mod_env.so" > dstfl;
          print "#LoadModule expires_module modules/mod_expires.so" > dstfl;
          print "#LoadModule ext_filter_module modules/mod_ext_filter.so" > dstfl;
          print "#LoadModule file_cache_module modules/mod_file_cache.so" > dstfl;
          print "#LoadModule filter_module modules/mod_filter.so" > dstfl;
          print "#LoadModule http2_module modules/mod_http2.so" > dstfl;
          print "#LoadModule headers_module modules/mod_headers.so" > dstfl;
          print "#LoadModule heartbeat_module modules/mod_heartbeat.so" > dstfl;
          print "#LoadModule heartmonitor_module modules/mod_heartmonitor.so" > dstfl;
          print "#LoadModule ident_module modules/mod_ident.so" > dstfl;
          print "#LoadModule imagemap_module modules/mod_imagemap.so" > dstfl;
          print "LoadModule include_module modules/mod_include.so" > dstfl;
          print "#LoadModule info_module modules/mod_info.so" > dstfl;
          print "LoadModule isapi_module modules/mod_isapi.so" > dstfl;
          print "#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so" > dstfl;
          print "#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so" > dstfl;
          print "#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so" > dstfl;
          print "#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so" > dstfl;
          print "#LoadModule ldap_module modules/mod_ldap.so" > dstfl;
          print "#LoadModule logio_module modules/mod_logio.so" > dstfl;
          print "LoadModule log_config_module modules/mod_log_config.so" > dstfl;
          print "#LoadModule log_debug_module modules/mod_log_debug.so" > dstfl;
          print "#LoadModule log_forensic_module modules/mod_log_forensic.so" > dstfl;
          print "#LoadModule lua_module modules/mod_lua.so" > dstfl;
          print "#LoadModule macro_module modules/mod_macro.so" > dstfl;
          print "#LoadModule md_module modules/mod_md.so" > dstfl;
          print "LoadModule mime_module modules/mod_mime.so" > dstfl;
          print "#LoadModule mime_magic_module modules/mod_mime_magic.so" > dstfl;
          print "LoadModule negotiation_module modules/mod_negotiation.so" > dstfl;
          print "#LoadModule proxy_module modules/mod_proxy.so" > dstfl;
          print "#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so" > dstfl;
          print "#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so" > dstfl;
          print "#LoadModule proxy_connect_module modules/mod_proxy_connect.so" > dstfl;
          print "#LoadModule proxy_express_module modules/mod_proxy_express.so" > dstfl;
          print "#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so" > dstfl;
          print "#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so" > dstfl;
          print "#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so" > dstfl;
          print "#LoadModule proxy_html_module modules/mod_proxy_html.so" > dstfl;
          print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl;
          print "#LoadModule proxy_http2_module modules/mod_proxy_http2.so" > dstfl;
          print "#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so" > dstfl;
          print "#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so" > dstfl;
          print "#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so" > dstfl;
          print "#LoadModule ratelimit_module modules/mod_ratelimit.so" > dstfl;
          print "#LoadModule reflector_module modules/mod_reflector.so" > dstfl;
          print "#LoadModule remoteip_module modules/mod_remoteip.so" > dstfl;
          print "#LoadModule request_module modules/mod_request.so" > dstfl;
          print "#LoadModule reqtimeout_module modules/mod_reqtimeout.so" > dstfl;
          print "#LoadModule rewrite_module modules/mod_rewrite.so" > dstfl;
          print "#LoadModule sed_module modules/mod_sed.so" > dstfl;
          print "#LoadModule session_module modules/mod_session.so" > dstfl;
          print "#LoadModule session_cookie_module modules/mod_session_cookie.so" > dstfl;
          print "#LoadModule session_crypto_module modules/mod_session_crypto.so" > dstfl;
          print "#LoadModule session_dbd_module modules/mod_session_dbd.so" > dstfl;
          print "LoadModule setenvif_module modules/mod_setenvif.so" > dstfl;
          print "#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so" > dstfl;
          print "#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so" > dstfl;
          print "#LoadModule socache_dbm_module modules/mod_socache_dbm.so" > dstfl;
          print "#LoadModule socache_memcache_module modules/mod_socache_memcache.so" > dstfl;
          print "#LoadModule socache_redis_module modules/mod_socache_redis.so" > dstfl;
          print "#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so" > dstfl;
          print "#LoadModule speling_module modules/mod_speling.so" > dstfl;
          print "#LoadModule ssl_module modules/mod_ssl.so" > dstfl;
          print "#LoadModule status_module modules/mod_status.so" > dstfl;
          print "#LoadModule substitute_module modules/mod_substitute.so" > dstfl;
          print "#LoadModule unique_id_module modules/mod_unique_id.so" > dstfl;
          print "#LoadModule userdir_module modules/mod_userdir.so" > dstfl;
          print "#LoadModule usertrack_module modules/mod_usertrack.so" > dstfl;
          print "#LoadModule version_module modules/mod_version.so" > dstfl;
          print "#LoadModule vhost_alias_module modules/mod_vhost_alias.so" > dstfl;
          print "#LoadModule watchdog_module modules/mod_watchdog.so" > dstfl;
          print "#LoadModule xml2enc_module modules/mod_xml2enc.so" > dstfl;
          continue;
        }
        if ( /^ServerRoot / ) {
          print "Define SRVROOT \"" serverroot "\"" > dstfl;
          print "" > dstfl;
        }
        gsub( /@@ServerRoot@@/,   "\${SRVROOT}" );
        gsub( /@exp_cgidir@/,     "\${SRVROOT}" "/cgi-bin" );
        gsub( /@exp_sysconfdir@/, "\${SRVROOT}" "/conf" );
        gsub( /@exp_errordir@/,   "\${SRVROOT}" "/error" );
        gsub( /@exp_htdocsdir@/,  "\${SRVROOT}" "/htdocs" );
        gsub( /@exp_iconsdir@/,   "\${SRVROOT}" "/icons" );
        gsub( /@exp_manualdir@/,  "\${SRVROOT}" "/manual" );
        gsub( /@exp_runtimedir@/, "\${SRVROOT}" "/logs" );
        if ( gsub( /@exp_logfiledir@/, "\${SRVROOT}" "/logs" ) ||
             gsub( /@rel_logfiledir@/, "logs" ) ) {
          gsub( /_log"/, ".log\"" )
        }
        gsub( /@rel_runtimedir@/, "logs" );
        gsub( /@rel_sysconfdir@/, "conf" );
        gsub( /\/home\/\*\/public_html/, \
              usertree "/*/My Documents/My Website" );
        gsub( /UserDir public_html/, "UserDir \"My Documents/My Website\"" );
        gsub( /@@ServerName@@|www.example.com/,  servername );
        gsub( /@@ServerAdmin@@|you@example.com/, serveradmin );
        gsub( /@@DomainName@@|example.com/,      domainname );
        gsub( /@@Port@@/,                        serverport );
        gsub( /@@SSLPort@@|443/,                 serversslport );
        print $0 > dstfl;
      }
      close(srcfl);

      if ( close(dstfl) >= 0 ) {
        print "Rewrote " srcfl "\n to " dstfl > tstfl;
        if ( sourceroot != "docs/conf/" ) {
          gsub(/\//, "\\", srcfl);
          if (system("del 2>NUL \"" srcfl "\"")) {
            print "Failed to remove " srcfl > tstfl;
          } else {
            print "Successfully removed " srcfl > tstfl;
          }
        }
      } else {
        print "Failed to rewrite " srcfl "\n to " dstfl > tstfl;
      }
      filelist[conffile] = "extra/";
    }

    filelist["httpd.conf"] = "";
    filelist["charset.conv"] = "";
    filelist["magic"] = "";
    filelist["mime.types"] = "";

    for ( conffile in filelist ) {
      srcfl = confdefault filelist[conffile] conffile;
      dstfl = confroot filelist[conffile] conffile;
      if ( ( getline < dstfl ) < 0 ) {
        while ( ( getline < srcfl ) > 0 ) {
          print $0 > dstfl;
        }
        print "Duplicated " srcfl "\n to " dstfl > tstfl;
      } else {
        print "Existing file " dstfl " preserved" > tstfl;
      }
      close(srcfl);
      close(dstfl);
    }

    if ( sourceroot != "docs/conf/" ) {
      srcfl = confdefault "installwinconf.awk";
      gsub(/\//, "\\", srcfl);
      if (system("del 2>NUL \"" srcfl "\"")) {
        print "Failed to remove " srcfl > tstfl;
      } else {
        print "Successfully removed " srcfl > tstfl;
      }
    }
    close(tstfl);
}