diff --git a/hwcconfig/application_host_config.go b/hwcconfig/application_host_config.go index 869f8d04..3c2e5528 100644 --- a/hwcconfig/application_host_config.go +++ b/hwcconfig/application_host_config.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "os" + "path/filepath" "strings" "text/template" ) @@ -62,6 +63,16 @@ func (c *HwcConfig) generateApplicationHostConfig() error { return errors.New(fmt.Sprintf("Missing required DLLs:\n%s", strings.Join(missing, ",\n"))) } + rewrite := false + rewritePath := filepath.Join(os.Getenv("WINDIR"), "system32", "inetsrv", "rewrite.dll") + _, err := os.Stat(rewritePath) + if err == nil { + globalModules = append(globalModules, map[string]string{"Name": "RewriteModule", "Image": `%windir%\system32\inetsrv\rewrite.dll`}) + rewrite = true + } else if !os.IsNotExist(err) { + return err + } + file, err := os.Create(c.ApplicationHostConfigPath) if err != nil { return err @@ -71,11 +82,13 @@ func (c *HwcConfig) generateApplicationHostConfig() error { type templateInput struct { Config *HwcConfig GlobalModules []map[string]string + Rewrite bool } t := templateInput{ Config: c, GlobalModules: globalModules, + Rewrite: rewrite, } var tmpl = template.Must(template.New("applicationhost").Parse(applicationHostConfigTemplate)) @@ -151,14 +164,24 @@ const applicationHostConfigTemplate = `
+ {{if .Rewrite}} + +
+
+
+
+
+
+ + {{end}} - - + + @@ -874,6 +897,9 @@ const applicationHostConfigTemplate = ` + {{if .Rewrite}} + + {{end}}