PageRenderTime 43ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/build/installwinconf.awk

https://bitbucket.org/gencer/apache2nginx
AWK | 238 lines | 212 code | 13 blank | 13 comment | 0 complexity | 9f875c798e2f64935c79e62034f0289e MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause
  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. delete ARGV[7];
  23. delete ARGV[6];
  24. delete ARGV[5];
  25. delete ARGV[4];
  26. delete ARGV[3];
  27. delete ARGV[2];
  28. delete ARGV[1];
  29. gsub( /\\/, "/", serverroot );
  30. gsub( /[ \/]+$/, "", serverroot );
  31. tstfl = serverroot "/logs/install.log"
  32. confroot = serverroot "/conf/";
  33. confdefault = confroot "original/";
  34. if ( sourceroot != "docs/conf/" ) {
  35. sourceroot = serverroot "/" sourceroot;
  36. }
  37. usertree = ENVIRON["USERPROFILE"]
  38. if ( usertree > "" ) {
  39. gsub( /\\/, "/", usertree );
  40. gsub( /\/[^\/]+$/, "", usertree );
  41. } else {
  42. usertree = "C:/Documents and Settings";
  43. }
  44. print "Installing Apache HTTP 2.0 server with" >tstfl;
  45. print " DomainName = " domainname >tstfl;
  46. print " ServerName = " servername >tstfl;
  47. print " ServerAdmin = " serveradmin >tstfl;
  48. print " ServerPort = " serverport >tstfl;
  49. print " ServerSslPort = " serverport >tstfl;
  50. print " ServerRoot = " serverroot >tstfl;
  51. filelist["httpd.conf"] = "httpd.conf.in";
  52. filelist["httpd-autoindex.conf"] = "httpd-autoindex.conf.in";
  53. filelist["httpd-dav.conf"] = "httpd-dav.conf.in";
  54. filelist["httpd-default.conf"] = "httpd-default.conf.in";
  55. filelist["httpd-info.conf"] = "httpd-info.conf.in";
  56. filelist["httpd-languages.conf"] = "httpd-languages.conf.in";
  57. filelist["httpd-manual.conf"] = "httpd-manual.conf.in";
  58. filelist["httpd-mpm.conf"] = "httpd-mpm.conf.in";
  59. filelist["httpd-multilang-errordoc.conf"] = "httpd-multilang-errordoc.conf.in";
  60. filelist["httpd-ssl.conf"] = "httpd-ssl.conf.in";
  61. filelist["httpd-userdir.conf"] = "httpd-userdir.conf.in";
  62. filelist["httpd-vhosts.conf"] = "httpd-vhosts.conf.in";
  63. for ( conffile in filelist ) {
  64. if ( conffile == "httpd.conf" ) {
  65. srcfl = sourceroot filelist[conffile];
  66. dstfl = confdefault conffile;
  67. bswarning = 1;
  68. } else {
  69. srcfl = sourceroot "extra/" filelist[conffile];
  70. dstfl = confdefault "extra/" conffile;
  71. bswarning = 0;
  72. }
  73. while ( ( getline < srcfl ) > 0 ) {
  74. if ( bswarning && /^$/ ) {
  75. print "#" > dstfl;
  76. print "# NOTE: Where filenames are specified, you must use forward slashes" > dstfl;
  77. print "# instead of backslashes (e.g., \"c:/apache\" instead of \"c:\\apache\")." > dstfl;
  78. print "# If a drive letter is omitted, the drive on which httpd.exe is located" > dstfl;
  79. print "# will be used by default. It is recommended that you always supply" > dstfl;
  80. print "# an explicit drive letter in absolute paths to avoid confusion." > dstfl;
  81. bswarning = 0;
  82. }
  83. if ( /@@LoadModule@@/ ) {
  84. print "LoadModule actions_module modules/mod_actions.so" > dstfl;
  85. print "LoadModule alias_module modules/mod_alias.so" > dstfl;
  86. print "LoadModule asis_module modules/mod_asis.so" > dstfl;
  87. print "LoadModule auth_basic_module modules/mod_auth_basic.so" > dstfl;
  88. print "#LoadModule auth_digest_module modules/mod_auth_digest.so" > dstfl;
  89. print "#LoadModule authn_alias_module modules/mod_authn_alias.so" > dstfl;
  90. print "#LoadModule authn_anon_module modules/mod_authn_anon.so" > dstfl;
  91. print "#LoadModule authn_dbd_module modules/mod_authn_dbd.so" > dstfl;
  92. print "#LoadModule authn_dbm_module modules/mod_authn_dbm.so" > dstfl;
  93. print "LoadModule authn_default_module modules/mod_authn_default.so" > dstfl;
  94. print "LoadModule authn_file_module modules/mod_authn_file.so" > dstfl;
  95. print "#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so" > dstfl;
  96. print "#LoadModule authz_dbm_module modules/mod_authz_dbm.so" > dstfl;
  97. print "LoadModule authz_default_module modules/mod_authz_default.so" > dstfl;
  98. print "LoadModule authz_groupfile_module modules/mod_authz_groupfile.so" > dstfl;
  99. print "LoadModule authz_host_module modules/mod_authz_host.so" > dstfl;
  100. print "#LoadModule authz_owner_module modules/mod_authz_owner.so" > dstfl;
  101. print "LoadModule authz_user_module modules/mod_authz_user.so" > dstfl;
  102. print "LoadModule autoindex_module modules/mod_autoindex.so" > dstfl;
  103. print "#LoadModule cache_module modules/mod_cache.so" > dstfl;
  104. print "#LoadModule cern_meta_module modules/mod_cern_meta.so" > dstfl;
  105. print "LoadModule cgi_module modules/mod_cgi.so" > dstfl;
  106. print "#LoadModule charset_lite_module modules/mod_charset_lite.so" > dstfl;
  107. print "#LoadModule dav_module modules/mod_dav.so" > dstfl;
  108. print "#LoadModule dav_fs_module modules/mod_dav_fs.so" > dstfl;
  109. print "#LoadModule dav_lock_module modules/mod_dav_lock.so" > dstfl;
  110. print "#LoadModule dbd_module modules/mod_dbd.so" > dstfl;
  111. print "#LoadModule deflate_module modules/mod_deflate.so" > dstfl;
  112. print "LoadModule dir_module modules/mod_dir.so" > dstfl;
  113. print "#LoadModule disk_cache_module modules/mod_disk_cache.so" > dstfl;
  114. print "#LoadModule dumpio_module modules/mod_dumpio.so" > dstfl;
  115. print "LoadModule env_module modules/mod_env.so" > dstfl;
  116. print "#LoadModule expires_module modules/mod_expires.so" > dstfl;
  117. print "#LoadModule ext_filter_module modules/mod_ext_filter.so" > dstfl;
  118. print "#LoadModule file_cache_module modules/mod_file_cache.so" > dstfl;
  119. print "#LoadModule filter_module modules/mod_filter.so" > dstfl;
  120. print "#LoadModule headers_module modules/mod_headers.so" > dstfl;
  121. print "#LoadModule ident_module modules/mod_ident.so" > dstfl;
  122. print "#LoadModule imagemap_module modules/mod_imagemap.so" > dstfl;
  123. print "LoadModule include_module modules/mod_include.so" > dstfl;
  124. print "#LoadModule info_module modules/mod_info.so" > dstfl;
  125. print "LoadModule isapi_module modules/mod_isapi.so" > dstfl;
  126. print "#LoadModule ldap_module modules/mod_ldap.so" > dstfl;
  127. print "#LoadModule logio_module modules/mod_logio.so" > dstfl;
  128. print "LoadModule log_config_module modules/mod_log_config.so" > dstfl;
  129. print "#LoadModule log_forensic_module modules/mod_log_forensic.so" > dstfl;
  130. print "#LoadModule mem_cache_module modules/mod_mem_cache.so" > dstfl;
  131. print "LoadModule mime_module modules/mod_mime.so" > dstfl;
  132. print "#LoadModule mime_magic_module modules/mod_mime_magic.so" > dstfl;
  133. print "LoadModule negotiation_module modules/mod_negotiation.so" > dstfl;
  134. print "#LoadModule proxy_module modules/mod_proxy.so" > dstfl;
  135. print "#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so" > dstfl;
  136. print "#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so" > dstfl;
  137. print "#LoadModule proxy_connect_module modules/mod_proxy_connect.so" > dstfl;
  138. print "#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so" > dstfl;
  139. print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl;
  140. print "#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so" > dstfl;
  141. print "#LoadModule reqtimeout_module modules/mod_reqtimeout.so" > dstfl;
  142. print "#LoadModule rewrite_module modules/mod_rewrite.so" > dstfl;
  143. print "LoadModule setenvif_module modules/mod_setenvif.so" > dstfl;
  144. print "#LoadModule speling_module modules/mod_speling.so" > dstfl;
  145. print "#LoadModule ssl_module modules/mod_ssl.so" > dstfl;
  146. print "#LoadModule status_module modules/mod_status.so" > dstfl;
  147. print "#LoadModule substitute_module modules/mod_substitute.so" > dstfl;
  148. print "#LoadModule unique_id_module modules/mod_unique_id.so" > dstfl;
  149. print "#LoadModule userdir_module modules/mod_userdir.so" > dstfl;
  150. print "#LoadModule usertrack_module modules/mod_usertrack.so" > dstfl;
  151. print "#LoadModule version_module modules/mod_version.so" > dstfl;
  152. print "#LoadModule vhost_alias_module modules/mod_vhost_alias.so" > dstfl;
  153. continue;
  154. }
  155. gsub( /^SSLMutex.*/, "SSLMutex default" );
  156. gsub( /@@ServerRoot@@/, serverroot );
  157. gsub( /@exp_cgidir@/, serverroot "/cgi-bin" );
  158. gsub( /@exp_sysconfdir@/, serverroot "/conf" );
  159. gsub( /@exp_errordir@/, serverroot "/error" );
  160. gsub( /@exp_htdocsdir@/, serverroot "/htdocs" );
  161. gsub( /@exp_iconsdir@/, serverroot "/icons" );
  162. gsub( /@exp_manualdir@/, serverroot "/manual" );
  163. gsub( /@exp_runtimedir@/, serverroot "/logs" );
  164. if ( gsub( /@exp_logfiledir@/, serverroot "/logs" ) ||
  165. gsub( /@rel_logfiledir@/, "logs" ) ) {
  166. gsub( /_log"/, ".log\"" )
  167. }
  168. gsub( /@rel_runtimedir@/, "logs" );
  169. gsub( /@rel_sysconfdir@/, "conf" );
  170. gsub( /\/home\/\*\/public_html/, \
  171. usertree "/*/My Documents/My Website" );
  172. gsub( /UserDir public_html/, "UserDir \"My Documents/My Website\"" );
  173. gsub( /@@ServerName@@|www.example.com/, servername );
  174. gsub( /@@ServerAdmin@@|you@example.com/, serveradmin );
  175. gsub( /@@DomainName@@|example.com/, domainname );
  176. gsub( /@@Port@@/, serverport );
  177. gsub( /@@SSLPort@@|443/, serversslport );
  178. print $0 > dstfl;
  179. }
  180. close(srcfl);
  181. if ( close(dstfl) >= 0 ) {
  182. print "Rewrote " srcfl "\n to " dstfl > tstfl;
  183. gsub(/\//, "\\", srcfl);
  184. if ( sourceroot != "docs/conf/" ) {
  185. if (system("del \"" srcfl "\"")) {
  186. print "Failed to remove " srcfl > tstfl;
  187. } else {
  188. print "Successfully removed " srcfl > tstfl;
  189. }
  190. }
  191. } else {
  192. print "Failed to rewrite " srcfl "\n to " dstfl > tstfl;
  193. }
  194. filelist[conffile] = "extra/";
  195. }
  196. filelist["httpd.conf"] = "";
  197. filelist["charset.conv"] = "";
  198. filelist["magic"] = "";
  199. filelist["mime.types"] = "";
  200. for ( conffile in filelist ) {
  201. srcfl = confdefault filelist[conffile] conffile;
  202. dstfl = confroot filelist[conffile] conffile;
  203. if ( ( getline < dstfl ) < 0 ) {
  204. while ( ( getline < srcfl ) > 0 ) {
  205. print $0 > dstfl;
  206. }
  207. print "Duplicated " srcfl "\n to " dstfl > tstfl;
  208. } else {
  209. print "Existing file " dstfl " preserved" > tstfl;
  210. }
  211. close(srcfl);
  212. close(dstfl);
  213. }
  214. if ( sourceroot != "docs/conf/" ) {
  215. srcfl = confdefault "installwinconf.awk";
  216. gsub(/\//, "\\", srcfl);
  217. if (system("del \"" srcfl "\"")) {
  218. print "Failed to remove " srcfl > tstfl;
  219. } else {
  220. print "Successfully removed " srcfl > tstfl;
  221. }
  222. }
  223. close(tstfl);
  224. }